数据库课程设计指导书.docx
《数据库课程设计指导书.docx》由会员分享,可在线阅读,更多相关《数据库课程设计指导书.docx(21页珍藏版)》请在冰点文库上搜索。
数据库课程设计指导书
《数据结构与数据库》课程设计
实习指导书
黑龙江工程学院
2012年12月
实例一:
学生信息管理系统
一、课程设计任务
设计一个《学生信息管理系统》,并在微机上实现。
要求用到的数据全部存放在数据库中,通过数据库操作完成各种数据的输入输出。
在课程设计过程中,首先要分析系统的用户需求和功能特点,然后完成数据库的设计以及整个系统的设计,实现对学生成绩的管理。
二、软硬件环境:
硬件环境Pentium4以上微机,内存128MB以上,建议256MB。
操作系统:
WindowsMe/Xp/Vista。
编程环境:
C#程序设计语言,Access2003/2007数据库,通过ADO.NET控件访问。
三、课程设计指导
学生成绩管理系统的设计与实现
1引言
学生成绩的手工登录与查询,是一项非常繁重而枯燥的劳动,耗费许多人才和物力,而且会因人的情绪烦躁而出现失误,因此在计算机飞速发展的今天,应用数据库技术实现学生成绩的计算机管理是可行而必要的工作。
本课程设计旨在对学生成绩实现计算机管理,提高工作效率,提高管理水平。
2系统分析
2.1选择开发工具
必须在WindowsMe以上操作系统下完成设计。
根据每个同学对程序设计语言和数据库知识掌握的具体情况,建议采用以下方案:
C#程序设计语言,Access2003/2007数据库,通过ADO.NET。
2.2系统规划
学生成绩管理,主要涉及学生、课程、成绩等数据库表。
为简单起见,成绩可不考虑五级记分制的字符型分值,如优、良、中、及格、不及格等;只考虑:
数字型的分值,如95,90,55等。
对这些数据,按统计查询和报表输出的要求,进行合理的组织,以满足用户的要求。
在计算机飞速发展的今天,调用数据库编写管理软件,已是很成熟的技术,关键是如何实现设计要求,如何设计出友好的人机界面,使程序运行稳定、使用方便、操作简便。
3系统设计
3.1系统数据库设计
数据库设计主要考虑数据规范化的五个层次:
(1) 消除重复的数据组;
(2) 消除多余的数据;
(3) 消除不依赖于关键字的列;
(4) 分离独立的几个关系;
(5) 分离语义相关的多个关系。
利用关系型数据库的特征,将学生成绩管理设计为1个数据库,包含3个数据库表:
(1)学生信息表:
从成绩的角度,学生信息表包括学生学号、姓名、班级三个字段就够了,但考虑其它用处,还可将学生家庭联系信息(如,邮政编码,通讯地址,收信人,电话等)也包括在学生信息表中。
表1给出的是基本字段,有能力的同学可扩充。
表1:
学生信息表(studentinf)
字段名称
数据类型
主键
非空
学号
数字
yes
yes
姓名
文本
No
yes
性别
男/女
No
yes
出生日期
日期/时间
No
yes
班级
文本
No
yes
通讯地址
文本
No
No
联系方式
文本
No
No
备注
备注
No
No
(2)课程信息表包括课程码(即课程编码,它在课程信息表中是唯一的)、课程名称、课程性质(考试或考查)、学期、学时数、学分值等,在课程信息表中应采用课程编码,这样可使得录入更方便、快速。
在录入过程中,输入编码就和输入课程名称一样,它们是一一对应的,可用菜单形式弹出,用鼠标点击输入,这是程序设计中普遍采用的方法。
字段名称
数据类型
主键
非空
课程编号
文本
yes
yes
课程名称
文本
No
yes
课程性质
文本
No
yes
学时数
文本
No
yes
学分
数字
No
yes
表2:
课程表(class)
(3)成绩表:
成绩表至少应含学号、课程码、成绩三字段。
利用数据库之间的连接就可以满足成绩管理要求的所有报表和查询要求。
.
字段名称
数据类型
主键
非空
学号
数字
yes
yes
课程编号
文本
yes
yes
成绩
数字
No
yes
表3:
成绩表(score)
3.2系统的主要功能
系统的主要功能包括:
(1) 原始数据录入(包括学生信息录入和课程信息录入);
(2) 学生成绩录入;
(3) 成绩查询、课程查询和学生信息查询;
(4) 报表输出(包括学生成绩汇总报表、需重修的学生统计表、班级单科成绩表等);
(5) 数据维护(包括数据备份、数据恢复、数据追加)。
设计内容要求:
必做内容必须完成,根据个人能力,选做内容可不做,做了的将加分。
必做内容(4个模块):
主控模块、数据录入、查询统计、退出系统;
选做内容(2个模块):
系统维护、报表打印。
3.3输入程序设计
(1) 学生信息输入
在输入过程中,为方便使用,可设计一个自动编排学号功能,即同一个班的学生,只需将第一个人的信息输完整,其他同学的学号自动加一递增,班级保留一个,不需再输入。
(2) 成绩输入
采用C#+Access编程,可以利用DBGrid或DataGrid控件进行输入,在输入整班成绩时,先输入班级和课程,将整班的学生以表格的形式显示出来,录入者只需在成绩栏中填入成绩即可。
3.4多表查询程序的设计
多表操作是数据库中比较难的开发专题,它涉及到数据库中的关系操作的基本方法问题。
从多个数据表文件中,按任意的关系表达式检索出所需要的信息,然后形成所谓的多用户视图。
例如本系统中要从建立的三个基本数据表中,打印学生成绩总表,就要涉及到这三个数据表,解决这个问题有好几种方案,可以采用含子查询的SQL语句,或多表连接查询,或用多重循环实现。
多表查询算法需要解决两个技术关键:
一是查找的顺序,研究表明,查询必须按最长路径的结点顺序进行,例如本系统的三个基本数据表的连接,必须是“学生表”到“成绩表”再到“课程表”的顺序进行;二是必须保证本结点记录已经普遍列完才能退回上一个结点文件。
以用多重循环技术进行多表查询为例:
例如在“学生”文件中查到一个记录,然后到“成绩”文件中根据条件查到满足条件的第一个记录,再到“课程”文件中根据条件查到第一个满足条件的记录,输出一次查询结果,在“课程”文件中,如果还有满足条件的记录,则再次输出查询结果,直到“课程”文件结束为止。
上述查找过程是一个递归过程。
3.5数据统计汇总模块设计(选做)
在学生成绩管理系统中,必须对输入的信息进行处理、加工和整理,然后按照系统要求以某种形式输出。
这里的处理、加工和整理主要是对数据的计算、统计和求和等。
在Access数据库管理系统中均提供了几种用于对数据库进行统计和计算的语句。
采用C#+Access编程,还可以加入分班的学生成绩直方图、线图等图形统计输出功能。
加入图形处理的同学将获得加分。
3.6系统报表打印模块设计(选做)
报表一般由报表名称、报表头和报表内容三部分组成。
报表名称说明了报表的性质、用途等;报表头说明了报表所包含的项目,分上表头和左表头;报表内容则是报表各个项目的具体数据。
根据个人能力和时间,可选做这部分内容。
有该模块的的同学将获得加分。
四、其它说明
(1) 《课程设计指导书》仅供参考,进行不同的设计,但基本要求必须达到,至少包含3个表;输入、输出界面要求友好,尽量减少输入,多让用户选择。
例如性别、考试类别等有固定数目的选择的字段,可以用组合框、列表框、单选按扭等控件实现输入。
(2) 数据库中的数据,可参考的班级、学习的课程、同学名单,自己输入模拟数据,能说明问题就行。
实例二:
课程习题管理系统
一.需求分析
此课程习题管理系统,主要具有身份验证管理、习题库管理和试卷管理两个方面的功能。
身份验证管理主要是课程负责人分配使用该习题管理系统的用户及密码设置。
习题库管理功能主要是课程负责人老师通过身份验证后可以按章节、知识点、难度进行习题的输入与维护(增加、删除、修改、查询),一个知识点可以有多道难度相同的习题。
试卷管理功能主要是任课教师通过身份验证后可以按章节、知识点、难易程度等条件(一个或多个)设定习题数目,生成小测验,并且可以对小测验进行维护(如删除、查询操作)。
综上所述,该课程习题管理系统应该具备一下几个方面的功能。
①登陆:
确认用户的身份和权限。
②管理:
对习题库和测验卷的维护:
包括增加、删除和修改。
③查询:
能够方便灵活的查询到所要查询的习题和试卷信息。
二.任务概述
2.1课程习题组织结构图
课程习题管理是收藏本学校所有课程习题的系统。
其主要业务包括习题的增加、删除、修改、浏览、查询和产生测验卷等这些业务能由相应的人员完成。
起组织结构如图2-1所示:
2.2导出数据流图
在需求分析的基础上,为了更清楚、直观地表达系统对数据的需求,常采用数据流图。
用数据流图表示围绕数据处理为中心环节,着重表达数据的流动(输入、输出)和处理的过程。
根据以上“需求说明”通过自顶向下、逐步求精的方法可得到数据流图。
用数据流图表示数据处理的中心环节,表达数据的流动(输入和输出)和处理的过程。
如图2-2所示的符号组织数据流图
数据的源点或终点数据处理数据存储数据流
2.2.1图2-3给出课程习题库管理系统的顶层数据流图
图2-3顶层数据流图
2.2.2图2-4给出课程习题库管理系统的一层数据流图
图2-4一层数据流图
2.3数据字典
数据字典主要是对数据结构(数据元素)、数据项、数据存储和数据处理进行处理更详尽的定义。
数据结构:
学生
组成:
学号,姓名,性别,系别
说明:
学生表所存放的是学生的信息,学号为学生的用户名,是唯一的,设为主码。
数据结构:
课程负责人
组成:
职工号,姓名,性别
说明:
课程负责人表所存放的是课程负责人的信息,职工号为课程负责人的用户名,是唯一的,设为主码。
数据结构:
任课老师
组成:
职工号,姓名,性别
说明:
任课老师表所存放的是任课老师的信息,职工号为任课老师的用户名,是唯一的,设为主码。
数据结构:
课程
组成:
课程号,课程名
说明:
课程表存放课程有关信息,课程号是课程的唯一标识,设为主码。
数据结构:
测验卷
组成:
试卷号,试卷名,课程号,题量,测试时间,难度
说明:
测验卷的详细信息填入此表中。
试卷号存放的是对测验卷一个编号,课程号是课程科目的编码,试卷号和课程号的属性组被设为主码;试卷名存放的是测验卷的主题名;题目内容存放每一题内容,与习题库发生联系;题量存放的是测验卷一共有多少题目。
数据结构:
课程习题
组成:
课程号,章节号,知识点代号,难度,题号,答案
组成:
课程习题的详细内容存放在此表中。
课程代号存放的是课程科目的编码;章节号存放的是对章节的编号;知识点代号存放的是对知识点的编号;
难度存放的是每一题的难度系数;题号存放的是每一知识点中的题目编号;课程代号,章节号,知识点代号,难度和题号的属性组设为主码。
数据结构:
授课
组成:
课程号,教师号,学号
说明:
授课表存放任课老师和学生之间的授课关系。
课程号,教师号和学号属性组是授课表的唯一标识,设为主码。
数据结构:
选择
组成:
试卷号,课程号,题目内容
说明:
选择表存放的是测验卷和课程习题之间的联系。
试卷号和课程号是选择表的唯一标识,设为主码。
数据结构:
解答
组成:
课程号,试卷号,学号,记录号,成绩
说明:
解答表存放的是学生解答测验卷的相关信息。
课程号、试卷号和学号可以唯一标识解答信息,设为主码;记录号存放学生解答测验卷的次数;成绩存放每次学生测验的成绩。
三.数据库概念设计
在这一阶段采用实体和联系表示数据库的概念结构,即用E-R图表示数据库的概念结构。
由前面建立的需求分析,特别是由数据流图和数据字典的内容,将所涉及的数据元素归纳、抽象为一个个实体集,以及实体集与实体集间的联系。
在系统界定范围内,将静态数据对象或逻辑上具有独立意义的概念抽象为实体集,如学生、任课教师、课程负责人、测验卷、课程习题、课程等。
从数据流图和数据字典的角度来看,可将数据源点和数据结构作为实体集,而把数据处理抽象为实体间的联系。
数据库概念设计分成两步:
第一,局部概念模式设计,既将各部分的数据流图分别转化为局部E-R图。
第二,全局概念模式设计,既将各局部E-R图合并为一个整体。
3.1局部概念模式设计
3.1.1各个实体集的属性
3-1-1学生属性3-1-2任课教师属性
3-1-3课程负责人属性3-1-4测验卷属性
3-1-5课程习题属性3-1-6课程属性
3.1.2下图为课程责任人、任课教师、学生、课程、课程习题、测验卷实体集之间的关系E-R图
3-1-7任课教师和测验卷E-R图3-1-7任课教师和测验卷E-R图
3-1-7任课教师和测验卷E-R图3-1-8任课教师和课程习题E-R图
3-1-9任课教师和学生E-R图3-1-10课程习题和测验卷E-R图
3.2全局概念模式设计
将上述局部的概念模式设计的E-R图集成起来,既得到全局概念模式的E-R图。
消除原先各图中存在的冲突和不一致的地方,进行必要的合并和重构。
下图3-2-1为全局概念模式E-R图
3-2-1为全局概念模式E-R图
四.数据库逻辑设计
数据库的逻辑结构与所采用的数据库管理系统(DBMS)有关,因此首先要面临DNMS的选择,然后是将一种概念模式映射为逻辑模式,最后是优化。
4.1DBMS的选择
DBMS的选择的从以下几个因素考虑:
技术:
本系统选择SQLserver2000它能够胜任所要完成的工作。
经济:
考虑到本系统为小规模的试卷管理系统,对功能和性能的要求不太高,而且经费要求不高。
管理策略:
因为SQLserver2000可以免费得到,功能和性能上能够胜任其管理,其开放性和安全性都不错,今年来获得广泛的运用,故用于试卷库管理系统是合适的。
4.2数据模型映射
4.2.1由E-R图导出一般关系模型的四条原则
原则1:
E-R图中的每一个独立实体变换为一个关系,其属性变为关系的属性,其主标识变为关系的主码。
原则2:
E-R图中的从实体及相应的“的”联系变换为一个关系,从实体的属性加上主体关系的主码构成这个关系的属性。
如果“的”联系是1:
1的,则以主实体关系的主码(作为外来码)为这个关系的主码;如果“的”联系是1:
M的,则以主实体关系的主码加上同一主实体个体联系的不同从属实体个体赖以相互区分的属性组,组成该关系的主码。
原则3:
1:
M联系通过在“多”实体关系中增加相联系的“1”实体关系的主码及联系本身的属性来表达。
其中“1”实体主码为外来码。
原则4:
M:
M联系转换成一个独立的关系,被联系实体关系的主码(作为外来码)和联系本身的属性作为该关系的属性,被联系实体关系的主码组成其复合主码。
将数据库概念模式映射为数据库逻辑模式,也就是把E-R模型转换为关系模型。
既分别将每个实体集转换为关系,再将每个联系集也转换为关系。
于是从图3-2-1全局概念模式E-R图可得如下关系模式。
将实体集映射为关系:
学生(学号,学生姓名),学号是主码。
授课(课程号,教师号,学号),(课程号,教师号,学号)是主码。
任课教师(教师号,姓名,性别),教师号是主码。
课程负责人(职工号,姓名,性别),职工号是主码。
测验卷(试卷号,试卷名,课程号,题量,测试时间,难度),(试卷号,试卷名,课程号)是主码。
课程习题(课程号,章节号,知识点代号,难度,题号,题目内容,答案),(课程代号,章节号,知识点代号,难度,题号)是主码。
选择(试卷号,课程号,题目内容),(试卷号,课程号)是主码。
解答(课程号,试卷号,学号,记录号,成绩),(课程号,试卷号,学号,记录号)是主码。
4.2.2表的合并
由一对多或多对一的联系集映射来的表,其主码与代表“多”端实体集的表相同,故通常由一对多或多对一的联系集映射得来的表可以合并到代表“多”端实体集的表中去。
对于本系统经过分析不需要在进行合并。
共得到以下的六张表。
4.2.3规范化
检查上述的各个表的结构,都满足第二范式,故不需要再进行规范化。
4.2.4完整性设计
授课表中的“课程号”为外码,它参照课程表中的“课程号”属性;授课表中的“学号”为外码,它参照学生表中的“学号”属性;授课表中的“教师号”是外码,它参照任课教师表中的“教师号”属性。
测验卷表中的“课程号”为外码,它参照课程表中的“课程号”属性。
课程习题表中的“课程号”为外码,它参照课程表中的“课程号”属性。
选择表中的“课程号”为外码,它参照课程表中的“课程号”属性。
解答表中的“课程号”为外码,它参照课程表中的“课程号”属性;解答表中的“学生号”为外码,它参照学生表中的“学号”属性。
4.3建立数据库表:
表4-1~4-6列出试卷库管理系统的9个数据库表的结构说明。
表4-1课程表
表名
课程信息(KC)
属性名
别名
类型
长度
是否为空
说明
课程号
Cno
char
10
主码
课程名
Cname
Char
10
表4-2课程负责人表
表名
课程负责人信息(KCFZ)
属性名
别名
类型
长度
是否为空
说明
职工号
Zgno
char
10
主码
姓名
Kname
char
10
性别
Sex
Char
2
口令
Secret
char
20
表4-3任课教师表
表名
任课教师信息(RKJS)
属性名
别名
类型
长度
是否为空
说明
教师号
Tno
char
10
主码
姓名
Tname
char
10
性别
Sex
char
2
口令
Secret
char
20
表4-4学生表
表名
学生信息(SB)
属性名
别名
类型
长度
是否为空
说明
学号
Sno
char
10
主码
姓名
Sname
char
10
性别
Sex
char
2
系别
Sdept
char
10
口令
Secret
char
20
表4-5授课表
表名
授课信息(SK)
属性名
别名
类型
长度
是否为空
说明
课程号
Cno
char
10
主码
教师号
Tno
char
10
学号
Sno
char
10
表4-6测验卷表
表名
测验卷信息(CYJ)
属性名
别名
类型
长度
是否为空
说明
试卷号
SJno
char
10
主码
课程号
Cno
char
10
试卷名
SJname
char
10
题量
Tl
int
2
测试时间
Ttime
char
10
难度
Nd
char
10
表4-7课程习题表
表名
课程习题信息(KCXT)
属性名
别名
类型
长度
是否为空
说明
课程号
Cno
char
10
主码
章节号
Zjh
char
10
知识点代号
Zsddh
char
10
难度
Nd
char
10
题号
Th
char
2
题目内容
Tmnr
Char
100
答案
Answer
char
100
表4-8选择表
表名
选择信息(XZ)
属性名
别名
类型
长度
是否为空
说明
试卷号
Sjh
Char
10
主码
课程号
Cno
Char
10
题目内容
Tmnr
char
100
表4-9解答表
表名
解答(JD)
属性名
别名
类型
长度
是否为空
说明
课程号
Cno
char
10
主码
试卷号
Sjno
char
10
学号
Sno
char
10
记录号
Jlno
Char
10
成绩
Grade
char
4
五.物理设计(略)