在线考试系统数据库设计与实现_第1页
在线考试系统数据库设计与实现_第2页
在线考试系统数据库设计与实现_第3页
在线考试系统数据库设计与实现_第4页
在线考试系统数据库设计与实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网上测试系统西南财经大学9 / 29SouthwesternUniversity of Finance andEconomics课程名称学生姓名:周小李佳颖学 院:经济信息工程学院专 业:计算机科学与技术指导教师:李玉荣.2016年12月1. 课程设计题目与要求1.1数据库设计题目设计和实现一个网上在线考试系统,系统应完成以下基本的业务:a. 至少两个教师,每个教一门课程b. 每个班至少包含十名学生。c. 教师能够修改试卷的题目并模仿一名同学参加一门考试d. 教师可提取一份试卷查卷e. 教师可检查其所教班级的成绩、任一学生的成绩以及查询全班的平均 成绩和总成绩。f. 每一套题至少包括十道选择题

2、g. 选择题自动阅卷,书写题人工阅卷以上很粗略描述了网上考试系统的基本要求,你们可以根据实际问题 的需要,补充和细化系统的要求。本课程设计包括两个部分:数据库和用户界面(用户图形化界面基本 要求就是登录加试卷内容的提取)1.2数据库设计要求a. 使用java/c语言,源程序要有适当的注释,使程序易丁阅读b. 建议作出用户界面c. 学生可自动增加新功能模块2. 数据库设计过程2.1需求分析2.1.1业务范围a. 增加、删除、维护学生账号,老师账号,课程信息和选课信息b. 在线出题、出题过程可修改试题、答题、分数c. 学生若有疑问可以由老师提出自己的答卷查卷d. 统计一个班的学生的成绩情况供老师分

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

4、后,学生可选择参加考试或成绩查询。c.结束所有操作,退出界面。2.1.3业务流程图th 均H 盘lJTS图1业务流程图2.2概念结构设计2.2.1步骤a. 抽象数据并设计局部视图b.集成局部视图,得到全局概念结构2.2.2原则a.忠实性(设计忠实丁应用的具体要求,恰当地反映现实)b. 尽可能减少冗余c. 简单性考虑2.2.3具体实现图2-1总ER图图2-2管理员图2-7答卷图2-8试卷2.3逻辑结构设计2.3.1设计目的把概念结构设计阶段设计好的概念模型转换为逻辑模型,即将基本 E-R图通过转换规则转换为关系模型,然后根据优化方法得到优化的数据模型。2.3.2具体实现将上述E-R图转换优化后得

5、到的关系模式为:Admin(I旦password);Teacher(tQpassword);Student(snosname,password);Course(cnpJcname);Sc(cno,sno,grade);Paper(cno,sno,titleno,sanswer,getscore);Title(cno,titleno,titlecontent,answear,score);Title1(cno,titleno,titlecontent,A,B,C,D,answear,score);Testpaper(cno,testpaperno,titleno,titlecontent);后期

6、titlei 删去,统一使用了 titleO题库表表图2-9 ER图转关系模式2.4数据库实施和维护针对数据库维护部分,我们小组将及时对该系统数据库进行备份,将各用户信息保存在文件中,保证用户信息的安全性。3. 运行结果登入(以管理员为例):I修史3里户名:连接到,Dracle Database 11g EnterUith tlie Fart It ion insr, 01管理员管理相关表信息:SQL> call nanastnCJ 41410041J , J 344' * *123456* >;调用完成。SQL> select * from student wher

7、e sno=,414180411:SNOSNAMEPASSUORD4141004112345fc张牛样登入老师后出题:TH 仁 c应页如质 mli D4 i 0 >T<内内内内用充成aQL> se lect * f rom t it le where cno= MaU4, and tit leno = H4 ;NO TtTUEHOITtECONTEHTMSUEIRSCORE洛容容容容内内内 林申诜选选选 _w BT ft B c D老师修改题目:sql> call x(rrri<j,0004j,04*,*修改后调用完成,SQL> select »

8、fron title where cno=,0004* and titleno=,04J;CNO TITLENOTITLECONTEHTANGUERMORE000404修改后网上测试系统老师查卷(生成的视图): TITLEUC(-TITLECOITEin-A15 EE<SAIJSISRGETSCOREV - 1 01黑由的内容A被硕内容B诜而内容C送攻内咨魂防内容二A52 02这是题目题目蜓:页AB送【页BC迭项C磁就AB03 M楚目,的内客且避敏内容日迭度内容仁选成内咨1盗通内容4 04鹊目4的内春入访项内寄B送项内看送顶内容】送项内容BTi TT.fiks55 口5胆目b的内吾冬魅项

9、内吾B选贝内看匚迭项内吾口逢顼时吾cc56 0£遍目七的内容真避项肉答B选顷内容C送成内容。迭项内容cc57 07胆目7的肉融站项内翻选【页内答C迭I页内容D选项肉答DD59 0?鹿目曰的肉吝A曾项内容B选【页内容仁选项内容。遇顶向吝DD59 09题目g的内容有道项内答B送顷内答仁迭蜓内答J迭项内容DDs二to 10髭目内客A迭顷内容B魂此肉客C:避顼内容口魂项内容BC011 11题目1埔内苔这是一道嗔空盟。12 12题目听肉答这是一道本空题_ =答案M答案皿答案n答案kID1013 13题目L3的内容这是一道窟空矩,管案L3VX13ID14 14题目站她吝这是一迫尊空蔻。15 15

10、题目L珀驰客这是一道富空置_。吾荼皿菩案L5晋案H皆案ISinID运行结果:11 29fl10容容容昼酉丁 分 心以A R c D正侑<!一得目内内内EIS茶 栽项项项顶念昼口 曰供选选选确的W内内内内蒙g项项项项食口目选选选选确K跆容容容官集忡内内内四a亲成项项项项口目1XM1XM硅&目选选选选确的小IrJ网上测试系统试卷提取:容容容容 内内内内 6项蠹项 目选选选选 6页BkhLolcb的_楣容容容容忡内内内内沱页页页页目也痂也也37题g容容备 ;:内内内 毗顼顶顶顶 目选选选选9题曰9的内容藉顶占食 童项由登 选成内容28 / 290AHCD蛎1雎四容 整理内容 谗项内至返

11、顶内谷题目11的内容这是一道埴空题题目坦的内容这是一道填空目一查看相关成绩信息:日大一坚良小美三天赵T-李周®刘胡?SH0SHAMEGRADE1410051 14 1410049 1410048 1410047 141B946 1416045 1116044 1410043 1410042S0L> SeLct:日传frvn 2 Where sc-cno=*0601J; ¥AUG<GRADE>学生答题后生成的数据呻'蚓* 5W衡n?V &JiHST ER<-tEISCORf1000141410042Q1A5 &0014:141f

12、lQ4505C5300014141004203D5450014:41Q042C4D5000141410042asB56。"14141OO4ZC'6匚Qn 000141410.04207A58000141410042 BA5900014141004209A01000014141U04210B5H00014141004211答案M101200014141QD4312罟案u10口000141410.04213皆案131014000141410'04214管案141010gg15答案姑A学生查询自己的成绩(后两门暂时没有考试):SQL> select * from sc

13、 uhere sno=J 41410051"CNOSNOGRADE000141410BE195HO0241410B51知团朋4141切©51登陆界面:<- co man鞘ibh制山脚眼遍jmi吼皿圈Hi! aw:i:应用B网址导航 日百度海至D 舟 D 雌拓 0游池大全欢迎使泪在线考试系统用户名:(密码:(:7J V.萱录欢迎使用在线考试系统次迎登录!退出4.源代码4.1 建表/课程表CREATE TABLE COURSE(CNO CHAR(4) NOT NULL,CNAME VARCHAR2(20) NOT NULL,CONSTRAINT COURSE_PK PRI

14、MARY 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 SC(CNO CHAR(4) NOT NULL,SNO CHAR(9) NOT NULL,GRADE CHAR(4),CONSTRAINT SC_PK PRIMARY KEY(CNO,SNO)ENABLE);ALTER

15、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(TID CHAR(9) NOT NULL,PASSWORD VARCHAR2(20),CONSTRAINT TEACHER_PK PRIMARY KEY(TID)ENABLE);/试题信息表CREATE TABLE TITLE(CN

16、O 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 TITLEADD CONSTRAINT TITLE_FK1 FOREIGN KEY(CNO)REFERENCES COURSE(CNO)ON DELETE CASCADE ENABLE;/创建学生答题表CREATE TABLE PAPER(CNO CHAR(4)

17、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 TABLE PAPERADD CONSTRAINT PAPER_FK1 FOREIGN KEY(CNO)REFERENCES COURSE(CNO)ON DELETE CASCADE ENABLE;ALTER TABLE PAPERADD CONSTRAINT PAPER_FK2 FORE

18、IGN KEY (SNO)REFERENCES STUDENT(SNO)ON DELETE CASCADE ENABLE;ALTER TABLE PAPERADD CONSTRAINT PAPER_FK3 FOREIGN KEY (CNO,TITLENO)REFERENCES TITLE(CNO,TITLENO)ON DELETE CASCADE ENABLE;CREATE USER teacer1 IDENTIFIED BY 123456 ;4.2存储过程/管理员存储过程Create or replace procedure manastu( sno in CHAR, sname in ch

19、ar, password in varchar2 ) Is BeginInsert into studentValues(SNO, SNAME, PASSWORD); Commit;End;CALL MANASTU ('4141051','赵日天','123456');Create or replace procedure manatea(tid in CHAR,password in varchar2)IsBeginInsert into teacherValues(TID, PASSWORD);Commit;End;CALL MANATEA

20、('teacher1','123456');Create or replace procedure manacou(cno in CHAR,cname in varchar2)IsBeginInsert into courseValues(CNO, cname);Commit;End;CALL MANACOU ('0001','课程 1');Create or replace procedure manasc(cno in CHAR, sno in char)IsBeginInsert into SCValues(cno, sno

21、,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 varchar2 )Is answerl varchar2(10); scorel char(4); Cno1 char(4); Sno1 char(9); BeginSelect cno,sno INTO cno1,sno1 from sc

22、WHERE o=cno_input and sc.sno = sno_input; exceptionwhenno_data_foundthen dbms_output.put_line('没有选课不能考试!');selectanswer,score INTO answer1,score1 FROM title WHERE o=cno_input AND title.titleno=Titleno_input; ifSanswer_input = answer1 THENInsert into paperValues(cno_input,sno_input,titleno_in

23、put,sanswer_inut,score1); elseInsert into paperValues(cno_input,sno_input,titleno_input,sanswer_inut,'0'); END IF;Commit; End;Call KS('000T,'4141005T,'0T,'B');/修改题目存储过程/修改题目create or replace procedure XGTM( cno_input in char, titleno_input in char, titlecontent_input in v

24、archar2 )is begin update 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 varchar2)isbeginupdate title settitle.answer = answer_inputWHERE o

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

26、dure CJ (cno_input in char,sno_input in char)_isv_sqlvarchar2(1024);beginv_sql := 'create or replace VIEWPAPER_VIEW(titleno,titlecontent,answer,sanswer,gerscore)ASSELECTtitle.titleno,title.titlecontent,title.answer,paper.sanswer,paper.getscoreFROMtitle,paperWHEREo=o AND title.titleno=paper.title

27、no ANDpaper.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 A

28、ND paper.SNO = sno_input;updatesc set sc.grade = totleWHERE sc.CNO = cno_input AND SC.SNO = sno_input;commit;end;call TJ ('0001','41410050');4.3查询/查卷(视图)CREATE or replace VIEWPAPER_VIEW_41410051(titleno,titlecontent,answer,sanswer,gers core)AS SELECTtitle.titleno,title.titlecontent,t

29、itle.answer,paper.sanswer,paper.getscoreFROMtitle,paperWHEREo=o AND title.titleno=paper.titleno ANDpaper.sno='41410051'order by titleno;/ 查卷(sqlplus ) setlinesize 200 pagesize 999 newpage; Col answer format a47;SELECTtitle.titleno,title.titlecontent,'正确答案是',title.answer,' 你的答案是&#

30、39;,paper.sanswer,' 得分',paper.getscoreFROMtitle,paperWHEREo=o AND title.titleno=paper.titleno AND paper.sno='4141005T order by titleno;/查看试题SELECTtitle.titleno,title.titlecontent FROM titleWHEREo='0001' order by titleno;/查看课程考试成绩情况Selectstudent.sno,student.sname,sc.grade fromstud

31、ent,sco='000T ANDsc.sno = student.sno;/查看课程平均分Select avg(grade) from sc Where o='0001'4.4登陆设计由丁做登陆的时候分表查询用户信息一直出bug,经过搜索解决办法后决定建立一个教师学生用户表来解决问题create table P_USER(username CHAR(9),password VARCHAR2(20),)从此表中只判断登陆是否成功。4.4.1 jsp页面部分login.jsp<%page contentType="text/html" pageE

32、ncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8”><title>login</title></head><body><form action,"http:/localhost:8080/loginServlet/LoginServlet” method=&quo

33、t;post”>欢迎使用在线考试系统用户名:<input type="text" name="username" /><br/>密码:<input type="password" name="password" /><br/><input type="submit" value=" 登录"/></form></body></html>Welcome.jsp<%page

34、contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>login</title></head><body><form action="http:/localhost

35、:8080/loginServlet/LoginServlet" method="post">欢迎使用在线考试系统欢迎登陆!</form></body></html>4.4.2 servlet 编写UserServlet.javapackagecom.baosight.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpSer

36、vlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.baosight.bean.UserBean;/* <p>Title:UserServlet</p>* <p>Description:TODO</p>* <p>Company: </p>* author zxy* date 2016-12-26 下午 10:50:57*/public class UserServlet

37、 extends HttpServlet (public void doGet(HttpServletRequest request,HttpServletResponse response)throwsServletException, lOException (doPost(request,response);public void doPost(HttpServletRequest request,HttpServletResponse response)throwsServletException, lOException (String method = request.getPar

38、ameter("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

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

40、edirect("welcome.jsp");return;elseSystem.out.println("用户名或密码错误!");response.sendRedirect("login.jsp");return;else if("logout".equals(method)/退出登录System.out.println("退出登录!");request.getSession().removeAttribute("username");response.sendRedire

41、ct("login.jsp");return;4.4.3 javabeans 编写DBAcess.javapackagecom.baosight.bean;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;/*数据库操作类* <p>Title:DBAcess</p>* <p>Description:TODO</p>

42、* <p>Company: </p>* author zxy* date 2016-12-25 下午 12:40:24*/public class DBAcess private String driver = "oracle.jdbc.driver.OracleDriver”;private String url = "jdbc:oracle:" + "thin:25:1158:orcl"private String username = "system"private Stri

43、ng password = "123456"private Connection conn;private Statement stm;privateResultSetrs;/ 创建连接publicbooleancreateConn() boolean b = false;try Class.forName(driver);/ 加载 Oracle 驱动程序conn = DriverManager.getConnection(url, username, password); b = true; catch (SQLException e) / TODO Auto-gener

44、ated catch blocke. printStackTrace();/获取连接catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();return b;/ 查询public void query(String sql)try stm = conn.createStatement();rs = stm.executeQuery(sql); catch (SQLException e) / TODO Auto-generated catch blocke.printStackT

45、race();/判断有无数据publicboolean next()(boolean b = false;try (if(rs.next()(b = true; catch (SQLException e) (/ TODO Auto-generated catch blocke.printStackTrace();return b;/获取表字段值public String getValue(String field) (String value = null;try (if (rs != null) (value = rs.getString(field); catch (SQLException e) (/ TODO Auto-generated catch blocke.printStackTrace();return value;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论