在线考试系统数据库设计与实现17页.doc

上传人:1595****071 文档编号:33994753 上传时间:2022-08-12 格式:DOC 页数:16 大小:176KB
返回 下载 相关 举报
在线考试系统数据库设计与实现17页.doc_第1页
第1页 / 共16页
在线考试系统数据库设计与实现17页.doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《在线考试系统数据库设计与实现17页.doc》由会员分享,可在线阅读,更多相关《在线考试系统数据库设计与实现17页.doc(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流在线考试系统数据库设计与实现【精品文档】第 16 页西南财经大学Southwestern University of Finance and Economics课程实验报告课程名称: 数据库学生姓名: 周小钰、李佳颖 学 院: 经济信息工程学院 专 业: 计算机科学与技术 指导教师: 李 玉 荣 . 2016年 12月1. 课程设计题目与要求1.1数据库设计题目设计和实现一个网上在线考试系统,系统应完成以下基本的业务:a. 至少两个教师,每个教一门课程 b. 每个班至少包含十名学生。c. 教师能够修改试卷的题目并模仿一名同学参加一门考试d. 教师可提取一

2、份试卷查卷e. 教师可检查其所教班级的成绩、任一学生的成绩以及查询全班的平均成绩和总成绩。f. 每一套题至少包括十道选择题g. 选择题自动阅卷,书写题人工阅卷以上很粗略描述了网上考试系统的基本要求,你们可以根据实际问题的需要,补充和细化系统的要求。本课程设计包括两个部分:数据库和用户界面(用户图形化界面基本要求就是登录加试卷内容的提取)1.2数据库设计要求a.使用java/c语言,源程序要有适当的注释,使程序易于阅读b.建议作出用户界面c.学生可自动增加新功能模块2. 数据库设计过程2.1需求分析2.1.1业务范围a.增加、删除、维护学生账号,老师账号,课程信息和选课信息b.在线出题、出题过程

3、可修改试题、答题、分数c.学生若有疑问可以由老师提出自己的答卷查卷d.统计一个班的学生的成绩情况供老师分析e.提取试题2.1.2业务流程 a进入在线考试系统b.通过输入账号密码判断身份,分别进入不同界面:(1)进入管理员界面后获取管理员身份。管理员具有对整个系统的管理权限,可以管理所有账户,管理课程,以及对选课过程控制。 (2)进入教师界面后获取教师身份。教师有权自出题、对题库进行管理以及对学生试卷进行查询。进入出题模块后,教师可自主命题,命题内容分为单选题和填空题。进入改题模块后,首先判断是否已有人做题,若已存在完成题目的记录,则执行修改题目功能;若无学生完成题目的记录,则执行修改题目和答案

4、两项功能。进入查询模块后,教师可执行试卷、答卷以学生成绩的查询功能。(3)进入学生考试界面后,学生可选择参加考试或成绩查询。c.结束所有操作,退出界面。 2.1.3业务流程图 图1 业务流程图2.2概念结构设计2.2.1步骤a.抽象数据并设计局部视图 b.集成局部视图,得到全局概念结构2.2.2原则 a.忠实性(设计忠实于应用的具体要求,恰当地反映现实)b.尽可能减少冗余c.简单性考虑2.2.3具体实现 图2-1 总ER图图2-2 管理员图2-3 选课表图2-4 课程信息图2-5 填空题库图2-6 学生图2-7 答卷图2-8 试卷2.3逻辑结构设计2.3.1设计目的把概念结构设计阶段设计好的概

5、念模型转换为逻辑模型,即将基本E-R图通过转换规则转换为关系模型,然后根据优化方法得到优化的数据模型。2.3.2具体实现将上述E-R图转换优化后得到的关系模式为: Admin(ID,password);Teacher(tID,password);Student(sno,sname,password);Course(cno,cname);Sc(cno,sno,grade);Paper(cno,sno,titleno,sanswer,getscore);Title(cno,titleno,titlecontent,answear,score);Title1(cno,titleno,titlecon

6、tent,A,B,C,D,answear,score);Testpaper(cno,testpaperno,titleno,titlecontent);后期title1删去,统一使用了title0题库表表图2-9 ER图转关系模式2.4数据库实施和维护针对数据库维护部分,我们小组将及时对该系统数据库进行备份,将各用户信息保存在文件中,保证用户信息的安全性。3. 运行结果登入(以管理员为例):管理员管理相关表信息:登入老师后出题:老师修改题目:老师查卷(生成的视图):运行结果:试卷提取:查看相关成绩信息:学生答题后生成的数据学生查询自己的成绩(后两门暂时没有考试):登陆界面:4. 源代码 4.1

7、建表/课程表 CREATE TABLE COURSE CNO CHAR(4) NOT NULL , CNAME VARCHAR2(20) NOT NULL , CONSTRAINT COURSE_PK PRIMARY KEY CNO ENABLE /创建学生信息表CREATE TABLE STUDENT SNO CHAR(9) NOT NULL , SNAME CHAR(20) NOT NULL , PASSWORD VARCHAR2(20) NOT NULL , CONSTRAINT STUDENT_PK PRIMARY KEY SNO ENABLE /创建选课表CREATE TABLE S

8、C CNO CHAR(4) NOT NULL , SNO CHAR(9) NOT NULL , GRADE CHAR(4) , CONSTRAINT SC_PK PRIMARY KEY CNO , SNO ENABLE ALTER TABLE SCADD CONSTRAINT SC_FK1 FOREIGN KEY CNO REFERENCES COURSE CNO ENABLE;ALTER TABLE SCADD CONSTRAINT SC_FK2 FOREIGN KEY SNO REFERENCES STUDENT SNO ENABLE;/老师信息表CREATE TABLE TEACHER

9、TID CHAR(9) NOT NULL , PASSWORD VARCHAR2(20) , CONSTRAINT TEACHER_PK PRIMARY KEY TID ENABLE /试题信息表CREATE TABLE TITLE CNO CHAR(4) NOT NULL , TITLENO CHAR(4) NOT NULL , TITLECONTENT VARCHAR2(40) , ANSWER VARCHAR2(10) , SCORE CHAR(4) , CONSTRAINT TITLE_PK PRIMARY KEY CNO , TITLENO ENABLE ALTER TABLE TI

10、TLEADD CONSTRAINT TITLE_FK1 FOREIGN KEY CNO REFERENCES COURSE CNO ON DELETE CASCADE ENABLE;/创建学生答题表CREATE TABLE PAPER CNO CHAR(4) NOT NULL , SNO CHAR(9) NOT NULL , TITLENO CHAR(4) NOT NULL , SANSWER VARCHAR2(10) , GETSCORE CHAR(4) , CONSTRAINT PAPER_PK PRIMARY KEY CNO , SNO , TITLENO ENABLE ALTER TA

11、BLE PAPERADD CONSTRAINT PAPER_FK1 FOREIGN KEY CNO REFERENCES COURSE CNO ON DELETE CASCADE ENABLE;ALTER TABLE PAPERADD CONSTRAINT PAPER_FK2 FOREIGN KEY SNO REFERENCES STUDENT SNO ON DELETE CASCADE ENABLE;ALTER TABLE PAPERADD CONSTRAINT PAPER_FK3 FOREIGN KEY CNO , TITLENO REFERENCES TITLE CNO , TITLEN

12、O ON DELETE CASCADE ENABLE;CREATE USER teacer1 IDENTIFIED BY 123456 ;4.2存储过程/管理员存储过程Create or replace procedure manastu(sno in CHAR,sname in char,password in varchar2IsBeginInsert into studentValues(SNO, SNAME, PASSWORD);Commit;End;CALL MANASTU (4141051,赵日天,123456);Create or replace procedure manate

13、a(tid in CHAR,password in varchar2IsBeginInsert into teacherValues(TID, PASSWORD);Commit;End;CALL MANATEA (teacher1,123456);Create or replace procedure manacou(cno in CHAR,cname in varchar2IsBeginInsert into courseValues(CNO, cname);Commit;End;CALL MANACOU (0001,课程1);Create or replace procedure mana

14、sc(cno in CHAR,sno in charIsBeginInsert into SCValues(cno, sno,NULL);Commit;End;CALL MANASC (0001,41410051);/出题存储过程Create or replace procedure ks(Cno_input in CHAR,Sno_input in char,Titleno_input in char,Sanswer_input in varchar2Isanswer1 varchar2(10);score1 char(4);Cno1 char(4);Sno1 char(9);BeginSe

15、lect cno,sno INTO cno1,sno1 from scWHERE o=cno_input and sc.sno = sno_input;exception when no_data_found then dbms_output.put_line(没有选课不能考试!); select answer,score INTO answer1,score1 FROM title WHERE o=cno_input AND title.titleno=Titleno_input;if Sanswer_input = answer1 THEN Insert into paper Values

16、(cno_input,sno_input,titleno_input,sanswer_inut,score1);else Insert into paper Values(cno_input,sno_input,titleno_input,sanswer_inut,0);END IF;Commit;End;Call KS(0001,41410051,01,B);/修改题目存储过程/修改题目create or replace procedure XGTM( cno_input in char, titleno_input in char, titlecontent_input in varcha

17、r2isbeginupdate title settitle.titlecontent = titlecontent_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;/修改答案create or replace procedure XGDA( cno_input in char, titleno_input in char, answer_input in varchar2isbeginupdate title settitle.answer = answer_inputWHERE o = cno_in

18、put AND title.titleno = titleno_input;commit;end;/修改分数create or replace procedure XGFS( cno_input in char, titleno_input in char, score_input in charisbeginupdate title settitle.score = score_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;/学生查卷过程create or replace procedure CJ

19、(cno_input in char,sno_input in charisv_sql varchar2(1024);beginv_sql := create or replace VIEW PAPER_VIEW(titleno,titlecontent,answer,sanswer,gerscore)AS SELECT title.titleno,title.titlecontent,title.answer,paper.sanswer,paper.getscoreFROM title,paperWHERE o=o AND title.titleno=paper.titleno AND pa

20、per.sno=sno_input AND o=cno_inputorder by titleno;EXECUTE IMMEDIATE v_sql using cno_input,sno_input;end;/成绩统计过程(学生考试完成点击提交时)create or replace procedure TJ(cno_input in char,sno_input in char)istotle number(10,0);beginselect SUM(GETSCORE) into totle from paperWHERE paper.CNO = cno_input AND paper.SNO

21、 = sno_input;update sc set sc.grade = totleWHERE sc.CNO = cno_input AND SC.SNO = sno_input;commit;end;call TJ (0001,41410050);4.3 查询/查卷(视图)CREATE or replace VIEW PAPER_VIEW_41410051(titleno,titlecontent,answer,sanswer,gerscore)AS SELECT title.titleno,title.titlecontent,title.answer,paper.sanswer,pap

22、er.getscoreFROM title,paperWHERE o=o AND title.titleno=paper.titleno AND paper.sno=41410051order by titleno;/查卷(sqlplus)set linesize 200 pagesize 999 newpage;Col answer format a47;SELECT title.titleno,title.titlecontent,正确答案是,title.answer,你的答案是,paper.sanswer,得分,paper.getscoreFROM title,paperWHEREo=o

23、 AND title.titleno=paper.titleno ANDpaper.sno=41410051order by titleno;/查看试题SELECT title.titleno,title.titlecontentFROM titleWHERE o=0001order by titleno;/查看课程考试成绩情况Select student.sno,student.sname,sc.gradefrom student,scwhere o=0001 ANDsc.sno = student.sno;/查看课程平均分Select avg(grade) from scWhere o=0

24、001;4.4 登陆设计由于做登陆的时候分表查询用户信息一直出bug,经过搜索解决办法后决定建立一个教师学生用户表来解决问题create table P_USER username CHAR(9), password VARCHAR2(20), 从此表中只判断登陆是否成功。4.4.1 jsp页面部分login.jsp login 欢迎使用在线考试系统 用户名: 密码: Welcome.jsp login 欢迎使用在线考试系统欢迎登陆! 4.4.2 servlet编写UserServlet.javapackage com.baosight.servlet; import java.io.IOEx

25、ception; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.baosight.bean.UserBean; * Title:UserServlet * Description:TODO * Company: * autho

26、r zxy * date 2016-12-26 下午10:50:57*/ public class UserServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doPost(request,response); public void doPost(HttpServletRequest request, HttpServletResponse response) th

27、rows ServletException, IOException String method = request.getParameter(method); if(login.equals(method)/登录 String username = request.getParameter(username); String password = request.getParameter(password); if(username=null|.equals(username.trim()|password=null|.equals(password.trim() System.out.pr

28、intln(用户名或密码不能为空!); response.sendRedirect(login.jsp); return; UserBean userBean = new UserBean(); boolean isValid = userBean.valid(username,password); if(isValid) System.out.println(登录成功!); request.getSession().setAttribute(username, username); response.sendRedirect(welcome.jsp); return; else System

29、.out.println(用户名或密码错误!); response.sendRedirect(login.jsp); return; else if(logout.equals(method)/退出登录 System.out.println(退出登录!); request.getSession().removeAttribute(username); response.sendRedirect(login.jsp); return; 4.4.3 javabeans编写DBAcess.javapackage com.baosight.bean; import java.sql.Connectio

30、n; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /*数据库操作类 * Title:DBAcess * Description:TODO * Company: * author zxy * date 2016-12-25 下午12:40:24*/ public class DBAcess private String driver = oracle.jdbc.driver.OracleDriver; priva

31、te String url = jdbc:oracle: + thin:10.53.75.125:1158:orcl; private String username = system; private String password = 123456; private Connection conn; private Statement stm; private ResultSet rs; /创建连接 public boolean createConn() boolean b = false; try Class.forName(driver);/ 加载Oracle驱动程序 conn = D

32、riverManager.getConnection(url, username, password); b = true; catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); / 获取连接 catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); return b; /查询 public void query(String sql) try stm = conn.creat

33、eStatement(); rs = stm.executeQuery(sql); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); /判断有无数据 public boolean next() boolean b = false; try if(rs.next() b = true; catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); return b; /获取表字段值 public S

34、tring getValue(String field) String value = null; try if (rs != null) value = rs.getString(field); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); return value; /关闭连接 public void closeConn() try if (conn != null) conn.close(); catch (SQLException e) / TODO Auto-generate

35、d catch block e.printStackTrace(); /关闭statement public void closeStm() try if (stm != null) stm.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); /关闭ResultSet public void closeRs() try if (rs != null) rs.close(); catch (SQLException e) / TODO Auto-generated catch

36、 block e.printStackTrace(); public String getDriver() return driver; public void setDriver(String driver) this.driver = driver; public String getUrl() return url; public void setUrl(String url) this.url = url; public String getUsername() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; public Statement getStm() return stm; public void setStm(Statement stm) this.stm = stm; public ResultSet getRs() retu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com