高校成绩管理数据库系统的设计与实现实验报告姜楠

高校成绩管理数据库系统的设计与实现

1、需求分析

计算机已经深入到日常工作和生活的方方面面,成为我们学习和工作的得力助手,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。随着越来越多的应用软件出现,人们对它的要求也越来越高;虽然现在世界上的各种软件层出不穷,但它们依然不能满足用户的各种特殊需要,所以人们仍是不得不开发适合特殊需求的软件。高校成绩管理系统记录了一个大学生成绩的系统,它的出现使得查询、更新、插入简单化,高效化,成本也随之大大减少。使用计算机对成绩信息的管理,具有手工管理所无法比拟的优点:信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩管理的效率,也是高校成绩正规化管理的重要途径。

本软件控件均以中文形式表示,对普通程序使用者的查询提供简单方便的快捷操作,不需要技术含量。

以SQLSERVER数据库管理系统为平台,通过设计数据库概念模型、逻辑模型以及利用标准SQL语言的数据库实现,掌握关系数据库系统的设计与实现方法,增强数据库设计和数据库应用系统开发能力。

操作人员与维护人员应懂的SQL语言。

运行环境:

硬件环境:LENOVO-G470

软件环境:1.Windows8企业版

2.MicrosoftSQLServer2012Ultimate

3.NETBEANS7.3

1.1数据需求描述

1.2系统功能需求

.管理员

(1).添加教师名单;

(2).查询教师名单;

(3).修改教师信息;

(4).删除教师名单;

(5).添加学生名单;

(6).查询学生名单;

(7).修改学生信息;

(8).删除学生名单;

(9).统计生源地信息;

(10).修改密码;

.教师

(1).查看个人信息;

(2).查看每门课程平均成绩统计;

(3).输入学生成绩,自动生成该学生已修总学分;

(4).查看任课信息;

(5).查看学生成绩名次;

(6).修改密码;

.学生

(1).查看个人信息;

(2).查看自己的课表;

(3).查看不同班级的开课情况;

(4).查询考试成绩;

(5).修改密码;

1.3其他性能需求

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

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

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

2、概念结构设计

3、逻辑结构设计

.上课jn(教师编号jn,班级编号jn)[班级编号jn]

.授课jn(教师编号jn,课程编号jn)

.课程jn(课程编号jn、课程名称jn、教师姓名jn、学期jn、学时jn、考试或考查jn、学分jn)

.学习jn(学号jn,课程编号jn,学期jn,课程名称jn,成绩jn,教师姓名jn)[课程编号jn]

.学生jn(学号jn、学生姓名jn、学生性别jn、学生年龄jn、生源所在地jn、已修学分总数jn,班级编号jn)

.开设jn(课程编号jn,班级编号jn)[课程编号jn,班级编号jn]

.班级jn(班级编号jn,班级名称jn,专业编号jn)

.专业jn(专业编号jn,专业名称jn)

.学生账号jn(学生编号jn,学生密码jn)[学生编号jn]

.教师账号jn(教师编号jn,教师密码jn)[教师编号jn]

.管理员账号jn(管理员编号jn,管理员密码jn)[管理员编号jn]

3.2数据类型定义

(1).教师jn

数据项名

数据类型

长度

完整性约束

备注

教师编号jn

char

20

主键,唯一,非空

教师姓名jn

教师性别jn

2

教师年龄jn

职称jn

10

(2).上课jn

主键,唯一,非空,外键

教师编号,班级编号都是外键

班级编号jn

外键

(3).授课jn

教师编号

课程编号jn

课程编号

(4).课程jn

主键,唯一,非空

课程名jn

学时jn

int

>0

考试或考查jn

4

学分jn

(5).学习jn

学生学号jn

放入教师姓名为了减少与教师表格的自然连接

学期jn

课程名称jn

成绩jn

教师姓名

(6).学生jn

12

已修学分总数用触发器实现自动统计功能

学生姓名jn

学生性别jn

学生年龄jn

生源所在地jn

已修学分总数jn

(7).开设jn

联合主键,唯一,非空

(8)班级jn

班级名称jn

专业编号jn

(9).专业jn

专业名称jn

(10).学生账号jn

学生编号jn

学生密码jn

(11).教师账号jn

教师密码jn

(12).管理员账号jn

管理员编号jn

管理员密码jn

3.3关系模式的优化

对关系模式进行规范化处理,对关系模式进行评价与修正。

4、物理结构设计

4.1聚簇设计

该高校成绩管理系统数据库可建立聚簇:

.教师jn(教师编号jn);

.课程jn(课程编号jn);

.学生jn(学生学号jn,班级编号jn);

.jn(班级编号jn);

这几个聚簇设计是因为这几张表都是实体表,,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。

4.2索引设计

对于一个确定的关系,通常在下列情况下可以考虑建立索引。

.在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。

.以查询为主的关系可建立尽可能多的索引。

.对等值连接,但满足条件的元组较少的查询可以考虑建立索引。

.如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。

该高校成绩管理系统数据库可建立以下索引:

.班级jn(班级编号jn);

.学习jn(学号jn,课程编号jn);

4.3分区设计

涉及到数据库文件和日志文件的分区问题。

磁盘分区设计的一般原则:

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

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

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

该成绩管理系统由于程序较小,所以不进行分区设计。

5、数据库实施

建立数据库D01jiangnan

5.1基本表建立

(1)教师jn

SQL语句为:

CREATETABLE教师jn

(

教师编号jnCHAR(20)PRIMARYKEY,

教师姓名jnCHAR(10),

教师性别jnCHAR(2),

教师年龄hnINT,

职称jnCHAR(20),

);

SQL执行结果截图:

(2)专业jn

CREATETABLE专业jn

专业编号jnCHAR(20)PRIMARYKEY,

专业名称jnCHAR(20),

(3)班级jn

CREATETABLE班级jn

班级编号jnCHAR(20)PRIMARYKEY,

班级名称jnCHAR(20),

专业编号jnCHAR(20)

constraintMajor_Classforeignkey(专业编号jn)references专业jn

(4)课程jn

CREATETABLE课程jn

课程编号jnCHAR(20)PRIMARYKEY,

课程名jnCHAR(20),

学时jnINT,

考试或考查jnCHAR(4),

学分jnCHAR(4)

)

(5)学生jn

CREATETABLE学生jn

学生学号jnCHAR(20)PRIMARYKEY,

学生姓名jnCHAR(10),

学生性别jnCHAR(2),

学生年龄jnint,

生源所在地jnchar(20),

已修学分总数jnint,

班级编号jnCHAR(20)

constraintClass_Studentforeignkey(班级编号jn)references班级jn

(6)上课jn

CREATETABLE上课jn

教师编号jnCHAR(20),

班级编号jnCHAR(20),

PRIMARYKEY(教师编号jn,班级编号jn),

CONSTRAINTClass_Teach1FOREIGNKEY(教师编号jn)REFERENCES教师jn,

CONSTRAINTClass_Teach2FOREIGNKEY(班级编号jn)REFERENCES班级jn,

(7)授课jn

CREATETABLE授课jn

课程编号jnCHAR(20),

CONSTRAINTCourse_InstructFOREIGNKEY(课程编号jn)REFERENCES课程jn

CONSTRAINTCourse_Instruct2FOREIGNKEY(教师编号jn)REFERENCES教师jn

(8)学习jn

CREATETABLE学习jn

学生学号jnCHAR(20),

学期jnchar(10),

课程名称jnchar(20),

成绩jnint,

教师姓名jnchar(20),

primarykey(学生学号jn,课程编号jn),

CONSTRAINTCourse_StudyFOREIGNKEY(课程编号jn)REFERENCES课程jn

(9)开设jn

CREATETABLE开设jn

班级编号jnchar(20),

primarykey(课程编号jn,班级编号jn),

CONSTRAINTClass_SetupFOREIGNKEY(班级编号jn)REFERENCES班级jn

5.2数据输入

.班级

.开设

.课程

.上课

.授课

.专业

.学习

.管理员帐号

.教师账号

.学生账号

5.3视图的建立

(1)学生成绩统计

createview学生成绩统计jn

as

select学习jn.学生学号jn,学生姓名jn,学习jn.课程名称jn,

班级名称jn,学习jn.教师姓名jn,学分jn,课程jn.学期jn,成绩jn

from学生jn,课程jn,班级jn,学习jn

where学生jn.学生学号jn=学习jn.学生学号jn

AND学习jn.课程编号jn=课程jn.课程编号jn

AND班级jn.班级编号jn=学生jn.班级编号jn

(2)每门课程平均成绩统计

createview每门课程平均成绩jn

selectavg(成绩jn)平均成绩jn,课程编号jn

from学习jn

groupby课程编号jn

(3)学生所学课程及学分统计

createview学生所学课程及学分统计jn

select学生学号jn,课程名称jn,学分jn

from学生成绩统计jn

(4)教师任课查询

createview教师任课查询jn

select教师jn.教师编号jn,课程jn.教师姓名jn,

课程jn.课程编号jn,课程名jn,学时jn,学分jn

from教师jn,课程jn,授课jn

where授课jn.课程编号jn=课程jn.课程编号jn

and授课jn.教师编号jn=教师jn.教师编号jn

(5)班级课程开设查询

createview班级课程开设查询jn

select班级jn.班级编号jn,班级jn.班级名称jn,

from班级jn,课程jn,开设jn

where班级jn.班级编号jn=开设jn.班级编号jn

AND开设jn.课程编号jn=课程jn.课程编号jn

(6)地区学生数统计

createview地区学生数统计jn

select生源所在地jn,count(学生学号jn)地区学生总数jn

from学生jn

groupby生源所在地jn

5.4索引的建立

下面根据4.2来建立索引:

createuniqueindexUI_教师编号jn

on教师jn(教师编号jn)

createuniqueindexUI_专业编号jn

on专业jn(专业编号jn)

createuniqueindexUI_班级及专业jn

on班级jn(班级编号jn,专业编号jn)

createuniqueindexUI_课程编号jn

on课程jn(课程编号jn)

createuniqueindexUI_学号及班级号jn

on学生jn(学生学号jn,班级编号jn)

createuniqueindexUI_学号及课课程号jn

on学习jn(学生学号jn,课程编号jn)

5.5触发器建立

(1)当删除"教师jn"中的'教师编号jn'记录时,需要相应地删除"授课jn"和"上课jn"里的"教师编号jn",所以在"教师jn"上建立触发器

sql语句:

createtriggerTR_DELETE_教师编号jn

ON教师jn

insteadofdelete

deletefrom授课jn

fromdeleted

where授课jn.教师编号jn=deleted.教师编号jn

deletefrom上课jn

where上课jn.教师编号jn=deleted.教师编号jn

deletefrom教师jn

where教师jn.教师编号jn=deleted.教师编号jn

sql执行结果:

(2)当更新"教师jn"中的"教师编号jn"记录时,需要相应地更新"授课jn"和"上课jn"里的"教师编号jn",所以在"教师jn"上建立触发器

sql语句为:

createtriggerTR_UD_教师编号jn

forupdate

ifupdate(教师编号jn)

begin

update授课jn

set教师编号jn=Ins.教师编号jn

fromdeletedDe,insertedIns,授课jnK

wherek.教师编号jn=De.教师编号jn

end

update上课jn

fromdeletedDe,insertedIns,上课jnK

whereK.教师编号jn=De.教师编号jn

sql语句执行结果:

5.6存储过程建立

建立一个输入成绩,自动生成其总学分的存储过程

sql语句如下:

createprocedurePRO_输入成绩自动生成学分jn

@学生学号jnchar(20),

@课程编号jnchar(20),

@课程名jnchar(20),

@学期jnchar(20),

@成绩jnint,

@教师姓名jnchar(20)

update学生jn

set学生jn.已修学分总数jn=学生jn.已修学分总数jn

+(select学分jn

from课程jn

where@课程编号jn=课程编号jn

where学生jn.学生学号jn=@学生学号jn

Sql执行结果如下:

6.系统简介

1.登陆界面

图6.1用户进入系统首先看到这个界面

2.登入异常

图6.2没有选择用户类型

图6.3没有填写用户名或密码

图6.4数据库中不存在相应账号

3.进入学生界面

图6.5首先跳出一个欢迎界面

图6.6出现一个学生信息管理界面

4.学生管理-个人信息

图6.7按'学生信息管理界面'上的'个人信息',出现该界面

5.学生管理-课程查询

图6.8按'学生信息管理界面'上的'课程查询',出现该界面

6.学生管理-班级开课

图6.9按'学生信息管理界面'上的'班级开课',出现该界面,通过选择班级编号能查询不同班开设的课程

7.学生管理-成绩查询

图6.10按'学生信息管理界面'上的'成绩查询',出现该界面,通过选择学年能查询不同学期课程成绩

8.学生管理-修改密码

图6.11按'学生信息管理界面'上的'修改密码',出现该界面.

图6.12修改密码成功

图6.13修改密码失败,密码不一致

图6.14修改密码失败,旧密码错误

9.学生管理-注销

图6.15返回登陆界面

10.教师登陆

图6.16登陆成功,出现欢迎界面

图6.17教师信息管理界面

11.教师管理-个人信息

图6.18教师个人信息

12教师管理-任课查询

图6.19通过选择不同的学年能显示教师任课信息

13.教师管理-查询自己教授不同课程的平均成绩

图6.20查询自己教授不同课程的平均成绩,教师不能查询别的教师的课程平均成绩

14.教师管理-成绩排名

图6.21查询自己教授不同课程的学生排名,教师不能查询别的教师的课程

15教师管理-输入学生成绩

图6.22教师只能添加自己教授的课程的学生成绩

16教师管理-修改密码,注销(与学生管理相同)

17.管理员登陆

图6.23出现欢迎界面

图6.24出现管理员维护界面

18.管理员维护-管理教师信息

图6.25支持查询所有教师,添加教师,修改教师信息,删除教师等功能.

19.管理员维护-管理学生信息

图6.26支持查询所有学生,添加学生,修改学生信息,删除学生等功能.

20.管理员维护-生源地统计

图6.26查询学生源地信息

7.实验总结

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

(1)ER图,基本表设计问题.

开始的时候什么都不懂,上课学过的东西虽然朦朦胧胧有些听懂了,不知道如何使用。开始建E-R图的时候,先建好了教师,学生,班级的属性集,但是如何将他们结合起来,却是个大问题.后来与同学交流想明白,教师负责给班级授课,一个教师课上多门课程,一个班级可以选很多课,教师给学生打分时通过课程编号,班级编号,学号来选确定。

另外加了三张表负责记录登陆时的账号和密码,为什么不把密码这一项加入学生,教师,管理员中呢?

因为个人觉得密码一项和别的信息联系很少,独立出来更易管理。但是建的基本表越多,冗余和异常就越容易出现。

(2)SQL视图设计问题。

首先,刚开始写软件是一直是直接连接基本表,以为视图不会用到。但后来要实现复杂功能时,才意识到要用视图来实现,于是后期才实现视图。

其次,我在设计基本表的时候,为了顾及信息的详细和全面,设计了12张基本表,为后面的设计带来了很大的麻烦。设计视图的时候,因为有很多信息的交叉,还有很多外键,需要很多自然连接,非常繁琐。

(3)触发器和存储过程设计问题。

表示触发器和存储过程上课没怎么讲,自己觉得很高深,一直不敢去动这一方面的设计。后来因为管理员删除教师时,必须要删除关联的'授课表','上课表',还有教师输入某个同学成绩时,要同时修改'学生表'中的'已修学分总数'。才开始接触这一方面。但是语法还是理解了好久。

由于前期理解问题,随便写了一个触发器,导致管理员无法正常删除教师,在同学细心指导下,重新写了一个trigger,测试通过。

(4)用NETBENS设计软件。

实现对jButton,jComboBox的事件监听很方便,只要求把逻辑调对就可以了。

(5)数据库与NetBeans连接问题.

其实前期一直以为连接数据库很烦,后来在同学指导下学会如何接.Netbeans

对数据库支持很好,在netbeans的IDE可以像SQLServer一样登陆数据库D01jiangnan,查看基本表,视图,能实现select,update,delete语句.还有需要配置软件编译时的库文件,必须要把sqljdbc4.jar放到编译库中去(sqlserver2008及以上用sqljdbc.jar文件,sqlserver2005要用sqljdbc,jar).还有连接数据库有两种方式:jdbc或者jtds.

(6)sql语句撰写问题。

(7)体会

通过这次大型实验,真的让我学到了很多东西。以前上课时感觉都听懂的东西,放到实践中来一用,发现都不会,还得细细得找资料、问问题。在大型实验不断进行下去的途中,发现自己在每天学习着新的知识,这样的感觉很好。我发现人的求知欲一旦被激发,就会使人有源源不断的动力去做成这件事情。当然,在大型试验进行中也遇到了各种各样的问题,做事情一定要保持耐心,特别像做科研搞项目的,可能一开始拿到手的东西是你根本无法去下手的,但是你一步步的做下去,会发现其实还是可以步步跟进的,而且在层层推进的过程中,你会体验到成功的快乐。

7.2系统设计的不足

(1)数据库中数据量太少。

在进行数据设计的时候,只考虑了几个最简单的数据输入,可能只能用于应付作业,并不能用于实际。

(2)界面比较丑,对于netbean使用比较生疏.而且逻辑上存在问题,修改比较繁琐.

THE END
1.学生成绩管理系统ER图流程图组织结构图课程设计.docx学生成绩管理系统ER图流程图组织结构图-课程设计.docx 11页VIP内容提供方:134***4822 大小:42 KB 字数:约4.05千字 发布时间:2023-10-29发布于湖北 浏览人气:226 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)学生...https://m.book118.com/html/2023/1029/7005166114006001.shtm
2.学生成绩管理系统ER图学生成绩管理系统ER图 使用模版 学生成绩管理系统流程图 会员免费 使用模版 学生成绩管理系统组织结构图 免费 使用模版 学生与班级成绩er图模板 免费 使用模版 学生成绩管理系统流程图 免费 使用模版 学生管理ER图 免费 使用模版 学生成绩管理ER图 免费 使用模版 ...https://imiaoban.com/pic/33834.html
3.学生成绩管理系统——ER图实体联系流程图模板学生成绩管理系统——ER图-实体联系 学生成绩管理系统的实体联系图E-R图 E-R图 学生成绩管理系统 实体联系图 作者其他创作 大纲/内容 正考授课 1 n 成绩 管理员 补考授课 学生 教师 课程https://www.processon.com/view/5cd03618e4b01941c8c8656f
4.数据库实现学生成绩管理系统盐管理及ER图使用数据库实现了学生成绩管理系统,包含了选修课程管理,用viso画出了数据库对应的E-R图,数据库sql文件直接导入到数据库即可 学生成绩系统 学生选修系统 数据库 er图 E-R图 2014-07-13 上传 大小:134KB 所需: 46积分/C币 立即下载 基于Java+oracle学生信息管理系统的设计与实现(含源文件).docx ...https://www.iteye.com/resource/guandongsheng110-7628051/
1.学生信息管理系统设计需求及ER图学生信息管理系统er图文章浏览阅读3.4w次,点赞22次,收藏175次。在学数据库理论还有就是大家熟悉的SQL server 2012用visio画了个学生信息管理系统的E-R图,分享给大家理解每个实体以及他们的属性,实体之间的联系_学生信息管理系统er图https://blog.csdn.net/sdwujk160507140150/article/details/79819829
2.学生成绩管理python学生成绩管理系统er图学生成绩管理 python 学生成绩管理系统er图 文章目录 ER图基本概念 ER图实例 ER图基本概念 ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。 实体(entity): 即数据模型中的数据对象(即数据表),用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体...https://blog.51cto.com/u_16213649/8712831
3.学生成绩管理系统ER图.doc文档介绍:该【学生成绩管理系统ER图 】是由【橘子】上传分享,文档一共【4】页,该文档可以免费在线阅读,需要了解更多关于【学生成绩管理系统ER图 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。一...https://m.taodocs.com/p-976540311.html
4.《管理信息系统》课程设计数据库设计:绘制ER图 系统功能描述:对程序的主要功能界面截图并进行介绍。系统测试:输入具体数据将运行结果截图。 设计总结。 以下题目仅供参考,可以另选题目: 1.学生成绩管理系统 2.学生信息管理系统 3.酒店管理系统 4.教务信息管理系统 ...https://www.360wenmi.com/f/filepg5d52re.html
5.学生学籍档案管理系统(1)index.asp 进入本栏目后的第一显示页,显示本软件总体功能,提供多种对学生档案的管理方式,以及用户的注册。 (2)login.asp用于用户的注册。 《 学生学籍管理系统的研究 》 摘要:本文对学生学籍管理系统的学生成绩管理、学生个人基本信息管理、课程管理、用户(管理员、教师、学生)管理及一些数据的统计与管理等功能...https://www.zboao.com/cgal/8923.html
6.某培训中心要研制一个计算机管理系统。它的业务是:将学员发来的...阅读以下说明和图,回答问题1至问题4,将解答填入对应栏内。 【说明】 某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下: 1.每门课程都由3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程...https://www.educity.cn/souti/4F9D96A5.html
7.物流实训报告热门(4)熟悉物流仓储管理系统的操作。 三、情景回顾: (1)绘制ER图 刚开始根本不知道怎么在word里面画图,后来老师告诉我们要先打开绘图工具,在选择形状,在形状里点击右键添加文字。这个ER图的主体真不少,要表示各个主体之间的关系,又要美观,整齐,确实复杂。在绘图过程中绘制了一幅图形后,原来的文字就乱跑,后来发现这是...https://www.ruiwen.com/gongwen/baogao/1227877.html