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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

软件工程——结对编程第二次作业

發(fā)布時間:2023/11/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件工程——结对编程第二次作业 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 1. 題目及要求
  • 2. 功能的設(shè)計
  • 3. GUI(圖形用戶界面)的設(shè)計
  • 4. 容錯機制的設(shè)計
    • 4.1 選擇運算符的容錯處理
    • 4.2 最大值和題目數(shù)輸入的容錯處理
    • 4.3 打開文件容錯處理
    • 4.4 打印的容錯處理
  • 5. 程序的運行效果
  • 6. 對領(lǐng)航員的評價
  • 7. 總結(jié)

本次作業(yè)所開發(fā)的程序已上傳至Coding.net中

結(jié)對伙伴——王宗波

我在本次的作業(yè)中擔任“駕駛員”的角色,王宗波同學擔任“領(lǐng)航員”的角色

1. 題目及要求

在這里我們選擇了“小學四則運算”自動生成的題目,其具體要求如下:

  • 能夠自動生成四則運算練習題
  • 可以定制題目數(shù)量
  • 用戶可以選擇運算符
  • 用戶設(shè)置最大數(shù)(如十以內(nèi)、百以內(nèi)等)
  • 用戶選擇是否有括號、是否有小數(shù)
  • 用戶選擇輸出方式(如輸出到文件、打印機等)
  • 最好能提供圖形用戶界面(根據(jù)自己能力選做,以完成上述功能為主)

2. 功能的設(shè)計

考慮到題目要求、開發(fā)難度和實際中的需求,我們決定開發(fā)的程序應具有如下功能:

  • 自動生成四則(混合)運算題目
  • 可以定制題目數(shù)量
  • 可以定制最大值
  • 可以定制四則運算符
  • 可以切換小數(shù)/整數(shù)運算
  • 可以添加括號改變運算順序
  • 可以輸出到文件,并能讓用戶方便的直接打開生成的文件
  • 可以調(diào)用系統(tǒng)接口進行打印的設(shè)置、頁面的設(shè)置,進行打印預覽和打印
  • 提供簡單的圖形化界面
  • 能對用戶的非法操作進行容錯處理

3. GUI(圖形用戶界面)的設(shè)計

我們選用了C#語言,開發(fā)Windows窗體應用程序來提供圖形用戶界面。
所設(shè)計的GUI如圖所示

其中左側(cè)的Rich Text Box(富文本文本框)用來顯示自動生成的題目。

上面的三個按鈕分別實現(xiàn)自動生成題目、(若有則)打開文件和清空富文本框的功能。

左上角的通過Menu Strip控件實現(xiàn)的菜單欄提供了將當前生成的題目進行打印,和進行打印前的設(shè)置及打印預覽功能,如下圖所示。

右側(cè)的Check Box則提供了選擇運算符、括號和小數(shù),以及是否輸出到文件的選項。

用戶還可通過右側(cè)的兩個Text Box(文本框)輸入題目的最大值和題目數(shù)。

GUI的設(shè)計代碼由Visual Studio 2017完成。

4. 容錯機制的設(shè)計

為了提高程序的Robustness,我們對用戶的非法操作進行了容錯處理。

4.1 選擇運算符的容錯處理

用戶在點擊“出題”按鈕前,必須至少從“加”、“減”、“乘”、“除”四個運算符中選擇一個,才能開始。

當用戶沒有選擇運算符,直接進行出題操作是,進行如下的容錯處理

if (Symbols.Count == 0) {MessageBox.Show("加、減、乘、除運算符至少需要選擇一個!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);return; }

其效果如圖所示

4.2 最大值和題目數(shù)輸入的容錯處理

用戶在開始出題前,必須首先輸入最大值和題目數(shù)。

當用戶沒有輸入而直接點擊“出題”按鈕時,進行如下的容錯處理

string max = tbxMax.Text; string num = tbxNum.Text; if (tbxMax.Text == String.Empty) {MessageBox.Show("最大值不能為空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);return; } if (tbxNum.Text == String.Empty) {MessageBox.Show("題目數(shù)不能為空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);return; }

其效果如圖所示

4.3 打開文件容錯處理

用戶在點擊“打開文件”按鈕前,必須已經(jīng)有生成的文件

當用戶未選擇生成文件,又直接點擊了“打開文件”按鈕時,進行如下的容錯處理

if(cbxFile.Checked==false) {MessageBox.Show("未生成文件,無法打開!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);return; }

其效果如圖所示

4.4 打印的容錯處理

在嘗試打印自動生成的題目時若出錯,則進行如下的容錯處理

try {printPreviewDialog.ShowDialog(); } catch(Exception excep) {MessageBox.Show(excep.Message, "打印出錯", MessageBoxButtons.OK, MessageBoxIcon.Error); }

5. 程序的運行效果

為了全面的演示程序的運行效果,我們選擇所有的運算符,帶有小數(shù)和括號,并且輸出到文件來進行演示。

點擊“出題”按鈕,成功生成題目,并且導出到文件

點擊“打開生成的文件”按鈕,打開文件

打開“打印”菜單,點擊“打印設(shè)置”選項,進行打印前的設(shè)置

點擊“頁面設(shè)置”選項,進行頁面格式的設(shè)置

點擊“打印預覽”選項,進行打印預覽

點擊“打印”選項,進行打印
這里我們采用了Adobe公司提供的PDF虛擬打印機,可以看到如下的效果

6. 對領(lǐng)航員的評價

本次我們這個項目的的領(lǐng)航員是王宗波同學。

在進行分析設(shè)計思路和用戶需求時,領(lǐng)航員能夠?qū)φw開發(fā)思路有較清晰的統(tǒng)籌規(guī)劃,結(jié)合實際提出了具有遠見且實用的需求分析,并以此為基礎(chǔ),和我共同制定了清晰的包含了需要開發(fā)的功能的開發(fā)計劃。

在開始編程前,領(lǐng)航員能夠及時地審閱了我所大體設(shè)計地圖形化用戶界面,并提出了有針對性地建議有,與我進行了討論。

在進行程序設(shè)計的時,領(lǐng)航員能夠為程序代碼地書寫規(guī)范,程序中各功能的開發(fā)順序和統(tǒng)籌兼顧實時的提出建議,為代碼及時、準確的完成提供了幫助。

在編程結(jié)束后,能設(shè)計單元測試,及時發(fā)現(xiàn)和提出在開發(fā)時考慮不得當?shù)牡胤胶托┰S小錯誤。

美中不足的是,雖然領(lǐng)航員在結(jié)對編程時能及時地發(fā)現(xiàn)大部分的問題,但是代碼中仍然有一些小問題是在編程結(jié)束后才發(fā)現(xiàn)并解決的。這可能是因為在進行開發(fā)時,駕駛員和領(lǐng)航員兩個人的思路無法保持同步造成的。

總的來說,這次的結(jié)對編程,領(lǐng)航員在大多數(shù)術(shù)事件,都能正確、及時的完成領(lǐng)航員的職責。

結(jié)對編程時領(lǐng)航員和駕駛員的工作照片如圖所示。

7. 總結(jié)

本次的作業(yè)要求的題目,從總體上來說雖然有一定的難度,但是并不復雜。

這次作業(yè)是我們第一次嘗試進行具有圖形用戶界面的程序的設(shè)計,由于之前的學習和編程經(jīng)歷,我們主要進行的都是C和C ++的控制臺應用的開發(fā)與設(shè)計,所以這次在嘗試開發(fā)圖形化用戶界面時,走了不少彎路。為了設(shè)計圖形化用戶界面,我們考慮了多種方案,比如使用C ++進行UWP應用的開發(fā),使用Java繼續(xù)寧開發(fā),使用C #開發(fā)Windows窗體應用程序等……

在考慮到時間限制、學習難度和開發(fā)難度等條件下,我們最終決定,學習并使用C #進行Windows窗體應用程序的開發(fā)。由于C #和C ++在許多地方一脈相承,學習的過程總體來說還算順利,尤其是語法方面,聯(lián)系C ++的語法,認清C #和C ++在諸如數(shù)組之類的地方的區(qū)別,掌握起來十分容易。但在窗體的設(shè)計和開發(fā)方面,由于涉及到的控件較多,而他們的方法又不盡相同,學習起來需要一定的時間和精力。

在編程的過程中,為了增加代碼的可讀性和遵循規(guī)范化的開發(fā)流程,我們有意識地對窗體的控件,控件的事件和變量名等使用了匈牙利命名法。在換行,函數(shù)的設(shè)計和命名,循環(huán)和判斷體的設(shè)計中也遵循了一定的規(guī)則。

第一次開發(fā)圖形化用戶界面,讓我們有機會接觸到比之前所學的課程知識更接近于現(xiàn)代化商業(yè)軟件開發(fā)流程和的內(nèi)容。更讓我們體會到了在現(xiàn)代軟件設(shè)計開發(fā)中,對圖形化界面美觀度,對用戶的需求等方面的考慮的重要性。

在從零開始自學了一門程序設(shè)計語言,并編寫出了可以運行的具有圖形用戶界面的程序后,也帶給了我們成就感,能夠鼓勵我們繼續(xù)在軟件開發(fā)的領(lǐng)域繼續(xù)學習探索。

但是這次的程序設(shè)計也有不完善的地方。

最開始考慮到的可以讓用戶選擇是否顯示答案的功能,由于在生成題目時,我們將數(shù)字和運算符以及括號全部轉(zhuǎn)換成字符串的格式顯示,所以如果要顯示答案,就要進行字符串的匹配、轉(zhuǎn)換、找到正確的運算順序并計算等等一系列的功能,受限于本次的開發(fā)時間,我們沒有能夠完成這一功能的設(shè)計和開發(fā)。

另外我們在構(gòu)思設(shè)計的初期,還考慮到了能讓用戶填寫某一特定問題的答案,并進行批改,還可以讓用戶手動切換當前題目的功能。但由于我們采用了邊生成邊顯示的生成題目方式,除了窗體里的富文本框以外,并沒有設(shè)計可以存儲已經(jīng)生成的題目的數(shù)據(jù)結(jié)構(gòu),所以如果要實現(xiàn)此功能,還是需要對文本進行遍歷、匹配、識別、判斷運算順序和計算,考慮到時間因素我們也沒有完成這項功能。

雖然代碼仍然存在這兩方面的問題,但是我們在源代碼中預留了實現(xiàn)這兩個功能的函數(shù)位置,在本次作業(yè)后,我們?nèi)匀粫視r間嘗試完善這個項目。

總體來說,完成這次作業(yè),讓我們掌握了一門全新的程序設(shè)計語言,學習了GUI的設(shè)計與開發(fā),認識并親身體會了結(jié)對編程的流程,收獲頗豐。

轉(zhuǎn)載于:https://www.cnblogs.com/martinzhang98/p/10795247.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的软件工程——结对编程第二次作业的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。