帶UI的小初高數學學習軟體——湖南大學結對程式設計總結
連結:完整程式碼及說明
提取碼:87mx
複製這段內容後開啟百度網盤手機App,操作更方便哦
一、功能需求
1、使用者註冊功能。使用者提供手機號碼,點選註冊將收到一個註冊碼,使用者可使用該註冊碼完成註冊;
2、使用者完成註冊後,介面提示設定密碼,使用者輸入兩次密碼匹配後設定密碼成功。密碼6-10位,必須含大小寫字母和數字。使用者在登入狀態下可修改密碼,輸入正確的原密碼,再輸入兩次相同的新密碼後修改密碼成功;
3、密碼設定成功後,跳轉到選擇介面,介面顯示小學、初中和高中三個選項,使用者點選其中之一後,提示使用者輸入需要生成的題目數量;
4、使用者輸入題目數量後,生成一張試卷(同一張卷子不能有相同題目,題目全部為選擇題),介面顯示第一題的題乾和四個選項,使用者選擇四個選項中的一個後提交,介面顯示第二題,…,直至最後一題;
5、最後一題提交後,介面顯示分數,分數根據答對的百分比計算;
6、使用者在分數介面可選擇退出或繼續做題;
7、小初高數學題目要求見個人專案。
二、功能測試
-
註冊功能:利用手機號進行註冊,手機收到驗證碼,將驗證碼輸入進行確認,然後進行密碼設定,密碼設定必須滿足6-10位,含大小寫字母和數字,且兩次密碼必須相同,匹配成功,使用者才註冊成功。
-
登入功能:註冊完成之後可以通過手機號和設定的密碼進行登入出題,如果密碼輸入不相同則會進行錯誤提示,且無法登入系統;
-
出題功能:進入出題系統之後,使用者可以根據自身需要選擇相應的年級進行出題,然後進入相應出題數量的選擇,輸入所需要的題目數量點選出題,則會進入出題介面,並在下面出現四個選項,且只有一個正確答案,最後將會根據答對的題目數量進行統計分數。
- 重設密碼功能:使用者可以通過重設密碼按鍵進入重設密碼的功能介面,輸入舊密碼,再輸入新密碼,確認新密碼,當新密碼兩次相同且滿足密碼要求的情況下,則會重設密碼。
三、實現要點
-
程式實現的總體架構:我們在src中放入我們程式實現的程式碼部分,在images中放入我們使用的圖片元素,以及後面用於資料庫連線使用的jar包。
-
圖形介面的實現:剛開始本著要用html來實現圖形介面的實現,但是隊友有javaui的使用經驗,在他的推薦之下,我們使用eclipse的視覺化外掛WindowBuilder進行輔助設計,通過外掛可以對介面實行簡單的實現,再通過我們修改程式碼進行不斷完善,極大加快了我們的圖形介面的開發效率。
-
出題功能的重用:在之前的個人專案之中我們實現的出題程式碼,我們通過類進行封裝,我們可以通過類進行呼叫返回實現我們的題目字串,但是這次完成的功能必須實現題目結果的計算,所以我們在返回值改成了字串陣列,一個用於返回我們的題目字串,另一個字串返回的是我們對其中的特殊字元計算後的題目字串,可用於在後面我們可以通過直接呼叫逆波蘭表示式對結果進行計算。
-
題目的生成和結果的計算:在進行出題時,因為我們必須保證題目的不可重複性,我們必須一次性將所有題目放入hashset進行校驗,所以我們選擇在開始時直接生成所有的題目和結果,分別放入problem字串陣列和result陣列,我們就可以通過直接將這些題目和結果作為引數進行傳參,保證題目的唯一性,為了節省空間,我們對選項的隨機生成並沒有放入陣列進行傳參,而是通過在接下來的遞迴呼叫中進行生成。
- 題目的跳轉與計分:我們對題目的跳轉是通過不斷的遞迴呼叫來實現的,當我們選擇了一個選項並進行確認時,我們就會重新生成一個視窗物件,傳入我們之前生成的題目和結果和當前的是第幾個題目,再通過隨機化的方法,我們就可以生成四個選項,生成了我們的題目。至於計分困擾了我們很久,後來我們選擇通過類的靜態變數來進行實現,因為當我們遞迴呼叫生成類的時候,我們對物件的類的靜態變數的更改會影響到這個類的所有物件,由此我們可以進行計分,當再次重新開始出題時我們只需將計分個數初始化為0即可。
- 資料庫的實現:用於對使用者資訊的儲存,剛開始的個人專案中我使用的是檔案的儲存,當時面對現在要實現的功能,用文字實現複雜化,所以我們用資料庫mysql對使用者資訊進行管理,同時使用mysql專用的資料庫管理軟體對管理更加有效,安全性更高。
1 package testPaperUI;
2 import java.sql.Connection;
3 import java.sql.DriverManager;
4 public class dbhelp {//資料庫連線
5 private static final String driver = "com.mysql.cj.jdbc.Driver";
6 private static final String url = "jdbc:mysql://localhost:3306/test?userUnicode=true&characterEnconding=UTF-8&serverTimezone=UTC";//test為資料庫
7 private static final String username = "user";//賬號
8 private static final String password = "123456";//密碼
9 private static Connection conn = null;
10
11 static {
12 try {
13 Class.forName(driver);
14 } catch (Exception e) {
15 e.printStackTrace();
16 }
17 }
18
19 public static Connection getConnection() throws Exception{
20 if(conn == null) {
21 conn = DriverManager.getConnection(url,username,password);//獲得連線
22 return conn;
23 }
24 return conn;
25 }
26
27 public static void main(String[] args) {//測試主函式
28 try{
29 Connection conn = dbhelp.getConnection();
30 if(conn != null) {//獲得連線輸出正常
31 System.out.println("資料庫連線正常");
32 }else {//連線失敗輸出異常
33 System.out.println("資料庫連線異常");
34 }
35 }catch(Exception e) {
36 e.printStackTrace();
37 }
38 }
39
40
41 }
四、結對程式設計總結
這是我的第一次結對程式設計體驗,給我帶來一種新的編碼方式,通過兩個結對編寫程式碼,我們互相發現對方編碼中的小錯誤,互相提醒,提高了我們編碼的正確性,減少了我們後期的調整除錯的時間,很大提到了我們的編碼效率。同時,我們又在不同的方面瞭解更多一些,我更熟悉後臺編碼的實現,而我的隊友更熟悉前端介面的實現,我們各有所長,在相應的部分我們可以發揮各自的長處,大大提高了我們整個專案的實現效率。在這次結對程式設計中,通過和隊友的對比也發現了自己還有很多不足,在接下來的學習中,我將會更加努力提升自己的能力。
相關文章
- 小程式學習總結
- 廣州牽引力總結初學者怎樣學好UI設計?UI
- 結對程式設計——小學四則運算練習題小程式程式設計
- C#程式設計學習(04):基本操作學習總結C#程式設計
- 學好UI設計,需要學習哪些軟體?UI
- Java 併發程式設計學習總結Java程式設計
- 【Javascript】DOM程式設計學習總結篇JavaScript程式設計
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 結對程式設計 小學四則運算程式設計
- git學習小總結Git
- 數學與程式設計:“機率論”總結程式設計
- 中介軟體漏洞攻防學習總結
- html初學總結HTML
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- 20165234 《Java程式設計》第七週學習總結Java程式設計
- PHP設計模式學習最全總結PHP設計模式
- 小學數學程式設計題程式設計
- 學習小結
- 學習總結
- 大資料-數倉學習總結與分享大資料
- 結對程式設計--自動生成小學四則運算程式設計
- Java程式設計師總結出的技術以及學習方法Java程式設計師
- ❀ Spring5學習大總結Spring
- docker的學習總結Docker
- MongoDB的學習總結MongoDB
- 初學 PHP 總結建立物件PHP物件
- 初學者css每日總結CSS
- 結構化程式設計--學習筆記程式設計筆記
- UI設計需要學會哪些軟體?UI
- JAVA基礎學習-數字與字串學習總結Java字串
- 好程式設計師大資料學習路線分享MapReduce全流程總結程式設計師大資料
- vue 學習小結Vue
- JavaScript學習小結JavaScript
- ConstraintLayout 學習總結AI
- BOM學習總結
- tkinter學習總結
- vue學習總結Vue
- HSF學習總結