ACM在线评测系统设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计(论文)
软件工程实训课程设计课程名称
在线测评系统
题目
信息与控制工程学院
院(系)
软件1202
专业班级
赵曼
姓名
120670211
学号
朱旭东、祁飞
指导教师
2015年09 月20 日
摘要
当今时代是一个信息时代,随着互联网技术和计算机技术的发展,计算机行业起着至关重要的作用。

为了更好适应地这个时代选拔人才的标准,提高人们的计算机水平,计算机在线评测系统应运而生。

在线评测系统是一个针对计算机人才选拔的网站,主要提供程序设计练习和考试平台。

用户可以在这个网站上查询并练习题目,然后当用户针对相应的题目编写了程序以后,可以在在线评测系统上将程序代码以相应题号为准提交到服务器端。

服务器接收到提交信息后,将该程序的题号、提交时间、相应题目的信息等传送到后台测试平台,后台将根据这些信息对同学们提交上来的程序代码进行编译执行,并做出相应判断,将测试结果返回相应的数据库。

程序代码提交后,提交结果将在网页上显示出来,同时会有相应的排名数据以及解题信息。

本系统是基于JSP技术建立的药品进销存管理系统,其目标是完成对药品的进、销、存进行管理。

整个项目采用MVC的架构。

使用Servlet充当控制器,Jsp用来做视图层的显示。

这种分层模式可以降低模块之间的耦合度。

有利于系统维护、代码重用和后期增加相应的功能。

关键词:JSP、SQL Server2005、Java Web、在线测评、ACM
目录
1系统概述 (1)
1.1目的 (1)
1.2开发工具和运行环境 (1)
1.2.1开发工具 (1)
1.2.2运行环境 (1)
2软件总体结构 (2)
2.1系统结构设计 (2)
2.2系统权限划分 (3)
2.2.1用户操作 (3)
2.2.2管理员管理 (3)
2.3系统功能划分 (3)
2.3.1用户模块 (3)
2.3.2管理员模块 (3)
2.3.3在线评判模块 (3)
2.3.4题库模块 (3)
3详细设计 (4)
3.1系统架构目标 (4)
3.2构架设计 (5)
3.3系统开发模式 (6)
3.4数据流图 (7)
3.5逻辑视图 (8)
3.5.1系统类图 (8)
3.5.2人员信息包内的类图 (9)
3.5.3接口包内的类图 (9)
3.6过程视图 (10)
3.6.1 用户登录 (10)
3.6.2 管理员题目管理 (11)
3.6.3 用户管理 (12)
3.6.4 试题评判管理 (13)
4数据库设计 (14)
4.1概念模型 (15)
4.2逻辑模型 (15)
4.3表的物理结构定义 (17)
5 相关界面 (19)
5.1主要功能界面 (19)
6总结 (23)
7参考文献 (25)
1系统概述
1.1目的
ACM在线评测系统是一个基于B/S结构的多用户在线系统,允许用户在线提交自己的解题代码,系统会自动编译运行给出结果,并根据用户的解题数量和分数排出名次。

1.2开发工具和运行环境
1.2.1开发工具
该系统用到的主要开发工具有Dreamweaver CS6,MyEclipse。

(1)Dreamweaver CS6简介
dreamweaver cs6是世界顶级软件厂商adobe推出的一套拥有可视化编辑界面,用于制作并编辑网站和移动应用程序的网页设计软件。

由于它支持代码、拆分、设计、实时视图等多种方式来创作、编写和修改网页(通常是标准通用标记语言下的一个应用HTML),对于初级人员,你可以无需编写任何代码就能快速创建web页面。

1.2.2运行环境
系统网站部分是用HTML语言编写,数据库使用SQL server2005,而服务器用的是tomcat,在Windows系统上运行。

(1)tomcat简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面
的访问请求。

实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

2软件总体结构
2.1系统结构设计
系统架构采用分离可缩放结构。

前端服务器负责Web访问,后端tomcat服务器负责编译,运行和测试程序。

双方通过数据库耦合。

Tomcat服务器与Internet没有连接,彻底保证测试数据不被外泄。

前端设计基于 B/S 模式进行Web服务器设计,后端tomcat 服务器采用多线程,多进程并发处理机制,在保证系统稳定性的同时极大地提高系统的响应速度。

整个系统采用面向对象的思想进行设计。

系统结构图如下:
图1 系统结构图
2.2系统权限划分
2.2.1用户操作
包括用户注册、登陆、用户信息修改、题型浏览、题目浏览、提交题目、查看提交结果、查看做题排名、查询分数、查找题目、账户注销等。

2.2.2管理员管理
管理员主要进行的操作有:登陆、题库管理、用户管理、重测提交题目、注册功能、数据维护管理、查看用户提交的源码、账户注销。

2.3系统功能划分
该在线测评系统主要包括以下几个功能块:用户模块、管理员模块、在线评判模块和题库模块。

2.3.1用户模块
用户模块主要有用户自行操作的注册功能、登陆功能、注销功能、个人信息查询和修改等。

2.3.2管理员模块
管理员模块主要负责试卷添加、试卷查询和修改、修改用户权限、增加和修改试题、测试数据管理、数据库备份等功能。

2.3.3在线评判模块
在线评判模块主要功能是用户通过此模块有查看题目、提交代码、查看分数和排名等。

2.3.4题库模块
题库模块主要功能是用户能够在此查询、浏览和练习题目。

系统功能图如下:
图2 系统主功能模块图
3详细设计
3.1系统架构目标
该在线测评系统要达到的软件架构目标如下:
(1)可靠性(Reliable)
软件产品在规定的条件下和规定的时间区间完成规定功能的能力,软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。

(2)安全性(Secure)
软件系统要保证系统数据的安全性,如用户的基本信息,因为所承担的交易的商业价值极高,系统的安全性非常重要。

(3)可扩展性(Extensible)
在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展
(4)可维护性(MAIntainable)
软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。

一个易于维护的系统可以有效地降低技术支持的花费
(5)可伸缩性(Scalable)
软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。

只有这样,才能适应用户的市场扩展得可能性。

(6)可定制化(CuSTomizable)
同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。

(7)客户体验(CustomerExperience)
软件系统必须易于使用。

(8)市场时机(TimetoMarket)
软件用户要面临同业竞争,软件提供商也要面临同业竞争。

以最快的速度争夺市场先机非常重要。

3.2构架设计
构架视图的图形描述称为构架设计图。

设计图由以下统一建模语言图组成:
逻辑视图:类图、状态机和对象图。

进程视图:类图与对象图(包括任务-进程与线程)。

实施视图:构件图。

部署视图:配置图。

用例视图:用例图描述用例、主角和普通设计类;顺序图描述设计对象及其协作关系。

3.3系统开发模式
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。

使用MVC应用程序被分成三个核心部件:模型、视图、控制器。

它们各自处理自己的任务。

a.视图是用户看到并与之交互的界面。

对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.
b.模型模型表示企业数据和业务规则。

在MVC的三个部件中,模型拥有最多的处理任务。

例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。

被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。

由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

c.控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。

所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。

它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。

整个项目采用MVC的架构。

MVC,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用将被分成三层:模型层、视图层、控制层。

使用Servlet 充当控制器,Jsp用来做视图层的显示。

这种分层模式可以降低模块之间的耦合度。

有利于系统维护、代码重用和后期增加相应
的功能。

图3 MVC开发模式图3.4数据流图
图4 系统数据流图
3.5逻辑视图
逻辑视图部分主要叙述了设计阶段的工作。

根据系统划分的三类包图,分别讨论人员信息包,接口包和事务包中的类图。

其中,人员信息包包含用户和管理员两个类;接口包包含登录、管理员管理模块、用户管理模块、评判管理模块和题库模块五个接口模块类;事务包主要包含用户做题管理、管理员题目管理、管理员用户信息管理、管理员用户组管理等事务类,相应的类图如下各图。

3.5.1系统类图
图5 系统类图
3.5.2人员信息包内的类图
图6 人员信息包类图3.5.3接口包内的类图
图7 接口信息包类图
3.6过程视图
3.6.1 用户登录
(1)简述
用户如果要进行相应操作,需要输入正确的用户名和密码。

(2)基本事件流
1 用户输入正确的用户名和密码登录系统
2 系统进行身份验证
3 进入相应页面
4 结束
(3)活动图
图8 用户登录活动图
3.6.2 管理员题目管理
(1)简述
管理员进入相应管理页面,对题目进行管理。

(2)基本事件流
1 用户输入正确的用户名和密码登录系统
2 系统进行身份验证
3 进入相应页面
4 管理员进行题目管理
5 对题目进行增删改查
6 录入数据库
7 结束
(3)活动图
图9 管理员题目管理活动图
3.6.3 用户管理
(1)简述
用户选择试卷,做题并提交。

(2)基本事件流
1 用户输入正确的用户名和密码登录系统
2 系统进行身份验证
3 进入相应页面
4 选择试卷类型
5 做题并提交
6 结束
(3)活动图
图10 用户题目管理活动图
3.6.4 试题评判管理
(1)简述
用户提交代码后,评测系统进行编译,并将结果录入数据库。

(2)基本事件流
1 用户提交代码
2 评判系统存储代码并进行编译
3 若编译成功,将结果存入数据库
4 调出数据库答案,并进行比对
5 得到相应分数
6 将分数存入数据库
7 结束
(3)活动图
图11 代码评判管理活动图
4数据库设计
数据库是储存在计算机内的数据的集合。

数据库存放数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构以建立数据间的内在联系与复杂联系,从而构成数据的全局结构模式。

数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。

数据库管理系统是用于管理和维护数据的系统软件。

它是位于用户与操作系统之间的数据管理软件。

数据库管理系统具有数据定义功能、数据组织功能、数据存储和管理功能、数据操纵功能、数据库的事物管理功能、运行管理功能、数据库的建立和维护等功能。

4.1概念模型
图12 实体E-R图
4.2逻辑模型
将概念结构设计阶段设计好的基本E-R图转换为关系模型,
如下所示:
a.管理员(登录名,密码,个人信息,编码,管理权限),此为管理员实体对应的关系模式。

b.用户(编码,用户信息,登录名,密码),此为用户实体对应的关系模式。

c.程序代码(提交人,题目,编号),此为程序代码实体对应的关系模式。

d.题目(编号,题目内容,出题人,题型),此为题目实体对应的关系模式。

e.管理员管理用户(编码,管理权限),此为管理员管理用户关系对应的关系模型。

f.管理员管理题目(编码,管理权限),此为管理员管理题目关系对应的关系模型。

g.管理员查看代码(编码,管理权限),此为管理员查看代码关系对应的关系模型。

h.用户查看操作题目(编码,管理权限),此为用户查看操作题目关系对应的关系模型。

4.3表的物理结构定义
图13 表的物理结构模型图
本系统使用SQL Server来设计所有的数据表,根据预先设计好的编码规则设计了以下数据表:用户信息表,管理员权限表,题目信息表,评判状态表,做题信息表,考试信息表等。

用户信息表主要是存储用户的登录名、密码、做题的正确个数、提交次数、做题数量、做题的正确率、编号等个人信息。

考试信息表主要是考试开始时间、结束时间、标题、考试的题目等信息。

以下只介绍做题信息表、用户信息表和用户权限信息表,其他表功能类似这里就不一一介绍。

表1 题目信息表
题目信息表主要存储每个题目相关信息,包括题目编号、题型、难度、题目内容等。

表2 做题信息表
做题信息表主要是用户每次提交时候留下的用户记录,包括题目编号、用户编号、程序运行时间、程序运行内存、运行的结果以及提交的语言等。

表3 用户登录信息表
用户登录表主要储存用户登录信息,主要包括登录名、密码、编号、登陆时间,这样就能知道登录系统的人有多少。

5 相关界面
5.1主要功能界面
图14 登录界面图
登录主界面使用了表单,表单是Web中实现交互的重要方法,用于收集用户信息并提交给服务器。

该界面使用了静态文本框和单行输入文本框,当用户名和密码验证正确,则进入相应的管理主界面。

图15 代码运行界面图
用户可以在该图TEXTAREA控件中输入程序代码,点击运行按钮就能进行程序编译。

图16 程序编译图
该图是对程序代码进行编译后所显示的界面,图中显示了编译后的结果,所用时间,还有编译是否成功。

图17 管理员试题操作界面
该界面是管理员查询试题界面,管理员可以对试题进行删除和修改操作。

图18 用户查询操作界面
该界面是用户浏览界面,用户可以查看试题的编号、主要信息、题目难度等信息,点击做题按钮就能进入相应程序编程页面。

图19 管理员试题管理界面
该界面是管理员对试题进行相应操作,输入相关试题信息,对实体进行修改或重置。

6总结
完成这次在线评测系统课程设计是一件让我觉得非常有成就感的事,因为在开发这个系统过程当中,我们遇到了很多问题,有很多技术并不熟练如JSP技术,CSS技术和MVC模式等,但是在解决这些问题的过程中,我们也学习到了很多知识,下面我会一一说明。

ACM在线评测系统整个项目采用MVC的架构。

使用Servlet 充当控制器,Jsp用来做视图层的显示。

这种分层模式可以降低模块之间的耦合度。

Servlet 是一个用 Java 编写的程序,此程序在服务器上运行以处理客户端请求,处理请求的过程:接收客户端(浏览器)请求信息;调用业务处理;向客户端(浏览器)发送HTTP响应。

Servlet 的生命周期就是指 Servlet 实例创建之后直到其消失(对象销毁、回收)中间的时间及各个阶段,当接收到客户端的请求时,Servlet容器负责创建 Servlet 的一个实例,以多线程的方式响应。

在这段学习过程中,我进一步学习了Java编程语言,以前在学校实践的比较少,这次的课程设计让我对Java语言有了更清晰的认识,也让我具备了更好的Java编程能力。

另外,还进一步了解了SQL Server等数据库编程技术,B/S结构应用软件管理和开发经验;使我深刻理解并掌握软件工程理论和方法,熟悉常用的设计模式,掌握常用的数据结构、算法。

回首整个软件开发过程,我每天都有很多新的体会,想说的很多,我总结下来主要有以下几点:
1)团队意识是完成项目的必要保证。

在我们整个项目完成的过程中,我充分体会到了团队合作的重要性。

特别是担任项目组长的组员分配大家完成项目期间,很难想象如果大家不团结一致的结果。

期间通过大家的团队合作,项目组高效且快速的完成的项目,当然最重要的是大家都参与了项目的开发。

2)熟练的专业技能。

提供最佳的解决方案是我们努力的方向。

要熟练掌握项目的系统结构模型、架构方法、界面编程语言、JAVA语言以及对数据库系统的熟练操作等技术,这对软件开发者来说无非是一个很高的要求,需要我们不断地学习,不断的在一个个项目中去积累经验,但这也正是我们为之奋斗的目标。

3)加强信心,坚持下去。

虽然感觉自己学的还可以,但真的工作起来却感觉力不从心。

有时候遇到事情总会着急,慌张。

平常信心不足,总感觉自己做不好。

或许还需要一段时间的磨练吧。

只有自己的知识和能力都在提升,相信自己总有一天会很勇敢的表现自己。

总之、在整个课设过程中,我有许多的收获和欢乐,但也有苦涩和教训,这些成功的经验将激励我在以后的人生路上取得更大的成绩,失败的经历将使我努力去改变需要改变的地方,可以是我更快的成长,让自己以后的日子做的更好。

这些宝贵的人生经历激励我在以后的人生道路上勇于实践,敢于创新,为人生的辉煌奠定坚实的基础,成为我受益终身的宝贵财富。

4)良好的沟通协调能力是实施顾问的基本修养。

在课程设计过程中,常常以小组为单位进行提问、讨论、最后解决问题为学习的模式,目的就是为了能在与小组成员的相互交流过程中,提高我们的沟通能力。

感谢学校能给我们提供这次难得的学习机会,通过这次课程设计,我学到了很多书本上学不到的东西,也有了从无知到认知,到深入了解公司和社会,从开始的磕磕碰碰到后来的工作还算顺利的转变。

除此之外,还要感谢我的项目团队成员,正是因为有大家的相互帮助和学习,共同解决遇到的问题,共同挑战困难,我们的软件开发过程才能够顺利完成,我更加认识到了团队精神的可贵,同时也收获了最真挚的友谊。

在此再次感谢学校,感谢协助我们的所有老师和同学,我将永远铭记这些在这次学习中的点点滴滴。

谢谢你们!
7参考文献
[1]王珊,萨师煊.数据库系统概论(第二版)[M].北京:高等教育出版社,2011,17-206.
[2]刘楠,孙国道.ACM在线评判系统设计与实现[J].计算机时代,2006,189-242.
[3]李明洙,纪洪波.一种基于ACM程序设计竞赛在线评测系统解决方案[J].微型机与应用,2011,106-185.
[4]蒋社想,戴书文.基于J2EE的ACM竞赛在线评测系统的设计[J].安徽理工大学学报,2009,120-187.
[5]焦燕.在线评测系统的设计与实现[D].呼和浩特:内蒙古大学出版社,2010,57-186.。

相关文档
最新文档