结对编程作业——四则运算GUI程序
毛忠慶 201421122088
趙嘉楠 201421122065
源代碼存放位置:https://gitee.com/ouwen0819/SiZeYunSuan.git
題目描述
分析
?????? 通過上述對題目的簡要描述,可以得出此次作業要求增加了兩個新的功能
l? 記錄用戶的對錯總數,程序再次啟動時可以保留數據
l? 計時功能通風來顯示用戶開始答題后消耗的時間
實現步驟
l? 根據用戶輸入的數值,其中包括生成題目的個數n和題目數值的范圍m,生成n道每個操作數都不大于m的數學題,并顯示輸入成功,開始答題
l? 獲取用戶輸入的答案
l? 判斷用戶的答案是否正確,如錯誤則顯示正確答案,如正確則記錄正確數值+1
l? 在用戶答完n道題的時候對話框彈出,顯示答對多少題并顯示共答對多少題
l? 答題過程中題目上方有精確到千分之秒的秒表計時
下面是針對這次作業增加的兩個新功能的設計與分析,以及其相關類的思維導圖
先建一個WriteReader類用來讀取和寫入用戶使用四則運算器的計算結果,其中包含用戶計算結果正確的數量,具體過程如下:
假設用戶設定的題目數量為x,則在計算過程中,用戶每答對一道題,rightNum變量+ 1當用戶答完全部x道題的時候,假設正確的數量為n,則rightNum=rightNum+n;在最終顯示給用戶的界面上,程序會調用WriteReader.reader()方法讀取上一次用戶的答題正確信息,并且結合本次答對題的數量,給出用戶新的答題正確信息,比如其上次共答對m道題,則此次顯示用戶共答對m+n道題。
在用戶答完題并且退出程序的時候,程序則調用Write()方法將本次答題正確信息寫入,在下一次程序啟動的時候調用數據
思維導圖如下
?
?
?
?
將計時器寫入計算界面Answer類中,在用戶已經輸入題目數目和答題數值范圍后,點擊確認答題的同時計時器開始運行,在用戶點擊提交的時候計時器會顯示其每道題耗時多久。
核心代碼展示
public class WriteReader {
???? public static void writer(int num) {
???????? try {
????????????? File file = new File("rightnum.txt");
????????????? FileWriter fw = new FileWriter(file, true);
????????????? BufferedWriter bw = new BufferedWriter(fw);
????????????? bw.write(num + "\t");
????????????? bw.write("\n");
????????????? bw.close();
???????? } catch (IOException e) {
????????????? // TODO Auto-generated catch block
????????????? e.printStackTrace();
???????? }
???? }
?
???? public static String reader() {
???????? File f = new File("rightnum.txt");
???????? String line, lastsecline, lastline = null;
???????? BufferedReader br = null;
???????? try {
????????????? br = new BufferedReader(new FileReader(f));
????????????? line = br.readLine();
????????????? if (line == null) {
?????????????????? return String.valueOf(0);
????????????? }
????????????? lastsecline = "";
????????????? lastline = "";
????????????? while (line != null) {
?????????????????? lastsecline = lastline;
?????????????????? lastline = line.trim();
?????????????????? line = br.readLine();
????????????? }
???????? } catch (FileNotFoundException e) {
????????????? // TODO Auto-generated catch block
????????????? e.printStackTrace();
???????? } catch (IOException e) {
????????????? // TODO Auto-generated catch block
????????????? e.printStackTrace();
???????? } finally {
????????????? if (br != null) {
?????????????????? try {
?????????????????????? br.close();
?????????????????? } catch (IOException e) {
?????????????????????? // TODO Auto-generated catch block
?????????????????????? e.printStackTrace();
?????????????????? }
????????????? }
???????? }
???????? return lastline;
???? }
}
private class CountingThread extends Thread {
???????? public boolean stopped = true;
?
???????? private CountingThread() {
????????????? setDaemon(true);
???????? }
?
???????? @Override
???????? public void run() {
????????????? while (true) {
?????????????????? if (!stopped) {
?????????????????????? long elapsed = System.currentTimeMillis() - programStart;
?????????????????????? label.setText(format(elapsed));
?????????????????? }
?????????????????? try {
?????????????????????? sleep(1); // 1毫秒更新一次顯示
?????????????????? } catch (InterruptedException e) {
?????????????????????? e.printStackTrace();
?????????????????????? System.exit(1);
?????????????????? }
????????????? }
???????? }
?
???????? // 將毫秒數格式化
???????? private String format(long elapsed) {
????????????? int hour, minute, second, milli;
?
????????????? milli = (int) (elapsed % 1000);
????????????? elapsed = elapsed / 1000;
?
????????????? second = (int) (elapsed % 60);
????????????? elapsed = elapsed / 60;
?
????????????? minute = (int) (elapsed % 60);
????????????? elapsed = elapsed / 60;
?
????????????? hour = (int) (elapsed % 60);
?
????????????? return String.format("%02d:%02d:%02d.%03d", hour, minute, second,
?????????????????????? milli);
???????? }
程序運行截圖
?
小結感受
對我們來說,結對編程確實有很大的幫助,因為這樣可以彌補雙方的不足,同時可以增強雙方拿手的環節,比如說毛忠慶在代碼編程方面比我強很多,所以我們這次就以他的實驗一為基礎進行了修改與改良,而我作為一個女孩子,可能心思比男孩子更細膩一些,所以容易看出代碼中的不足與bug,這次實驗中毛忠慶做了主要的工作,我就是在一旁輔助他完成作業。
毛忠慶:嘉楠同學優點是比較虛心,怎么說都不生氣,讓干嘛干嘛,而且在文檔編輯方面確實比我強很多,還有總結功能需求也很到位,缺點就是專業知識有點欠缺,很多功能有想法但是自己實踐起來還不夠能力,希望她以后可以更努力地學習專業知識
趙嘉楠:通過和毛忠慶同學的這次合作后,我發現他比以前有了很大的進步,他的優點就是很虛心,對于我提出的問題可以虛心解答并且很有耐心,而且他的專業知識比我強,所以我實現不了的功能他都可以實現,再有一點是他這個人不恥下問,遇到自己也不懂的問題會找別人問,在這點上我很不如他。我希望忠慶同學以后可以在和合作的時候多和自己的伙伴進行交流和溝通,這樣更有進與工作雙方的進展。
?
?時間預估PSP:
| PSP2.1 | Personal Software Process Stages | Time Senior Student(min) | Time(min) |
| Planning | 計劃 | 300 | 220 |
| · Estimate | 估計這個任務需要多少時間 | 3000 | 2600 |
| Development | 開發 | 5500 | 6000 |
| · Analysis | 需求分析?(包括學習新技術) | 110 | 100 |
| · Design Spec | 生成設計文檔 | 60 | 60 |
| · Design Review | 設計復審 | 60 | 60 |
| · Coding Standard | 代碼規范 | 160 | 200 |
| · Design | 具體設計 | 180 | 120 |
| · Coding | 具體編碼 | 240 | 180 |
| · Code Review | 代碼復審 | 240 | 210 |
| · Test | 測試(自我測試,修改代碼,提交修改) | 240 | 360 |
| Reporting | 報告 | 120 | 120 |
| · | 測試報告 | 180 | 120 |
| · | 計算工作量 | 20 | 10 |
| · | 并提出過程改進計劃 | 60 | 60 |
轉載于:https://www.cnblogs.com/ouwen0819/p/7701981.html
總結
以上是生活随笔為你收集整理的结对编程作业——四则运算GUI程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12.10 Nginx访问日志 12.1
- 下一篇: Spring学习笔记:Spring整合M