一、概述·················································3
二、需求分析··············································3
三、系统设计··············································7
四、系统实施··············································12
五、系统测试··············································39
六、收获和体会···········································39
七、附录·················································39
八、参考文献············································39
一、概述
1、项目背景:
在Internet飞速发展的今天,校园也慢慢进入网络时代,计算机网络已经成为学校教育事业发展不可或缺的一部分。网络给我们带来的不仅是无穷的信息,也带来了更多便利。为推动学校教育信息化的发展,远程教育已成为现代教育技术发展方向之一,在线考试作为远程教育的一个子系统也成为一个重要的研究领域。在线考试系统它具有降低考试成本,解决繁重的考务工作的优点。其中,我们选择计算机学科中较为重要的离散数学作为研究。
2、编写目的:
离散数学课程测验系统是为了满足离散数学课程教学,提高教学效率,服务于广大师生,本系统通过网上出题,机上考试,自动阅卷等工作为师生创造一个快捷的网络课程测验系统。
本项目用户针对计算机科学专业的学生和教师以及部分电子信息类专业学生、教师。
3、软件定义:
离散课程练习测验系统即为帮助用户练习、检测离散数学学习效果的系统。
4、开发环境:
软件测试运行环境为Windows7及以上系统,数据库系统为SQLServer2008.
二、需求分析
1、问题的提出:
2.1.2应用目标:软件应用方面应包含如下几点
(1)学生练习、测验、查询成绩
(2)老师测验选项、题库更改、查询成绩
(3)管理员创建账号等
2.1.3作用范围:计算机科学的老师和学生以及部分电子信息类专业的老师和学生。
2.1.4该软件独立,并无与其他软件的联系。
2、系统的业务功能分析:
用户适用于网页。本软件的开发人员,如操作人员、维护人为在读计算机专业学生。系统功能共分为三大块:学生功能,教师功能,管理员功能。
1.2.1精度
每次出题相同率不能超过百分之三十。输出以及传输过程中的精度要求题目正确率百分之百,成绩显示应为整数。题目数量输入应为整数。
1.2.3灵活性
操作方式上的变化以及环境的变化应保证系统不会崩溃而且运行正常。
系统在出现问题或者需要改进时应保证修改方便。
3、系统的业务流程分析:
图2-1系统基本流程图
4、需完成的功能:
一:学生功能:
(1)练习:练习则会根据学生所选章节以及选择的各题型数量进行随机出题,并提供正误判断。
输入:输入要练习的章节(VARCHAR,数值范围(1-1000)),以及各题型数量(int,数值范围(1-1000))。
(3)查询:除此之外,学生还可查询以往所有测试的成绩.
二:教师功能:
(1)测试选项:老师能够选择测试试卷题目类型的数量。达到控制测试的目的。
输入:题目数量(INTEGER)。
(2)题目选项:老师可浏览所有数据库中的题目,并能够进行更改删除和增加。使得题库管理更加方便。
输入:更改:输入更改后的题目(VARCHAR,数值范围(1-8000))
增加:输入增加的题目以及题目类型等等。(VARCHAR,数值范围(1-8000))
三:管理员功能:
管理员可以进行管理工作,像创建学生老师账号,修改账号信息等。
四:登陆:
输入:用户账号和密码,与后台比对。(LONG)
5.数据流图:
图2,2账户管理.
图2.3学生功能
图2.4教师功能
6.数据字典
数据流定义
表2.8考试设置信息
表2.9学生信息
表2.10学生成绩表
表2.11选择题信息表
表2.12判断题信息表
三、系统设计
1、数据表:
(1)、数据库的关系模式:
学生(学号,姓名,学生密码,学生教师,学生编号)
教师(教工号,姓名,教师密码)
管理员(管理员姓名,管理员密码,管理员编号)
试题(试题编号,试题内容,选项一,选项二,选项三,选项四,答案,分值,章节名,教师编号)
(2)、表的物理设计:
表3.2.学生信息
属性名
存储代码
类型
备注
允许为空
学号
Stu_num
VARCHAR
姓名
Stu_name
学生密码
Stu_pad
学生编号
Stu_ID
INT
学生教师
Stu_class
学生教师ID
允许
表3.3教师信息
教工号
Tea_ID
Tea_name
教师密码
Tea_psd
表3.4管理员信息
Man_ID
管理员姓名
管理员账号
Man_name
管理员密码
Man_psd
表3.5试题信息
试题编号
Title_ID
试题提干
Title_name
选项一
Title_opt_a
选项二
Title_opt_b
选项三
Title_opt_c
选项四
Title_opt_d
答案
Title_answer
分值
Title_score
章节编号
Cou_ID
教师编号
表3.6考试信息
Exam_time
题目编号
编号
ID
表3.7成绩信息
Score_ID
考试分数
Exam_score
教师姓名
学生姓名
2、视图,索引,数据库权限:
(1)数据具有可靠性应当在本系统投入使用的生命周期内不丢失数据并且当数据转为历史纪录后任何人不得进行更改。
(2)系统实现学生、教师和管理员的登陆区分来实现系统的稳定和安全性。
(3)系统正常运行过程中不允许出现逻辑与算法错误。
(4)系统正常运行过程中当操作发生失误时或数据溢出时应提示故障原因然后正常退出当前操作环境。
(6)没有得到修改权限的用户无法修改信息以及执行处理功能。
图3.7教师功能
图3.8学生功能
3、软件功能设计
(1)、系统的结构图
图3.9系统结构图
(2)、功能表:
用户管理
题库管理
成绩查询
修改密码
用户注册
在线考试
试卷管理
学号(学生)
√
姓名(学生)
姓名(教师)
密码(教师)
姓名(管理员)
选择题
判断题
选择题答案
判断题答案
学生登陆
随机出题
输入答案
计算分数
教师登陆
教师信息管理
学生信息管理
密码(学生)
表3.10功能需求与程序的关系-1
表3.11功能需求与程序的关系-2
(3)、功能描述:
图3,.12系统功能模块
本系统分为四个模块,模块间的通信通过共享数据库来实现。
(1)信息管理模块:对用户和管理的信息尽心管理包块账户的添加删除以及密码修改
(2)练习考试模块:学生用户的练习及考试操作
(3)题库管理模块:老师对题库的增添修改及删除
(4)成绩查询模块:老师和学生对考试成绩的查询
模块分类
功能
对象
功能描述
登陆
所有用户
信息管理
管理员
管理教师和学生信息,且可修改密码
账号创建
创建用户账号
为要使用系统的用户创建登陆账号
密码修改
修改管理员密码
修改登陆密码
修改学生密码
修改教师密码
增添
教师
用户更新管理题库
删除
修改
查询
教师查询学生成绩
查看学生成绩
学生查看自己成绩
学生
查看自己成绩
考试
学生考试
考试管理
练习
学生练习
用于日常学生练习
表3.13系统功能
四、系统实施
(1)、系统的界面设计:
a.用户界面
b.硬件接口
整个软件系统不大,因此无须与外界硬件联系。
若数据库数据量较大则可以保持与光盘刻录机的接口。
c.软件接口
主要为软件与操作系统的接口,在Windows上实现软件。
2.管理员功能界面
完成管理员功能。单击选项可进入教师管理,学生管理,账号管理,修改密码界面以及进行用户注销操作。
图4,2管理员功能界面
3.教师管理界面
完成管理员对教师信息的更改删除查询,输入教师姓名执行查询操作或直接修改删除教师信息。
图4,3教师管理界面
4.学生管理界面
完成管理员对学生用户信息的更改删除查询,输入任课教师以及学生姓名点击查询操作或直接修改删除学生信息。
图4,4学生管理界面
5.账号创建界面
选择学生教师管理员的账号创建,单击选项完成操作。
图4,5账号创建界面
6.添加学生界面
添加学生信息。姓名,学号,密码以及任课教师,点击提交完成操作。
图4,6添加学生界面
7.修改密码界面
完成对旧密码的修改,点击提交完成操作。
图4,7修改密码界面
图4,7,1修改密码成功界面
8.教师功能界面
选择教师功能。单击选项,可进入题库管理,考试设置,查询系统,修改密码界面以及进行用户注销操作。
图4,8教师功能界面
9.题库管理界面
教师完成题库管理功能。单击对题库进行添加修改删除操作。
图4,9题库管理界面
10.试卷设置界面
完成教师对试卷的设置,编号,1分,2分,4分,5分题目数量。点击提交完成操作。
图4,10试卷设置界面
11.教师查询成绩界面
图4,11教师查询成绩界面
12.学生功能界面
选择学生功能。单击选项,可进入在线考试,在线练习,查询系统,修改密码界面以及执行用户注销操作。
图4,12学生功能界面
13.学生考试界面
输入试卷编号进入考试,点击提交完成操作。
图4,13学生考试界面
14.学生试卷设置界面
输入章节以及各分级题目数量进行试卷设置,点击提交完成操作。
图4,14学生试卷设置界面
15.学生成绩查询界面
图4,15学生成绩查询界面
16.在线练习/考试界面
学生进行练习/考试选项。单击多个选项中的一个选项完成单个题目的操作,可直接单击其他选项完成重新选择操作。
图4,16在线练习界面
17.练习/考试结果界面
提供学生练习/考试结果查询。
图4,17练习结果界面
(2)、事件的设计过程:
概要设计:总体设计,接口设计,运行设计,系统数据结构设计,系统出错处理设计
详细设计:程序系统的结构,模块设计
*(3)、主要代码描述:
1.查询教师示例部分代码
if(flag.equals("teacher")){
Stringname=request.getParameter("name");//得到模糊查询中输入的名字
ArrayList
if(name!=null){//用于判断是不是第一次显示,即通过管理主页面的学生管理链接而来
if(name!=""){//用于判断是不是需要按条件进行查询
al=dbh.getTeacher("selecttop"+pageSize+"*fromTea_tbwhereTea_namelike'%"+name+"%'andTea_IDnotin(selecttop"+pageSize*(pageNow-1)+"Tea_IDfromTea_tbwhereTea_namelike'%"+name+"%')");
rowCount=dbh.getRowCount("selectcount(*)fromTea_tbwhereTea_namelike'%"+name+"%'");
}else{//无条件查询,显示所有教师信息
al=dbh.getTeacher("selecttop"+pageSize+"*fromTea_tbwhereTea_IDnotin(selecttop"+pageSize*(pageNow-1)+"Tea_IDfromTea_tb)");
rowCount=dbh.getRowCount("selectcount(*)fromTea_tb");
}
request.setAttribute("name",name);
}else{//第一次显示所有教师信息。
request.setAttribute("name","");
2.考试页面2分题示例部分代码
functionCountDown(){
if(maxtime>=0){
minutes=Math.floor(maxtime/30);
seconds=Math.floor(maxtime%60);
msg="距离结束还有"+minutes+"分"+seconds+"秒";
document.all["timer"].innerHTML=msg;
if(maxtime==5*30)alert('注意,还有5分钟!');
--maxtime;
else{
clearInterval(timer);
document.exam1.submit();
timer=setInterval("CountDown()",1000);
课程考试题目
<%
intExamtime=Integer.parseInt(examtime);%>
一、2分题,以下每题都有A、B、C、D四个选项,只有一个正确选项,选择正确的得2分,选错或不选不得分。
intj=1;
for(inti=0;i Titletl=(Title)a22.get(i); %> j++; 3.考试出题部分代码 if(flag.equals("test")){ ArrayList ArrayList ArrayList ArrayList StringCou_name=request.getParameter("Cou_name"); intCou_ID=dbh.getID("selectCou_IDfromCou_tbwhereCou_name='"+Cou_name+"'"); request.setAttribute("Cou_name",Cou_name); Randomrand=newRandom(); ArrayList ArrayList ArrayList ArrayList StringTitle_1=request.getParameter("Title_1"); intnum1=Integer.parseInt(Title_1); StringTitle_2=request.getParameter("Title_2"); intnum2=Integer.parseInt(Title_2); StringTitle_4=request.getParameter("Title_4"); intnum4=Integer.parseInt(Title_4); StringTitle_8=request.getParameter("Title_8"); intnum8=Integer.parseInt(Title_8); a1=dbh.getTitle("select*fromTitle_tbwhereTitle_score=1andCou_ID='"+Cou_ID+"'"); a2=dbh.getTitle("select*fromTitle_tbwhereTitle_score=2andCou_ID='"+Cou_ID+"'"); a4=dbh.getTitle("select*fromTitle_tbwhereTitle_score=4andCou_ID='"+Cou_ID+"'"); a8=dbh.getTitle("select*fromTitle_tbwhereTitle_score=8andCou_ID='"+Cou_ID+"'"); if(num1>a1.size()||num2>a2.size()||num4>a4.size()||num8>a8.size()){ request.getRequestDispatcher("Student_Test_Info.jspflag=error").forward(request,response); }else{ for(inti=0;i { Titletl=(Title)a1.get(rand.nextInt(a1.size())); if(a11.contains(tl)) i=i-1; a11.add(tl); for(inti=0;i Titletl=(Title)a2.get(rand.nextInt(a2.size())); if(a22.contains(tl)) a22.add(tl); for(inti=0;i Titletl=a4.get(rand.nextInt(a4.size())); if(a44.contains(tl)) a44.add(tl); for(inti=0;i Titletl=a8.get(rand.nextInt(a8.size())); if(a88.contains(tl)) a88.add(tl); request.setAttribute("Cou_ID",Cou_ID); request.setAttribute("a11",a11); request.setAttribute("a22",a22); request.setAttribute("a44",a44); request.setAttribute("a88",a88); request.getRequestDispatcher("Student_Online_Exam.jsp").forward(request,response); 五、系统测试 (1)、给出单元测试的测试用例:参见图4.1-4.17 (2)、给出系统测试的测试用例:参见图4.1-4.17 六、收获和体会 通过这次课程设计,让我们将书本上的知识实践在一份份报告里,让我们真真切切的对软件开发与团队合作模式有了更深入的认识。 七、附录 八、参考文献 [1]邹新著,构建之法,人民邮电出版社,2015.7. [2][美]StephenR.Schach编著,面向对象与传统软件工程(中译),机械工业出版社.2003.9 [3]张海藩编著,软件工程导论,清华大学出版社,2010.1 [4]周之英编著,现代软件工程,科学出版社,2000.1 [5][美]RogerS.Pressman著,软件工程:实践者的研究方法,2011.5 [6][美]SteveMcConnell著,RapidDevelopment,电子工业出版社,2003.3 [7]RonPatton著,SoftwareTesting,机械工业出版社,2002.3 [8]冀振燕编著,UML系统分析设计与应用案例,人民邮电出版社,2003.6 [9]吴建等编著,UML基础与Rose建模案例,人民邮电出版社,2004.10、<%=tl.getTitle_opt_c()%> 、<%=tl.getTitle_opt_d()%>