《数据库原理》课程设计--《在线考试管理系统》数据库设计(一)系统需求分析本网站是一个在线考试管理系统,面向用户可分为管理员、学生和老师三类。一个好的在线考试管理系统,集录入、维护、查询、审核和各种处理为一体,各种操作可以通过菜单进行,操作快捷,方便,性能高效、强大;使用易懂易会,形象增强的数据处理,用户均可根据需要自行使用。传统的考试方式一般要经过人工出卷、考生考试、人工阅卷等过程。对于一些课程来说,随着考生数量的增加。教师出卷阅卷的工作量将会越来越大,并且其工作十分烦琐和非常容易出错。而在线考试系统将传统考试过程中的试卷组织、审定印制、传送收集、登记发放、评判归档各个环节缩小到一至两个环节,几乎屏蔽了所有人工直接干预考试活动的可能性,不但能够节约大量的时日、人力、物力与财力,而且还可以大幅度增加考试成绩的客观性和公正性。综上所提的功能需求,本系统实现一下基本功能:1.管理员功能可以对管理员、学生、老师进行查询、修改。可以实现对科目、试卷的添加、修改、删除。可以实现对成绩的管理。维护本网站系统。2.学生功能注册、修改个人信息,并可以登录网站。参与在线考试、并进行成绩的查询。3.教师功能注册,修改个人信息,并可以登录,浏览网站。可以对试卷进行批阅,对成绩进行管理。根据前面分析的结果,对系统功能整理如下:1.系统功能结构系统功能主要为学生、教师和管理员提供服务,其功能结构图如图1所示。在线考试系统功能管理员管理学生管理用户管理教师管理管理员管理教师管理学生管理科目管理添加科目删除科目试卷管理知识点管理题目管理注册信息与登录参加考试成绩查询修改密码注册信息与登录修改密码成绩管理添加成绩修改成绩阅卷管理图1在线考试系统功能(1)管理员管理功能:主要针对对整个系统的管理,包括对用户(管理员、学生和老师)信息的管理,如个人信息的添加、修改和删除;对考试科目进行管理,如考试科目的添加删除;对试卷进行管理,如题目、知识点的管理。维护网站的正常运行。(2)学生管理功能:可以完成学生信息的维护,包括对学生的个人信息和成绩的查询功能,对个人密码的修改,在会员密码遗失的情况下,管理员还可以针对会员的密码进行修改;可以参加相应科目的考试;可以浏览考试成绩和以往相关成绩信息。(3)教师管理功能:可以完成对教师信息的维护,包括密码的修改;对试卷进行浏览、批阅,客观题进行自动阅卷,主观题由教师进行阅卷;对试卷成绩进行添加、修改和删除等。(二)数据库设计1.概念结构设计对系统处理的数据进行分析,可以得出本系统一共有7个实体,它们分别是:学生、管理员、教师、试卷、科目、知识点、题目。进一步分析个实体之间的关系,得出系统ER图,如图2、图3所示试卷教师题目学生批阅答卷组成nn11构成知识点知识点教师编号姓名所教课程密码试卷编号成绩知识点内容1n分值学号密码姓名性别试卷内容开始时间知识点编号选项A选项B选项C选项D题干正确答案题目编号m1科目提取1n科目编号科目班级结束时间图2整体ER图管理员管理员编号姓名密码图3管理员ER图2.逻辑结构设计逻辑结构设计是概念结构设计的下一阶段,设计根据概念阶段的E-R图转化成系统支持的数据模型,本选课系统采用关系模型。系统中的E-R图转换为关系模型如下:●学生(学号,姓名,性别,密码,班级)●试卷(试卷编号,试卷内容,成绩,开始时间,结束时间,学号,教师编号)●管理员(管理员编号,姓名,密码)●教师(教师编号,姓名,所教课程,密码)●题目(题目编号,题干,分值,选项A,选项B,选项C,选项D,正确答案,试卷编号,知识点编号)●科目(科目编号,科目)●知识点(知识点编号,知识点内容,科目编号)●组成(题目编号,试卷编号)3.数据表设计说明:学生信息表用来存放学生的基本信息和一些登陆信息。学生的注册信息存储在这个学生信息表中,学生登陆时,输入学号与密码进行登陆,通过学生信息表对学号和密码进行校验。学生信息表如表1所示。表1学生信息表t-stu字段名称数据类型长度说明sxhsnamessexsmmbjVarcharVarcharCharVarcharVarchar330267学号(主键)姓名(不为空)性别(不为空)密码(不为空)班级(不为空)说明:管理员信息表用来存放管理员的基本信息和其他用户的一些基本信息。管理员登录时,输入管理员编号与密码进行登陆,通过管理员信息表对管理员编号和密码进行校验。管理员信息表如表2所示。表2管理员信息表t_gly字段名称数据类型长度说明gbhgnamegmmVarcharVarcharVarchar3306管理员编号(主键)姓名(不为空)密码(不为空)说明:教师信息表用来存放教师的基本信息和一些登陆信息。教授登陆时,输入教授编号与密码进行登陆,通过教师信息表对教师编号和密码进行校验。教师信息表如表3所示。表3教师信息表t-t字段名称数据类型长度说明tbhtnamesjkctmmVarcharVarcharVarcharVarchar330156教师编号(主键)姓名(不为空)所教课程(不为空)密码(不为空)说明:试卷信息表是用来存放试卷的基本信息的,学号、教师编号为外键。试卷信息表如表4所示。表4试卷信息表t-sj字段名称数据类型长度说明sjbhsjnrcjkstimejstimesxhtbhVarcharVarcharIntDatetimeDatetimeVarcharVarchar370033试卷编号(主键)试卷内容(不为空)成绩(不为空)开始时间(不为空)结束时间(不为空)学号(外键)教师编号(外键)说明:题目信息表是存放题目的基本信息,试卷编号、知识点编号为外键。题库信息表如表5所示。表5题目信息表t-tm字段名称数据类型长度说明tmbhtgfzxxAxxBxxCxxDzqdasjbhzsdbhVarcharVarcharVarcharVarcharVarcharVarcharVarcharVarcharVarcharVarchar5300550505050533题目编号(主键)题干(不为空)分值(不为空)选项A(不为空)选项B(不为空)选项C(不为空)选项D(不为空)正确答案(不为空)试卷编号(外键)知识点编号(外键)说明:科目信息表是存放科目的基本信息的。科目信息表如表6所示。表6科目信息表t-km字段名称数据类型长度说明kmbhkmVarcharVarchar330科目编号(主键)科目(不为空)说明:知识点信息表是存放知识点的基本信息的,题目编号是外键。知识点信息表如表7所示。表7知识点信息表t-zsd字段名称数据类型长度说明zsdbhzsdnrkmbhVarcharVarcharVarchar47003知识点编号(主键)知识点内容(不为空)科目编号(外键)说明:组成信息表用来存放题目编号和试卷编号的信息。组成信息表如表8所示。表8组成信息表t-zc字段名称数据类型长度说明tmbhsjbhVarcharVarchar53题目编号(主键,外键)试卷编号(主键,外键)4.程序:createdatabasekaoshi;usekaoshi;--创建学生信息createtablestu(sxhvarchar(3)primarykey,--学号snamevarchar(30),--姓名ssexchar(2),--性别smmvarchar(6),--密码bjvarchar(7),--班级);--创建管理员信息createtablegly(gbhvarchar(3)primarykey,--管理员编号gnamevarchar(30),--姓名gmmvarchar(6)--密码);--创建教师信息createtablet(tbhvarchar(3)primarykey,--教师编号tnamevarchar(30),--姓名sjkevarchar(15),--所教课程tmmvarchar(6)--密码);--创建试卷信息createtablesj(sjbhvarchar(3)primarykey,--试卷编号sjnrvarchar(800),--试卷内容cjint,--成绩kstimedatetime,--开始时间jstimedatetime,--结束时间sxhvarchar(3),--学号(外键)tbhvarchar(3),--教师编号(外键)foreignkey(sxh)referencesstu(sxh),foreignkey(tbh)referencest(tbh));--创建科目信息createtablekm(kmbhvarchar(3)primarykey,--科目编号kmvarchar(30),--科目);--创建知识点信息表createtablezsd(zsdbhvarchar(4)primarykey,--知识点编号zshnrvarchar(700),--知识点内容kmbhvarchar(3),--科目编号(外键)foreignkey(kmbh)referenceskm(kmbh));--创建题目信息createtabletm(tmbhvarchar(5)primarykey,--题目编号tgvarchar(300),--题干fzvarchar(5),--分值xxAvarchar(50),--选项AxxBvarchar(50),--选项BxxCvarchar(50),--选项CxxDvarchar(50),--选项Dzqdavarchar(5),--正确答案sjbhvarchar(3),--试卷编号(外键)zsdbhvarchar(4),--知识点编号(外键)foreignkey(sjbh)referencessj(sjbh),foreignkey(zsdbh)referenceszsd(zsdbh));--创建组成信息createtablezc(tmbhvarchar(5),--题目编号sjbhvarchar(3),--试卷编号primarykey(tmbh,sjbh),foreignkey(tmbh)referencestm(tmbh),foreignkey(sjbh)referencessj(sjbh));--插入学生信息insertintostuvalues('s01','王一','男','123456','B1201');insertintostuvalues('s02','李二','女','234567','B1202');insertintostuvalues('s03','周三','男','345689','B1203');--插入管理员信息insertintoglyvalues('g01','宋四','000000');insertintoglyvalues('g02','郭五','111111');insertintoglyvalues('g03','张六','222222');--插入教师信息insertintotvalues('t01','白七','英语','333333');insertintotvalues('t02','安八','数学','444444');insertintotvalues('t03','毛九','计算机','555555');--插入试卷信息insertintosjvalues('Y01','英语考试,第一题:Whatisyourname?.......',85,'8:00','9:00','s01','t01');insertintosjvalues('S01','数学考试,第一题:+1=?.......',85,'8:00','10:00','s02','t02');insertintosjvalues('J01','计算机考试,第一题:执行下列语句.......',70,'11:00','12:00','s03','t03');--插入科目信息insertintokmvalues('Y01','英语');insertintokmvalues('S02','数学');insertintokmvalues('J03','计