BX110937学生成绩管理系统数据库课程设计报告.docx
- 文档编号:26063997
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:40
- 大小:3.39MB
BX110937学生成绩管理系统数据库课程设计报告.docx
《BX110937学生成绩管理系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《BX110937学生成绩管理系统数据库课程设计报告.docx(40页珍藏版)》请在冰豆网上搜索。
BX110937学生成绩管理系统数据库课程设计报告
《数据库原理及应用》
课程设计报告
基于学生成绩管理系统设计与应用
姓名:
李建辉
班级:
BX1109
学号:
37
指导老师:
沈学东
《学生成绩管理系统》系统设计文档
一、需求分析
1.1.开发背景和意义
学生成绩的管理关系到任课老师,学生本人和学校的发展,传统的学生成绩管理主要靠人工输入,无法与计算机这种现代化的信息工具有效结合,而且不能够很好地更新查找更新,成绩管理混乱,使得学生的成绩输入会造成错误,让学校不能准确的了解学生的成绩情况,应用java语言和数据结构化查询语言,我们开发了这一系统方便了学生成绩的查询插入修改,也方便了学生进行查询开课情况,查询课程信息,方便了老师插入学生成绩,发布开课情况和授课信息,大大提高了高校的学生成绩,老师授课和教师的管理。
1.2.系统需求概况
1、学生
学生对学生成绩管理系统的要求有:
1)、添加学生信息:
学生将自己的个人信息添加到数据库中包括(学生姓名,学生学号,学生性别,学生年龄,已修总学分,班级编号,地区编号,登录密码)。
2)、学生信息查询包括(学生姓名,学生年龄,地区编号,班级编号,已修总学分)
3)、学生成绩查询包括学生姓名,课程名称,学分
4)、查询教师基本信息包括教师姓名,教师年龄,职称,联系电话,登录密码
5)、查询课程基本信息包括课程名称,教师姓名,开课时间,学时,考试或考察,学分
6)、查询专业基本信息包括专业名
7)、查询课程开设信息包括班级编号,班级名称,课程名称,开设学期,教师姓名,学时
1.3.数据字典
数据元素
数据类型
数据长度(byte)
数据来源
学生学号
char(20)
20
学生表
学生姓名
char(20)
20
学生表
学生性别
nvarchar(50)
50
学生表
学生年龄
int
32
学生表
已修学分总数
int
32
学生表
班级编号
char(20)
20
学生表
地区编号
char(20)
20
学生表
登录密码
int
32
学生表
数据元素
数据类型
数据长度
数据来源
课程名称
char(20)
20
课程表
课程编号
nvarchar(50)
50
课程表
教师姓名
nvarchar(50)
10
课程表
开课时间
char(20)
20
课程表
学时
int
32
课程表
学分
char(4)
4
课程表
考试或考查
char(4)
4
课程表
数据元素
数据类型
数据长度
数据来源
班级编号
char(20)
20
班级表
班级名称
char(20)
20
班级表
专业编号
char(20)
20
班级表
数据元素
数据类型
数据长度
数据元素
学生学号
char(20)
20
学习表
课程编号
char(20)
20
学习表
学期
char(20)
20
学习表
课程名称
char(20)
20
学习表
成绩
char(4)
4
学习表
教师姓名
nvarchar(50)
50
学习表
数据元素
数据类型
数据长度
数据元素
专业编号
char(20)
20
专业表
专业名称
char(20)
20
专业表
数据元素
数据类型
数据长度
数据元素
教师编号
nvarchar(50)
50
上课表
班级编号
char(20)
20
上课表
数据元素
数据类型
数据长度
数据元素
地区编号
char(20)
20
地区表
地区名称
char(20)
20
地区表
数据元素
数据类型
数据长度
数据元素
课程编号
char(20)
20
开设表
班级编号
char(20)
20
开设表
1.4.功能分析
图1-1学生成绩系统功能图
二、概念结构设计
图2-1课程E-R图
图2-2学生E-R图
图2-3班级E-R图
图2-4专业E-R图
图2-5学习E-R图
图2-6总体E-R图
三、逻辑结构设计
3.1.关系模式设计
将E-R图转换为关系模式,定义实体型、属性及其联系。
课程(课程编号、课程名称、教师姓名、开课时间、学时、考试或考查、学分)
学习(学生学号,课程编号,学期,课程名称,成绩,教师姓名)
学生(学生学号、学生姓名、学生性别、学生年龄、已修学分总数,班级编号,地区编号,登录密码)
地区(地区编号,地区名称)
开设(课程编号,班级编号)
班级(班级编号,班级名称,专业编号)
专业(专业编号,专业名称)
上课(教师编号,班级编号)
3.2.数据类型定义
(1)上课
数据项名
数据类型
长度
完整性约束
教师编号
nvarchar(50)
50
主键,唯一,非空
班级编号
char(20)
20
外键
(2)课程
数据项名
数据类型
长度
完整性约束
课程编号
char
20
主键,唯一,非空
课程编名
char
20
教师姓名
nvarchar(50)
50
开课时间
char
20
学时
int
32
>0
考试或考查
char
4
学分
char
4
>0
(3)学习
数据项名
数据类型
长度
完整性约束
学生学号
char
20
主键,唯一,非空
课程编号
char
20
外键
学期
char
20
课程名称
char
20
成绩
int
32
0<成绩<100
教师姓名
nvarchar
50
(4)学生
数据项名
数据类型
长度
完整性约束
学生学号
char
20
主键,唯一,非空
学生姓名
char
20
学生性别
nvarchar
50
男或女
学生年龄
int
32
0<年龄<150
已修学分总数
int
32
>0
班级编号
char
20
外键
地区编号
char
20
外键
(5)地区
数据项名
数据类型
长度
完整性约束
地区编号
char
20
主键,唯一,非空
地区名称
char
20
(6)班级
数据项名
数据类型
长度
完整性约束
班级编号
char
20
主键,唯一,非空
班级名称
char
20
专业编号
char
20
外键
(7)专业
数据项名
数据类型
长度
完整性约束
专业编号
char
20
主键,唯一,非空
专业名称
char
20
3.3.关系模式的优化
对关系模式进行规范化处理,对关系模式进行评价与修正
四、物理结构设计与实现
4.1.聚簇设计
确定每个关系需要或不需要聚簇索引,为什么需要聚簇索引,在哪些列上建立聚簇索引。
该学生成绩管理系统数据库可建立以下聚簇:
课程(课程编号)
学生(学生学号,班级编号)
班级(班级编号)
这几个聚簇设计是因为这几张表都是实体表,,且聚簇中的属性都是主键或
是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。
4.2.索引设计
确定每个关系需要或不需要聚簇索引,为什么需要聚簇索引,在哪些列上建
立聚簇索引。
索引就是表中数据和相应存储位置的列表,使用索引可以大大减少数据的查询时间。
对于一个确定的关系,通常在下列情况下可以考虑建立索引。
(1)在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于
唯一性检查和完整性检查,而且可以加快连接查询的速度。
(2)以查询为主的关系可建立尽可能多的索引。
(3)对等值连接,但满足条件的元组较少的查询可以考虑建立索引。
(4)如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。
该学生成绩管理系统数据库可建立以下索引:
课程(课程编号)
学生(学生学号,班级编号)
班级(班级编号)
学习(学号,课程编号)
4.3.分区设计
数据库文件和日志文件的分区问题。
涉及到数据库文件和日志文件的分区问题。
磁盘分区设计的一般原则:
(1)减少访问冲突,提高I/O并发性。
多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。
(2)分散热点数据,均衡I/O负担。
在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。
(3)保证关键数据快速访问,缓解系统瓶颈。
在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。
该成绩管理系统由于程序较小,所以不进行分区设计。
4.4.存储过程建立
(1)建立一个对学生表插入信息的存储过程
sql语句如下:
createprocedurepro_学生表插入信息1
@snochar(20),
@snamechar(20),
@ssexnvarchar(50),
@sageint,
@screditint,
@sclasschar(20),
@ssourceadchar(20)
@spasswordint,
as
insert学生(学生学号,学生姓名,学生性别,学生年龄,已修学分总数,
班级编号,地区编号,登录密码)
Values(@sno,@sname,@ssex,@sage,@scredit,@sclass,@ssourcead,@spassword)
SELECT*FROM学生
Go
(2)建立一个输入成绩,自动生成其总学分的存储过程
sql语句如下:
createprocedurepro_输入成绩自动生成学分1
@学生学号char(20),
@课程编号char(20),
@课程名称char(20),
@学期char(20),
@成绩int,
@教师姓名nvarchar(50),
@学分int
as
begin
insertintopro选修
values(@学生学号,@课程编号,@成绩)
update学生set学生.已修学分总数=学生.已修学分总数+@学分
where学生.学生学号=@学生学号
end
五、数据库实施代码
5.1.创建数据库
CREATEDATABASEStudentManagers
ONPRIMARY
(NAME=StudentManagers,
FILENAME='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL11.MSSQLSERVER\MSSQL\DATA\StudentManagers.mdf')
LOGON
(NAME=StudentManagers_log,
FILENAME='\ProgramFiles\MicrosoftSQLServer\MSSQL11.MSSQLSERVER\MSSQL\DATA\StudentManagers_log.ldf')
5.2.创建表
(1)课程
数据项名
数据类型
长度
完整性约束
课程编号
char
20
主键,唯一,非空
课程名
char
20
教师姓名
nvarchar(50)
50
开课时间
char
20
学时
int
32
>0
考试或考查
char
4
考试或考查
学分
char
4
>0
SQL语句为:
CREATETABLE课程
(
课程编号CHAR(20)PRIMARYKEY,
课程名CHAR(20),
教师姓名nvarchar(50),
开课时间CHAR(20),
学时int,
考试或考查CHAR(4),
学分CHAR(4)
constraintck_考试或考查check(考试或考查='考试'or考试或考查='
考查'),constraintck_学时check(学时>0),constraintck_学分check(学分>0))
(2)学习
数据项名
数据类型
长度
完整性约束
学生学号
char
20
主键,唯一,非空
课程编号
char
20
外键
学期
char
20
课程名称
char
20
成绩
int
32
0<成绩<100
教师姓名
nvarchar(50)
50
SQL语句为:
CREATETABLE学习
(
学生学号CHAR(20)PRIMARYKEY,
课程编号CHAR(20),
学期char(20),
课程名称char(20),
成绩int,
教师姓名nvarchar(50),
CONSTRAINTCourse_StudyFOREIGNKEY(课程编号)REFERENCES课程,
constraintck_成绩check(成绩between0and100)
)
(3)学生
数据项名
数据类型
长度
完整性约束
学生学号
char
20
主键,唯一,非空
学生姓名
char
20
学生性别
nvarchar
20
男或女
学生年龄
int
32
0<年龄<150
已修学分总数
int
32
>0
班级编号
char
20
外键
地区编号
char
20
外键
登录密码
Int
32
SQL语句为:
CREATETABLE学生
(
学生学号CHAR(20)PRIMARYKEY,
学生姓名CHAR(10),
学生性别nvarchar(50),
学生年龄int,
已修学分总数int,
班级编号CHAR(20),
地区编号CHAR(20),
ConstraintClass_Studentforeignkey(班级编号)references班级,
ConstraintArea_Studentforeignkey(地区编号)references地区,
constraintck_学生性别check(学生性别='男'or学生性别='女'),
constraintck_学生年龄check(学生年龄between0and150),
constraintck_已修学分总数check(已修学分总数>0)
)
(4)地区
数据项名
数据类型
长度
完整性约束
地区编号
char
20
主键,唯一,非空
地区名称
char
20
CREATETABLE地区
(
地区编号CHAR(20)PRIMARYKEY,
地区名称CHAR(20),
);
(5)班级
数据项名
数据类型
长度
完整性约束
班级编号
char
20
主键,唯一,非空
班级名称
char
20
专业号
char
20
外键
SQL语句为:
CREATETABLE班级
(
班级编号CHAR(20)PRIMARYKEY,
班级名称CHAR(20),
专业编号CHAR(20)
ConstraintMajor_Classforeignkey(专业编号)references专业
);
(6)专业
数据项名
数据类型
长度
完整性约束
专业编号
char
20
主键,唯一,非空
专业名称
char
20
SQL语句为:
CREATETABLE专业
(
专业编号CHAR(20)PRIMARYKEY,
专业名称CHAR(20),
);
5.3.查询,修改,删除和插入SQL语句
查询语句:
Select*from学生where学生学号=''and登录密码=''
Select*from学生
Select*from课程where课程编号=’’
select开设.课程编号,开设.班级编号,班级.班级名称,课程.课名名称,课程.开课时间,课程.教师姓名,课程.学时from开设,课程,班级where开设.课程编号=''and开设.班级编号=班级.班级编号
select*from专业where专业编号=’’
select*from学生where学生学号=’’
select学习.学生学号,学习.学期,学习.课程编号,学习.课程名称,学生.学生姓名,课程.学分from学习,课程,学生where学习.学生学号=''and学习.学生学号=学生.学生学号and学习.课程编号=课程.课程编号
插入语句:
Insertinto学生(学生学号,学生姓名,学生性别,学生年龄,已修学分总数,班级编号,地区编号,登录密码)values('','','','','','','','')
Insertinto学习(学生学号,课程编号,学期,课程名称,成绩,教师姓名)values('','','','','','')
修改语句:
Update学生set学生姓名='',学生年龄='',已修学分总数='',班级编号='',地区编号='',登录密码=''where学生学号=''
删除语句:
Deletefrom学生where学生学号=’’
5.4.创建索引
根据4.2来建立索引:
(1)班级编号,专业编号:
CreateuniqueindexSY_班专on班级(班级编号,专业编号)
(2)课程编号:
CreateuniqueindexSY_课程编号on课程(课程编号)
(3)学生学号,班级编号:
CreateuniqueindexSY_学班on学生(学生学号,班级编号)
(4)学生学号,课程编号:
CreateuniqueindexSY_学课on学习(学生学号,课程编号)
6、应用系统开发与试运行
6.1.开发平台和开发环境介绍
开发平台:
eclipse-SDK-4.2.1
开发环境:
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++和COBOL等编程语言的插件已经可用或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成IBMJava开发工具系列的基础
6.2.学生模块系统功能图
图6-1登陆界面
图6-2学生操作界面
图6-3教师操作界面
6.3.学生模块系统功能界面截图
图6-4学生添加个人信息
图6-5学生查询个人信息
图6-6学生查询成绩
图6-7学生查询教师信息
图6-8学生查询课程信息
图6-9学生查询专业信息
图6-10学生查询课程开设信息
7、总结
7.1.遇到的问题和解决的办法
(1)这次课程设计老师给的课程设计题目很多,我们小组选了一个常见的题目《学生成绩管理系统》,但是也遇到了很多问题,第一,上课的时候听课很舒服,平时的实验都是单一的,没有综合,所以做起来相对简单,这次课程设计不仅要要有数据库设计还要有界面,将编程和数据库结合增大了难度。
一开始不知道确定哪几个属性集,找不到学生教师课程之间的关系,所以E-R图也不知道怎么去建立,我开始设想通过教师查询到教师上哪门课,可以查找班级上哪些课,但是一个教师可以上多门课,一个班级有多门课也就有多个教师,所以无法通过查找一个教师查找这个班级上哪些课,设计E-R图就遇到了好多问题,通过我和小组成员的讨论最终我们确定了如图2-6的E-R图
(2)由于考虑全面,我们设计了十几个表格,这些表格涵盖了大量的信息,这给设计视图带来了很大的困难,我们先在草稿纸上整理表格信息,然后再设计视图,最终在小组成员的相互帮忙下我们完成了视图的创建。
(3)在创建触发器和存储过程的时候,由于对触发器和存储过程上课时没有认真听讲,对触发器和存储过程概念不清,无法创建触发器和存储过程,于是我通过翻阅书籍,了解了触发器的概念,触发器是特殊的存储过程,触发器的执行靠事件触发,当对一个表进行insert,delete,update时就会激活触发器,触发器经常用于加强数据的完整性约束和业务规则等。
存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,是利用SQLServer所提供的Transact-SQL语言所编写的程序。
经编译后存储在数据库中。
存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量。
同时存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。
(4)完成E-R图的设计,索引,存储过程和触发器的创建,就开始创建表格插入记录,在这过程中经常忘了一些SQL语句的书写,通过翻阅书籍解决了问题。
(5)利用java做图形界面的设计时也遇到了好多问题,我们从网上找了一段代码,然后根据我们的数据库改编代码,将我们的数据库和图形界面相适应,在敲代码时经常会因为数据库的字符串输入少一个单引号或者少了一个等号或者多了双引号或者打错了字段导致程序错误,经过不断地调试终于完成了任务。
7.2.系统设计的不足
虽然完成了课程设计,界面的功能也很多,但是数据库的设计还是比较简单,对于真正需要的学生成绩管理系统还有很大的距离,实际应用性不足,系统的稳定性也不太好,需要进一步优化完善
7.3.改进思路和体会
(1)改进思路:
表格太多,通过模式优化消除冗余和函数依赖,做到简洁准确,图形界
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BX110937 学生 成绩管理系统 数据库 课程设计 报告