数据库系统课程设计(高校成绩管理数据库系统的设计与实现)_数据库学生成绩管理系统课程设计

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

 

1、需求分析 1

1.1 数据需求描述 1

1.2 系统功能需求 3

1.3 其他性能需求 4

2、概念结构设计 4

2.1 局部E-R图 4

2.2 全局E-R图 5

2.3 优化E-R图 6

3、逻辑结构设计 6

3.1 关系模式设计 6

3.2 数据类型定义 6

3.3 关系模式的优化 8

4、物理结构设计 9

4.1 聚簇设计 9

4.2 索引设计 9

4.3 分区设计 10

5、数据库实施 10

5.1 基本表建立 10

5.2 视图的建立 17

5.3 索引的建立 22

5.4 触发器建立 23

5.5 建存储过程 26

6、应用系统开发与试运行 27

6.1 开发平台和开发环境介绍。 27

6.2 前台界面与后台数据库连接说明代码实现。 27

6.3 系统各功能设计和运行界面截图。 29

7、实验总结 42

7.1 遇到的问题和解决的办法 46

7.2 系统设计的不足 47

7.3 进一步改进思路和体会 47

1.需求分析

开发平台Microsoft Visual Studio 2013
开发环境微软在Builder 2013开发者大会上发布了Visual Studio 2013预览版并且发布其程序组件库.NET 4.5.1的预览版该软件已于北京时间2013年11月13日23:00时正式发布。Visual Studio 2013 预览版以 Visual Studio 2012 和后续的Microsoft Visual Studio 更新中的进展为基础构建而成为开发团队提供需要的解决方案使其接纳这种转变并开发和交付利用下一波Windows 平台创新 (Windows 8.1) 的新式应用程序同时在所有 Microsoft 平台上支持多种设备和服务。

1.1 数据需求描述 

分析系统的数据需求用数据字典和数据流图描述系统的数据需求一般要求有2级初级和详细级数据流图并确定系统开发边界。

1.2 系统功能需求 

系统功能框架介绍处理模块描述。

管理员

  1. 添加教师名单
  2. 查询教师名单
  3. 修改教师信息
  4. 删除教师信息
  5. 添加学生名单
  6. 查询学生名单
  7. 修改学生名单
  8. 统计生源地信息
  9. 修改管理员密码
  10. 重置教师密码
  11. 重置学生密码

学生

  1. 查询个人基本信息
  2. 查询个人成绩
  3. 查询班级课表
  4. 查询个人课表
  5. 修改个人密码
  6. 查询自己的总学分

教师

  1. 查询教师个人信息
  2. 查询个人任课信息
  3. 查询所任课程平均成绩
  4. 查询所任课程学生排名
  5. 提交所任课程的学生成绩
  6. 修改个人密码

1.3 其他性能需求

1.3 其他性能需求

(1)用户输入出错时有错误提示。

(2)给管理员,教师,学生不同的权限,提高数据安全性;

(3)创建触发器,存储过程,防止数据不一致;

2、概念结构设计

2.1 局部E-R图

画出局部的E-R图进一步进行解释说明。

2.2 全局E-R图

合并成全局的E-R图5个数据类别之间存在6个关系。

2.3 优化E-R图

因为本次的E-R已经符合了要求这里就不需要优化了。

3、逻辑结构设计

3.1 关系模式设计

教师teachers(教师编号,教师姓名教师性别教师年龄教师职称联系电话)

专业major(专业编号专业名称)

班级class(班级编号班级名称专业编号)

学生students(学号姓名性别年龄地区已修学分班级编号)

课程course(课程编号课程名称课程学时教师姓名课程学期考核方式学分)

开设 class-course(课程编号班级编号)

上课 teacher-class(教师编号班级编号)

授课 teacher-course(教师编号课程编号)

成绩报告 reports (学号课程编号学期成绩教师姓名)

管理员账号administer-account管理员账号管理员密码

教师账号Teachers-account教师账号教师密码

学生账号students-account学生账号学生密码

3.2 数据类型定义

    

  1. 教师Teacher表

表1  Teacher表

数据项名

数据类型

长度

完整性约束

教师编号

char

10

主键

教师姓名

char

10

教师性别

char

5

教师年龄

int

职称

char

10

联系电话

char

20

  1. 专业Major表

表2  Major表

数据项名

数据类型

长度

完整性约束

专业编号

char

10

主键

专业名称

char

10

  1. 班级Class表

表3  class表

数据项名

数据类型

长度

完整性约束

班级编号

char

10

主键

班级名称

char

10

专业编号

char

10

外键

  1. 学生表Students表

表4  students表

数据项名

数据类型

长度

完整性约束

学号

char

12

主键

姓名

char

10

性别

char

5

年龄

int

生源所在地

char

20

已修学分

float

班级编号

char

10

外键

  1. 课程Course表

表5  courses表

数据项名

数据类型

长度

完整性约束

课程编号

char

10

主键

课程名称

char

10

教师姓名

char

10

课程学期

char

20

课程学时

int

>0

考核方式

char

5

学分

float

>0

  1. 开设 class-course表

表6  class-course表

数据项名

数据类型

长度

完整性约束

班级编号

char

10

主键

外键

课程编号

char

10

外键

  1. 上课 teacher-class表

表7  teacher-class表

数据项名

数据类型

长度

完整性约束

教师编号

char

10

主键

外键

班级编号

char

10

外键

  1. 授课 teacher-course表

表8  teacher-course表

数据项名

数据类型

长度

完整性约束

教师编号

char

10

主键

外键

课程编号

char

10

外键

  1. 成绩报告表reports表

表9  reports表

数据项名

数据类型

长度

完整性约束

学号

char

12

主键

外键

课程编号

char

10

外键

学期

char

10

成绩

int

教师姓名

char

10

  1. 教师账号

表10  Teacher-account表

数据项名

数据类型

长度

完整性约束

教师编号

char

10

主键

教师密码

char

10

  1. 管理员账号

表11  Admin-account表

数据项名

数据类型

长度

完整性约束

管理员编号

char

10

主键

管理员密码

char

10

  1. 学生账号

表12  student-account表

数据项名

数据类型

长度

完整性约束

学生编号

char

12

主键

学生密码

char

10

3.3 关系模式的优化

该关系模式已经满足规范化需求这里不进行规范化处理。

4、物理结构设计

4.1 聚簇设计

   

教师Teacher教师编号

课程Course课程编号

学生Students学生编号班级编号

班级Class班级编号

原因这几张表都是实体表同时聚簇中的属性都是主键或是外键且被访问次数高而其他表或者这些表上的其他属性被访问次数较低没有考虑聚簇的必要。

原则

1基本表中该属性访问次数较多

2基本表中某属性列重复率较高

3基本表中某属性列的值修改很少或者增加和删除元组次数较少

4.2 索引设计

建立索引的一般规则

  1. 在主键属性列和外键属性列上通常都可以分别建立索引不仅有助于唯一性检查和完整性检查而且可以加快连接查询的速度。
  2. 以查询为主的关系可建立尽可能多的索引。
  3. 对等值连接但满足条件的元组较少的查询可以考虑建立索引。
  4. 如果查询可以从索引直接得到结果而不必访问关系则对此种查询可以建立索引。

所以我们建了这些索引

  1

教师表Xum_Teachers18 索引教师编号 xm_Tno18

create unique index Tea_Tno on Xum_Teachers18(xm_Tno18)

  2

课程表Xum_Courses18 索引课程编号xm_Cno18

create unique index Cour_Cno on Xum_Courses18(xm_Cno18)

3

班级表 Xum_Class18 索引班级编号 xm_CLno18, 专业编号xm_Mno18

create unique index Mno_CLno on Xum_Class18(xm_CLno18,xm_Mno18)

4

学生表Xum_Students18 索引学生学号xm_Sno18班级编号xm_CLno18

create unique index CLno_Sno on Xum_Students18(xm_Sno18,xm_CLno18)

5

成绩报告表Xum_Reports18 索引学生编号xm_Sno18 课程编号xm_Cno18

create unique index Cno_Sno on Xum_Reports18(xm_Sno18,xm_Cno18)

6

专业表 xm_Cno18  索引专业编号xm_Mno18

create unique index Majo_Mno on Xum_Majors18(xm_Mno18)

4.3 分区设计

磁盘分区设计的一般原则

1减少访问冲突提高I/O并发性。多个事物并发访问同一磁盘时会产生磁盘访问冲突而导致效率低下如果事务访问数据均能分布于不同磁盘上则I/O可并发执行从而提高数据库访问速度。

2分散热点数据均衡I/O负担。在数据库中数据访问的频率是不均匀的那些经常被访问的数据成为热点数据此类数据宜分散存在于不同的磁盘上以均衡各个磁盘的负荷充分发挥多磁盘的并行操作的优势。

3保证关键数据快速访问缓解系统瓶颈。在数据库中有些数据如数据字典等的访问频率很高为保证对它的访问不直接影响整个系统的效率可以将其存放在某一固定磁盘上以保证其快速访问。

实际例子有将关系和索引放在不同磁盘上查询时两个磁盘同时运行提高物理I/O效率。

不过考虑到本次课题数据量有限暂不考虑分区设计。

5、数据库实施

5.1 基本表建立

  1. 1教师表建立 Xum_Teachers18

图10 建立教师表

create table Xum_Teachers18 (
xm_Tno18 char(10) primary key,
xm_Tname18 char(10),
xm_Tsex18 char(5),
xm_Tage18 int,
xm_Tpos18 char(10),
xm_Tpho18 char(20)

)

2专业表建立Xum_Majors18

create table Xum_Majors18(
xm_Mno18 char(10) primary key,
xm_Mname18 char(10)
)

3班级表建立Xum_Class18

create table Xum_Class18(

xm_Clno18 char(10) primary key,
xm_Clname char(10),
xm_Mno18 char(10)
constraint Major_Class foreign key(xm_Mno18) references Xum_Majors18
)

4学生表Xum_Students18

create table Xum_Students18(
xm_Sno18 char(12) primary key,
xm_Sname18 char(10),
xm_Ssex18 char(5),
xm_Sage18 int,
xm_Sorig18 char(20),
xm_Ssum18 float,
xm_Clno18 char(10)
constraint Class_Student foreign key(xm_Clno18) references Xum_Class18
)

 5课程表 Xum_Courses18


create table Xum_Courses18(
xm_Cno18 char(10) primary key,
xm_Cname18 char(10),
xm_Tname18 char(10),
xm_Cdate18 char(20),
xm_Cway18 char(5),
xm_Ccredit18 float check(xm_Ccredit18>0),
xm_Chour18 int check(xm_Chour18>0)

)

 6授课表 Xum_Tea_Cour18

create table Xum_Tea_Cour18(
xm_Tno18 char(10),
xm_Cno18 char(10),
primary key(xm_Tno18,xm_Cno18),
constraint teacher_course foreign key(xm_Tno18) references Xum_Teachers18,
constraint tea_cour foreign key(xm_Cno18) references Xum_Courses18

)

7班级上课表Xum_Class_Cour18


create table Xum_Class_Cour18(
xm_Clno18 char(10),
xm_Cno18 char(10),
primary key(xm_Clno18,xm_Cno18),
constraint class_course foreign key(xm_Clno18) references Xum_Class18,
constraint clas_cour foreign key(xm_Cno18) references Xum_Courses18

)

8教师任课表Xum_Teac_Class18


create table Xum_Teac_Class18(
xm_Tno18 char(10),
xm_Clno18 char(10),
primary key(xm_Tno18,xm_Clno18),
constraint tea_class foreign key(xm_Tno18) references Xum_Teachers18,
constraint teach_class foreign key(xm_Clno18) references Xum_Class18
)

9成绩表Xum_Reports18


create table Xum_Reports18(

xm_Cno18 char(10),
xm_Sno18 char(12),
xm_Score18 float,
xm_date char(10),
xm_Tname18 char(10),
primary key(xm_Cno18,xm_Sno18),
constraint cour foreign key(xm_Cno18) references Xum_Courses18,
constraint stude foreign key(xm_Sno18) references Xum_Students18

)

10管理员账号密码表 11学生账号密码表12教师账号密码表


create table Students_account18(
xm_Sno18 char(12) primary key,
xm_Skey18 char(10)

)

create table Teachers_account18(
xm_Tno18 char(12) primary key,
xm_Tkey18 char(10)

)
create table Admin_account18(
xm_Ano18 char(12) primary key,
xm_Akey18 char(10)

)

 13数据库表预览

5.2 视图的建立

1学生成绩

create view 学生成绩统计
as
(select Xum_Students18.xm_Sno18,Xum_Students18.xm_Sname18,
Xum_Courses18.xm_Cname18,Xum_Class18.xm_Clname,
Xum_Reports18.xm_Tname18,Xum_Courses18.xm_Ccredit18,
Xum_Courses18.xm_Cdate18,Xum_Reports18.xm_Score18

from Xum_Reports18,Xum_Students18,Xum_Courses18,Xum_Class18
where Xum_Students18.xm_Sno18=Xum_Reports18.xm_Sno18
and Xum_Reports18.xm_Cno18=Xum_Courses18.xm_Cno18
and Xum_Class18.xm_Clno18=Xum_Students18.xm_Clno18
)

2课程平均成绩


create view 每门平均成绩
as(
select xm_Cno18,avg(xm_Score18)平均分
from Xum_Reports18
group by xm_Cno18


)

3课程和学分统计

create view 课程和学分统计
as
(
select xm_Sno18,xm_Cname18,xm_Ccredit18
from 学生成绩统计
)

4教师课表


create view 教师课表
as(
select xm_Tno18,Xum_Teachers18.xm_Tname18,xm_Cno18,xm_Cname18,
xm_Ccredit18,xm_Chour18
from Xum_Teachers18,Xum_Courses18
where Xum_Teachers18.xm_Tname18=Xum_Courses18.xm_Tname18
)

5班级课表


create view 班级课表
as
(
select Xum_Class18.xm_Clno18,xm_Clname,Xum_Courses18.xm_Cno18,
xm_Cname18,xm_Cdate18,xm_Ccredit18,xm_Chour18
from Xum_Class18,Xum_Courses18,Xum_Class_Cour18
where Xum_Class18.xm_Clno18=Xum_Class_Cour18.xm_Clno18
and Xum_Class_Cour18.xm_Cno18=Xum_Courses18.xm_Cno18
)

6生源地人员统计


create  view 生源地人员统计
as
(select xm_Sorig18,count(xm_Sno18)数量
from Xum_Students18
group by xm_Sorig18
)

7教师课程成绩


create view 教师课程成绩
as
(
select xm_Tno18,Xum_Teachers18.xm_Tname18,xm_Cno18,xm_Sno18,xm_Score18
from Xum_Teachers18,Xum_Reports18
where Xum_Teachers18.xm_Tname18=Xum_Reports18.xm_Tname18


)

8教师与学生成绩

 9视图预览

 5.3 索引的建立

create unique index Tea_Tno on Xum_Teachers18(xm_Tno18)
create unique index Cour_Cno on Xum_Courses18(xm_Cno18)
create unique index Mno_CLno on Xum_Class18(xm_CLno18,xm_Mno18)
create unique index Majo_Mno on Xum_Majors18(xm_Mno18)
create unique index CLno_Sno on Xum_Students18(xm_Sno18,xm_CLno18)
create unique index Cno_Sno on Xum_Reports18(xm_Sno18,xm_Cno18)

 5.4 触发器建立 

1教师删除删除一个教师时与教师相关的记录全都删除

    这里漏写了删除教师账号信息 如果运行出错了 可以参考“学生删除“代码 改写触发器

create trigger 教师删除18 
on Xum_Teachers18
for delete 
as 
  delete xm_Tno18
  where Xum_Tea_Cour18.xm_Tno18=(select xm_Tno18 from deleted)
  and Xum_Teac_Class18.xm_Tno18=(select  xm_Tno18 from deleted)

2学生删除删除一个学生时与该学生相关的记录全都删除

create trigger 学生删除18
on Xum_Students18
for delete 
as
 begin
   delete from Xum_Reports18
  where Xum_Reports18.xm_Sno18 in (select xm_Sno18 from deleted)
  delete from Students_account18
  where Students_account18.xm_Sno18 in (select  xm_Sno18 from deleted)
  end

 3学生统计提交成绩时将》=60的成绩记为合格同时加上该课程学分


create trigger 学分统计18 on Xum_Reports18
for insert
as
 update Xum_Students18
 set xm_Ssum18=(
 select sum(xm_Ccredit18)
 from Xum_Courses18
 where xm_Cno18 in
 (
 select xm_Cno18
 from Xum_Reports18
 where xm_Score18>=60 
 and Xum_Reports18.xm_Sno18 in
 (select xm_Sno18
 from inserted)

 )
 )
 where Xum_Students18.xm_Sno18 in
 (
 select xm_Sno18
 from inserted
 )

4教师更新


create trigger 教师更新
on Xum_Teachers18
for update
as 
   if update(xm_Tno18)
   begin 
   update Xum_Tea_Cour18
   set xm_Tno18=i.xm_Tno18
   from deleted d,inserted i ,Xum_Tea_Cour18 t
   where t.xm_Tno18=d.xm_Tno18
   end
   
   begin
   update Xum_Teac_Class18
   set xm_Tno18=i.xm_Tno18
   from deleted d,inserted i,Xum_Teac_Class18 c
   where c.xm_Tno18=d.xm_Tno18
   end

5学生添加 自动注册新用户 默认密码12345


 create trigger 插入创建学生新用户18
  on Xum_Students18
  for insert
  as
   declare @sno char(10)
   begin
       select @sno=xm_Sno18 from inserted
	   insert into Students_account18
	   values(@sno,'12345')


  end

 6教师添加 自动注册新用户 默认密码12345

 create trigger 插入创建教师新用户18
  on Xum_Teachers18
  for insert
  as
   declare @tno char(10)
   begin
       select @tno=xm_Tno18 from inserted
	   insert into Teachers_account18
	   values(@tno,'12345')


  end

5.5 建存储过程

1插入新学生


create procedure pro_插入新学生
@sno char(12),
@sname char(10),
@ssex char(5),
@sage int,
@sorig char(20),
@ssum float,
@clno char(10)
as 
insert Xum_Students18(xm_Sno18,xm_Sname18,xm_Ssex18,xm_Sage18
,xm_Sorig18,xm_Ssum18,xm_Clno18)
values(@sno,@sname,@ssex,@sage,@sorig,@ssum,@clno)
select *
from Xum_Students18
go

2自动算学分


create procedure pro_输入成绩自动生成学分
@sno char(12),
@cno char(10),
@cname char(10),
@cdate char(10),
@score int,
@tname char(10),
@credit float

as
begin  
   insert into pro_选修
   values(@sno,@cno,@score)
   update Xum_Students18
   set xm_Ssum18=xm_Ssum18+@credit
   where Xum_Students18.xm_Sno18=@sno
end

6、应用系统开发与试运行

6.1 开发平台和开发环境介绍。

     Visual studio 2013 + SQL server 2014

     Win10系统

6.2 前台界面与后台数据库连接说明代码实现。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    class sqlConnect
    {
        public SqlConnection conn = null;
        public sqlConnect()
        {
            if (conn == null)
            {
                string connectString = "Data Source =LAPTOP-FPCD1SM8\\SQL2014; database =XumMIS18; " +
            "Integrated Security = True";
                conn = new SqlConnection(connectString);
                if (conn.State == ConnectionState.Closed) conn.Open();

            }
        }
        public void closeConnect()
        {
            if (conn.State == ConnectionState.Closed) conn.Close();
        }
        public DataSet Getds(string sql)
        {
            if (conn.State == ConnectionState.Closed) conn.Open();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            da.Fill(ds);
            conn.Close();

            return ds;
        }

        public int OperateData(string sql)
        {
            if (conn.State == ConnectionState.Closed) conn.Open();
            SqlCommand sqlcom = new SqlCommand();
            sqlcom.CommandText = sql;
            sqlcom.CommandType = CommandType.Text;
            sqlcom.Connection = conn;
            int x = sqlcom.ExecuteNonQuery();
            conn.Close();
            return x;

        }
        public DataSet BindDataGridView(DataGridView dgv, string sql)
        {
            if (conn.State == ConnectionState.Closed) conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            dgv.DataSource = ds.Tables[0];
            return ds;


        }
    }
}

6.3 系统各功能设计和运行界面截图。

   1登录界面如图所示

①登入异常

输入的密码、账号错误提示框报错

图43 账号或密码错误

②输入不完整

③验证成功 

 2进入学生界面

 ①个人信息查询

②成绩查询选择学年查询

③班级课表查询

 ④学生课表和学分查询

 ⑤修改密码

 输入为空

 原密码输入错误原密码为123456

 两次新密码验证不通过

 修改成功

 3教师界面

 ①教师个人信息查询 

 ②教师任课查询

 ③所任课程平均成绩

 ④查询选择该课程学生的分数排名分数按降序

 ⑤教师提交学生成绩 添加成绩课程里只有这个老师教的课

 确定课程出现选择该课程学生的信息

 删除信息

 修改成绩只能修改成绩只有最后一行可编辑将第二位同学 99改为98

 ⑥修改密码和学生界面类似

4管理员界面

①教师管理 

实现插入编号为T10的教师信息同时查询编号为T10老师的信息

插入的教室信息T10,舒克男46教授3765874563查询T10老师的信息

 教师删除删除为T10教师的信息

 修改T09教师的年龄36-->45

 ②学生界面

可以实现学生信息的插入、删除、修改以及查询和教师界面类似这里不做过大介绍

 ③管理员生源统计

 ④管理员修改密码与学生老师的相同

⑤管理员重置教师、学生密码

为防止有教师、学生忘记密码这里提供密码重置功能。

7、实验总结

7.1 遇到的问题和解决的办法

1因为从来没有写过C#代码刚开始的时候对这门语言非常陌生不知道从何下所以我的界面模块都是按照书本后面的实例代码写的写的时候其实心里还是非常模糊不知道怎么实现代码和数据库的嵌入花了很多时间在探索上。但是C#是一门非常适合做界面的语言它继承了C语言和java语言的优点同时界面上控件的安放十分简单上手。

2在系统需求分析完成以后根据用户需求设计概念结构的时候遇到了数据冗余等多种问题经过慢慢的分解关系最终得到了相对来说还比较完善的概念结构通过ER图表示出来。

3设计数据库的时候原本是没有想到触发器和存储过程的设计但是当界面设计完成的差不多要初步测试界面功能时才发现数据库的设计存在很多缺陷在实现插入、删除时多张表之间存在信息不对称问题例如教师或学生删除后没有将其相关记录删除也没有将其账号注销更新信息也同样存在这样的问题因此测试时出现了很多异常情况不过后来添加了触发器大抵上解决了这些问题。

4SQL语句经常出错。因为是写在代码里面查询语句表现出来就是一串字符串在SQL SEVER写查询语句时会自动检查拼写、逻辑错误直接在代码里面写SQL语句非常容易出错导致程序的中端。因为本质上都是对数据库的操作我认为可以先在SQL SEVER中写好语句并且验证其的正确性之后再写入C# 代码中这样会大大降低错误率。

5字符串匹配问题在实现用户登录及密码修改时我发现对查询结果与本身的字符串进行匹配时尽管他们显示出是相等的但是匹配是不成功的。譬如说登录时输入账号为A01,先通过查询找出A01的密码在将输入的密码与其匹配实验中将这两个进行输出肉眼上是看不出差别的但是程序匹配上是永远失败的这个问题产生的原因至今我还是不太清楚。后来我将这两个查询语句进行合并返回满足账号和密码的记录数若记录为0则说明输入的账号或密码有误若不是0则说明输入无误。

7.2 系统设计的不足

1数据库表格的设计存在一些不合理的地方Reports表中感觉加入教师编号会更利与数据库的实现因为只有教师姓名会加剧设计教师与学生操作的复杂性且出错率也会变高。

2功能实现的不够全面管理员的功能主要体现在老师和学生这两种类别上其实还可以进行课程的管理等等学生的选课、退课功能也还没有考虑上整个系统还是比较脆弱简单的。

3在进行学生成绩排名的时候只能显示排名结果但是不能显示名次。

4数据库设计时涉及到班级和专业的地方很少实际中应该把这两个也考虑进去才能完善整个系统。

5建立了太多视图设计视图的时候因为有很多信息的交叉还有很多外键需要很多自然连接 非常繁琐。

 

7.3 进一步改进思路和体会

1本次课设让我理解了设计数据库的复杂性并且数据库的设计一定要保障数据库的完整性和准确性这些在数据定义、基本表建立、设计触发器和存储过程时都要仔细考虑。

2本次实验也让我对C#这么语言有了初步的理解C#集合了c语言和java语言的优点是一门非常适合做界面的语言界面制作比较容易上手。

3设计更多的触发器加强表与表之间的联系尽量减少视图的数量提高基本表与视图的有效性。

4优化界面使界面更加符合实际需求。

体会

通过这次课程设计发现这其中需要的很多知识我们没有接触过还有很多需要我们掌握的东西我们不明白。同时也发现有很多已经学过的东西我们没有理解到位不能灵活运用于实际不能很好的用来解决问题这就需要我们不断的大量的实践通过不断的自学不断地发现问题思考问题进而解决问题。从                     种文档的阅读到开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计。亲身体验了一回系统的设计开发过程。很多东西书上写的很清楚貌似看着也很简单操作起来要考虑到方方面面这还只是一个比较简单的系统可想可知在我们生活中应用的数据库会有多么复杂。


写得比较简陋页面不太美观数据结构也存在问题数据库文件已经找不到了想要参考C#源码的可以私我一定要先建好数据库(修改sqlConnect.cs的数据库名称)确保连接没问题再将C#每个页面的查询语句改成自己建的表

 不知道的看SQL Sever开启时服务器名称

要成功运行 一定要建好数据库、插入数据插入的数据一定要有一定的对应关系遵循主外键约束当数据插入完毕之后。

插入数据参考

insert
into Xum_Majors18
values('M01','计智')
insert
into Xum_Majors18
values('M02','计科')
insert
into Xum_Majors18
values('M03','软工')
insert
into Xum_Majors18
values('M04','网工')



insert 
into Xum_Class18
values('CL01','计智1902','M01')
insert 
into Xum_Class18
values('CL02','计智1902','M01')
insert 
into Xum_Class18
values('CL03','计科1902','M02')
insert 
into Xum_Class18
values('CL04','计科1902','M02')
insert 
into Xum_Class18
values('CL05','网工1901','M03')
insert 
into Xum_Class18
values('CL06','网工1902','M03')

insert 
into Xum_Class18
values('CL07','软工1901','M04')
insert 
into Xum_Class18
values('CL08','软工1902','M04')

insert 
into Xum_Courses18
values('C01','离散数学','程珍','大一下','考试',4,24)
insert 
into Xum_Courses18
values('C03','机器学习','黄亮','大一下','考查',4 ,24)
insert 
into Xum_Courses18
values('C04','数字电路','赵冬冬','大一下','考试',4 ,24)
insert 
into Xum_Courses18
values('C05','数字电路','龙胜春','大一下','考试',4 ,24)
insert 
into Xum_Courses18
values('C06','马原','周文','大一上','考试',3 ,18)
insert 
into Xum_Courses18
values('C07','毛概','陈燕','大一下','考试',3 ,18)
insert 
into Xum_Courses18
values('C08','思修','吴五','大一上','考试', 4,24)


insert 
into Xum_Students18
values('06060101','张三','男',20,'浙江',20,'CL01')
insert 
into Xum_Students18
values('06060102','李四','男',20,'浙江',15,'CL01')
insert 
into Xum_Students18
values('06060103','王五','男',20,'浙江',10,'CL02')
insert 
into Xum_Students18
values('06060104','张南','女',20,'浙江',22,'CL02')
insert 
into Xum_Students18
values('06060105','丽丽','女',20,'北京',18,'CL03')
insert 
into Xum_Students18
values('06060106','倩倩','女',20,'浙江',19,'CL03')
insert 
into Xum_Students18
values('06060107','悠悠','女',20,'浙江',25,'CL04')
insert 
into Xum_Students18
values('06060108','琪琪','男',20,'安徽',22,'CL04')
insert 
into Xum_Students18
values('06060109','贝奇','男',20,'湖南',20,'CL05')
insert 
into Xum_Students18
values('06060110','洛克','男',20,'浙江',20,'CL05')
insert 
into Xum_Students18
values('06060202','尼克','男',20,'江苏',15,'CL06')
insert 
into Xum_Students18
values('06060203','艾米','女',20,'江西',10,'CL06')
insert 
into Xum_Students18
values('06060301','丝尔特','女',20,'福建',20,'CL07')
insert 
into Xum_Students18
values('06060302','梅森','男',20,'浙江',15,'CL07')
insert 
into Xum_Students18
values('06060403','大卫','男',20,'浙江',10,'CL08')
insert 
into Xum_Students18
values('06060405','汤米','女',20,'浙江',22,'CL08')



insert 
into Xum_Teachers18
values('T01','程珍','女',35,'教师','13344332278')
insert 
into Xum_Teachers18
values('T02','王英姿','女',35,'教师','13756742178')
insert 
into Xum_Teachers18
values('T03','黄亮','男',34,'教师','15745723349')
insert 
into Xum_Teachers18
values('T04','赵冬冬','男',30,'教师','17858640979')
insert 
into Xum_Teachers18
values('T05','龙胜春','女',37,'教师','17857573670')
insert 
into Xum_Teachers18
values('T06','周文','女',32,'教师','18367986174')
insert 
into Xum_Teachers18
values('T07','陈燕','女',45,'教师','17858427842')
insert 
into Xum_Teachers18
values('T08','吴五','男',35,'教师','15724547842')



insert 
into Xum_Tea_Cour18
values('T01','C01')
insert 
into Xum_Tea_Cour18
values('T02','C02')
insert 
into Xum_Tea_Cour18
values('T03','C03')
insert 
into Xum_Tea_Cour18
values('T04','C04')

insert 
into Xum_Tea_Cour18
values('T05','C05')
insert 
into Xum_Tea_Cour18
values('T06','C06')
insert 
into Xum_Tea_Cour18
values('T07','C07')
insert 
into Xum_Tea_Cour18
values('T08','C08')


insert 
into Xum_Class_Cour18
values('CL01','C01')
insert 
into Xum_Class_Cour18
values('CL02','C02')
insert 
into Xum_Class_Cour18
values('CL03','C03')
insert 
into Xum_Class_Cour18
values('CL04','C04')
insert 
into Xum_Class_Cour18
values('CL05','C05')
insert 
into Xum_Class_Cour18
values('CL06','C06')
insert 
into Xum_Class_Cour18
values('CL07','C07')
insert 
into Xum_Class_Cour18
values('CL08','C08')

insert
into Xum_Teac_Class18
values('T01','CL01')
insert
into Xum_Teac_Class18
values('T02','CL02')
insert
into Xum_Teac_Class18
values('T03','CL03')
insert
into Xum_Teac_Class18
values('T04','CL04')
insert
into Xum_Teac_Class18
values('T05','CL05')
insert
into Xum_Teac_Class18
values('T06','CL06')
insert
into Xum_Teac_Class18
values('T07','CL07')
insert
into Xum_Teac_Class18
values('T08','CL08')


insert
into Xum_Reports18
values('C01','06060101',90,'大一下','程珍')
insert
into Xum_Reports18
values('C01','06060102',93,'大一下','程珍')
insert
into Xum_Reports18
values('C02','06060103',78,'大一上','王英姿')
insert
into Xum_Reports18
values('C02','06060104',96,'大一上','王英姿')

insert
into Xum_Reports18
values('C03','06060105',87,'大一下','黄亮')

insert
into Xum_Reports18
values('C03','06060106',98,'大一下','黄亮')
insert
into Xum_Reports18
values('C04','06060107',94,'大一下','赵冬冬')
insert
into Xum_Reports18
values('C04','06060108',80,'大一下','赵冬冬')
insert
into Xum_Reports18
values('C05','06060109',87,'大一下','龙胜春')
insert
into Xum_Reports18
values('C05','06060110',96,'大一下','龙胜春')
insert
into Xum_Reports18
values('C06','06060202',95,'大一上','周文')
insert
into Xum_Reports18
values('C06','06060203',93,'大一上','周文')
insert
into Xum_Reports18
values('C07','06060301',98,'大一下','陈燕')
insert
into Xum_Reports18
values('C07','06060302',77,'大一下','陈燕')
insert
into Xum_Reports18
values('C08','06060403',67,'大一上','吴五')
insert
into Xum_Reports18
values('C08','06060405',88,'大一上','吴五')




insert 
into Teachers_account18
values('T01','12345')
insert 
into Teachers_account18
values('T02','12345')
insert 
into Teachers_account18
values('T03','12345')
insert 
into Teachers_account18
values('T04','12345')
insert 
into Teachers_account18
values('T05','12345')
insert 
into Teachers_account18
values('T06','12345')
insert 
into Teachers_account18
values('T07','12345')
insert 
into Teachers_account18
values('T08','12345')


insert into
Students_account18
values('06060101','12345')
insert into
Students_account18
values('06060102','12345')
insert into
Students_account18
values('06060103','12345')
insert into
Students_account18
values('06060104','12345')
insert into
Students_account18
values('06060105','12345')
insert into
Students_account18
values('06060106','12345')
insert into
Students_account18
values('06060107','12345')
insert into
Students_account18
values('06060108','12345')
insert into
Students_account18
values('06060109','12345')
insert into
Students_account18
values('06060110','12345')
insert into
Students_account18
values('06060202','12345')
insert into
Students_account18
values('06060203','12345')
insert into
Students_account18
values('06060301','12345')
insert into
Students_account18
values('06060302','12345')
insert into
Students_account18
values('06060403','12345')
insert into
Students_account18
values('06060405','12345')

insert into
Admin_account18
values('A01','12345')
insert into
Admin_account18
values('A02','12345')

打开所有协议然后修改每个界面的查询语句

注意点

1.C#源码用VS2013运行 其他版本可能会出错 SQL sever选择2014版

2.不要重复插入数据插入的数据遵循主外键约束

3.触发器一定要写 如果不想写的话 就把对应的功能去掉譬如“教师删除“”触发器可以直接删除掉“删除教师”的功能如果要留下这些功能 一定要写触发器

4.视图可以不建立 运行过程中并没有用到

5.可以先在SQL里面运行语句 再去C#里面运行 这样出错概率低

6.源码里面有几个页面多余  运行时没有用到就可以删掉

7.数据库连接问题 要把所有协议打开 保证服务器名没有写错

8.页面可以自己重新编辑换控件、背景jpg、增添功能

不需要关注我的 只是学习分享只要私信我或者在下方留言我都会发的 不需要已关注的

  因为感觉评论好像会审核 提醒的也比较慢 并且也有点泄露隐私 大家尽量私信我就好了 这样回复也方便一点

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 数据库