軟工五:四則運算

題目要求

本次作業要求兩個人合作完成,駕駛員和導航員角色自定,鼓勵大家在工作期間角色隨時互換,這里會布置兩個題目,請各組成員根據自己的愛好任選一題。

題目一:

我們在剛開始上課的時候介紹過一個小學四則運算自動生成程序的例子,請實現它,要求:

(1)能夠自動生成四則運算練習題

(2)可以定制題目數量

(3)用戶可以選擇運算符

(4)用戶設置最大數(如十以內、百以內等)

(5)用戶選擇是否有括號、是否有小數

(6)用戶選擇輸出方式(如輸出到文件、打印機等)

(7)最好能提供圖形用戶界面(根據自己能力選做,以完成上述功能為主)

題目二:

現有一新建辦公大廈,共有21層,共有四部電梯,所有電梯基本參數如下表所示,其使用規定如下:

(1)樓層號為0~20,其中0號為地下一層

(2)有樓層限制的電梯不在相應樓層停靠,如單雙層

(3)所有電梯采用統一按鈕控制

(4)請根據上述要求設計并實現一個電梯控制程序,如果有圖形顯示就更好了。

1348221-20180415122452845-1881441339.png

這次組隊作業我和我的隊友選擇的是題目一:小學四則運算自動生成。我擔任的角色是導航員,隊友徐善澤是駕駛員

具體過程

我們使用的軟件是eclipse,語言是java,在實現功能的過程中,可以實現隨機生成帶小數的四則運算,可以設置生成題目數等功能。

具體代碼請點這里

部分代碼:

1348221-20180417155515519-997518273.png

1348221-20180417160145697-1576217565.png

不帶小數的乘法運算:

1348221-20180417155835590-1806365505.png

帶小數的除法運算:

1348221-20180417160527327-1324056354.png

測試成功:

1348221-20180417161724607-1591685345.png

代碼審查表

java代碼審查檢查表

重要性

激活

級別

檢查項

總計

命名

重要

Y

20

命名規則是否與所采用的規范保持一致?

Y

20

是否遵循了最小長度最多信息原則?

重要

N

50

has/can/is前綴的函數是否返回布爾型?

注釋

重要

Y

10

注釋是否較清晰且必要?

重要

Y

10

復雜的分支流程是否已經被注釋?

N

10

距離較遠的}是否已經被注釋?

N

10

非通用變量是否全部被注釋?

重要

Y

50

函數是否已經有文檔注釋?(功能、輸入、返回及其他可選)

Y

10

特殊用法是否被注釋?

聲明、空白、縮進

Y

20

每行是否只聲明了一個變量?(特別是那些可能出錯的類型)

重要

Y

40

變量是否已經在定義的同時初始化?

重要

Y

40

類屬性是否都執行了初始化?

N

20

代碼段落是否被合適地以空行分隔?

Y

20

是否合理地使用了空格使程序更清晰?

Y

20

代碼行長度是否在要求之內?

Y

20

折行是否恰當?

語句/功能分布/規模

Y

20

包含復合語句的{}是否成對出現并符合規范?

Y

20

是否給單個的循環、條件語句也加了{}

Y

20

if/if-else/if-else if-else/do-while/switch-case語句的格式是否符合規范?

Y

40

單個變量是否只做單個用途?

重要

Y

20

單行是否只有單個功能?(不要使用;進行多行合并)

重要

Y

40

單個函數是否執行了單個功能并與其命名相符?

Y

20

操作符++和 操作符的應用是否復合規范?

規模

重要

Y

20

單個函數不超過規定行數?

重要

Y

100

縮進層數是否不超過規定?

重要

N

100

是否已經消除了所有警告?

重要

Y

40

常數變量是否聲明為final

重要

Y

80

對象使用前是否進行了檢查?

重要

N

80

局部對象變量使用后是否被復位為NULL

重要

N

70

對數組的訪問是否是安全的?(合法的index取值為[0, MAX_SIZE-1])。

重要

Y

20

是否確認沒有同名變量局部重復定義問題?

Y

20

程序中是否只使用了簡單的表達式?

重要

Y

20

是否已經用()使操作符優先級明確化?

重要

Y

20

所有判斷是否都使用了(常量==變量)的形式?

Y

80

是否消除了流程懸掛?

重要

N

80

是否每個if-else if-else語句都有最后一個else以確保處理了全集?

重要

N

80

是否每個switch-case語句都有最后一個default以確保處理了全集?

N

80

for循環是否都使用了包含下限不包含上限的形式?(k=0; k<MAX

重要

Y

40

XML標記書寫是否完整,字符串的拼寫是否正確?

N

40

對于流操作代碼的異常捕獲是否有finally操作以關閉流對象?

N

20

退出代碼段時是否對臨時對象做了釋放處理?

重要

N

40

對浮點數值的相等判斷是否是恰當的?(嚴禁使用==直接判斷)

可靠性(函數)

重要

Y

60

入口對象是否都被進行了判斷不為空?

重要

Y

60

入口數據的合法范圍是否都被進行了判斷?(尤其是數組)

重要

Y

20

是否對有異常拋出的方法都執行了try...catch保護?

重要

Y

80

是否函數的所有分支都有返回值?

重要

Y

50

int的返回值是否合理?(負值為失敗,非負值成功)

N

20

對于反復進行了int返回值判斷是否定義了函數來處理?

N

60

關鍵代碼是否做了捕獲異常處理?

重要

N

60

是否確保函數返回CORBA對象的任何一個屬性都不能為null?

重要

N

60

是否對方法返回值對象做了null檢查,該返回值定義時是否被初始化?

重要

N

60

是否對同步對象的遍歷訪問做了代碼同步?

重要

N

80

是否確認在對Map對象使用迭代遍歷過程中沒有做增減元素操作?

重要

N

60

線程處理函數循環內部是否有異常捕獲處理,防止線程拋出異常而退出?

N

20

原子操作代碼異常中斷,使用的相關外部變量是否恢復先前狀態?

重要

Y

100

函數對錯誤的處理是恰當的?

可維護性

重要

N

100

實現代碼中是否消除了直接常量?(用于計數起點的簡單常數例外)

Y

20

是否消除了導致結構模糊的連續賦值?(如a= (b=d+c )

N

20

是否每個return前都要有日志記錄?

N

20

是否有冗余判斷語句?(如:if (b) return true; else return false;

N

20

是否把方法中的重復代碼抽象成私有函數?

總結和評價

這次作業我非常感謝我的隊友徐善澤,他作為駕駛員完成了大部分的代碼量,實現了小學四則運算程序的生成,這次程序可以實現帶小數的加減乘除算法,可以自由選擇題目數目,可以判斷答案對錯,若答案錯誤可以給出正確答案以及正確率等功能,遺憾的是并沒有實現讓用戶選擇實現輸出方式以及圖形界面的功能。在二人合作的過程中,我對隊友的代碼風格更加了解,也一起找到了一些錯誤,改正以后,程序更加完整,實現的功能也逐漸增加,雖然有部分功能還未實現,但我們會繼續努力的。

能明顯地感覺得到這次作業比以前的作業難度要大,原因就是我們的代碼能力還是比較弱的,代碼量不夠。每次的軟件工程作業我都能發現自己很多的缺點,每次也都能通過作業意識到原來自己所掌握的東西還是遠遠不夠的,因此在完成作業的過程中,總能學到很多接觸到很多以前不會的東西,也對eclipse的使用更加熟練,對JAVA這門不是很熟悉的語言也更加了解,這是很開心的一件事。相對于枯燥的理論學習,實踐更能激發我的學習興趣,動手能力得到了大大的進步,至此,結對編程已經結束,期待下次的團隊作業。

最后,工作照:

1348221-20180417165031922-716123767.png

轉載于:https://www.cnblogs.com/chenlu7/p/8846622.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250498.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tomcat 配置Https

https://www.cnblogs.com/wanghaoyuhappy/p/5267702.html JDK1.8 keytool 生存證書 C:\keys\tomcat.keystore 1:證書生成 命令如下: keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -keystore C:/keys/tomcat.keytore -storepass 123456 keytool 使…

koa --- 使用koa-multer和element-ui組件上傳頭像

文件上傳 前端代碼 <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src"https://unpkg.com/element-ui/lib/index.js"></script> <linkrel"stylesheet"href"https://unpkg.co…

PKUSC2018訓練日程(4.18~5.30)

(總計:共66題) 4.18~4.25&#xff1a;19題 4.26~5.2&#xff1a;17題 5.3~5.9: 6題 5.10~5.16: 6題 5.17~5.23: 9題 5.24~5.30: 9題 4.18 [BZOJ3786]星系探索(偽ETT) [BZOJ4337][BJOI2015]樹的同構(樹的最小表示法) [BZOJ3551][ONTAK2010]Peaks(加強版)(Kruskal重構樹,主席樹) …

筆記:less的三種使用方法

直接在瀏覽器端使用 第一步&#xff0c;引入 .less 文件&#xff08;注意要將 rel 屬性設置為“stylesheet/less”&#xff09; <link rel"stylesheet/less" type"text/css" href"styles.less" /> 第二步&#xff0c;引入Less.js文件 <…

koa --- nunjucks在Koa中的使用、中間件的配置

Nunjucks在Koa中的應用 app.js const koa require(koa); const app new koa(); const router require(./router) const nunjucks require(koa-nunjuncks-2); app.use(nunjucks({ext: html, // 指定視圖文件默認后綴path: path.join(__dirname, views), // 指定視圖目錄…

2018福大軟工實踐第六次作業

目錄 NABCD分析引用N(Need&#xff0c;需求)&#xff1a;A(Approach&#xff0c;做法)&#xff1a;B(Benefit&#xff0c;好處)&#xff1a;C(Competitors&#xff0c;競爭)&#xff1a;D(Delivery&#xff0c;交付)&#xff1a;初期中期個人貢獻分評定原則評定細則本組現場答辯…

day32—CSS多列布局學習

轉行學開發&#xff0c;代碼100天——2018-04-17 關于多列布局&#xff0c;前期已經梳理過&#xff0c;今天的培訓課程學習中再次提及&#xff0c;趁此也做個總結和檢驗。 多列布局的介紹參考&#xff1a; day08—css布局解決方案之多列布局關于多列布局的類型和方法&#xff1…

JDBC 事物處理

JDBC 事物處理 ?事務&#xff1a;指構成單個邏輯工作單元的操作集合 ?事務處理&#xff1a;保證所有事務都作為一個工作單元來執行&#xff0c;即使出現了故障&#xff0c;都不能改變這種執行方式。當在一個事務中執行多個操作時&#xff0c;要么所有的事務都被提交(commit…

centos6上安裝mysql8.0版本

本博客是采用yum源的方式安裝&#xff0c;非常的方便和快捷。(redhat 與centos7 等操作系統都可以采用此方法&#xff0c;步驟大體一致) mysql官網地址: https://dev.mysql.com 開始安裝&#xff1a; 1.清理環境&#xff0c;查看有沒有之前安裝過的mysql記錄&#xff0c;清理…

koa --- 使用koa-multer上傳文件+elementUI

核心代碼 const upload require(koa-multer) ({dest: ./public/images}); router.post(/upload, upload.single(file), ctx>{console.log(file, ctx.req.file);console.log(body, ctx.req.body);ctx.body 上傳成功; })目錄結構如下 基本思路 1.通過瀏覽器訪問url: http:…

[bzoj4003][JLOI2015]城池攻占_左偏樹

城池攻占 bzoj-4003 JLOI-2015 題目大意&#xff1a;一顆n個節點的有根數&#xff0c;m個有初始戰斗力的騎士都站在節點上。每一個節點有一個standard&#xff0c;如果這個騎士的戰斗力超過了這個門檻&#xff0c;他就會根據城池的獎勵增加自己的戰斗力。具體地&#xff1a;每一…

Java Web Servlet

Java Web Servlet Servlet是在服務器上運行的小程序。一個Servlet就是一個Java類&#xff0c;并且可以通過“請求-響應”編程模型來訪問的這個駐留在服務器內存里的Servlet程序。 Servlet可完成以下功能&#xff1a; 讀取客戶端&#xff08;瀏覽器&#xff09;發送的顯式的數…

第二篇 python基礎知識總結:數據、運算符

引子 我們跟任何人交流&#xff0c;說的每一句都是都一些文字組成&#xff0c;包含名詞、動詞、語句、標點符號等&#xff0c;組成我們說普通話構成的基本要素。同理我們學習python語言也要明白這些基本要素&#xff0c;也就是我們常說的基本語法&#xff0c;這是我們必須掌握的…

【BZOJ1797】[AHOI2009]最小割(網絡流)

【BZOJ1797】[AHOI2009]最小割&#xff08;網絡流&#xff09; 題面 BZOJ洛谷 題解 最小割的判定問題&#xff0c;這里就當做記結論吧。&#xff08;源自\(lun\)的課件&#xff09; 我們先跑一遍最小割&#xff0c;求出殘量網絡。然后把所有還有流量的邊拿出來跑\(Tarjan\)縮\(…

koa --- 使用Sequelize連接mysql

Sequelize介紹 為了快捷開發,社區出現了一系列的ORM(Object Relational Mapping)類庫ORM的字面意思為對象關系映射,它提供了概念性的、易于理解的模型化數據的方法。通過ORM,可以降低操作數據庫的成本。開發者不需要通過編寫SQL腳本來操作數據庫,直接通過訪問對象的方式來查詢…

Java Web Jsp

Java Web Jsp JSP全稱Java Server Pages&#xff0c;是一種動態網頁開發技術。它使用JSP標簽在HTML網頁中插入Java代碼。標簽通常以<%開頭以%>結束。 JSP是一種Java servlet&#xff0c;主要用于實現Java web應用程序的用戶界面部分。網頁開發者們通過結合HTML代碼、XHT…

Android gravity和layout_gravity的區別

一、gravity和layout_gravity相同處 兩者都是設置對齊方式的屬性。內部的屬性值相同。 根據英文意思也能理解其中的意思。如center_horizontal表示在水平方向上的位置為中間。 二、gravity和layout_gravity的不同處 gravity是設置自身內部元素的對齊方式。比如一個TextView&…

koa --- mongoose連接mongoDB

使用Mongoose對MongoDB進行操作 const mongoose require(mongoose); mongoose.connect(mongodb://localhost/test,{ })Mongoose中的Schema 定義Schema categorySchema const categorySchema new mongoose.Schema({name:String,description: String,createdAt:{type: Date,…

Java Web 請求轉發與請求重定向

Java Web 請求轉發與請求重定向 請求轉發 服務器行為&#xff0c;即用戶向服務器發送了一次http請求&#xff0c;該請求可能會經過多個信息資源處理以后菜返回給用戶&#xff0c;各個信息資源使用請求轉發機制互相轉發請求&#xff0c;但是用戶是感覺不到請求轉發的。通過req…

05.RDD詳解

05.Spark--RDD詳解 RDD詳解--groupByKey--reduceByKey [MapPartitionRDD單詞統計] 單詞統計 import org.apache.spark.{SparkConf,SparkContext} object WordCountScala{def main(args:Array[String]):Unit{//創建spark配置對象val confnew SparkConf()conf.setAppName("W…