《Java課程設(shè)計(jì)----標(biāo)準(zhǔn)化考試系統(tǒng).doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《Java課程設(shè)計(jì)----標(biāo)準(zhǔn)化考試系統(tǒng).doc(10頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 面向?qū)ο笳n程設(shè)計(jì)題 目 標(biāo)準(zhǔn)化考試系統(tǒng) 學(xué) 院 數(shù)學(xué)與信息工程學(xué)院 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 目 錄一、需求分析二、系統(tǒng)運(yùn)行環(huán)境三、功能需求描述四、總體設(shè)計(jì)五、程序模塊設(shè)計(jì)六、使用效果圖七、總結(jié)一、需求分析要設(shè)計(jì)一個(gè)性能良好的管理系統(tǒng),明確用戶(hù)的應(yīng)用環(huán)境對(duì)系統(tǒng)的要求是首要的和基本的。本系統(tǒng)從以下三個(gè)方面對(duì)用戶(hù)需求進(jìn)行了分析:1) 用戶(hù)的信息需求:考生能查詢(xún)有關(guān)考試成績(jī);系統(tǒng)管理員能查詢(xún)題庫(kù)信息;系主要領(lǐng)導(dǎo)都能查詢(xún)所有信息。2) 用戶(hù)的處理要求:管理員能對(duì)題庫(kù)和考試科目執(zhí)行增加、刪除和修改操作;由管理員設(shè)置考試信息,經(jīng)過(guò)考試主管領(lǐng)導(dǎo)的審核后就可考試;在考試時(shí),由考生選擇試題;系統(tǒng)控制考試時(shí)間、
2、考試成績(jī)自動(dòng)生成等。3) 對(duì)系統(tǒng)的適應(yīng)性、通用性要求:要求系統(tǒng)不僅能夠進(jìn)行計(jì)算機(jī)系考試,而且其他系或?qū)I(yè)稍作設(shè)置或改動(dòng)也能使用本系統(tǒng)進(jìn)行標(biāo)準(zhǔn)化網(wǎng)絡(luò)考試。二、系統(tǒng)運(yùn)行環(huán)境 Windows XP SP3以及 Eclipse 2007三、功能需求描述本系統(tǒng)可以進(jìn)行任何標(biāo)準(zhǔn)化考試,具有選擇試題、查看得分、考試計(jì)時(shí)等功能。四、 總體設(shè)計(jì)本標(biāo)準(zhǔn)化考試系統(tǒng)共由3個(gè)java源文件和若干個(gè)試題組成,試題文件為文本文件,文件名字可任意指定,但擴(kuò)展名必須是txt,文件內(nèi)容必須遵守如下的書(shū)寫(xiě)規(guī)則:1) 試題文件的第一行是全部試題的答案,答案之間不可以有空格。2) 第二行是試題文件的考試時(shí)間,如1:23:45表示的考試
3、時(shí)間是1小時(shí)23分45秒。3) 每道題目之間用“*”開(kāi)頭的字符串分割。4) 最后一行是endTest.java該java文件生成的類(lèi)負(fù)責(zé)創(chuàng)建標(biāo)準(zhǔn)化考試的主窗口。該類(lèi)含有main方法,程序從該類(lèi)開(kāi)始執(zhí)行,程序從該類(lèi)開(kāi)始執(zhí)行。在主窗口,用戶(hù)可以通過(guò)下拉列表選擇一套試題,然后開(kāi)始讀取試題進(jìn)行考試。TestArea.java該文件生成的類(lèi)負(fù)責(zé)創(chuàng)建考試區(qū)域?qū)ο?。是Test窗口中的主要成員變量,考試區(qū)域提供了試題選取、查看分?jǐn)?shù)、計(jì)時(shí)器、試題顯示等功能。ReadTestquestion.javaTest(主類(lèi))ReadTestquestion對(duì)象是TestArea試題區(qū)中的重要對(duì)象,負(fù)責(zé)讀取該試題、計(jì)算分?jǐn)?shù)
4、等。 TestArea ReadTestquestion 圖 類(lèi)之間的依賴(lài)關(guān)系五、程序模塊設(shè)計(jì)一、主類(lèi)Test 1成員變量成員變量描述變量類(lèi)型名稱(chēng)考試區(qū)域TestAreatestPanel 2方法名稱(chēng)功能備注Test創(chuàng)建程序窗口構(gòu)造方法main程序開(kāi)始運(yùn)行 3. 代碼 import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JFrame TestArea testPanel=null; Container con=null; public Test() super(標(biāo)準(zhǔn)化考
5、試系統(tǒng)); testPanel=new TestArea(); con=getContentPane(); con.add(testPanel,BorderLayout.CENTER); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(60,40,660,460); con.validate(); validate(); public static void main(String args)
6、 new Test(); 一、讀取試題ReadTestquestion1 成員變量描述變量類(lèi)型名稱(chēng)文件名Stringfilename正確答案StringcorrectAnswer試題內(nèi)容StringtestContent用戶(hù)提交的答案Stringselection用戶(hù)得分intscore試題用時(shí)longtime讀取試題的流FileReaderin2方法名稱(chēng)功能備注setFilename設(shè)置試題文件的名稱(chēng)getFilename獲取試題文件的名稱(chēng)gettime獲取考試用時(shí)set 完成考試設(shè)置是否完成考試get 完成考試判斷是否完成考試getTestContent獲取試題內(nèi)容getSelection
7、排列用戶(hù)提交的答案getScore計(jì)算用戶(hù)得分getMessage查閱分?jǐn)?shù)和正確答案3. 代碼 import java.io.*;import java.util.*;public class ReadTestquestion String filename=, /存放考題文件名字的字符串 correctAnswer=, /存放正確答案的字符串 testContent= , /試題內(nèi)容 selection= ; /存放用戶(hù)提交的答案 int score=0; / 用戶(hù)的得分 long time=0; /該試題的考試用時(shí) boolean 完成考試=false; /判斷是否已完成全部試題 File
8、 f=null; FileReader in=null; BufferedReader 讀取=null; public void setFilename(String name) filename=name; score=0; selection=; try if(in!=null&讀取!=null) in.close(); /關(guān)閉與前一文件的連接 讀取.close(); f=new File(filename); in=new FileReader(f); 讀取=new BufferedReader(in); /讀取試題文件的第1行,即標(biāo)準(zhǔn)答案 correctAnswer=(讀取.readL
9、ine().trim(); /去掉前后空格 String temp=(讀取.readLine().trim() ; /讀取試題文件的第2行,即考試用時(shí) StringTokenizer token=new StringTokenizer(temp,:); int hour=Integer.parseInt(token.nextToken() ; /獲取用時(shí)的“時(shí)”值 int minute=Integer.parseInt(token.nextToken(); /獲取用時(shí)的“分”值 int second=Integer.parseInt(token.nextToken(); /獲取用時(shí)的“秒”值
10、time=1000*(second+minute*60+hour*60*60); /將用時(shí)轉(zhuǎn)換成毫秒單位 catch(Exception e) testContent=沒(méi)有選擇試題; public String getFilename() return filename; public long getTime() return time; public void set完成考試(boolean b) 完成考試=b; public boolean get完成考試() return 完成考試; public String getTestContent() /獲取試題的內(nèi)容 try String
11、s=null; StringBuffer temp=new StringBuffer(); if(讀取!=null) /如果用戶(hù)選擇了試題文件,讀取就不是空對(duì)象 while(s=讀取.readLine()!=null) /繼續(xù)讀取某個(gè)試題 if(s.startsWith(*) /試題的結(jié)束標(biāo)志 break; temp.append(n+s); if(s.startsWith(end) /整個(gè)試題文件的結(jié)束標(biāo)志 in.close(); /關(guān)閉和當(dāng)前文件的連接 讀取.close(); 完成考試=true; /已完成全部試題 testContent=new String(temp); else te
12、stContent=new String(沒(méi)有選擇試題); catch(Exception e) testContent=試題內(nèi)容為空,考試結(jié)束!; return testContent; public void setSelection(String s) selection=selection+s; /用戶(hù)提交的答案依次尾加到 selection public int getScore() score=0; int length1=selection.length(); /用戶(hù)提交的第i題答案在selection中的位置 int length2=correctAnswer.length()
13、; int min=Math.min(length1,length2); for(int i=0;imin;i+) try if(selection.charAt(i)=correctAnswer.charAt(i) score+; catch(StringIndexOutOfBoundsException e) i=0; return score; public String getMessages() int length1=selection.length(); /用戶(hù)已提交的答案?jìng)€(gè)數(shù) int length2=correctAnswer.length(); int length=Math
14、.min(length1,length2); String message=正確答案:+correctAnswer.substring(0,length)+n+ 你的回答:+selection+n; return message; 六、 使用效果圖 七、總結(jié) Java課程設(shè)計(jì)是和室友一起完成的,在答辯前一天的時(shí)候,代碼運(yùn)行并沒(méi)有想象中的結(jié)果,兩人一起去分析,但還是無(wú)勞。后來(lái)根據(jù)自己應(yīng)有的能力,更換了題目,雖然還是遇見(jiàn)了很多的問(wèn)題,讀取不到考題文件,在認(rèn)真分析檢查代碼,找出錯(cuò)誤來(lái),最后在答辯前順利完成,但程序并不是自己所寫(xiě),而是在網(wǎng)上查找過(guò)來(lái),但在此課程設(shè)計(jì)中,學(xué)到了很多,也同時(shí)鞏固了JAVA的知識(shí),在今年還有這門(mén)課程,會(huì)花時(shí)間在此上面,努力做好!