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以內加減法算式的方法

https://blog.csdn.net/qq_40605167/article/details/81023799?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162409842316780366542501%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162409842316780366542501&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-81023799.pc_search_result_before_js&utm_term=%E7%AE%97%E6%9C%AF%E8%BF%90%E7%AE%97%E6%B5%8B%E8%AF%95java%E5%B1%B1%E4%B8%9C%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%A6&spm=1018.2226.3001.4187

注:作標記的為我參考的部分

在此向原作者致謝!

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和泛型與集合框架、檔案等知識的集大成之作,是我嘔心瀝血完成的。在設計專案中,挫折接踵而至,尤其是出現需要進行各種異常處理和非異常處理的那一部分,以及將排行榜寫入檔案的部分,涉及到許多具有挑戰性的邏輯問題,但我最終克服了它們。在對自己小小的成就沾沾自喜時,也要意識到,我的設計中存在著待改進的疏漏之處。由於個人知識、技能和時間的限制,使用者暫時跳過一道題去做下一題,然後再返回去做上一題的功能沒有實現;多個使用者在不同的平臺上進行同步答題,資訊由一個平臺彙總的功能沒有實現;通過對使用者答題時間的記錄,對同分數的使用者再作排名的功能沒有實現;使用者自行建立使用者名稱和密碼,運用資料庫登入賬號的功能沒有實現;介面設計不夠美觀等問題亟待改進。總之,經歷過本次課程設計的我依然是有所收穫,頗有成就感的。