Skip to content

pavtlly/OnlineJudge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OnlineJudge

Java大作业 在线评测系统

注:该项目的数据库文件(oj.sql)已放入,请放心使用。

一、项目概况

1.1 设计内容

  一个在线评测系统,分用户和管理员两种身份。用户能够通过注册登录,参加比赛,最后实时得到比赛结果,并保存历史比赛结果;管理员除此之外还能录入题目增加题库内容。

1.2 开发工具

  Eclipse,Java,MySQL,Redis,Html,CSS,JS。

二、详细设计

2.1 网站结构

image

2.2 主要功能

以下功能均对应相应的JSP,Servlet层,DAO层,Service层

注册:在JSP页面中输入需要注册账号的昵称,用户名,密码,确认密码。在Servlet中先进行密码和确认密码的判定,判定成功后,连接数据库MySQL,进行用户名的判定,再次判定成功后,将注册信息写入MySQL数据库中的User表单中,最后重定向到主页。

登录:在JSP页面输入用户名和密码。在Servlet中连接数据库MySQL,获取数据库User表单中对应账号的密码,再与输入的密码进行判定,最后重定向到主页。

注销:将对应用户储存的cookie和redis删除,重定向到登录界面。

信息修改:JSP页面中输入昵称,用户名,手机号,学号。在Servlet中连接数据库MySQL,将数据库User表单中对应的信息替换成输入的。最后再重定向到该页面,可发现信息已修改。

密码修改:在JSP页面中输入当前密码,新密码,确认密码。在Servlet中先进行新密码和确认密码的判定,判定成功后,连接数据库Mysql,获取User表单中当前账号的密码,与输入的当前密码进行判定,判定成功后用新密码替换当前密码,重定向到登录界面,重新登录。

头像修改:在Servlet中获取头像数据,转化成,连接数据库,将其替换当前账号已经储存的

单点登录(顶号):以过滤器过滤登录,注册的Servlet和对应的jsp,以redis存储登录状态,再次登录删除之前与当前账号相同的redis记录。

录入题目:在JSP页面中输入需要添加的题目,包括题目题目,内容等。

题目列表:在用户点击题库,列出所有的题目。

题目搜索:用户输入在题库中输入相应的题目,编号即可找出相应的题目

显示比赛列表:先通过ContestListShowServlet获得所有的比赛信息,将信息储存为List通过request传递到Contests.jsp页面。然后JSP页面通过EL表达式循环将比赛信息展示出来。

参加比赛:用户通过点击比赛名称进入比赛界面,然后通过ContestShowServlet获取本场比赛的所有信息,将信息传到ContestShow.jsp页面,然后用户就可以看到本场比赛包含的题目及其选项,题目列表有一串01二进制字符串表示,第i位如果为1,表示本次比赛包含第i题,为0则没有。用户点击选项来参与答题,最后点击提交上交试卷,完成比赛。

比赛结束显示成绩:用户完成比赛后,系统通过ContestResultServlet,自动获取用户选择的答案,构成一份由ABCD组成的用户答案字符串,再根据预设的答案(一段也由ABCD构成的标准答案字符串)进行比较,一位一位判断答案是否正确,来对用户进行打分,并将相关结果显示到ResultShow.jsp页面,最后将成绩记录到数据库中,为以后查看历史成绩做准备。

历史成绩查询: 在主页、比赛列表、比赛结果、题库等页面,点击菜单栏得“历史”项,就可以显示该用户历史成绩,具体包括编号、试卷编号、提交答案和考试成绩。

三、程序架构和使用说明

3.1 程序架构

image

3.2 使用说明

  文件结构:Dao层,Service层,Servlet层。数据库操作在Dao层,Service层为相关服务,Servlet层获取从JSP得到的相关数据并重定向到其他jsp页面。

  使用方式:本程序包含MySQL数据库文件,需先导入oj.sql到命名为oj的数据库中。再导入OnlineJudge项目到eclipse中。修改com.oj.util中DbUtil中登录数据库的账号密码(自己数据库的)。以Run On Service中选择tomcat运行项目文件。

About

Java大作业 在线评测系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published