日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

结对编程作业——四则运算GUI程序

發布時間:2025/5/22 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结对编程作业——四则运算GUI程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

毛忠慶 201421122088

趙嘉楠 201421122065

源代碼存放位置:https://gitee.com/ouwen0819/SiZeYunSuan.git

題目描述

  • 使用 -n 參數控制生成題目的個數
  • 使用 -r 參數控制題目中數值(自然數、真分數和真分數分母)的范圍
  • 生成的題目中如果存在形如e1?÷ e2的子表達式,那么其結果應是真分數。
  • 每道題目中出現的運算符個數不超過3個。
  • 程序一次運行生成的題目不能重復,即任何兩道題目不能通過有限次交換+和×左右的算術表達式變換為同一道題目。例如,23 + 45 = 和45 + 23 = 是重復的題目,6 × 8 = 和8 × 6 = 也是重復的題目。3+(2+1)和1+2+3這兩個題目是重復的,由于+是左結合的,1+2+3等價于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重復的兩道題,因為1+2+3等價于(1+2)+3,而3+2+1等價于(3+2)+1,它們之間不能通過有限次交換變成同一個題目。
  • 在生成題目的同時,計算出所有題目的答案,并存入執行程序的當前目錄下的Answers.txt文件。
  • 程序應能支持一萬道題目的生成。
  • 程序支持對給定的題目文件和答案文件,判定答案中的對錯并進行數量統計,并會輸出所有題目中重復的題目。
  • 記錄用戶的對錯總數,程序退出再啟動的時候,能把以前的對錯數量保存并在此基礎上增量計算(此功能可以保留數據,便于用戶對于自己上一次的計算結果進行了解)
  • 有計時功能,能顯示用戶開始答題后的消耗時間(增加用戶答題的緊張感)
  • 分析

    ?????? 通過上述對題目的簡要描述,可以得出此次作業要求增加了兩個新的功能

    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類中,在用戶已經輸入題目數目和答題數值范圍后,點擊確認答題的同時計時器開始運行,在用戶點擊提交的時候計時器會顯示其每道題耗時多久。

    核心代碼展示

  • 1.??? WriteReader
  • 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;

    ???? }

    }

  • 2.??? 計時功能代碼
  • 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);

    ???????? }

    程序運行截圖

    ?

    小結感受

  • 1.??? 結對編程真的能帶來1+1>2的效果嗎?
  • 對我們來說,結對編程確實有很大的幫助,因為這樣可以彌補雙方的不足,同時可以增強雙方拿手的環節,比如說毛忠慶在代碼編程方面比我強很多,所以我們這次就以他的實驗一為基礎進行了修改與改良,而我作為一個女孩子,可能心思比男孩子更細膩一些,所以容易看出代碼中的不足與bug,這次實驗中毛忠慶做了主要的工作,我就是在一旁輔助他完成作業。

  • 2.??? 采用漢堡包的方法指出對方的優點和不足
  • 毛忠慶:嘉楠同學優點是比較虛心,怎么說都不生氣,讓干嘛干嘛,而且在文檔編輯方面確實比我強很多,還有總結功能需求也很到位,缺點就是專業知識有點欠缺,很多功能有想法但是自己實踐起來還不夠能力,希望她以后可以更努力地學習專業知識

    趙嘉楠:通過和毛忠慶同學的這次合作后,我發現他比以前有了很大的進步,他的優點就是很虛心,對于我提出的問題可以虛心解答并且很有耐心,而且他的專業知識比我強,所以我實現不了的功能他都可以實現,再有一點是他這個人不恥下問,遇到自己也不懂的問題會找別人問,在這點上我很不如他。我希望忠慶同學以后可以在和合作的時候多和自己的伙伴進行交流和溝通,這樣更有進與工作雙方的進展。

    ?

    ?時間預估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程序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。