Java課程設計-算術運算測試(D級)
齊魯工業大學 計科20-1 王瀚垠 202003010033
目錄
1.專案簡介
2.專案採用技術
3.功能需求分析
4.專案亮點
5.專案功能架構圖和UML類圖
6.系統演示操作視訊或者主要功能截圖
7.團隊成員負責模組(以表格的形式)
8.專案git地址
9.團隊成員git提交記錄截圖
10.專案程式碼靜態掃描通過證明
11.專案總結
正文
1.專案簡介
本專案給出一個能夠多使用者進行100以內加減法運算測試的系統。使用者註冊一定數目使用者後,由每個使用者按號碼順序分別答題,每位使用者回答完畢後,其使用者序號和分數都會被錄入一個連結串列中。所有使用者均完成測試後,連結串列中元素按照使用者分數升序排列,統一倒序寫入文字檔案namelist.txt中,形成排行榜。
2.專案採用技術
(1)泛型與集合框架——連結串列
(2)建立並寫入檔案
(3)GUI(包含三個監視器進行事件處理)
(4)丟擲異常和異常處理
3.功能需求分析
(1)註冊使用者:輸入參與使用者數,單擊“註冊”,系統建立對應數目的使用者
(2)獲取題目/跳至下一題/跳至下一使用者:單擊“下一題”對應三種情況:
(A)處於預備介面(每個使用者在進入第一題之前的介面),單擊進入第一題
(B)1-9題提交成功,單擊進入下一題
(C)非最後一名使用者第10題提交成功,單擊進入下一使用者預備介面
(3)提交答案和錄入資訊:使用者輸入自己的答案,單擊“提交”獲取評判。每個使用者完成最後一題後,單擊“提交”檢視總分,同時系統將該使用者的資訊錄入至連結串列。最後一位使用者提交最後一題後,系統將連結串列中元素按照使用者分數升序排列,統一倒序寫入文字檔案namelist.txt中,形成排行榜。
(4)生成題目:單擊“下一題”,文字區被清空,生成兩個100以內隨機數,將兩個運算元按照一定次序,與相應字元組合形成算式,顯示在文字區中。
(5)評分:提交答案後,系統將使用者輸入答案與正確答案比對,判斷正誤。若正確該使用者加一分。使用者當前得分顯示在文字區中。
4.專案亮點
(1)較完善的丟擲異常和異常處理
(A)註冊相關異常及處理
使用者數目必須是正整數(不是整數和正數各一個異常處理),才能完成註冊(如果輸入負的小數,優先提示必須是整數)
重新註冊後,之前的資料清零
相關程式碼
(B)“提交”相關異常及處理
未註冊狀態下無法提交
未獲取題目狀態下無法提交
提交答案格式不合理報錯
不允許重複提交
相關程式碼
(C)“下一題”相關異常及處理
未註冊狀態下無法獲取題目
未提交狀態下無法獲取下一題
所有使用者作答完畢時給出提示
相關程式碼
(2)使用連結串列儲存資料
相關程式碼截圖如下
(3)寫入檔案考慮並列排名的情況
寫入效果
寫入原理相關程式碼
(5)借鑑在八次實驗課中的學到的知識,學以致用
例如連結串列中的元素所屬的People類和之前提到的連結串列相關程式碼
借鑑了實驗八驗證性實驗2中相關的知識和方法
(6)參考CSDN上一篇非GUI的課程設計的原始碼的部分思想,學會了生成100以內加減法算式的方法
注:作標記的為我參考的部分
在此向原作者致謝!
5.專案功能架構圖和UML類圖
(1)專案功能架構圖
(2)UML類圖
6.系統演示操作視訊或者主要功能截圖
註冊
答題
使用者個人評分
答題結束
排行榜展示
7.團隊成員負責模組(以表格的形式)
團隊成員 |
學號 |
任務分配 |
王瀚垠(組長兼組員) |
202003010033 |
全部模組:佈局設計、異常處理、事件處理、演算法設計等,即所有類和方法全部由我獨立完成。 |
8.專案git地址
https://gitee.com/wang-hanyin/homework-of-oop-course-design
9.團隊成員git提交記錄截圖
10.專案程式碼靜態掃描通過證明
11.專案總結
本次課程設計是在八次實驗中用到的知識,尤其是GUI和泛型與集合框架、檔案等知識的集大成之作,是我嘔心瀝血完成的。在設計專案中,挫折接踵而至,尤其是出現需要進行各種異常處理和非異常處理的那一部分,以及將排行榜寫入檔案的部分,涉及到許多具有挑戰性的邏輯問題,但我最終克服了它們。在對自己小小的成就沾沾自喜時,也要意識到,我的設計中存在著待改進的疏漏之處。由於個人知識、技能和時間的限制,使用者暫時跳過一道題去做下一題,然後再返回去做上一題的功能沒有實現;多個使用者在不同的平臺上進行同步答題,資訊由一個平臺彙總的功能沒有實現;通過對使用者答題時間的記錄,對同分數的使用者再作排名的功能沒有實現;使用者自行建立使用者名稱和密碼,運用資料庫登入賬號的功能沒有實現;介面設計不夠美觀等問題亟待改進。總之,經歷過本次課程設計的我依然是有所收穫,頗有成就感的。