基于JavaEE技術(shù)的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于JavaEE技術(shù)的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于JavaEE技術(shù)的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于JavaEE技術(shù)的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于JavaEE技術(shù)的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于JavaEE技術(shù)的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)前言:

在線考試系統(tǒng)是網(wǎng)絡(luò)教育和遠(yuǎn)程培訓(xùn)領(lǐng)域最基礎(chǔ)和最重要的應(yīng)用之一,它有利于教師將學(xué)生的復(fù)習(xí)、練習(xí)、測(cè)驗(yàn)有機(jī)結(jié)合,更好地傳授知識(shí),而且可以為學(xué)生的學(xué)習(xí)提供方便,降低了教學(xué)成本和勞動(dòng)強(qiáng)度。本篇文章將基于JavaEE技術(shù)實(shí)現(xiàn)一個(gè)在線考試系統(tǒng)。

一、需求分析

在線考試系統(tǒng)的主要功能包括:考試管理、成績管理、學(xué)生信息管理、試卷管理、試題管理、題庫管理、答案管理等。在這些功能基礎(chǔ)上,考生可以在線進(jìn)行考試,而系統(tǒng)可在考試過程中實(shí)時(shí)進(jìn)行考生的答題情況的評(píng)估。

二、系統(tǒng)設(shè)計(jì)

1.系統(tǒng)架構(gòu)設(shè)計(jì)

在線考試系統(tǒng)的架構(gòu)設(shè)計(jì),采用了B/S結(jié)構(gòu)和三層架構(gòu)。所謂B/S架構(gòu),即瀏覽器和服務(wù)器的架構(gòu)方式,系統(tǒng)的用戶只需要有一個(gè)瀏覽器,就能夠通過網(wǎng)站進(jìn)行考試。系統(tǒng)的三層架構(gòu),分別是:表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。

2.系統(tǒng)模塊設(shè)計(jì)

系統(tǒng)主要有以下幾個(gè)模塊:

1)考試管理模塊

該模塊負(fù)責(zé)考試的創(chuàng)建、考試時(shí)間的管理、考試對(duì)象的設(shè)定、考試題目的設(shè)定等。管理員可以在該模塊中添加考試、設(shè)定考試時(shí)間等相關(guān)信息。

2)成績管理模塊

該模塊負(fù)責(zé)考試成績的管理,管理員可以在該模塊中查詢考試分?jǐn)?shù)、學(xué)生成績等相關(guān)信息。

3)學(xué)生信息管理模塊

該模塊負(fù)責(zé)學(xué)生信息的管理,管理員可以在該模塊中添加、修改、刪除學(xué)生的基本信息。

4)試卷管理模塊

該模塊負(fù)責(zé)試卷的管理,管理員可以在該模塊中添加、修改、刪除試卷等相關(guān)信息。

5)試題管理模塊

該模塊負(fù)責(zé)試題的管理,管理員可以在該模塊中添加、修改、刪除試題等相關(guān)信息。

6)題庫管理模塊

該模塊負(fù)責(zé)題庫的管理,管理員可以在該模塊中添加、修改、刪除題庫等相關(guān)信息。

7)答案管理模塊

該模塊負(fù)責(zé)答案的管理,管理員在該模塊中可以查詢考生答案等相關(guān)信息。

8)登錄模塊

該模塊負(fù)責(zé)用戶的登錄管理,用戶需要輸入用戶名和密碼才能夠登錄系統(tǒng),不同的用戶有不同的系統(tǒng)角色,比如,管理員角色、考生角色等。

3.系統(tǒng)實(shí)現(xiàn)

1)系統(tǒng)開發(fā)環(huán)境

操作系統(tǒng):WindowsXP

相關(guān)軟件:Eclipse、MySQL、Tomcat

JavaEE技術(shù)采用:Servlet、JSP、JavaBean、MySQL數(shù)據(jù)庫等技術(shù)。

系統(tǒng)設(shè)計(jì)思路

在JSP頁面中,用戶可以進(jìn)行登錄和注冊(cè)操作,登錄成功后,轉(zhuǎn)向考生或管理員首頁,考生可以選擇考試功能,進(jìn)行在線考試,考試結(jié)束保存成績;管理員可以進(jìn)行題庫管理,創(chuàng)建試卷,創(chuàng)建考試等操作,以及管理已有試卷和學(xué)生成績等信息。

2)代碼實(shí)現(xiàn)

(1)登錄頁面設(shè)計(jì)

用戶登錄頁面的設(shè)計(jì),包括用戶名和密碼兩個(gè)文本框,用戶輸入用戶名和密碼信息,提交到LoginServlet進(jìn)行驗(yàn)證。

```

<html>

<head>

<title>登錄頁面</title>

</head>

<body>

<formname="loginform"action="/DemoProject/loginServlet"

method="post">

<tablealign="center">

<tr>

<td>用戶名:</td>

<td><inputtype="text"name="username"></td>

</tr>

<tr>

<td>密碼:</td>

<td><inputtype="password"name="password"></td>

</tr>

<tr>

<tdcolspan="2"align="center"><inputtype="submit"

name="submit"value="登錄">   

</td>

</tr>

</table>

</form>

</body>

</html>

```

(2)登錄Servlet

登陸Servlet代碼實(shí)現(xiàn),使用JDBC連接數(shù)據(jù)庫,對(duì)用戶信息進(jìn)行驗(yàn)證,如果驗(yàn)證成功,跳轉(zhuǎn)到考生或管理員首頁,否則返回登錄頁面。

```

publicclassLoginServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");

Stringusername=request.getParameter("username");

Stringpassword=request.getParameter("password");

Stringsql="select*fromuserwhereusername='"+username

+"'andpassword='"+password+"'";

ResultSetrs=null;

try{

Class.forName("com.mysql.jdbc.Driver");

Connectionconn=DriverManager.getConnection(

"jdbc:mysql://localhost:3306/testdb","root","root");

Statementstmt=conn.createStatement();

rs=stmt.executeQuery(sql);

if(rs.next()){

Stringrole=rs.getString("role");

if(role.equals("admin")){

response.sendRedirect("admin.jsp");

}elseif(role.equals("student")){

response.sendRedirect("student.jsp");

}

}else{

response.sendRedirect("login.jsp");

}

rs.close();

stmt.close();

conn.close();

}catch(Exceptione){

e.printStackTrace();

}

}

}

```

(3)考試系統(tǒng)基本功能代碼實(shí)現(xiàn)

考試功能實(shí)現(xiàn)需要對(duì)考生信息管理、試卷信息管理、答案信息管理等進(jìn)行實(shí)現(xiàn),系統(tǒng)實(shí)現(xiàn)過程中,需要使用到Servlet、Filter、JSP、JavaBean等技術(shù),這里只展示考試信息管理的代碼實(shí)現(xiàn)。

考試管理的相關(guān)JSP頁面:

試卷管理/試卷列表展示,根據(jù)試卷id從數(shù)據(jù)庫中讀取試卷列表的信息。

```

<%

List<ExamPaper>list=(List<ExamPaper>)request.getAttribute("list");

if(list!=null){

Iterator<ExamPaper>it=list.iterator();

while(it.hasNext()){

ExamPaperexamPaper=(ExamPaper)it.next();

intid=examPaper.getId();

Stringname=examPaper.getName();

Stringsubject=examPaper.getSubject();

StringcreateTime=examPaper.getCreateTime();

Stringcreator=examPaper.getCreator();

}

}

%>

```

試卷詳情展示,根據(jù)試卷id從數(shù)據(jù)庫中讀取試卷的詳細(xì)信息。

```

<%ExamPaperexamPaper=(ExamPaper)request.getAttribute("examPaper");

if(examPaper!=null){

intid=examPaper.getId();

Stringname=examPaper.getName();

Stringsubject=examPaper.getSubject();

StringcreateTime=examPaper.getCreateTime();

Stringcreator=examPaper.getCreator();

List<ExamPaperQuestion>eqList=examPaper.getQuestions();

if(eqList!=null){

Iterator<ExamPaperQuestion>it=eqList.iterator();

while(it.hasNext()){

ExamPaperQuestionexamPaperQuestion=(ExamPaperQuestion)it.next();

intquestionId=examPaperQuestion.getQuestionId();

StringfullScore=examPaperQuestion.getFullScore();

intlineCount=examPaperQuestion.getLineCount();

}

}

}

%>

```

考試頁面展示,根據(jù)試卷id從數(shù)據(jù)庫中獲取試卷信息,輸出試卷題目。

```

<%

ExamPaperexamPaper=(ExamPaper)request.getAttribute("examPaper");

if(examPaper!=null){

intid=examPaper.getId();

Stringname=examPaper.getName();

Stringsubject=examPaper.getSubject();

StringcreateTime=examPaper.getCreateTime();

Stringcreator=examPaper.getCreator();

List<ExamPaperQuestion>eqList=examPaper.getQuestions();

if(eqList!=null){

Iterator<ExamPaperQuestion>it=eqList.iterator();

inti=0;

while(it.hasNext()){

ExamPaperQuestionexamPaperQuestion=(ExamPaperQuestion)it.next();

i++;

intquestionId=examPaperQuestion.getQuestionId();

StringsubjectType=examPaperQuestion.getSubjectType();

StringfullScore=examPaperQuestion.getFullScore();

intlineCount=examPaperQuestion.getLineCount();

Stringtitle=examPaperQuestion.getTitle();

StringoptionA=examPaperQuestion.getOptionA();

StringoptionB=examPaperQuestion.getOptionB();

StringoptionC=examPaperQuestion.getOptionC();

StringoptionD=examPaperQuestion.getOptionD();

%>

```

后臺(tái)Servlet代碼實(shí)現(xiàn):

試卷管理Servlet,將試卷信息通過請(qǐng)求對(duì)象傳遞到后臺(tái)進(jìn)行添加、修改、刪除等操作。

```

publicclassExamPaperServletextendsHttpServlet{

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

doPost(request,response);

}

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

StringactionType=request.getParameter("actionType");

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

PrintWriterout=response.getWriter();

ExamPaperDaopaperDao=newExamPaperDao();

ExamPaperQuestionDaoquestionDao=newExamPaperQuestionDao();

if(actionType.equals("add")){

ExamPaperpaper=newExamPaper();

paper.setName(request.getParameter("name"));

paper.setSubject(request.getParameter("subject"));

paper.setCreator(request.getParameter("creator"));

paper.setCreateTime(request.getParameter("createTime"));

String[]ids=request.getParameterValues("ids");

List<ExamPaperQuestion>questions=newArrayList<ExamPaperQuestion>();

if(ids!=null&&ids.length>0){

for(Stringid:ids){

ExamPaperQuestionquestion=questionDao.get(Integer.parseInt(id));

if(question!=null){

questions.add(question);

}

}

}

paper.setQuestions(questions);

intresult=paperDao.insert(paper);

if(result>0){

response.sendRedirect("examPaperServlet");

}else{

out.println("<script>alert('添加失?。?);location.href='addExamPaper.jsp';</script>");

}

}elseif(actionType.equals("delete")){//刪除試卷

Stringids=request.getParameter("ids");

String[]idList=ids.split("-");

for(Stringid:idList){

intresult=paperDao.deleteById(Integer.parseInt(id));

if(result>0){

response.sendRedirect("examPaperServlet");

}

}

}elseif(actionType.equals("update")){//更新試卷

ExamPaperpaper=newExamPaper();

paper.setId(Integer.parseInt(request.getParameter("id")));

paper.setName(request.getParameter("name"));

paper.setSubject(request.getParameter("subject"));

paper.setCreator(request.getParameter("creator"));

paper.setCreateTime(request.getParameter("createTime"));

String[]ids=request.getParameterValues("ids");

List<ExamPaperQuestion>questions=newArrayList<ExamPaperQuestion>();

if(ids!=null&&ids.length>0){

for(Stringid:ids){

ExamPaperQuestionquestion=questionDao.get(Integer.parseInt(id));

if(question!=null){

questions.add(question);

}

}

}

paper.setQuestions(questions);

intresult=paperDao.update(paper);

if(result>0){

response.sendRedirect("examPaperServlet");

}else{

out.println("<script>alert('更新失??!');location.href='updateExamPaper.jsp?id="+paper.getId()+"';</script>");

}

}else{//查詢所有試卷

List<ExamPaper>list=paperDao.getAll();

request.setAttribute("list",list);

request.getRequestDispatcher("admin.jsp").forward(request,response);

}

}

}

```

三、系統(tǒng)測(cè)試

系統(tǒng)測(cè)試是驗(yàn)證系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論