数据库课程设计报告-网上考试系统_第1页
数据库课程设计报告-网上考试系统_第2页
数据库课程设计报告-网上考试系统_第3页
数据库课程设计报告-网上考试系统_第4页
数据库课程设计报告-网上考试系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

..计算机与软件工程学院课程设计说明书课程名称:面向对象程序设计-课程设计课程代码:106086459题目:网上考试系统年级/专业/班:13级物联网工程2班学生XX:凯锋学号:27开场时间:2016年5月6日完成时间:2008年5月16日课程设计成绩:学习态度及平时成绩〔30〕技术水平与实际能力〔20〕创新〔5〕说明书撰写质量〔45〕总分〔100〕指导教师签名:年月日..目录TOC\o"1-3"\u1.引言11.1问题的提出11.2国外研究的现状11.3国网上考试系统的问题21.5任务与分析32.程序的主要功能42.1选择身份登陆功能:42.2编写试卷功能:42.3修改试卷功能:42.4查询考生成绩功能:42.5在线阅卷功能:42.6在线考试功能:42.7查询自己成绩功能:42.8查看学生信息功能:42.9修改学生信息功能:52.10查询教师信息功能:52.11修改教师信息功能:52.12查看管理员信息:52.13添加管理员信息:53.程序运行平台6EclipseIDEforJavaEEDevelopers 64.总体设计74.1需求分析74.2数据表信息74.3系统业务流程图94.4E-R模型95.程序说明106.模块分析186.1登陆验证模块196.2查询并显示模块206.3修改模块217.系统测试237.1学生可执行功能247.3管理员可执行功能268.总结28参考文献29..引言1.1问题的提出随着计算机技术的开展和互联网时代的到来,人们已经进入了信息时代,亦或是数字化时代。在数字化的网络环境下,学生希望能够有更方便,公平的考试方式,并且希望能够在网上随时查询自己的成绩,教师希望能够在线编辑,修改试卷,以及在线阅卷,系统管理员希望能够方便地查询,修改学生,教师的信息,以此来提高工作效率,以适应互联网时代的高速开展。我国历来采用手工出卷的方式作为教师的例行工作之一,试卷的编辑,整理工作占了很大份额。随着计算机网络技术的不断提高,学校对于学生的各方面管理也更加趋于网络化,网上考试系统就是其中一例。在线考试系统正是迎合这一需求而开发的,它旨在探索一种以互联网为根底的考试模式。通过这种新的模式,为考生创造一种新的考试环境,提高考试工作效率和标准化水平。1.2国外研究的现状世界各国对教育的开展给予了前所未有的关注,都试图在未来的信息社会中让教育处于一个优势的位置,从而走在社会开展的前列,为此许多国家都把信息技术应用于教育,作为民族开展的重要推动力。在国外,美国心理协会在1986年出版了关于如何开发、使用计算机化考试以及解释考分的指南,成为了考试和软件开发者的事实标准。投入实际使用的例子有:1982年采用远距离教育方式的美国学院〔AmericanCollege〕考试使用计算机进展测试;1993年美国教育考试中心〔EraduadeRecordExamination简称ETS〕考试;从1994年开场,美国护理证书考试完全在计算机上进展。目前,国外许多大型测验出版机构、地区教育主管部门和专业资格认证机构都以某种测量理论为指导建立题库、设计考试系统,并进展各项相关研究。除了这类行业专用的大型考试系统之外,供普通教师使用的通用考试系统软件也有相应的研究和产品。如英国QuestionMarkputing,Ltd公司出品的QuestionMark,就是一种基于工程反响理论的,可供广阔教师使用的通用的考试系统。在我国,计算机考试系统和题库的理论研究和实践应用起步比拟晚。但开展也比拟迅速,研究和开发活动比拟活泼。师大学、华北师大学等高等院校都有教师在进展教育测量理论应用于题库建立方面的研究。清华大学、交通大学、师大学等高校,也有教师在组织力量致力于实用考试系统的研究和开发工作。其中使用专用在线考试系统影响较大的考试有:1994年开场,国家教务组织的全国计算机等级考试;1996年开场,教育部考试中心举办的全国算机应用技术证书考试〔NationalApplideInformationTechnologyCertificate简称NIT〕;微软授权培训中心〔MicrosoftAuthorizedTrainingCenter简称ATC〕组织的认证考试等。1.3国网上考试系统的问题我国的专用考试系统主要针对计算机考试,其他行业和科目的考试系统太少。计算机在线考试系统由于操作类题目自动出题有较大的难度,根本没有实现题库化的管理。系统对传统的客观题虽然一般建有题库但不大,多采用随机抽题组卷的方式,缺乏教育测量理论作为依。多数的在线考试系统是C/S模式的,也就是说需要安装客户端之后才能使用,这样就带来了很多的不方便之处。考试完成后,分数和试题统计分析比拟简单,没有充分挖掘数据所包含的信息。通过考试系统或题库系统对最终用户即教师的需求分析做的不够透彻,忽略教师们渴望能自由地操纵试题库的需求,没有完全实现用户自主初始化试题库、自主维护试题库、自主调用试题库的功能。加上软件实用水平和商品化工作方面的缺乏。通用系统并没有被广阔教师认可和使用。1.5任务与分析本课题主要的目的是:利用网络进展无软盘、无纸化的在线考试,大大提高考试的可靠性、有效性,降低考试本钱,提高工作效率。用户类别:登录系统的身份定为三种,一是管理员,二是普通教师,四是学生,只有被授权的用户才可以使用本系统的资源。权限管理:系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。考生只可以参加在线考试;普通教师可以在线制作试卷,控制考试、成绩查询、添加试题、阅卷等。管理员可添加系系部、教师、专业、科目信息、查询修改管理员信息及审批试卷、查询考生成绩。在线考试功能:考生输入学号密码登陆系统后,选择对应的试卷可进展考试。答题中,有倒计时的功能,考试完毕时还没提交就自动交卷,系统将自动对客观题进展评分。考生管理功能:可注册新增学生用户,同时查看考生及班级考生的信息。考生成绩查询功能:提供考生各科目成绩的详细查询。可选:将成绩导出到Excel等试卷审批功能:只有管理员有此权限。教师制作试卷完毕,只有经过管理员审批后才能发布,发布后学生才能开考。系统维护:如数据平安管理〔含备份与恢复〕、操作员管理、权限设置等;程序的主要功能2.1选择身份登陆功能:可以根据不同的身份进展登陆,登陆后会有不同的操作界面。2.2编写试卷功能:教师可以在线编写试卷,并将试卷添加到试卷库中。2.3修改试卷功能:教师可以将已经编写好的试卷从试卷库中提取出来并进展完善,修改后重新添加到试卷库中。2.4查询考生成绩功能:教师可以查询某个科目的所有学生的成绩。2.5在线阅卷功能:教师可以查询在线批改试卷,并进展打分。2.6在线考试功能:学生登陆后可以选择试卷进展考试。2.7查询自己成绩功能:学生可以查询自己已考科目的成绩。2.8查看学生信息功能:管理员可以查询所有学生信息。2.9修改学生信息功能:管理员可以修改指定学生的信息。2.10查询教师信息功能:管理员可以查询所有教师的信息。2.11修改教师信息功能:管理员可以修改制定教师的信息。2.12查看管理员信息:管理员可以查看所有管理员的信息。2.13添加管理员信息:管理员可以添加管理员。程序运行平台EclipseIDEforJavaEEDevelopersjdk1.7MySQLMySQL的JDBC驱动MyEclipse运行方式:①翻开eclipse(或者MyEclipse),将动态网页工程ExamOnNet导入到eclipse中。②然后找到src文件夹下的perties配置文件,将里面的user=rootpassword=1214758100修改为本机的数据库用户名和密码。③找到WebContent文件夹下的login.jsp,右键→RunAs→RunOnServer④输入用户名和密码并选择登陆身份,点击登陆。图3-1总体设计4.1需求分析首先该系统针对不同身份的人提供了不同的功能,当以某种身份登陆时,不能执行其他身份的功能,因此登录时需要进展身份验证。其次,①管理员可以执行的功能有:查看,更新教师,学生,管理员的信息。②教师可以执行的功能有:在线编写试卷,修改试卷,批改试卷,查询某门课程的学生的成绩。③学生可以执行的功能有:在线考试,成绩查询。根据①可以得出:学生信息,教师信息,管理员信息,分别需要一表。根据②可以得出:试卷,分数,课程信息,分别需要一表。4.2数据表信息admin(管理员信息表)列名数据类型长度备注adminnochar10管理员号passwordchar10密码anamechar10ageint11年龄sexchar1性别表teacher(教师信息表)列名数据类型长度备注teachernochar10教师号passwordchar20密码tnamechar10rankchar10职称ageint11年龄sexchar1性别表Student(学生信息表)列名数据类型长度备注studentnochar10学生信息passwordchar20密码snamechar10ageint11年龄sexchar10性别classnochar10班级gradechar10年级majorchar20专业表paper(试卷信息表)列名数据类型长度备注papernochar10试卷信息coursenochar10课程号score_valueint11分值timeint10时间papercotaintext无试卷题目容表course(课程信息表)列名数据类型长度备注coursenochar10课程号amechar20课程名称表score(分数信息表)列名数据类型长度备注studentnochar10学号coursenochar10课程号papernochar10试卷号answertext无答案scoreint3分数表4.3系统业务流程图4.4E-R模型程序说明JDBCTools类(实现数据库连接,和数据库更新的方法)publicclassJDBCTools{/** *1.获取连接的方法.通过读取配置文件从数据库效劳器获取一个连接. * *return *throwsException */publicstaticConnectiongetConnection()throwsException{//1.准备连接数据库的4个字符串.//1).创立Properties对象 Propertiesproperties=newProperties();//2).获取perties对应的输入流 InputStreamin=JDBCTools.class.getClassLoader().getResourceAsStream("perties");//3).加载2〕对应的输入流properties.load(in);//4).具体决定user,password等4个字符串. Stringuser=properties.getProperty("user"); Stringpassword=properties.getProperty("password"); StringjdbcUrl=properties.getProperty("jdbcUrl"); Stringdriver=properties.getProperty("driver");//2.加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块.) Class.forName(driver);//3.通过DriverManager的getConnection()方法获取数据库连接.returnDriverManager.getConnection(jdbcUrl,user,password); }/** *执行SQL语句,使用PreparedStatement *paramsql *paramargs:填写SQL占位符的可变参数 */publicstaticvoidupdate(Stringsql,Object...args){ Connectionconnection=null; PreparedStatementpreparedStatement=null;try{connection=JDBCTools.getConnection();preparedStatement=connection.prepareStatement(sql);//遍历占位符对应的对象for(inti=0;i<args.length;i++){preparedStatement.setObject(i+1,args[i]);}//执行SQL语句preparedStatement.executeUpdate(); }catch(Exceptione){e.printStackTrace(); }finally{ JDBCTools.release(null,preparedStatement,connection); } }/** *释放数据库资源的方法 * *paramresultSet *paramstatement *paramconnection */publicstaticvoidrelease(ResultSetresultSet,Statementstatement, Connectionconnection){if(resultSet!=null){try{resultSet.close(); }catch(SQLExceptione){e.printStackTrace(); } }if(statement!=null){try{statement.close(); }catch(SQLExceptione){e.printStackTrace(); } }Student类〔封装Student的各种属性,并赋值〕publicclassStudent{//定义变量privateStringstudentno;privateStringpassword;privateStringsname;privateintage;privateStringsex;privateStringclassno;privateStringgrade;privateStringmajor;publicStringgetStudentno(){returnstudentno; }//定义Set和Get方法publicvoidsetStudentno(Stringstudentno){this.studentno=studentno; }publicStringgetPassword(){returnpassword; }publicvoidsetPassword(Stringpassword){this.password=password; }publicStringgetSname(){returnsname; }publicvoidsetSname(Stringsname){this.sname=sname; }publicintgetAge(){returnage; }publicvoidsetAge(intage){this.age=age; }publicStringgetSex(){returnsex; }publicvoidsetSex(Stringsex){this.sex=sex; }publicStringgetClassno(){returnclassno; }publicvoidsetClassno(Stringclassno){this.classno=classno; }publicStringgetGrade(){returngrade; }publicvoidsetGrade(Stringgrade){this.grade=grade; }publicStringgetMajor(){returnmajor; }publicvoidsetMajor(Stringmajor){this.major=major; }//定义构造方法publicStudent(Stringstudentno,Stringpassword,Stringsname,intage,Stringsex,Stringclassno,Stringgrade, Stringmajor){super();this.studentno=studentno;this.password=password;this.sname=sname;this.age=age;this.sex=sex;this.classno=classno;this.grade=grade;this.major=major; }publicStudent(){super();//TODOAuto-generatedconstructorstub }}StudentDao类〔实现对Student对象的添加,删除,修改,查找〕publicclassStudentDao{//插入publicvoidinsertAll(Stringstudentno,Stringpassword,Stringsname,intage, Stringsex,Stringclassno,Stringgrade,Stringmajor){ Connectionconn=null; Statementstatement=null; ResultSetresultSet=null;try{//1.获取Connectionconn=JDBCTools.getConnection();//2.获取Statementstatement=conn.createStatement();// statement2=conn.createStatement();//3.准备SQL Stringsql="SELECT*fromstudentwherestudentno="+studentno;//4.执行查询,得到ResultSetresultSet=statement.executeQuery(sql);//判断此学生账号是否存在if(resultSet.next()){//测试方法 System.out.println("已存在的学生员账号!"); }else{//插入新的学生信息 Stringsql1="insertintoadmin(studentno,password,sname,age,sex,classno,grade,major)" +"values(",",",",",",",")"; JDBCTools.update(sql1,studentno,password,sname,age,sex,classno,grade,major);statement.executeUpdate(sql1); System.out.println(sql1); System.out.println("已执行添加操作。"); } }catch(Exceptione){e.printStackTrace(); }finally{//6.关闭数据库资源. JDBCTools.release(resultSet,statement,conn); } }//删除publicvoiddeleteByStudentno(Stringstudentno){ Connectionconnection=null; Statementstatement=null;try{ StringdriverClass=".mysql.jdbc.Driver"; Stringurl="jdbc:mysql:///atguigu"; Stringuser="root"; Stringpassword="1230"; Class.forName(driverClass);connection=DriverManager.getConnection(url,user,password);statement=connection.createStatement(); Stringsql="DELETEFROMadminWHEREstudentno=""; JDBCTools.update(sql,studentno);statement.executeUpdate(sql); System.out.println("已执行删除操作"); System.out.println(sql); }catch(Exceptione){e.printStackTrace(); }finally{try{if(statement!=null){statement.close(); } }catch(SQLExceptione){e.printStackTrace(); }try{if(connection!=null){connection.close(); } }catch(SQLExceptione){e.printStackTrace(); } } }//修改publicvoidchangeByStudentno(Stringstudentno,Stringpassword,Stringsname,intage, Stringsex,Stringclassno,Stringgrade,Stringmajor){ Connectionconn=null; Statementstatement=null; ResultSetresultSet=null;try{//1.获取Connectionconn=JDBCTools.getConnection();//2.获取Statementstatement=conn.createStatement();//3.准备SQL Stringsql="SELECT*fromstudentwherestudentno="+studentno;//4.执行查询,得到ResultSetresultSet=statement.executeQuery(sql);//判断此学生账号是否存在if(resultSet.next()){//插入新的学生信息 Stringsql1="updatestudentsetstudentno=",password=",sname=",age=",sex=",classno=",grade=",major="" +"wherestudentno="+studentno; JDBCTools.update(sql1,studentno,password,sname,age,sex,classno,grade,major);statement.executeUpdate(sql1); System.out.println(sql1); System.out.println("已执行修改操作。"); }else{//测试方法 System.out.println("这不是一个学生的账号!"); } }catch(Exceptione){e.printStackTrace(); }finally{//6.关闭数据库资源. JDBCTools.release(resultSet,statement,conn); } }//查找publicList<Student>getAll(){ List<Student>students=newArrayList<>(); Connectionconnection=null; PreparedStatementpreparedStatement=null; ResultSetresultSet=null;try{ StringdriverClass=".mysql.jdbc.Driver"; Stringurl="jdbc:mysql://localhost:3306/nettest"; Stringuser="root"; Stringpassword="1214758100"; Class.forName(driverClass);connection=DriverManager.getConnection(url,user,password); Stringsql="select*fromstudent";preparedStatement=connection.prepareStatement(sql);resultSet=preparedStatement.executeQuery();while(resultSet.next()){ Stringstudentno= resultSet.getString(1); Stringpwd= resultSet.getString(2); Stringsname= resultSet.getString(3);intage= resultSet.getInt(4); Stringsex= resultSet.getString(5); Stringclassno= resultSet.getString(6); Stringgrade= resultSet.getString(7); Stringmajor= resultSet.getString(8); Studentstudent1=newStudent(studentno,pwd,sname,age,sex,classno,grade,major);students.add(student1); } }catch(Exceptione){e.printStackTrace(); }finally{try{if(resultSet!=null){resultSet.close(); } }catch(Exceptione){e.printStackTrace(); }try{if(preparedStatement!=null){preparedStatement.close(); } }catch(Exceptione){e.printStackTrace(); } try{if(connection!=null){connection.close(); } }catch(Exceptione){e.printStackTrace(); } }returnstudents; }}6.模块分析6.1登陆验证模块用户输入用户名,密码后,选择对应的登陆身份〔学生,教师,管理员〕,然后点击登陆。系统会验证输入的账号密码是否正确。图如果登录成功,会跳到如下页面:图登陆失败那么会跳到错误页面。关键代码:jsp代码:<formaction="login.do"method="post"><palign="center">请输入用户名和密码:</p><palign="center">用户名:<inputtype="text"name="t1"id="t1"/></p><palign="center">密码:   <inputtype="password"name="t2"id="t2"/></p><palign="center">请选择你的身份</p><palign="center"><inputtype="radio"name="person"value="p1"/>学生<inputtype="radio"name="person"value="p2"/>教师<inputtype="radio"name="person"value="p3"/>管理员</p><palign="center"><ahref="login.do"><inputtype="submit"value="登录"/></a><inputtype="reset"value="重置"/></p>用到的SQL语句〔java代码太多,无法展示〕: Stringsql="SELECTPASSWORDFROMstudentWHEREstudentno="+username; Stringsql="SELECTPASSWORDFROMteacherWHEREteacherno="+username; Stringsql="SELECTPASSWORDFROMadminWHEREadminno="+username;6.2查询并显示模块管理员登录成功后,点击"查询学生信息〞可以看到所有学生的信息。图6.2关键代码:<h1align="center">以下是学生信息</h1><% List<Student>students=(List<Student>)request.getAttribute("students");%><tablealign="center"><tr><th>学号</th><th>密码</th><th></th><th>年龄</th><th>性别</th><th>班级</th><th>年级</th><th>专业</th></tr><%for(Studentstudent:students){%><tr><td><%=student.getStudentno()%></td><td><%=student.getPassword()%></td><td><%=student.getSname()%></td><td><%=student.getAge()%></td><td><%=student.getSex()%></td><td><%=student.getClassno()%></td><td><%=student.getGrade()%></td><td><%=student.getMajor()%></td></tr><% }%></table>java代码://创立对象 StudentDaostudentDao=newStudentDao();//查询student表中的信息并保存到students中 List<Student>students=studentDao.getAll();request.setAttribute("students",students);request.getRequestDispatcher("/student_info.jsp").forward(request,response); SQL语句:Stringsql="select*fromstudent";6.3修改模块管理员点击修改学生信息后,会弹出新的界面来输入学生新的信息,输入信息后,点击按钮,后台数据库中该学生信息就会被修改。如图图以下是更改后的学生信息,更改前的信息参见图6.2图关键代码://获取文本框输入的值 Stringstudentno=request.getParameter("studentno"); Stringpassword=request.getParameter("password"); Stringsname=request.getParameter("sname");intage=Integer.parseInt(request.getParameter("age")); Stringsex=request.getParameter("sex"); Stringclassno=request.getParameter("classno"); Stringgra

温馨提示

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

评论

0/150

提交评论