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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

第一次软件工程作业(改进版)

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一次软件工程作业(改进版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1Github項目地址:https://github.com/HardenMVB/3.28

2PSP

PSP2.1

Personal Software Process Stages

預估耗時(分鐘)

實際耗時(分鐘)

Planning

計劃

60

90

· Estimate

· 估計這個任務需要多少時間

60

90

Development

開發

1650

2050

· Analysis

· 需求分析 (包括學習新技術)

200

300

· Design Spec

· 生成設計文檔

50

60

· Design Review

· 設計復審 (和同事審核設計文檔)

20

30

· Coding Standard

· 代碼規范 (為目前的開發制定合適的規范)

20

30

· Design

· 具體設計

60

50

· Coding

· 具體編碼

1200

1500

· Code Review

· 代碼復審

60

50

· Test

· 測試(自我測試,修改代碼,提交修改)

40

30

Reporting

報告

90

60

· Test Report

· 測試報告

50

10

· Size Measurement

· 計算工作量

20

20

· Postmortem & Process Improvement Plan

· 事后總結, 并提出過程改進計劃

20

30

合計

?

1800

2200

?

3、解題思路

???拿到題目后,先想它能實現哪些功能,再想代碼能分成幾個部分實現,分層次處理。本題中基礎功能就是整數的四則運算,非負數,接著就是加入真分數的部分。

???這兩個功能完成后就可以考慮一些其他功能,比如如果出現假分數,如何轉化成真分數,如何約分,以及判斷題目有無重復等等。

4、設計實現

? ?先建立命令控制模塊,可以控制輸入的題目數量以及數值范圍。再創建一個函數,用來生成隨機數與運算符(+ , - , × , ÷ ),再設計一個函數用來將假分數轉換為真分數。接著生成表達式,進而生成題目和對應的答案,以及查找有無重復。

? ?最后將題目及答案寫入文件中,結果會在文件中顯示出來。

5代碼說明

1、命令行控制模塊

def get_Parameter():#命令行控制模塊
parser = argparse.ArgumentParser()parser.add_argument('-n', help='設定題目數量',type=int)parser.add_argument('-r', help='設定數值范圍',type=int)return parser.parse_args()

?

2、生成隨機數和運算符

def get_num_sym(i,r):#獲取數值列表和符號列表
nlist=[]            #數值列表
slist=[]            #符號列表
kh=0                #判斷怎么加括號
jian=0                 #判斷是否是減數運算for m in range(i+1):         #根據i的值遍歷輸出數值列表
nlist.append(Fraction(random.randint(1, r), random.randint(1, r))) for x in range(i):sy=random.choice(['+','-','×','÷'])if sy=='+'or sy=='-':kh +=10**(i-x-1)else :kh += 2 * (10 ** (i - x - 1))slist.append(sy)if sy=='-':l=1return nlist,slist,kh,i,jian

?

3、分數轉換及運算

def calculate(a,b,s):#計算單元,a,b是數,s是符號
ans=0if s=='+':        #加法運算
ans=a+belif s=='-':      #減法運算
a,b=max(a,b),min(a,b)     #防止結果為負數
ans=a-belif s=='×':      #乘法運算
ans=a*belse:ans=a/b      #除法運算return ans

?

4、生成題目及答案

def gett(n,r):         #用于生成題目和答案列表
E,A,E1,E2=[],[],[],[]global j,kx=1while x<n+1:       #循環生成題目和答案列表
i=random.randint(1, 3)       #隨機獲取符號數目
num,slist,kh,i,jian=get_num_sym(i,r)num1=numlegal = Trueif jian==1:         #用于防止減法運算出現負數          if  num[0]<num[1]:num1[0],num1[1]=num[1],num[0]if i>=2 and calculate(num[0],num[1],slist[0])<num[2]:num1[0],num1[1],num1[2]=num[2],num[0],num[1]j=1if i>=3 and calculate(calculate(num[0],num[1],slist[0]),num[2],slist[1])<num[3]:num1[0],num1[1],num1[2],num1[3]=num[3],num[0],num[1],num[2]k=1       ans=num1[0]for y in range(i):cal=calculate(ans,num[y+1],slist[y])if cal>=0:ans=calelse:legal=Falsebreakif legal:              #判斷算式是否重復try:num=A.index(ans) #第一個答案的索引except ValueError as e:     #可以寫入
A.append(ans)E1.append(slist)E2.append(num1)E.append('%d. %s'%(x,writet(slist,num1,kh)))x+=1else:passreturn E,A

?

5、寫入文件

def savet(fname, d):#fname為寫入文件的路徑,d為要寫入的數據列表
file = open(fname,'a')file.seek(0)file.truncate() #清空for i in range(len(d)):#循環寫入文件fname
s = str(d[i]).replace('[','').replace(']','')s = s.replace("'",'').replace(',','') +'\n'file.write(s)file.close()print('%s文件已保存'%fname)

?

6、main函數

def main():#主函數
args = get_Parameter()if args.n:n=args.nprint('共生成%d道題目'%n)if args.r:r=args.rprint('均為%d以內的四則運算'%r)E, A=gett(n,r)for x in range(n):#循環生成答案列表
A[x]='%d. %s'%(x+1,fens(A[x]))savet('Exercises.txt',E)savet('Answers.txt',A)end = time.clock()print('運行時間: %s '%(end-start))if __name__ == '__main__':main()

6、測試運行

7、效能分析

8、改進

?程序一開始出現多元式子時,只計算第一個和最后一個的結果,于是我改進了程序,使得能計算出每個數的值。

此程序中我沒有使用循環將出現負數結果的式子刪除,而是簡單的把此式子的被減數與減數交換,使之計算出正值。

9、收獲

? 在這次實踐中,我體會到了軟件工程的不易。想要一個人真正做好一個項目是要花費大量時間的,想要一周完美的寫好這個項目有點困難,還是有很多漏洞沒有處理;做出的程序也不完整,有很多功能沒有實現。

這也體現出了團隊的重要性,一方面會有人監督,幫你找出錯誤,另一方面分工合作,花費的時間也會減少。不過我還是從這次項目中學到了很多技巧,希望下一次的項目可以完成的更好。

轉載于:https://www.cnblogs.com/HardenMVP/p/10615157.html

總結

以上是生活随笔為你收集整理的第一次软件工程作业(改进版)的全部內容,希望文章能夠幫你解決所遇到的問題。

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