基于Java的在线考试系统课程设计说明书.docx

上传人:小飞机 文档编号:3384835 上传时间:2023-03-12 格式:DOCX 页数:21 大小:46.27KB
返回 下载 相关 举报
基于Java的在线考试系统课程设计说明书.docx_第1页
第1页 / 共21页
基于Java的在线考试系统课程设计说明书.docx_第2页
第2页 / 共21页
基于Java的在线考试系统课程设计说明书.docx_第3页
第3页 / 共21页
基于Java的在线考试系统课程设计说明书.docx_第4页
第4页 / 共21页
基于Java的在线考试系统课程设计说明书.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于Java的在线考试系统课程设计说明书.docx》由会员分享,可在线阅读,更多相关《基于Java的在线考试系统课程设计说明书.docx(21页珍藏版)》请在三一办公上搜索。

1、基于Java的在线考试系统课程设计说明书操作系统课程设计 设计并实现在线考试系统 学院:信息科学与工程学院 专业:软件工程 1 一、前台界面设计 1、用户注册、登录界面 图 用户注册界面 用户注册界面如上图所示,下面是各项需填写内容的功能: 用户名:标示用户在线身份,可以为真实姓名,也可为化名,不同用户可以具有相同的用户名。 邮箱:用于用户接受系统消息,如用户忘记密码时,可以将密码通过邮件发送给用户。每个用户的邮箱地址必须是特有的,如果一个用户想要有两个登录账号,必须用两个不同的邮箱地址。如果某个邮箱地址再次被用来注册,给出提示。 设置密码:用户登录所用密码。 确认密码:用户需再次输入密码,以

2、确认上次输入内容。如果两次输入密码不相同,给出提示。 性别:针对部分用户需求而设定。如:老师在对学生进行测试时,便于核对学生信息。 2 图 用户登录界面 用户登录界面如上图所示,下面是各项需填写内容的功能: 邮箱:用户注册时所填写的邮箱,用于标识用户身份。 密码:用户最近一次所设置的密码,用于验证用户身份。 记住密码:用于记录用户登录状态,若选中此项,下次用户登录时系统会自动启动到用户登录状态。 忘记密码:若用户忘记登录密码,可点击此链接,跳转到用户注册邮箱接收邮件,邮件中包含用户最近一次设置密码。 2、欢迎界面 欢迎界面分两种形式:一种为未注册用户欢迎界面,另一种为已注册用户欢迎界面,效果图

3、如下所示: 3 图 未注册用户欢迎界面 页面内容介绍如下: 窗口名称为“XXX在线测试系统”。用户点击“注册”或“登录”按钮可弹出注册窗口或登录窗口,供用户注册或登录。窗口中间部分内容为关于系统的介绍性文字。用户点击“立即进入”按钮后进入“题目列表”窗口。 图 已注册用户欢迎界面 页面内容介绍如下: 已注册用户欢迎界面与未注册用户欢迎界面基本相同,不同之处在于没有“注册”、“登录”按钮,而添加了用户菜单,菜单起初仅显示用户名,当鼠标指向时,显示二级菜单,分别为“账户管理”、“个人资料”、“退出登录”。菜单功能如下: 4 账户管理:进入用户账户管理界面,比如用户可在此修改登录密码、查看历史测试成

4、绩等。详细设计参见后面内容。 个人资料:用户可在此完善个人资料。 退出登录:退出登录状态,以未登录状态在线。 3、题目列表 题目列表界面分两种形式:一种为未注册用户欢迎界面,另一种为已注册用户欢迎界面,效果图如下所示: 图 未注册用户题目列表界面 未登录用户进入题目列表界面后,首先陈列的是题目类型,即题目所属的相关领域。当用户点击某一题目类型后,向下弹出所有此类型的题目列表。每条题目包括标题、上传人、上传时间。 5 图 已注册用户题目列表界面 已登录用户的题目列表界面与未登录用户的相似,不同之处除了显示用户名外,在每个题目类型的后面有一个“上传”按钮,用户可点击此按钮添加此类型的题目。 4、在

5、线测试界面 在线测试界面有多个,包括题目部分和测试结果部分。每一套题目都由10个单项选择题组成,用户必须按顺序答题,答完全部题目后方可提交。用户在答题过程中可自行取消本次答题。若由于某些客观原因程序异常退出,系统可对用户答题情况进行备份,下次登录时用户可继续上次答题记录进行答题。下面是详细设计: 6 图 第一题界面 图中内容区左上角为题目类型,此处为“Photoshop”类,内容区右上角为当前题号,中间部分为题目和选项。内容区左下角为“上一题”按钮,因为此处为第一题,所以此按钮为不可用状态。内容区右下角为“下一题”按钮,点击跳转到下一个题目,只有用户对当前题目做出选择后,此按钮才显示为可用状态

6、。 窗口右上角为用户菜单,点击“返回”可取消本次答题。若为已登录用户,则显示用户名。 7 图 中间题目界面 此界面与第一题界面几乎相同,不同之处在于“上一题”按钮变为可用状态。 图 最后一题界面 此界面与前面两个界面几乎相同。不同之处在于已经没有“下一题”按钮,用户可点击“完成”按钮进行提交。 图 测试结果界面 8 此界面显示用户答题结果,包括正确率和每个题的对错情况。当鼠标点击题目时,可弹出窗口显示原题供用户回顾。显示原题窗口如下所示: 图 原题显示窗口 其中,正确答案应加粗显示。若为用户打错的题目,则选错的选项应特别标出。 二、已登录用户权限界面设计 1、用户账户管理 图 用户账户管理界面

7、 用户对账户的管理功能主要有三项:修改密码、查看题库、查看历史成绩。用户点击三个按钮9 其中之一,就会进入各项管理界面。详细设计如下: 图 用户修改密码界面 此处为用户提供修改登录密码功能,而且必须在用户登录的前提下。如果用户忘记了登录密码,可点击“忘记当前密码?”寻回。 图 题库查看界面 用户可在此查看自己上传过的所有题目,并可对其进行修改或删除。用户还可以通过“上传”按钮进行新题目上传。 10 图 题目上传界面 题目标题可自行填写,题目类型可以从已有列表中选择,也可自行添加。问题、选项内容自行填写,正确答案只能为A、B、C、D其中之一。上传时间系统自动设置。点击“保存”按钮可将题目提交到系

8、统数据库,并能在题目列表中显示,供其他用户进行测试。 11 图 历史成绩界面 用户可在此查看自己所获得的所有成绩,可根据需求对部分记录进行删除。 2、个人资料 图 用户个人资料界面 用户可以在此修改用户名、邮箱、性别,并添加简单的个人介绍,以便其他用户查看。 12 图 个人资料显示界面 当某用户查看其他用户资料时,显示内容如图。 三、系统管理员权限界面设计 1、管理员登录界面设计 13 图 管理员登录界面 管理员登录界面如上图所示,同用户一样,通过邮箱寻回密码。 2、管理系统首页设计 图 系统管理首页 管理员登录后的首页,仅是一个内容显示界面,没有功能。 14 3、用户管理界面设计 图 用户管

9、理界面 系统管理员可在此处对用户进行管理。可管理的用户信息包括用户名、邮箱、密码、性别、个人简介,管理员操作的最小单位为一条记录,且只能对用户进行删除操作,无权限修改用户的个人信息。 4、题型管理界面设计 图 题型管理界面 管理员在此处对题型进行管理,题型包括名称和数量两项属性,管理员可以定期删除题目数量为0的题型。 15 5、题目管理界面设计 图 题目管理界面 管理员可在此处对题目进行管理,题目属性包括名称、上传人、上传时间、所属类型。管理员操作的最小单位为每一套题目,且只能进行删除操作。 16 6、管理员个人资料管理界面设计 图 管理员个人资料管理界面 管理员在此对自己的个人信息进行管理。

10、用户名不可变,昵称可针对不同的系统管理员而改变,邮箱必填,以接收系统消息,如找回密码等。如要修改登录密码,可通过框内两项修改,否则此两项留空。 四、设计总结 在本次课程设计中,我负责整个系统的流程、界面设计。设计时,我将重点放在系统功能上,只想着怎样将系统的功能完全的、有条理的表现出来,忽视了用户体验这一方面的考虑。直到我们做测试时,我才发现存在很多问题。比如,用户在进入测试之后,就只能一路走到底,不能返回,这是一个非常严重的错误。如果在加一个返回按钮的话,那么整个系统的流程控制要有非常大的变动,由于时间紧张,最终还是没能做出修改。而且,我们用了Java原带的界面控件,没有加自己的素材,这使我

11、们的真个系统看起来只是一个练习,而不是一个产品。 虽然缺陷非常多,但在设计的过程中还是有很多的收获。整个系统从最初的一个想法,到简单的模型,再到详细的设计,置身在这个过程中,有过迷茫与困惑,但最终都坚持过来了,心中有一些小小的成就感。在这个过程中,我始终都以积极的姿态投入,并不是以一个“旁观者”的姿态来17 应付一个课程设计。期间,有人向我们提出质疑:从无到有的搭起一个系统框架并不容易,更何况还要加好多功能。而且,我们三个的编码能力并不是很强,当初我也怀疑过,我们到底能做到什么程度。虽然心中非常没底,但还是表现出乐观的态度,因为情绪是会感染人的,积极的态度会使旁边的人也变得积极。只要我们真的想

12、做、认真做,就一定能学到自己想要的东西,与结果相比,过程更重要。怀着积极的心态,我们三个齐心协力,最终实现了最主要的功能。 我想,我之所以能坚持下来,最重要的是老师和同学的帮助。老师在整个过程中的细心指导,使我们始终保持向前的姿态;其他两名同学的积极态度,使我能保持一份必胜的信心。我知道,我还差的很远,需要继续更加努力的学习、实践。我会奋力向前,总有一天做到心中的那个自己。 . 18 数据库设计 在对数据库进行分析设计时,应按照数据规范化理论的设计,尽量减少冗余数据,以确保数据完整性,统一性。在数据库基本设计原则的指导下,数据库设计重点应考虑下列因素: 1数据库表设计必须布局合理,层次分明。

13、2数据库必须高度结构化,保证数据的结构化,规范化和标准化,这是建立数据库和进行信息交换的基础。数据结构的设计应该遵循国家标准和行业标准,尤其要重视编码的应用。 3数据库设计的时候,一方面要尽可能地减小数据冗余,减小存储空间降低数据一致性问题发生的可能性,另一方面,还要考虑适当的数据冗余,以降低程序开发难度。 4数据库设计时应保持数据库中数据的准确性和统一性。在系统中,多个用户同时操作数据库中的共享数据,就会可能影响到数据库数据的一致性产生错误,因此必须使用“锁”等方法来确保数据库中数据的一致性。 5数据库设计的时候,对于数据库中的保密数据还必须设计一些安全机制来确保数据苦的安全。 在数据库设计

14、实际的过程中,确定数据库的结构设计是否合理的,主要是依据数据库中是否有以下特点: 1数据库是否具有一定的灵活性、适应性和可移植性; 2数据库是否具有与其系统的兼容性; 3数据库是否具有对新环境的可改变性; 4数据库的存储成本是否够低; 5数据库的设计是否有利于系统的实现; 6是否具有良好的数据库结构,易于维护,易于理解,效率较高。 作为一个具有一定应用价值的在线考试系统的数据库,就要求数据库设计人员设计出一个好的结构,减少数据库数据的冗余的产生。下面就介绍在线考试系统的数据库是如何设计的。 该系统选用数据库MySQL MySQL是一种开放源代码的关系型数据库管理系统,它与其他大型的数据库例如S

15、QLServer、Oracle相比,MySQL有着其自身的一些缺点,例如功能相对简单、数据库规模较小等,但这却一点都没有影响到它受中小型企业和一般的个人使用者欢迎的程度,因为MySQL提供的功能已经对他们来说已经够用了,同时因为MySQL是一个开源数据库,所以可以大大减少系统成本。 MySQL数据库的主要功能只在组织和管理很庞大或复杂的信息和基于WEB的库存查询请求不仅仅为客户提供信息,而且还可以为您自己使用数据库可以提供如下功能: 减少记录编档的时间 减小记录检索时间 灵活的查找序列 灵活的输出格式 多个用户同时访问记录 19 1、数据库需求分析 需求分析是设计数据库的起点,需求分析的结果是

16、否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。 根据分析,该系统主要涉及到几种信息的存储,管理员信息的存储,用户信息的存储,试卷信息的存储。所以该系统需要建立管理员信息表,用户信息表,题库信息表,试卷类型表、试卷表,成绩表。 2、数据库概要设计 概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构的过程,它是整个数据库设计的关键。根据数据库需求给出该系统的E-R图 3、 数据库逻辑结构设计 数据库的概念结构设计完毕以后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。下面就要设计在线考试系统

17、数据库的逻辑结构。 以概念结构设计中的E-R图为主要依据使用powerdesign设计出该系统的关系模式,20 该系统的数据库逻辑概念关系模型图如下 图4.7逻辑概念关系模型图 4、数据库表设计 下面列出了设计过程中所用到的数据库表及其结构 表格名 用户信息表 管理员信息表 试卷类型表 题库表 试卷表 成绩表 元素 用户名、邮箱、密码、性别、简介 用户名、邮箱、密码 类型名、试卷量 类型名、试卷名、上传人、上传时间 类型名、试卷名、题号、内容、A|、B、C、D、答案 邮箱、类型名、试卷名、成绩 表1.1 user表 21 t_user 列名 类型 长度 描述 username varchar

18、10 用户名字 useremail varchar 20 用户邮箱 userpassword varchar 20 用户密码 enum usersex ( 男、女) 用户性别 userintroduce varchar 100 用户简介 表1.2 manager表 t_manager 列名 类型 managername varchar email varchar password varchar 长度 10 20 20 描述 管理员名字 管理员邮箱 管理员密码 表1.3 question_subject表 t_question_subject 列名 类型 长度 subjectname pape

19、rSum varchar int 表1.4 questionsBase表 描述 类型名 20 试卷数量 t_ questionsBase 列名 类型 长度 subjectname varchar 20 paperName useremail joinTime 表1.5 Question表 描述 试题类型 试卷名 varchar varchar datetime 30 20 8 用户邮箱 加入时间 t_ Question 列名 类型 长度 sujectname varchar 20 paperName Questionno Content A 描述 试题类型 试卷名 varchar int va

20、rchar varchar 22 30 100 50 题号 试题内容 A选项内容 B C D answer varchar varchar varchar varchar 50 50 50 50 B选项内容 C选项内容 D选项内容 答案 表1.6 degree表 Tb_degree 列名 类型 长度 描述 useremail varchar 20 用户邮箱 subjectname varchar 20 试题类型 paperName varchar 30 试卷名 int degree 成绩 5、主要代码 public DATABASE throws SQLException, IOExcepti

21、on try Class.forName(com.mysql.jdbc.Driver); catch (ClassNotFoundException e) e.printStackTrace; conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/testsystems,root,); public java.sql.Connection conn; public void close throws SQLException, IOException conn.close; 23 以上为链接数据库代码。 以下为个函数说明:

22、 1、用户注册函数: public String userRegister(String username, String email, String password,String sex, String introduce) 2、用户检测函数 public String userDetection(String useremail, String password) 3、查看所有用户信息函数: public String getalluser 4、用户修改信息函数: public void userupdate(String useremail, String password, Stri

23、ng password1) 5、管理员检测函数: public int managerDetection(String manageremail, String managerpassword) 6、杀出用户函数: public void deleteuser(String email) 7、请求试题函数: public String getquestion_subject 8、请求试卷函数: public String getpapername(String ) 24 9、请求试卷数目函数: public int getpape_sum(String s) 10、增加试卷数目函数: publ

24、ic void addsetpape_sum 11、增加科目: public void addsubject(String a1) 12、上传题目: public void addpaper( String subject,String papername, int no, String con, String a,String b, String c, String d, String answer) 13、请求每套试卷的10道题: Public void gettest(String supjectname,String papername,String s1) 14、请求答案: publ

25、ic String getanswer(String supjectname,String papername) 15、设置分数: public void setdegree(String useremail,String subjectname,String papername, int degree) 16、请求分数: public int getdegree(String useremail,String subjectname,String papername) 17、减少试卷数量: 25 public int delsetpape_sum(String s) 18、删除科目: pub

26、lic void delsubject(String s) 19、删除试卷: public void deletetest(String useremail,String subjectname,String papername) 7、感悟 通过这次毕业设计,对很多东西有了新的认识和新的见解,认识问题的和思考解决办法有了本质上的进步,特别是对一个系统开发的模式有了更深的认识,对专业技能的运用更熟练。 在线考试系统服务器模块详细设计 服务器模块负责人;高秀洋。 主要负责功能,客户端、服务器端socket程序设计,客户端与服务器的通信及请求处理。 系统简介 在线考试系统是一款可以为某类知识群体提供

27、知识技能测评的软件。用户只要下载了客户端软件,就可以注册、登陆选择某一类题目进行答题,答题结束后系统保存用户成绩并返回用户成绩。 服务器模块介绍 服务器端应用ServerSocket类设定9084端口为监听端口,为每一个发出请求的用户创建一个服务线程。服务线程根据客户端的请求消息做相应的处理。客户端应用Socket连接服务器IP和9084端口,26 与服务器建立连接,客户端发送带有约定标识的请求消息,服务器程序根据此特定标识做出相应处理。 服务器功能介绍 1、用户注册 客户端用户输入个人信息及密码,客户端Socket程序将此信息发送至服务器。此用户的服务线程继而将用户注册信息写入数据库。 用户

28、登录 用户在登陆界面输入邮箱与密码,客户端Socket程序将邮箱与密码发送到服务器,服务器线程继而查询数据库,确认此用户是否已注册,若注册则允许登陆,否则拒绝登陆。 修改密码 用户登录后,修改密码。服务器的用户线程接收到此请求后将客户端传来的新密码写入数据库代替原来的密码。 传送试题 服务器线程接收到用户请求试题的信息后,开始访问数据库取出题目发送到客户端。客户端接收试题并将题目写入临时只读文件里,以备客户端读文件并将试题写入界面。 试卷批阅 客户端将用户答案传送至服务器,服务器查询数据库得到正确答案并判断用户答案。 统计在线用户数量 服务器维护一个全局变量NUM,用来保存在线用户数量。每当一

29、个用登陆成功,ClientNum就加一,当用户退出,ClientNum就减一。对于多线程的服务器,程序应互斥的访问ClientNum。此处使用java同步方法如下。 27 public synchronized static void addClientNum int n= ClientNum; n+; ClientNum=n; public synchronized static void cutClientNum int n= ClientNum; n-; ClientNum=n; 7、客户端socket程序主要代码: public class SocketClient private S

30、ocket s; private static InputStream instream; private static OutputStream outStream; private static Scanner in; private static PrintWriter out; public SocketClient throws UnknownHostException, IOException s = new Socket(127.0.0.1, 9084); instream = s.getInputStream; outStream = s.getOutputStream; in

31、 = new Scanner(instream); out = new PrintWriter(outStream, true); 8、服务器程序主要代码如下,每接收到一个客户端请求就新建一个用户线程,有此线程响应用户请求。 public class ReceiveServer public static int ClientNum=0;/在线用户数量 final int RECEIVE_PORT = 9084;/ 该服务器的端口号/receiveServer的构造器public public ReceiveServer ServerSocket rServer=null; Socket re

32、quest=null; /用户请求的套接字 Thread receiveThread=null; try rServer=new ServerSocket(RECEIVE_PORT); 28 while(true) request=rServer.accept; receiveThread=new ServerThread(request);/生成serverThread的实例 receiveThread.start;/fire the thread catch(IOException e) System.out.println(e.getMessage); public synchroniz

33、ed static void addClientNum int n= ClientNum; n+; ClientNum=n; public synchronized static void cutClientNum int n= ClientNum; n-; ClientNum=n; public static void main(String args) / TODO Auto-generated method stub new ReceiveServer; /END MAIN /END CLASS 实验总结: 服务器进程对多客户端的请求可以采用线程池的方式,也可采用一用户一线程的方式,因为

34、本系统中客户端与服务器频繁的消息传递而采用了为每一个用户创建一个线程的策略。 通过本次在线考试系统的设计,我们加深了对操作系统基本概念的理解也首次尝试了多线程的编程。 本次课程设计按照指导老师的要求,经历了需求分析、概要设计、详细设计、编码实现阶段。总的看来,小组讨论设计的时间比编码的时间甚至还要多,但因此我们对系统整体框架的把握也比较好,对各模块的抽象和接口设计也有比较清晰的认识,为后面的工作做了很好的铺垫。因此我们深刻体会到了设计在软件开发阶段的重要性。 29 另外,本次课程设计虽然实现了设计的基本流程,但我们还有很多的细节需要完善,还有很多知识需要学习,在以后的学习中我们要严格地要求自己,更多的在学习中体会操作系统,提高对专业的认知。 30

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号