一、 需求分析
用戶:
小學、初中和高中學生;
功能:
1、所有功能通過圖形化界面操作,可以是桌面應用,可以是網站(編程語言和技術不限);
2、用戶注冊功能。用戶提供手機號碼,點擊注冊將收到一個注冊碼,用戶可使用該注冊碼完成注冊;
3、用戶完成注冊后,界面提示設置密碼,用戶輸入兩次密碼匹配后設置密碼成功。密碼6-10位,必須含大小寫字母和數字。用戶在登錄狀態下可修改密碼,輸入正確的原密碼,再輸入兩次相同的新密碼后修改密碼成功;
4、密碼設置成功后,跳轉到選擇界面,界面顯示小學、初中和高中三個選項,用戶點擊其中之一后,提示用戶輸入需要生成的題目數量;
5、用戶輸入題目數量后,生成一張試卷(同一張卷子不能有相同題目,題目全部為選擇題),界面顯示第一題的題干和四個選項,用戶選擇四個選項中的一個后提交,界面顯示第二題,...,直至最后一題;
6、最后一題提交后,界面顯示分數,分數根據答對的百分比計算;
7、用戶在分數界面可選擇退出或繼續做題;
8、小初高數學題目要求見個人項目。
二、 項目流程圖




三、 代碼分析和項目總結
代碼分為前端和后端,一共十四個類:
Account總類
Frame 初始界面類
Register 注冊頁面類
SendMs 阿里云驗證碼接口
Sendlistener 監聽獲取驗證碼按鈕
Signlistener 從初始頁面跳轉到注冊頁面
Backlistener 返回主界面
TestUI 生成題目界面
TestSystem 監聽難度等級和選項類
ScoreUI 得分頁面類
GenerateQuestion 生成題目
Choosepro 選擇生成題目頁面
Changef 切換賬號頁面
AnalysisQuestion 計算答案
1.選擇java
我們之前兩個人的個人項目都用的是C++,但是C++做頁面的話就需要qt,但是由于沒有用過qt,并且選修過java課程,于是就用java的Swing程序設計來制作UI界面。
2.分工合作
我負責賬戶的相關操作以及UI界面,我的隊友負責出題和計算得分,由于之前的C++代碼中隊友的隨機出題更具有邏輯性,更有利于利用逆波蘭式得到結果,于是后端邏輯復用他的代碼。
3.產生問題
由于對java類的理解不夠深刻,所以導致驗證碼的值一直傳不過來,于是最后迫于無奈,只好用文件流挽救,將驗證碼寫在secret.txt中,然后再在注冊頁面進行讀取,特別麻煩。還有就是修改密碼類中,由于賬號沒有傳過來,所以就導致我需要將整個用戶信息.txt讀取后重新實現覆蓋。
4.總結經驗
一定要先規劃好框架,方向,定位,在開工,有規劃,有階段性的進行開發,才會更加有效率;對于技術而言,同樣如此,要先了解JavaGUI可以干什么,有哪些好用的類與函數,然后再結合設計方案,進行開發,這樣會使項目體驗感,可操作性得到極大的提高。編程中想要快速實現功能,解決問題,需要結對的我們在同一方向上進行努力,解決問題,定期交流與階段性交流可以有效的提高團隊的同步性。GUI的實現需要很多函數來實現很多功能,面對想要添加但沒有接觸過的功能,可以用window builder來簡化添加的操作。我們自己需要在不尋求他人幫助的情況下,能夠獨立解決問題的能力,上網搜索,看博客,查參考書,等等很多方式,都是解決問題的方法,這也是我們提高自己的有效途徑之一。
優點:
基本完成了所有的項目需求;
所出的題目在邏輯要求還是挺高的,能夠算出正確答案;
為每個界面和每個按鍵添加了背景圖片以及圖標,增加了用戶使用的舒適度;
在注冊時能夠判斷注冊所用的賬號是否已經存在;
在注冊界面添加了返回按鈕,避免產生失手按錯以后只能退出重新登錄的尷尬情況。
缺點:
沒有在登錄界面添加了一個“眼睛”按鈕,在按下以后能夠隱藏密碼,再次按下能夠顯示密碼;
所出的題目在邏輯要求上仍然不是非常高,雖然能夠算出正確答案,但是經常會出現不規則小數;
沒有在修改密碼界面添加了返回按鈕,可能產生失手按錯以后只能退出重新登錄的尷尬情況;
只是完成了對用戶名的查重功能,卻沒有添加找回密碼功能;
UI界面中的許多提示都采用Java自帶的彈窗完成,在該方面用戶不具有良好的舒適性;
做題頁面設置只有下一題,沒有返回上一題,給學生容易帶來不好的做題體驗。
特別感謝隊友!
浙公網安備 33010602011771號