科研训练试验报告
科研训练试验报告
学 生 姓名
专 业
学 号 学 院
蔺旺盛 计算机科学与技术 110511410 计算机科学技术
二〇一四年六月
目 录
1 概述
2 可行性研究及需求分析
3 总体设计
4 详细设计及实现
5 测试运行与维护
2 1 概述
1.1 运行环境配置与系统结构要求
1.1.1 硬件环境要求
CPU:PIV 2.0GHZ或更高频率的CPU
内存:DDR333 256MB或更多的内存
硬盘:至少10G以上或更多的硬盘空间
1.1.2 搭建ASP.NET开发环境
单击“开始”按钮,并执行“设置”—“控制面板”命令,打开“控制面板”窗口,双击“网络”图标,打开网络对话框;然后,单击“添加”按钮,添加所需的组件,选择“协议”,最后,在“厂商”列表框中选择Microsoft公司提供的协议,在“网络协议”列表框中选择TCP/IP协议选项,单击“确定”按钮添加该协议,完成安装。
2.安装和配置IIS
IIS是Internet Information Server的缩写,称为Internet信息服务。它是一种Web服务,主要包括WWW服务器,FTP服务器。它使得(局域网)或Internet(因特网)上发布信息变得很容易Windows XP Professional中包含IIS 5.1,但系统安装时未包括此组件,因此需要手动安装。
1.2 编程环境(ASP.NET)
(2)安全。 ASP.NET为Web应用程序提供了默认的授权和身份验证方案,开发人员可以根据应用程序的需要很容易地添加、删除或替换这些方案。详细信息,请参阅ASP.NET安全。
(3)易于部署。 通过简单地将必要的文件复制到服务器上,ASP.NET应用程序即可以部署到该服务器上,不需要重新启动服务器,甚至在部署或替换运行的已编译代码时也不需要重新启动。详细信息,请参阅ASP.NET部署。
(4)增强的性能。 ASP.NET是运行在服务器上的已编译代码。与传统的Active Server Pages (ASP)不同,ASP.NET能利用早期绑定、实时(JIT)编译、本机优化和全新的缓存服务来提高性能。详细信息,请参阅ASP.NET性能监视。
(5)灵活的输出缓存。 根据应用程序的需要,ASP.NET可以缓存页数据、页的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新。
(6)国际化。 ASP.NET在内部使用Unicode 以表示请求和响应数据,可以为每台计算机、每个目录和每页配置国际化设置。
(7)移动设备支持。 ASP.NET支持任何设备上的任何浏览器。开发人员使用与用于传统的桌
3 面浏览器相同的编程技术来处理新的移动设备。
(8)扩展性和可用性。 ASP.NET被设计成可扩展的、具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet信息服务(IIS)和ASP.NET运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。详细信息,请参阅 ASP.NET进程隔离。
(9)跟踪和调试。 ASP.NET提供了跟踪服务,该服务可在应用程序级别和页面级别调试过程中启用。可以选择查看页面的信息,或者使用应用程序级别的跟踪查看工具查看信息。在开发和应用程序处于生产状态时,ASP.NET 支持使用.NET Framework调试工具进行本地和远程调试。当应用程序处于生产状态时,跟踪语句能够留在产品代码中而不会影响性能。
(10)与.NET Framework集成。 因为ASP.NET是.NET Framework的一部分,整个平台的功能和灵活性对Web应用程序都是可用的。也可从Web上流畅地访问.NET类库以及消息和数据访问解决方案。ASP.NET是独立于语言之外的,所以开发人员能选择最适于应用程序的语言。另外,公共语言运行库的互用性还保存了基于COM开发的现有投资。
(11)与现有ASP应用程序的兼容性。 ASP和ASP.NET可并行运行在IIS Web服务器上而互不冲突;不会发生因安装ASP.NET而导致现有ASP应用程序崩溃的可能。ASP.NET仅处理具有.aspx文件扩展名的文件。具有.asp文件扩展名的文件继续由ASP引擎来处理。然而,应该注意的是会话状态和应用程序状态并不在ASP和ASP.NET页面之间共享。
ASP.NET启用了分布式应用程序的两个功能:Web窗体和XML Web服务。相同的配置和调试基本结构支持这两种功能。
(3)由Web服务器(或称HTTP服务器)一方实时动态地生成。
HTML语言是通过利用各种标记(tags)来标识文档的结构以及标识超链(Hyperlink)的信息。虽然HTML语言描述了文档的结构格式,但并不能精确地定义文档信息必须如何显示和排列,而只是建议Web浏览器(如Mosiac,Netscape等)应该如何显示和排列这些信息,最终在用户面前的显示结果取决于Web浏览器本身的显示风格及其对标记的解释能力。这就是为什么同一文档在不同的浏览器中展示的效果会不一样。
目前HTML语言的版本是2.0,它是基于SGML(Standard Generalized Markup Language,标准广义置标语言,是一套用来描述数字化文档的结构并管理其内容的复杂的规范)中的一个子集演变而来的。虽然下一版本的标准HTML3.0(也称为HTML+)正在制订之中,但其中某些部分的实验性标准草案已被广泛采用,大多优秀的Web浏览器(如Netscape等)都能解释HTML3.0中的部分新标记,因此在本章中介绍的一些HTML3.0新标记均已被多数浏览器所接受。
2.标记语法和文档结构
4 HTML的标记总是封装在由小于号()构成的一对尖括号之中。
(1)单标记
某些标记称为“单标记”,因为它只需单独使用就能完整地表达意思,这类标记的语法是:
最常用的单标记是
,它表示一个段落(Paragraph)的结束,并在段落后面加一空行。
(2)双标记
另一类标记称为“双标记”,它由“始标记”和“尾标记”两部分构成,必须成对使用,其中始标记告诉Web浏览器从此处开始执行该标记所表示的功能,而尾标记告诉Web浏览器在这里结束该功能。始标记前加一个斜杠(/)即成为尾标记。这类标记的语法是:
内容
其中“内容”部分就是要被这对标记施加作用的部分。例如你想突出对某段文字的显示,就将此段文字放在一对 标记中:
text to emphasize
(3)标记属性
许多单标记和双标记的始标记内可以包含一些属性,其语法是:
各属性之间无先后次序,属性也可省略(即取默认值),例如单标记
表示在文档当前位置画一条水平线(horizontal line),一般是从窗口中当前行的最左端一直画到最右端。在HTML3.0中此标记允许带一些属性:
其中SIZE属性定义线的粗细,属性值取整数,缺省为1;ALIGN属性表示对齐方式,可取LEFT(左对齐,缺省值),CENTER(居中),RIGHT(右对齐);WIDTH属性定义线的长度,可取相对值(由一对
其中在最外层,表示这对标记间的内容是HTML文档。之间包括文档的头部信息,如文档总标题等,若不需头部信息则可省略此标记。我们还会看到一些Hompage省略标记,因为.html或.htm文件被Web浏览器默认为是HTML文档。标记一般不省略,表示正文内容的开始。
5 2 可行性研究及需求分析
2.1 可行性研究
在线考试系统的主要特点是一方面可以动态地管理各种考试系统信息,只要准备好足够大的题库,就可以按照要求自动生成各种试卷;另一方面,考试时间灵活,用户可以在规定时间段内的任意时间参加考试;另外计算机化的考试的最大特点是阅卷快,系统可以在考试结束时当场给出考试结果,计算机阅卷给了用户的最大的公平感。如何通过一种开发语言能高效的设计出这个系统是一个值考虑的一个需求。由于现代计算机网络技术的快速发展,信息已遍布全球。再加上现代考试的普及。网络已成为大众化的产物,所以将考试系统与网络相联,是很有意义的。ASP.NET技术为这个系统设计提供了极大的方便。
2.1.1 项目要求
(1)功能:数据库管理、考试功能、领导审核功能、考试新闻发布;
(2)性能:操作方便、可靠、高效、界面赏心悦目;
(3)本系统必须要求开发人员对网络技术有一定了解;
(4)管理员可以通过本系统将考试的信息存入到数据库中,可以很方便的对信息进行更新。
2.1.2 待开发系统的主要开发目标
(1)迅速实现试题的更新与新闻的发布;
(2)使系统的后台管理功能完善;
(3)让系统自动生成试卷;
(4)实现现代考试网络化。
2.1.3 可行性研究的方法
结合系统本身及自身的情况选定此课题,对该系统做出了可行性研究。系统设计是以在线考试为目的,基于现代网络在线考试技术,结合现有的技术制定出设计的方案。最终将开发出界面友好、方便现代用户考试的一套完整的网上考试系统。
2.1.4 评价尺度
(1)自动生成试卷的可行性与完整性;
(2)后台管理功能的管理能力;
(3)信息发布的及时性与更新性;
(4)考试界面的完善;
(5)成绩查询的时间性;
(6)系统在使用过程是否便于操作和维护。
6 2.2 需求分析
需求分析就是发现、求精、建摸、规格说明和复审的过程。为了发现用户的真正需求,首先应该从宏观角度调查、分析用户所面临的问题。也就是说,需求分析的第一步是尽可能了解当前用户的情况和需要解决的问题。
2.2.1 市场需求
为了满足市场的需求,软件的设计必须有一定的市场针对性。考试系统软件是为了针对现在学校的考试的增加和规模的增大而造成的人工管理压力,和人力难以实现监控考试的情况,而设计的辅助教师进行考试的管理工作的一种小型考试软件。它以其独特的功能和良好的适应性和兼容性来适应市场发展的需求,并且由于其尚处于继续改进的阶段,改进的考试系统软件将不断的涌向市场。
2.2.2 软件功能分析
根据高校管理的实际要求,结合考试管理的实际过程,系统应该实现以下功能:
(1)掌握本考试系统范围内所有用户的基本情况,包括编号,姓名,登录口令等。
(2)基于考试系统的基本功能管理,本系统可以提供给管理员类用户及学生类用户使用。不同的用户类型所能完成的功能不同。教师类用户可以创建试题、删除过期试题、进行题库维护、创建试卷以及对本系统内人员信息进行维护和更新等;学生类用户主要是参与考试,完成试卷,查询成绩。
(3)适时的试题题库更新,试题题型包括判断题、选择题类型。试题库的更新由管理员类用户完成。学生类用户不允许对试题进行更新。
(4)试卷可由本系统自动生成,也可以由管理员类用户从题库中选择试题创建。
2.2.3 软件的非功能性需求
作为一种软件产品,除了在功能方面必需达到用户的基本要求以外,还必需在意一些非功能方面的因素,诸如:软件的用户操作界面的美观和简洁,以及界面图标的标准化和规范化。软件要有一定的兼容性,应该兼容当前的主流操作系统平台,象WINDOWS 98/NT/Me/2000/XP/2003 等。硬件方面应当要求配置低一点,象这样的小型开发软件应该适用于现大多数的计算机网络系统。而且,最好是可以适应打印机等其它硬件设备,而本软件就很好地做到了这一点。
2.2.4 软件其他方面的要求
(1)在软件程序设计过程中,依据国家《计算机软件产品开发文件编制指南》和《现代软件工程》两项理论与原则的要求,应当编制标准的软件技术文档。如软件使用的编码必须符合C#编程的编码设计标准与规范,其使用的对象名、对象类型和命名约定应该一致并规范化。软件编码时应注意代码清晰、可读性好,还要运用缩进、空行等必要的格式,结合大小写的区别等方法保持
7 程序结构良好。涉及多表操作的模块应运用“事务”处理,以保持数据完整性。
3 总体设计
3.题库管理
● 试题类别管理,主要实现试卷类别的添加、删除、修改和排序功能;
● 考试试题管理,主要实现试题的添加、删除和修改功能;
● 试题答案管理,主要实现试题的答案的添加、删除和修改功能。
4.在线答题
● 动态随机生成试卷使用随机函数动态地从题库中取得整张试卷的题目,每次生成的试卷是不相同的;
● 显示整套试题。
3.1.2 系统功能模块划分
系统整体架构设计如图5所示。本系统整体上可以划分为数据库、数据访问和业务逻层。 数据库、数据访问层及业务逻辑层的具体描述如下:
(1)数据库层是系统最底层,他存储系统的所有数据。
(2)数据访问层建立在数据库之上,应用程序通过该层访问数据库。数据访问层一般封装数据库的选择、添加、更新和删除等操作,同时还为业务逻辑层提供访问数据库的接口或函数等。该层直接与数据库相关联,同时又为业务逻辑层服务,所以数据访问层设计的好坏关系到整个系统的成败。下面以用户管理模块的数据访问层(UserDB类)为例介绍数据访问层的实现方法,如图6所示。
图5 总体架构设计
8
图6 系统模块划分图
UserDB类实现数据库的方法如下:
过程,应用程序首先从数据库获取该用户的信息,如用户名称和用户角色等,然后再根据用户的角色显示用户的下一步操作页面。如果考生登录,显示生成试卷等待页面和在线答题页面;如果教师登录,显示题库管理页面;如果系统管理员登录,显示系统维护页面,本系统部分用户的登录流程图如图7所示。
图7 用户登录流程图
2.在线答题
在线答题模块是比较复杂的模块。在线答题模块中,系统首先按照试卷的要求,如试卷总分、试卷难度系数,随机从数据库生成一套试卷,然后根据不同的题型把各个试题显示在答题页面上。试卷随机生成的流程图如图8所示。
随机生成试卷过程中存在两个回归的过程。右边的回归过程返回到随机生成试卷的状态,该回归过程是在没有满足试卷的题型或题型种类条件是发生;左边的回归过程返回随机获取试卷种
9 类状态,该回归过程是在没有满足试卷种类条件时发生。
数据库中的每一类型的试卷所包含的题型是不相同的,而且是每一种题型所包含的试题和试题的题量也是不相同的,只是各种类的试卷的总分和难度系数都在同一个范围内,即属于同一类型的试卷。系统中的同一类型的试卷,它们的难度系数将控制在一个范围内,即界于最大难度系数和最小难度系数之间。
图8 试卷随机生成的流程图
3.2.2 表设计
1.角色表(Roles)
角色表存储用户的角色信息,字段说明如表1所示。
10
表1 Roles表的字段说明
编号 1 2
字段名称 RoleID RoleName
字段类型 int varchar(32)
字段说明 角色表主键 角色名称
用户可以使用此表设置用户的角色。创建角色表的SQL脚本如下: USE test1 GO
Create Table Roles ( GO
Create Table Users (
UserID
int Identity Primary key, varchar(32) NOT NULL, varchar(200),
varchar(200), int
UserName UserPwd Email UserIdentity ) GO
3.考生表(Examinees)
考生表存储参加考试的考生信息,该表引用用户表Users的主键UserID作为该表的外键。考生表的字段说明如表3所示。
表3 Examinees表的字段说明
编号 1 2 3 4
字段名称 ExamineeID UserID TakePartDate Mark
字段类型 int int datetime int
字段说明 角色表主键 角色名称 参加考试时间 考试成绩
管理员(教师)登录后,可以通过此表查看考生参加的考试和考试成绩。创建考生表的SQL脚本文件如下:
USE test1 GO
Create Table Examinees
11
Kinds)
问题种类表存储问题种类的信息,如选择题和判断题。该表的字段说明如表4所示。
表4 QuestionKinds表的字段说明
编号 1 2 3
字段名称 KindID KindName KindOrder
字段类型 int varchar(32) int
字段说明 问题种类表主键 问题种类表名称 问题种类显示的顺序号
创建问题种类表的SQL脚本文件如下: USE test1
图片表存储图片信息,该表的字段说明如表5所示。
表5 Picture表的字段说明
编号 1 2 3
字段名称 PictureID Title PictureUrl
字段类型 int
varchar(100) varchar(100)
字段说明 图片表主键 图片表标题 图片的存储地址
创建图片表的SQL脚本文件如下: USE test1 GO
Create Table Examinees (
系数值。表中Title字段标示问题的标题,但是系统不使用该字段显示具体问题,他仅仅作为问题的标题备用字段,因为问题的描述通常比较长,Title字段是不够用的,当然如果问题描述比较短,那么也可以使用该字段。开发过程中使用表中Boby字段存储问题的描述更加方便,它的类型为Text,可以存储很长的文本。
12
表6 Questions1表的字段说明
编号 1 2 3 4 5 6 7 8
字段名称 QuestionID Title Boby Pubdate KindID Answer Defficult Mark
字段类型 int vachar(32) vachar(200) vachar(200) int varchar(5) int int
字段说明 问题表主键 问题表标题 问题的主题内容 添加到题库的时间 问题种类ID 问题的答案 问题的难度系数 考试成绩
创建图片表的SQL脚本文件如下: USE test1
Create Table Questions
问题答案表存储题库中问题的答案信息,该表引用问题表Question的QuestionID、图片表Pictures的PictureID作为表的外键。问题答案表的字段说明如表7所示。
表7 Answers表的字段说明
编号 1 2 3 4 5
字段名称 AnswerID Title Boby PictureID QuestionID
字段类型 int vachar(200) text int int
字段说明 问题答案表主键 答案标题 答案的实际内容 包含图片ID 答案所属问题的ID
8.试卷表
试卷表也称为试卷种类表,它存储题库的试卷种类信息,惟一地标识一套试卷。该表引用用户表的UserID、角色表Roles的UserIdentity、问题种类表QuestionKindID作为表的外键。试卷表的字段说明如表8所示。
表8 Papers表的字段说明
编号 1 2 3 4 5 6 7 8
字段名称 PaperID TotalMark KindID KindNum minDefficult maxDefficult UserIdentity UserID
字段类型 int int int int int int int int
字段说明 角色表主键 试卷的总分数 问题种类的ID 问题种类的数量 最小难度系数 最大难度系数 考生的角色
创建此试卷的用户ID
13
4 详细设计及实现
对系统的需求有了完整、准确、具体的了解后,接下来的工作就是正确实现这些模块的具体功能。进行软件设计之后,就是实现软件设计的目标,设计出所要开发软件的模型,并使其投入实际的应用中。
4.1 用户登录和注册 4.1.1 界面设计
用户登录由Login1.aspx页面实现,它的代码隐藏文件为Login1.aspx.cs文件,用户登录是应用程序的主入口,用户只有通过该入口才能进入系统,它的界面设计如图9所示。
图9 系统登录界面
因为用户所属角色有考生和管理员两类,所以在设计登录页面时,需要提供一个角色选择框让用户选择自己所属的角色。
用户登录界面使用两个TextBox控件为用户输入用户名称和密码,用户单击“登录”按钮可以登录到系统,单击“注册”按钮可以进入注册页面进行注册。
4.1.2 用户登录
用户单击“登录”按钮触发事件btnLogin_Click(),该事件实现用户登录的验证过程。事件btnLogin_Click()验证用户的输入,如果用户输入是正确的,用户可以登录到系统中,否则页面弹出密码错误对话框或用户角色所属错误对话框。事件btnLogin_Click()代码如下:
private void btnLogin_Click(object sender, System.EventArgs e)
14
{
} else
{
}
Response.Redirect(
} else {//不存在
Response.Write(
误!或您是否已经注册!')
18
}
4.2.2 判断题管理
判断题管理由rightOrWrong.aspx页面实现,它的页面设计和功能实现的代码和选择题管理类似。
4.3 在线答题实现 4.3.1 界面设计
系统的在线答题功能由页面kaoShi.aspx和页面examination.aspx实现,它们的代码隐藏文件分别为kaoShi.aspx.cs和examination.aspx.cs文件。
页面kaoShi.aspx是一个等待页面,应用程序生成一套考试试卷需要一定的时间,如图13所示。
图13 生成试卷等待页面
在等待界面中,应用程序使用自动跳转方式转到考试界面(examination.aspx),跳转的代码入下:
在随机生成试卷的过程中,应用程序首先调用函数CreateExaminePaper()生成整套试卷。该函数递归调用自己,直到生成试卷。
private ArrayList CreateIntegerExaminePaper(int nTotalMark,int minDefficult,int maxDefficult,ArrayList KindList)
{//定义函数的局部变量
if(KindList.Count
return((ArrayList)null);
19
st.Count; i++)
{//调用CreateSpecialKindQuestion函数生成特定题型
ArrayList tempList =
CreateSpecialKindQuestion(((QuestionKinds)KindList[i]).KindNum,((QuestionKinds)KindList[i]).KindID);
}
//添加到结果中
for(int k = 0; k
allMark += ((QuestionDetails)QuestionIDList[k]).Mark; defficultParm+=((QuestionDetails)QuestionIDList[k]).Mark* ((QuestionDetails)QuestionIDList[k]).Defficult;
}
//检查试卷是否成功,如果成功则中止该函数,否则递归调用
if(allMark == nTotalMark && defficultParm >= 100 * minDefficult *QuestionIDList.Count
&& defficultParm
QuestionIDList.Add(tempList[j]);
4.3.3 在线答题
在线答题功能由页面Examine.aspx实现,该页面初始化时,首先从session全局变量中取到一套试卷的所有考试题目;然后由QuestionDB类的函数GetQuestion()创建问题数据源DataList。此问题数据源DataList为IList接口对象,而不是一般的DataReader对象、DataSet对象或其他的ArrayList对象。函数BindQuestionData()实现上面页面初始化的过程: private void BindQuestionData()
{
ArrayList QuestionIDList = new ArrayList();
if(Session[Session.SessionID + Session[
QuestionIDList = (ArrayList)Session[Session.SessionID +
20 Session[
AnswerDB answer = new AnswerDB(); SqlDataReader reca = answer.GetAnswers(nQuestionID); radioList.DataSource = reca; radioList.DataTextField =
在数据绑定时,问题DataList控件触发事件QuestionList_ItemDataBound(),并在事件中调用函数BindAnswerList()绑定问题答案数据。绑定数据步骤如下:
(1)通过参数e的函数FindControl()找到需要绑定数据的RadioButtonList控件,命名为answerList。
(2)判断answerList控件是否为空,若为空,则中止函数。
(3)若answerList控件不为空,则调用函数BindAnswerList()绑定answerList控件的答案数据。 事件QuestionList_ItemDataBound()代码如下:
(1)提交试卷显示成绩
当用户点击交卷按钮后,应将用户的答题结果与试题答案进行对比,并给出相应的分值写入数据表,最后读取成绩表Grade中的记录集并显示考试得分,代码如下(key.aspx):
Dim E(5)
E(1)=
Dim A(10)//数组的长度确定题目的数量
//确定用户所选的选择项
A(0)=Request(
Dim Key(10)//正确答案的选项
Dim DB,Sql,Rs
21
Set DB=new DBClass Sql=
Session(
//设定一个会话状态,保证提交试卷后不能重新测试,只能查询成绩
IF Session(
Response.Write
Sql=
Set Rs=DB.GetRs(Sql) Rs.AddNew
Rs(
Rs(
22 5 测试运行与维护
5.1 网站测试
网站测试是网站完成前的一项重要的工作,客户应该尽可能完整地浏览自己的网站,检查所有的链接是否正确,文字是否准确,效果是否恰当,功能是否完善。
(1)通常在测试前您应该有一张完整的网站栏目结构图,该图应该明确地表达网站各栏目之间的关系。
(2)按照结构图的顺序,逐一检查各个栏目的内容、链接、效果、功能。
(3)记录下发现的每一处问题。
(4)对修改过的栏目,重复(2),(3)。
(5)检查完成。
测试要注意的问题:
(1)整个网站风格是否一致,包括色彩、字体、页眉、页脚、导航条、栏目菜单等等,进入某一栏目不能有似乎换了一个网站的感觉。
(2)在不同页面的看上去一样的链接菜单一定要逐一点击,不能因为在其他页面已经点过而在另一页面不去点击。
5.2 网站维护
网站的维护很重要,对于一个网站,它的建立只是一部分,更主要的还在于它的后期维护,它关系到网站的生命力及影响力。一个网站即使它最初的建设搞得很好,但由于它的后期维护做得不得力,它应将跟不上社会的潮流,迎合不了人们的口味,以至得不到长足的发展。一般网站维护包括以下几个方面。
(1)服务器及相关软硬件的维护,对可能出现的问题进行评估,制定响应时间。
(2)数据库维护,有效地利用数据是网站维护的重要内容,因此数据库的维护要受到重视。
(3)信息更新(内容的更新、调整等)。
(4)制定相关网站维护的规定,将网站维护制度化、规范化。
其中信息更新在网站维护方面对于一个网站起到非常重要的作用,一个网站即使它的页面及内容很吸引人,但如果它的更新时时跟不上,常此以往,光顾它的用户将会越来越少,因为人们总是在追求着更新时代潮流。
23