2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  XXXXXXXX學(xué)院</p><p><b>  課程設(shè)計報告書</b></p><p>  課程名稱: JAVA課程設(shè)計 </p><p>  題 目: 基于Java的在線評測系統(tǒng)的設(shè)計與開發(fā)</p><p>  系 名: 信息工程系

2、 </p><p>  專業(yè)班級: 軟件工程 </p><p>  姓 名: XXX </p><p>  學(xué) 號: XXXXXXXXXXX </p><p>  指導(dǎo)

3、教師: XX </p><p>  2013年 6 月 28 日</p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  學(xué)生姓名: XXX 專業(yè)班級: 軟件1111 指導(dǎo)教師: XX 工作單位: 信息工程系

4、</p><p>  設(shè)計題目:基于Java的在線評測系統(tǒng)的設(shè)計與開發(fā)</p><p><b>  初始條件: </b></p><p>  Java基礎(chǔ),Java SE,《在線評測系統(tǒng)》,桌面版的在線考試系統(tǒng)</p><p>  要求完成的主要任務(wù):</p><p>  (包括課程設(shè)計工作量及其

5、技術(shù)要求,以及說明書撰寫等具體要求)</p><p>  使用JAVA開發(fā)一個在線評測系統(tǒng)。該系統(tǒng)主要包括:用戶登錄、菜單選擇、開始考試、分?jǐn)?shù)統(tǒng)計四個功能模塊。</p><p>  本系統(tǒng)使用JAVA SWING技術(shù),事件處理機(jī)制,文件流和泛型集合進(jìn)行測評系統(tǒng)的設(shè)計,開發(fā)和功能實現(xiàn),并綜合運用多線程和網(wǎng)絡(luò)編程技術(shù)。</p><p>  系統(tǒng)總體功能模塊圖如下:<

6、;/p><p>  系統(tǒng)功能點說明如下:</p><p><b>  用戶登錄功能描述</b></p><p>  獲取登錄信息:獲取客戶端輸入用戶ID和用戶密碼pwd。</p><p>  登錄響應(yīng):根據(jù)登錄校驗的結(jié)果,顯示相應(yīng)的界面;若登錄不成功,只在當(dāng)前頁面顯示錯誤提示,若登錄成功,關(guān)閉當(dāng)前界面,顯示菜單界面。<

7、/p><p><b>  菜單選擇描述</b></p><p>  更新用戶信息:將登錄成功的用戶信息顯示到當(dāng)前界面。</p><p>  開始考試:點擊“開始”,關(guān)閉當(dāng)前界面,顯示考試界面。</p><p>  查看分?jǐn)?shù):點擊“分?jǐn)?shù)”,若還未開始,提示“考試未開啟”,若已完成考試,顯示分?jǐn)?shù)結(jié)果。</p>&l

8、t;p>  查看考試規(guī)則:點擊“考試規(guī)則”,顯示考試規(guī)則面板。</p><p>  退出考試系統(tǒng):點擊“離開”,退出系統(tǒng)。</p><p><b>  開始考試功能描述</b></p><p>  裝載用戶信息:現(xiàn)在用戶身份、考試科目等相關(guān)信息。</p><p>  裝載題目信息:將題目信息顯示到面板上。</

9、p><p>  答題:選擇當(dāng)前題目答案,并自動保存該答案數(shù)據(jù)到內(nèi)存中。</p><p>  上下翻題:點擊“上一題”“下一圖”,可隨意翻閱題目信息。</p><p>  考試倒計時:考試開始后,面板顯示考試時間倒計時,時長為20分鐘。</p><p>  交卷保存答案:點擊“交卷”確認(rèn)后,考試結(jié)束,保存當(dāng)前試卷相關(guān)數(shù)據(jù),關(guān)閉當(dāng)前界面,顯示菜單選擇

10、界面。</p><p><b>  分?jǐn)?shù)統(tǒng)計功能描述</b></p><p>  統(tǒng)計分?jǐn)?shù):將答題結(jié)果與標(biāo)準(zhǔn)答案比對,計算分?jǐn)?shù)。</p><p>  分?jǐn)?shù)顯示:查看分?jǐn)?shù)或者交卷時,將計算出的分?jǐn)?shù)顯示到當(dāng)前面板中。</p><p><b>  時間安排:</b></p><p>

11、;  指 導(dǎo) 教 師 簽 字: 2013 年 6 月 13 日</p><p>  系 主 任 簽 字: 馬德寶 2013 年 6 月 14日</p><p><b>  課程設(shè)計報告書</b></p><p><b>  設(shè)計題目</b>

12、</p><p>  基于java的在線測評系統(tǒng)的設(shè)計與開發(fā)。</p><p><b>  開發(fā)環(huán)境</b></p><p>  硬件環(huán)境:微機(jī)系列,內(nèi)存在1G以上</p><p>  軟件環(huán)境:Microsoft Windows XP。</p><p><b>  開發(fā)工具</b

13、></p><p>  MyEclipse IDE</p><p><b>  完成時間</b></p><p>  2013.6.17-2013.6.28</p><p><b>  5.需求分析</b></p><p>  系統(tǒng)的對象確定之后,應(yīng)該對系統(tǒng)進(jìn)行定性的分

14、析,分析是為了了解系統(tǒng)應(yīng)達(dá)到的目和</p><p>  系統(tǒng)應(yīng)具備的功能。在線考試系統(tǒng)由四大功能模塊組成:用戶登錄模塊、菜單選擇模塊、</p><p>  開始考試模塊以及分?jǐn)?shù)統(tǒng)計模塊。</p><p>  5.1用戶登錄模塊功能</p><p>  獲取登錄信息:獲取客戶端輸入用戶ID和用戶密碼pwd。</p><p&g

15、t;  登錄響應(yīng):根據(jù)登錄校驗的結(jié)果,顯示相應(yīng)的界面;若登錄不成功,只在當(dāng)前頁面顯示錯誤提示,若登錄成功,關(guān)閉當(dāng)前界面,顯示菜單界面。</p><p>  登錄取消:若文本框內(nèi)容錯誤或許清除,可直接按取消按鈕來實現(xiàn)。 </p><p>  5.2菜單選擇模塊功能</p><p>  更新用戶信息:將登錄成功的用戶信息顯示到當(dāng)前界面。</p><

16、p>  開始考試:點擊“開始”,關(guān)閉當(dāng)前界面,顯示考試界面。</p><p>  查看分?jǐn)?shù):點擊“分?jǐn)?shù)”,若還未開始,提示“考試未開啟”,若已完成考試,</p><p><b>  顯示分?jǐn)?shù)結(jié)果。</b></p><p>  看考試規(guī)則:點擊“考試規(guī)則”,顯示考試規(guī)則面板。</p><p>  退出考試系統(tǒng):點擊“

17、離開”,退出系統(tǒng)。</p><p>  5.3開始考試模塊功能</p><p>  裝載用戶信息:現(xiàn)在用戶身份、考試科目等相關(guān)信息。</p><p>  裝載題目信息:將題目信息顯示到面板上。</p><p>  答題:選擇當(dāng)前題目答案,并自動保存該答案數(shù)據(jù)到內(nèi)存中。</p><p>  上下翻題:點擊“上一題”“下一

18、題”,可隨意翻閱題目信息,無上一題或下一題是按鈕無效。</p><p>  考試倒計時:考試開始后,面板顯示考試時間倒計時,時長為20分鐘,時間到時,不能在答題,系統(tǒng)自動保存試卷。</p><p>  交卷保存答案:點擊“交卷”確認(rèn)后,考試結(jié)束,保存當(dāng)前試卷相關(guān)數(shù)據(jù),關(guān)閉當(dāng)前界面,顯示菜單選擇界面,意外點擊窗口關(guān)閉按鈕時,也自動進(jìn)行保存。</p><p>  5.4

19、分?jǐn)?shù)統(tǒng)計模塊功能 </p><p>  統(tǒng)計分?jǐn)?shù):將答題結(jié)果與標(biāo)準(zhǔn)答案比對,計算分?jǐn)?shù)。</p><p>  分?jǐn)?shù)顯示:查看分?jǐn)?shù)或者交卷或關(guān)閉考試界面時,將計算出的分?jǐn)?shù)顯示到當(dāng)前面板中。</p><p><b>  6系統(tǒng)總體設(shè)計方案</b></p><p>  6.1系統(tǒng)功能模塊的創(chuàng)建</p><p

20、>  1歡迎登陸界面的創(chuàng)建;</p><p>  2登陸界面模塊創(chuàng)建和劃分;</p><p>  3 菜單界面的創(chuàng)建與其作用實現(xiàn);</p><p>  4 考試規(guī)則界面創(chuàng)建;</p><p>  5考試界面的創(chuàng)建和劃分;</p><p>  6.2系統(tǒng)要實現(xiàn)的功能</p><p>  

21、1用戶的名字、密碼和編號都能夠在菜單界面和考試界面中顯示出來;</p><p>  2系統(tǒng)能隨機(jī)在題庫中所給的十個級別題目中每個級別中抽出兩個題目構(gòu)成一套試</p><p><b>  卷;</b></p><p>  3考試完后用戶可通過交卷或查分能夠看到成績;</p><p>  4 考試界面有個倒計時來限制答題時

22、間,時間到,系統(tǒng)自動交卷和保</p><p><b>  存。</b></p><p>  6.3面向?qū)ο蟮脑O(shè)計</p><p>  本次課設(shè)充分體現(xiàn)出了java語言抽象,封裝,繼承,多態(tài)和多線程的作用,為實現(xiàn)該項目功能鎖設(shè)計類如下:</p><p>  界面類:LoginFrame(登錄界面),MenuFrame(菜單

23、界面)</p><p>  WelcomeWindow(歡迎界面) RuleFrame(考試規(guī)則界面) ExamFrame</p><p><b> ?。荚嚱缑妫?lt;/b></p><p>  控制器類:ClientContext</p><p>  后臺數(shù)據(jù)處理類:ExamService(考試后臺數(shù)據(jù)處理)</p

24、><p>  IdOrPwdException(編號與密碼數(shù)據(jù)處理) </p><p>  實體類: EntityContext(試卷內(nèi)容的讀取與顯示) Question(題</p><p>  庫) QuestionInfo(試卷) User(用戶信息)</p><p>  主類:Main(入口類)</p><p>

25、  6.4畫出系統(tǒng)的結(jié)構(gòu)</p><p><b>  7.系統(tǒng)詳細(xì)設(shè)計</b></p><p>  1 歡迎界面設(shè)計,通過Welcome類來實現(xiàn),該界面在出現(xiàn)2秒后會自動消失,然后登陸界面出現(xiàn),歡迎界面截圖如圖1</p><p><b>  圖1 歡迎界面</b></p><p>  2實現(xiàn)用戶的登

26、陸功能,通過login類來設(shè)計該界面,該界面能獲取登錄信息(獲取客戶端輸入用戶ID和用戶密碼pwd)和得到登錄響應(yīng)(根據(jù)登錄校驗的結(jié)果,顯示相應(yīng)的界面;若登錄不成功,只在當(dāng)前頁面顯示錯誤提示,若登錄成功,關(guān)閉當(dāng)前界面, 顯示菜單界面。)以及能通過取消按鈕(cancelBtn)</p><p>  和clientContext.cancel()方法實現(xiàn)取消功能。登錄界面與前臺邏輯處理截圖如圖2-4</p>

27、;<p><b>  圖2 登錄界面</b></p><p>  圖3 編號輸入不合法</p><p><b>  圖4 密碼錯誤</b></p><p>  3創(chuàng)建一個MunuFrame的類,實現(xiàn)菜單面板功能的實現(xiàn),能實現(xiàn)更新用戶信息即將登錄成功的用戶信息顯示到當(dāng)前界面, 開始考試, 查看分?jǐn)?shù)(點擊“分?jǐn)?shù)”

28、,若還未開始,提示“考試未開啟”,若已完成考試,顯示分?jǐn)?shù)結(jié)果),查看考試規(guī)則(點擊“考試規(guī)則”,顯示考試規(guī)則面板)和退出考試系統(tǒng)(點擊“離開”,退出系統(tǒng))以及點擊關(guān)閉窗體有提示信息等功能。各功能截圖如圖5-圖10</p><p><b>  圖5 菜單界面</b></p><p>  圖6 考試前點擊分?jǐn)?shù)按鈕</p><p>  圖7考試后

29、點擊“開始”按鈕</p><p>  圖8 點擊考試規(guī)則按鈕</p><p>  圖9 點擊“X”按鈕</p><p>  圖10 點擊“離開”按鈕</p><p>  4開始考試功能的實現(xiàn),包括裝載用戶信息,裝載題目信息,答題,上下翻題,考試倒計時交卷保存答案,關(guān)閉窗體系統(tǒng)自動保存試卷以及當(dāng)前為第一題或最后一題時前一題按鈕或最<

30、;/p><p>  后一題按鈕無效(不可點擊)等功能,試卷的創(chuàng)建與保存可用集合(list,map)來實現(xiàn),把題庫中的級別當(dāng)作鍵,級別對應(yīng)題當(dāng)作值放在map中,截圖如圖11-圖14</p><p>  圖11 考試總體界面</p><p><b>  圖12 時間到界面</b></p><p>  圖13 試卷保存成功后窗體顯

31、示(交卷或時間截至)</p><p>  圖14 考試中途關(guān)閉窗體</p><p>  5考試分?jǐn)?shù)統(tǒng)計功能模塊的描述,包括統(tǒng)計分?jǐn)?shù):將答題結(jié)果與標(biāo)準(zhǔn)答案比對,</p><p>  計算分?jǐn)?shù)和分?jǐn)?shù)顯示:查看分?jǐn)?shù)或者交卷時,將計算出的分?jǐn)?shù)顯示到當(dāng)前面</p><p>  板中;效果截圖如圖15-圖16</p><p>  

32、圖15 交卷時分?jǐn)?shù)顯示</p><p>  圖16 查分時分?jǐn)?shù)顯示</p><p>  6源代碼 見附錄1</p><p>  8 系統(tǒng)的調(diào)試和測試</p><p>  8.1 設(shè)計過程中遇到的問題和解決方案</p><p>  如何讓整個項目具有層次性,既易于閱讀也用于防止業(yè)務(wù)邏輯處理與數(shù)據(jù)</p&g

33、t;<p>  處理全部在一個類里而導(dǎo)致實現(xiàn)困難和編程混亂?</p><p>  解決方案:通過MVC模式來設(shè)計程序,界面只處理前臺工作,建立一個控制器</p><p>  類進(jìn)行業(yè)務(wù)邏輯處理,在后臺進(jìn)行業(yè)務(wù)數(shù)據(jù)處理功能。</p><p>  8.2測試過程中遇到的問題和解決方案</p><p> ?。?)當(dāng)考試時,意外關(guān)閉窗口

34、時,考試答案不會保存。</p><p>  解決方案:為窗口添加監(jiān)聽器,</p><p>  setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);</p><p>  this.addWindowListener(new WindowAdapter() {</p><p><b>

35、;  @Override</b></p><p>  public void windowClosing(WindowEvent e) {</p><p>  int val=JOptionPane.showConfirmDialog(null, "確定離開?");</p><p>  if(val==JOptionPane.YES_

36、OPTION){</p><p>  clientContext.send();</p><p>  clientContext.examFrameExit();</p><p><b>  }</b></p><p>  }當(dāng)窗體關(guān)閉時,會更據(jù)提示信息自動保存。</p><p> ?。?)發(fā)現(xiàn)登

37、錄見面的取消按鈕無作用。</p><p>  于是為取消按鈕設(shè)置了事件監(jiān)聽,再將方法實現(xiàn)為清空文本框中內(nèi)容,即通過</p><p>  idTextField.setText(null)和pwdField.setText(null)語句來實現(xiàn)。</p><p><b>  9設(shè)計心得體會</b></p><p>  面向

38、對象,java是面向?qū)ο蟪绦蛟O(shè)計語言,這次課程實踐.,我更加深刻地理解了面向?qū)ο蟮母拍?我覺得這是我這次實踐的第一個收貨.;。</p><p>  怎么說呢,達(dá)內(nèi)的老師講課方法新穎,很有吸引力,我十分喜歡這種方式,在這種氛圍下學(xué)習(xí)我很有激情.</p><p>  再說說我的感想吧,錯誤,是啊,不斷的錯不斷的錯,不斷的找不斷的找,好多次我都快發(fā)瘋了,但是呢,沒有真正用過心的去做一件事的認(rèn)識不

39、能理解那種心情的,就是,你的努力,終于有收獲了,而這次的實驗課,也是再一次讓我明白,只有不斷的犯錯,然后找錯,才能學(xué)到知識,才能進(jìn)步.哎,這真的是,讓人心里,既焦躁,又興奮.這次的經(jīng)歷告訴我,淡定,細(xì)心,耐心,不要輕易放棄,相信自己,加油加油. </p><p>  軟件知識的學(xué)習(xí),從來都不是意見容易的事,其實也是,任何的東西,想要學(xué)好學(xué)精,都的付出時間和汗水啊.我一次次告訴自己,加油加油啊!</p

40、><p>  不知不覺一個多星期實驗就這樣結(jié)束了,感覺時間好快,時間就是知識時間就是金錢啊,而我不自覺的又想起了自己平時,一次次浪費時間,常立志不立長志,哎,人也許就是這樣,需要壓力,和打擊,然后才能真正的長大,懂事啊!</p><p>  本次課設(shè)也讓我明白了毅力與心態(tài)的重要性,無論如何時候都不要輕易放棄,也不要讓懶惰纏上自己,要抓住任何一個機(jī)會去學(xué)習(xí)更多知識。更要多實踐,它對知識的收獲將是

41、更深刻的。</p><p><b>  10答辯</b></p><p><b>  指導(dǎo)教師評語:</b></p><p>  成績評定: 簽名:</p><p>  2013 年 6 月 30 日</p>

42、<p><b>  附錄1</b></p><p><b>  源代碼</b></p><p><b>  Main類代碼:</b></p><p>  package com.tarena.client;</p><p>  import com.tarena.en

43、tity.EntityContext;</p><p>  import com.tarena.service.ExamService;</p><p>  import com.tarena.ui.ClientContext;</p><p>  import com.tarena.ui.ExamFrame;</p><p>  impor

44、t com.tarena.ui.LoginFrame;</p><p>  import com.tarena.ui.MenuFrame;</p><p>  import com.tarena.ui.RuleFrame;</p><p>  import com.tarena.ui.WelcomeWindow;</p><p><b&

45、gt;  //主類</b></p><p>  public class Main {</p><p>  public static void main(String[] args) {</p><p>  ClientContext clientContext=new ClientContext();</p><p><

46、b>  //歡迎界面 </b></p><p>  WelcomeWindow welcomeWindow=new WelcomeWindow();</p><p><b>  //登錄界面 </b></p><p>  LoginFrame loginFrame=new LoginFrame();</p>&

47、lt;p><b>  //菜單界面 </b></p><p>  MenuFrame menuFrame=new MenuFrame();</p><p><b>  //考試界面 </b></p><p>  ExamFrame examFrame=new ExamFrame();</p><

48、;p>  ExamService examService=new ExamService();</p><p>  EntityContext entityContext=new EntityContext();</p><p><b>  //考試規(guī)則界面</b></p><p>  RuleFrame ruleFrame=new Ru

49、leFrame();</p><p>  menuFrame.setRuleFrame(ruleFrame);</p><p>  loginFrame.setClientContext(clientContext);</p><p>  menuFrame.setClientContext(clientContext);</p><p> 

50、 examFrame.setClientContext(clientContext);</p><p>  examService.setEntityContext(entityContext);</p><p>  clientContext.setWelcomeWindow(welcomeWindow);</p><p>  clientContext.setL

51、oginFrame(loginFrame);</p><p>  clientContext.setMenuFrame(menuFrame);</p><p>  clientContext.setExamFrame(examFrame);</p><p>  clientContext.setExamService(examService);</p>

52、<p>  clientContext.start();</p><p><b>  }</b></p><p><b>  }</b></p><p>  ClientContext類代碼:</p><p>  package com.tarena.ui;</p><

53、;p>  import java.util.Date;</p><p>  import java.util.List;</p><p>  import java.util.Timer;</p><p>  import java.util.TimerTask;</p><p>  import javax.swing.JOption

54、Pane;</p><p>  import javax.swing.JPasswordField;</p><p>  import javax.swing.JTextField;</p><p>  import com.tarena.entity.Question;</p><p>  import com.tarena.entity.

55、QuestionInfo;</p><p>  import com.tarena.entity.User;</p><p>  import com.tarena.service.ExamService;</p><p>  import com.tarena.service.IdOrPwdException;</p><p>  publ

56、ic class ClientContext {</p><p><b>  //歡迎界面 </b></p><p>  WelcomeWindow welcomeWindow;//null</p><p><b>  //登錄界面 </b></p><p>  LoginFrame loginF

57、rame;</p><p><b>  //菜單界面 </b></p><p>  MenuFrame menuFrame;</p><p><b>  //考試界面 </b></p><p>  ExamFrame examFrame;</p><p>  ExamSe

58、rvice examService;</p><p>  QuestionInfo curQuestion;</p><p>  JTextField idTextField;</p><p>  JPasswordField pwdField;</p><p>  User loginUser;</p><p>  

59、boolean finish=false;</p><p>  int score;</p><p><b>  //構(gòu)造方法</b></p><p>  public ClientContext(){}</p><p>  public ClientContext(WelcomeWindow welcomeWindow

60、, LoginFrame loginFrame,</p><p>  MenuFrame menuFrame, ExamFrame examFrame) {</p><p>  this.welcomeWindow = welcomeWindow;</p><p>  this.loginFrame = loginFrame;</p><p>

61、;  this.menuFrame = menuFrame;</p><p>  this.examFrame = examFrame;</p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 開始考試,首先進(jìn)入歡迎界面 和 登錄界面</p&

62、gt;<p><b>  * */</b></p><p>  public void start(){</p><p>  welcomeWindow.setVisible(true);</p><p>  Timer timer=new Timer();</p><p>  timer.schedul

63、e(new TimerTask() {//延時兩秒后歡迎界面消失,登錄界面出現(xiàn)</p><p>  public void run() {</p><p>  welcomeWindow.setVisible(false);</p><p>  loginFrame.setVisible(true);</p><p><b>  }

64、</b></p><p><b>  }, 2000);</b></p><p><b>  }</b></p><p>  public void login(){</p><p><b>  User u;</b></p><p><

65、;b>  try {</b></p><p>  int userId=loginFrame.getUserId();</p><p>  String userPwd=loginFrame.getUserPwd();</p><p>  u = examService.login(userId,userPwd);</p><p

66、>  loginUser=u;//登錄成功 將登錄的用戶賦值給loginUser</p><p>  loginFrame.setVisible(false);</p><p>  menuFrame.updateUserInfo(u.getName());</p><p>  menuFrame.setVisible(true);</p>&

67、lt;p>  } catch (IdOrPwdException e1) {</p><p>  JOptionPane.showMessageDialog(loginFrame, e1.getMessage());</p><p>  } catch (NumberFormatException e2) {</p><p>  JOptionPane.sho

68、wMessageDialog(loginFrame, "請輸入整數(shù) 編號!");</p><p>  } catch (Exception e3){</p><p>  JOptionPane.showMessageDialog(loginFrame, "系統(tǒng)錯誤!請聯(lián)系系統(tǒng)管理員!");</p><p><b> 

69、 }</b></p><p><b>  }</b></p><p>  public void startExam(){</p><p><b>  //</b></p><p>  if(finish){</p><p>  JOptionPane.showM

70、essageDialog(menuFrame, "考試已結(jié)束!");</p><p>  return;//返回 結(jié)束當(dāng)前方法體</p><p><b>  }</b></p><p>  examService.startExam();</p><p>  curQuestion=examServ

71、ice.getPaper().get(0);</p><p>  examFrame.updateView(loginUser,curQuestion);</p><p>  startTime();//點擊開始考試按鈕,同時進(jìn)行到計時</p><p>  menuFrame.setVisible(false);</p><p>  exam

72、Frame.setVisible(true);</p><p><b>  }</b></p><p>  public void startTime(){</p><p>  long timeLimit=1000*60*1;</p><p>  long startTime=System.currentTimeMil

73、lis();</p><p>  final long endTime=startTime+timeLimit;</p><p>  final Timer timer=new Timer();</p><p>  timer.schedule(new TimerTask() {</p><p>  public void run() {&l

74、t;/p><p>  long time=endTime-System.currentTimeMillis();</p><p>  long h=time/1000/60/60;</p><p>  long m=time/1000/60;</p><p>  long s=time/1000%60;</p><p> 

75、 String timeStr=h+":"+m+":"+s;</p><p>  examFrame.updateTime(timeStr);</p><p><b>  }</b></p><p>  }, 0,1000);</p><p>  timer.schedule(ne

76、w TimerTask() {</p><p><b>  @Override</b></p><p>  public void run() {</p><p>  timer.cancel();</p><p>  JOptionPane.showMessageDialog(examFrame, "考試時間

77、到!");</p><p>  send();//考試時間到,自動保存</p><p><b>  }</b></p><p>  },new Date(endTime));//到指定Date時間執(zhí)行run方法</p><p><b>  }</b></p><p>

78、;  public void next(){</p><p>  saveUserAnswer();//點擊下一題按鈕,保存答案</p><p>  QuestionInfo nextQuestion=examService.findQuestionByIndex(curQuestion.getIndex()+1);</p><p>  curQuestion=ne

79、xtQuestion;</p><p>  examFrame.updateView(loginUser, curQuestion);</p><p><b>  }</b></p><p>  public void pre(){</p><p>  saveUserAnswer();//點擊上一題,保存答案</

80、p><p>  QuestionInfo preQuestion=examService.findQuestionByIndex(curQuestion.getIndex()-1);</p><p>  curQuestion=preQuestion;</p><p>  examFrame.updateView(loginUser, curQuestion);//更新

81、面板內(nèi)容</p><p><b>  }</b></p><p>  public void send(){</p><p>  saveUserAnswer();</p><p>  score=examService.getScore();</p><p>  JOptionPane.show

82、MessageDialog(examFrame, "分?jǐn)?shù): "+score);</p><p>  examFrame.setVisible(false);</p><p>  menuFrame.setVisible(true);</p><p>  //考試已結(jié)束的狀態(tài)</p><p>  finish=true;&l

83、t;/p><p><b>  }</b></p><p>  public void saveUserAnswer(){</p><p>  int curIndex=curQuestion.getIndex();</p><p>  List<Integer> userAnswer=examFrame.getU

84、serAnswer();</p><p>  examService.saveUserAnswer(curIndex,userAnswer);</p><p><b>  }</b></p><p>  public void getScore(){</p><p>  if(!finish){</p>&

85、lt;p>  JOptionPane.showMessageDialog(menuFrame, "考試尚未開啟!");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  JOptionPane.showMessageDialog(men

86、uFrame, "分?jǐn)?shù): "+score);</p><p><b>  }</b></p><p>  public void examFrameExit(){</p><p>  examFrame.setVisible(false);</p><p><b>  }</b>

87、</p><p>  public WelcomeWindow getWelcomeWindow() {</p><p>  return welcomeWindow;</p><p><b>  }</b></p><p>  public void setWelcomeWindow(WelcomeWindow wel

88、comeWindow) {</p><p>  this.welcomeWindow = welcomeWindow;</p><p><b>  }</b></p><p>  public LoginFrame getLoginFrame() {</p><p>  return loginFrame;</p&

89、gt;<p><b>  }</b></p><p>  public void setLoginFrame(LoginFrame loginFrame) {</p><p>  this.loginFrame = loginFrame;</p><p><b>  }</b></p><

90、p>  public MenuFrame getMenuFrame() {</p><p>  return menuFrame;</p><p><b>  }</b></p><p>  public void setMenuFrame(MenuFrame menuFrame) {</p><p>  this

91、.menuFrame = menuFrame;</p><p><b>  }</b></p><p>  public ExamFrame getExamFrame() {</p><p>  return examFrame;</p><p><b>  }</b></p><

92、;p>  public void setExamFrame(ExamFrame examFrame) {</p><p>  this.examFrame = examFrame;</p><p><b>  }</b></p><p>  public ExamService getExamService() {</p>

93、<p>  return examService;</p><p><b>  }</b></p><p>  public void setExamService(ExamService examService) {</p><p>  this.examService = examService;</p><p

94、><b>  }</b></p><p>  public void menuFrameexit() {</p><p>  menuFrame.setVisible(false);</p><p><b>  }</b></p><p>  public void cancel() {<

95、;/p><p>  idTextField.setText(null);</p><p>  pwdField.setText(null);</p><p><b>  }</b></p><p>  public JTextField getIdTextField() {</p><p>  ret

96、urn idTextField;</p><p><b>  }</b></p><p>  public void setIdTextField(JTextField idTextField) {</p><p>  this.idTextField = idTextField;</p><p><b>  

97、}</b></p><p>  public JPasswordField getPwdField() {</p><p>  return pwdField;</p><p><b>  }</b></p><p>  public void setPwdField(JPasswordField pwdFi

98、eld) {</p><p>  this.pwdField = pwdField;</p><p><b>  }</b></p><p><b>  }</b></p><p>  WelcomeWindow類代碼:</p><p>  package com.taren

99、a.ui;</p><p>  import java.awt.BorderLayout;</p><p>  import java.awt.Color;</p><p>  import java.awt.Dimension;</p><p>  import java.awt.Toolkit;</p><p> 

100、 import java.net.URL;</p><p>  import javax.swing.*;</p><p>  import javax.swing.border.LineBorder;</p><p>  public class WelcomeWindow extends JWindow{</p><p>  int wi

101、dth=430;</p><p>  int height=300;</p><p>  public WelcomeWindow(){</p><p><b>  //</b></p><p><b>  init();</b></p><p><b>  }&l

102、t;/b></p><p>  public void init(){</p><p>  setSize(width, height);</p><p>  centerWindow();</p><p>  setContentPane(createContentPane());</p><p><b&

103、gt;  }</b></p><p>  public JPanel createContentPane(){</p><p>  JPanel p=new JPanel(new BorderLayout());</p><p>  URL url=WelcomeWindow.class.getResource("welcome.png&quo

104、t;);</p><p>  ImageIcon icon=new ImageIcon(url);</p><p>  p.setBorder(new LineBorder(Color.GRAY));</p><p>  p.add(BorderLayout.CENTER,new JLabel(icon));</p><p><b>

105、;  return p;</b></p><p><b>  }</b></p><p>  public void centerWindow(){</p><p>  Toolkit tk=Toolkit.getDefaultToolkit();</p><p>  Dimension screen=tk.

106、getScreenSize();</p><p>  this.setLocation((screen.width-width)/2, (screen.height-height)/2);</p><p><b>  }</b></p><p><b>  }</b></p><p>  Login

107、Frame類代碼:</p><p>  package com.tarena.ui;</p><p>  import javax.swing.*;</p><p>  import javax.swing.border.EmptyBorder;</p><p>  import java.awt.*;</p><p>

108、;  import java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p><b>  /**</b></p><p>  * 描述一個登錄窗體對象</p><p><b>  * */</b

109、></p><p>  public class LoginFrame extends JFrame{</p><p><b>  //屬性</b></p><p>  String title="登錄界面";</p><p>  int width=300;</p><p&

110、gt;  int height=200;</p><p>  ClientContext clientContext;</p><p>  JTextField idTextField;</p><p>  JPasswordField pwdField;</p><p>  //構(gòu)造方法(初始化對象)</p><p>

111、;  public LoginFrame(){</p><p><b>  //給該窗體初始化</b></p><p><b>  init();</b></p><p><b>  }</b></p><p><b>  //方法</b></p&g

112、t;<p><b>  //給窗體初始化</b></p><p>  public void init(){</p><p>  setTitle(title);//給窗體設(shè)置標(biāo)題</p><p>  setSize(width, height);</p><p>  centerFrame();</

113、p><p>  setContentPane(createContentPane());</p><p><b>  }</b></p><p><b>  //創(chuàng)建主面板</b></p><p>  public JPanel createContentPane(){</p><p

114、>  JPanel p = new JPanel(new BorderLayout());//主面板</p><p>  p.setBorder(new EmptyBorder(8,8,8,8));//設(shè)置內(nèi)邊距</p><p>  //給主面板添加組件</p><p>  p.add(BorderLayout.SOUTH,createBottomPane()

115、);</p><p>  p.add(BorderLayout.NORTH,new JLabel("登錄系統(tǒng)",JLabel.CENTER));</p><p>  p.add(BorderLayout.CENTER,createCenterPane());</p><p><b>  return p;</b></p

116、><p><b>  }</b></p><p>  //創(chuàng)建主面板的中間面板</p><p>  public JPanel createCenterPane(){</p><p>  JPanel p = new JPanel(new BorderLayout());</p><p>  p.ad

117、d(BorderLayout.NORTH,createIdPwdPane());</p><p><b>  return p;</b></p><p><b>  }</b></p><p>  //創(chuàng)建編號、密碼面板</p><p>  public JPanel createIdPwdPane

118、(){</p><p>  JPanel p = new JPanel(new GridLayout(2,1,0,10));</p><p>  p.add(createIdPane());</p><p>  p.add(createPwdPane());</p><p><b>  return p;</b><

119、/p><p><b>  }</b></p><p><b>  //創(chuàng)建編號面板</b></p><p>  public JPanel createIdPane(){</p><p>  JPanel p = new JPanel(new BorderLayout());</p>&l

120、t;p>  p.add(BorderLayout.WEST,new JLabel("編號:"));</p><p>  idTextField=new JTextField();</p><p>  p.add(BorderLayout.CENTER,idTextField);</p><p><b>  return p;<

121、;/b></p><p><b>  }</b></p><p><b>  //創(chuàng)建密碼面板</b></p><p>  public JPanel createPwdPane(){</p><p>  JPanel p = new JPanel(new BorderLayout());&l

122、t;/p><p>  p.add(BorderLayout.WEST,new JLabel("密碼:"));</p><p>  pwdField=new JPasswordField();</p><p>  p.add(BorderLayout.CENTER,pwdField);</p><p><b>  re

123、turn p;</b></p><p><b>  }</b></p><p>  //創(chuàng)建主面板的底部面板</p><p>  public JPanel createBottomPane(){</p><p>  JPanel p = new JPanel();</p><p> 

124、 JButton loginBtn=new JButton("登錄");</p><p>  loginBtn.addActionListener(new ActionListener() {</p><p><b>  @Override</b></p><p>  public void actionPerformed(

125、ActionEvent e) {</p><p>  clientContext.login();</p><p><b>  }</b></p><p><b>  });</b></p><p>  JButton cancelBtn=new JButton("取消");&l

126、t;/p><p>  cancelBtn.addActionListener(new ActionListener() {</p><p><b>  @Override</b></p><p>  public void actionPerformed(ActionEvent e) {</p><p>  clientCo

127、ntext.setIdTextField(idTextField);</p><p>  clientContext.setPwdField(pwdField);</p><p>  clientContext.cancel();</p><p><b>  }</b></p><p><b>  });<

128、;/b></p><p>  p.add(loginBtn);</p><p>  p.add(cancelBtn);</p><p><b>  return p;</b></p><p><b>  }</b></p><p>  public void cente

129、rFrame(){</p><p>  Toolkit tk=Toolkit.getDefaultToolkit();</p><p>  Dimension d=tk.getScreenSize();</p><p>  this.setLocation((d.width-width)/2, </p><p>  (d.height-hei

130、ght)/2);</p><p><b>  }</b></p><p>  public int getUserId(){</p><p>  return Integer.parseInt(idTextField.getText());</p><p><b>  }</b></p>

溫馨提示

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

評論

0/150

提交評論