




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.西南财经大学Southwestern University of Finance and Economics课程实验报告课程名称: 数据库学生姓名: 周小钰、李佳颖学 院: 经济信息工程学院 专 业:计算机科学与技术 指导教师:李 玉 荣 . 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业务流程图图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设计目的把概念结构设计阶段设计好的概念模型转换为逻辑模型,即将基本E-R图通过转换规则转换为关系模型,然后根据优化方法得到优化的数据模型
5、。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,titlecontent,A,B,C,D,answear,score);Testpaper(cno,testpaper
6、no,titleno,titlecontent);后期title1删去,统一使用了title0题库表表图2-9 ER图转关系模式2.4数据库实施和维护针对数据库维护部分,我们小组将及时对该系统数据库进行备份,将各用户信息保存在文件中,保证用户信息的安全性。3. 运行结果登入(以管理员为例):管理员管理相关表信息:登入老师后出题:老师修改题目:老师查卷(生成的视图):运行结果:试卷提取:查看相关成绩信息:学生答题后生成的数据学生查询自己的成绩(后两门暂时没有考试):登陆界面:4. 源代码 4.1建表/课程表 CREATE TABLE COURSE ( CNO CHAR(4) NOT NULL ,
7、 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 SC ( CNO CHAR(4) NOT NULL , SNO CHAR
8、(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 ( TID CHAR(9) NOT N
9、ULL , 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 TITL
10、EADD 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
11、);ALTER TABLE 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 )REFERENCE
12、S 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 char,password in varchar2)IsBeginInsert into studentValues(SNO, SNAME, PASSWORD);Commit;End;CALL MANASTU ('4141051','赵日天'
13、,'123456');Create or replace procedure manatea(tid in CHAR,password in varchar2)IsBeginInsert into teacherValues(TID, PASSWORD);Commit;End;CALL MANATEA ('teacher1','123456');Create or replace procedure manacou(cno in CHAR,cname in varchar2)IsBeginInsert into courseValues(CNO,
14、 cname);Commit;End;CALL MANACOU ('0001','课程1');Create or replace procedure manasc(cno in CHAR,sno in char)IsBeginInsert into SCValues(cno, sno,NULL);Commit;End;CALL MANASC ('0001','41410051');/出题存储过程Create or replace procedure ks(Cno_input in CHAR,Sno_input in char,Ti
15、tleno_input in char,Sanswer_input in varchar2)Isanswer1 varchar2(10);score1 char(4);Cno1 char(4);Sno1 char(9);BeginSelect cno,sno INTO cno1,sno1 from scWHERE o=cno_input and sc.sno = sno_input;exceptionwhenno_data_found then dbms_output.put_line('没有选课不能考试!');selectanswer,score INTO answer1,s
16、core1 FROM title WHERE o=cno_input AND title.titleno=Titleno_input;ifSanswer_input = answer1 THEN Insert into paperValues(cno_input,sno_input,titleno_input,sanswer_inut,score1);else Insert into paperValues(cno_input,sno_input,titleno_input,sanswer_inut,'0');END IF;Commit;End;Call KS('000
17、1','41410051','01','B');/修改题目存储过程/修改题目create or replace procedure XGTM(cno_input in char,titleno_input in char,titlecontent_input in varchar2)isbeginupdate title settitle.titlecontent = titlecontent_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;/修改
18、答案create or replace procedure XGDA(cno_input in char,titleno_input in char,answer_input in varchar2)isbeginupdate title settitle.answer = answer_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;/修改分数create or replace procedure XGFS(cno_input in char,titleno_input in char,score_i
19、nput in char)isbeginupdate title settitle.score = score_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;/学生查卷过程create or replace procedure CJ (cno_input in char,sno_input in char)isv_sqlvarchar2(1024);beginv_sql := 'create or replace VIEW PAPER_VIEW(titleno,titlecontent,ans
20、wer,sanswer,gerscore)AS SELECT title.titleno,title.titlecontent,title.answer,paper.sanswer,paper.getscoreFROM title,paperWHEREo=o AND title.titleno=paper.titleno ANDpaper.sno=sno_input AND o=cno_inputorder by titleno'EXECUTE IMMEDIATE v_sql using cno_input,sno_input;end;/成绩统计过程(学生考试完成点击提交时)creat
21、e 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 = sno_input;updatesc set sc.grade = totleWHERE sc.CNO = cno_input AND SC.SNO = sno_input;commit;end;call TJ ('0001','
22、;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,paper.getscoreFROM title,paperWHEREo=o AND title.titleno=paper.titleno ANDpaper.sno='41410051'order by tit
23、leno;/查卷(sqlplus)setlinesize 200 pagesize 999 newpage;Col answer format a47;SELECT title.titleno,title.titlecontent,'正确答案是',title.answer,'你的答案是',paper.sanswer,'得分',paper.getscoreFROM title,paperWHEREo=o AND title.titleno=paper.titleno ANDpaper.sno='41410051'order by t
24、itleno;/查看试题SELECT title.titleno,title.titlecontentFROM titleWHEREo='0001'order by titleno;/查看课程考试成绩情况Select student.sno,student.sname,sc.gradefromstudent,sco='0001' ANDsc.sno = student.sno;/查看课程平均分Select avg(grade) from scWhere o='0001'4.4登陆设计由于做登陆的时候分表查询用户信息一直出bug,经过搜索解决办法后
25、决定建立一个教师学生用户表来解决问题create table P_USER ( username CHAR(9), password VARCHAR2(20), ) 从此表中只判断登陆是否成功。4.4.1 jsp页面部分login.jsp<%page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&quo
26、t;text/html; charset=UTF-8"><title>login</title></head><body><form action="http:/localhost:8080/loginServlet/LoginServlet" method="post">欢迎使用在线考试系统 用户名:<input type="text" name="username" /><br/> 密码:<input ty
27、pe="password" name="password" /><br/><input type="submit" value="登录" /></form></body></html>Welcome.jsp<%page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE html><html><head>
28、<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>login</title></head><body><form action="http:/localhost:8080/loginServlet/LoginServlet" method="post"> 欢迎使用在线考试系统欢迎登陆! </form></body></
29、html>4.4.2 servlet编写UserServlet.javapackagecom.baosight.servlet; importjava.io.IOException; importjava.io.PrintWriter; importjavax.servlet.ServletException; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importcom.b
30、aosight.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 extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) t
31、hrowsServletException, IOException doPost(request,response); public void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException String method = request.getParameter("method"); if("login".equals(method)/登录 String username = request.get
32、Parameter("username"); String password = request.getParameter("password"); if(username=null|"".equals(username.trim()|password=null|"".equals(password.trim() System.out.println("用户名或密码不能为空!"); response.sendRedirect("login.jsp"); return; Use
33、rBeanuserBean = new UserBean(); booleanisValid = userBean.valid(username,password); if(isValid) System.out.println("登录成功!"); request.getSession().setAttribute("username", username); response.sendRedirect("welcome.jsp"); return; else System.out.println("用户名或密码错误!&qu
34、ot;); 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.javapackagecom.
35、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>* <p>Company: </p>* author zxy* date 2016-12-25 下午12:40
36、: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 String password = "123456" private Connection conn; pr
37、ivate 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-generated catch block e.printStackTrace(); / 获取连接 catch (Clas
38、sNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); return b; /查询 public void query(String sql) try stm = conn.createStatement(); rs = stm.executeQuery(sql); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); /判断有无数据 publicboolean next() boolean b
39、= false; try if(rs.next() b = true; catch (SQLException e) / TODO Auto-generated catch block e.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 block e.printStackTrace(); return value; /关闭连接 public void closeConn() try if (conn != null) conn.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); /关闭statement
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光伏电站项目发展前景与实施可行性分析
- 地块平整项目实施路径优化
- 二年级下册道德与法治教学设计-第12课 变废为宝 未来版
- 七年级语文下册 第一单元 2 说和做-记闻一多先生言行片段教学设计 新人教版
- 小寒节气的科学探索
- 5《走近我们的老师》教学设计-2024-2025学年道德与法治三年级上册统编版
- 初中体育华东师大版七年级全一册迈向成熟的蜕变-青春期特点、常见问题和预防教案设计
- 我逐梦的道路
- 《口算乘法》(教学设计)-2024-2025学年三年级上册数学人教版
- 提升备考能力
- 劳动与烹饪课件
- 高血压、2型糖尿病、高脂血症、肥胖症膳食运动指导要点基层医务人员应用实操手册
- 2025届河北省邢台市名校协作高三下学期一模英语试题(含答案)
- 2024内蒙古能源集团校园招聘394人笔试参考题库附带答案详解
- 交通设计(Traffic Design)知到智慧树章节测试课后答案2024年秋同济大学
- 2024年毕节市金沙县全县考调机关单位事业单位人员考试真题
- 水利系统职称考试水利专业技术人员职称考试题(附答案)
- 《桥梁健康监测》课件
- 异常子宫出血患者的护理
- ERP项目可行性研究报告(可编辑)
- 10《夺取抗日战争和人民解放战争的胜利》说课稿-2023-2024学年道德与法治五年级下册
评论
0/150
提交评论