天天看點

2016學年第一學期軟體工程第二次作業

這是本學期第二次作業,屬于個人練習項目。

題目:編寫一個能對0--10之間的整數進行四則運算的“軟體”
      程式能接收使用者輸入的整數答案,并判斷對錯
      程式結束時,統計出答對、答錯的題目數量。
補充說明:0——10的整數是随機生成的
          使用者可以用鍵盤輸入來選擇四則運算中的一種,比如輸入1代表加法運算
          使用者用鍵盤輸入一個字元來結束程式的運作并顯示統計結果,比如輸入e程式結束并顯示統計結果
          程式設計語言不限制,指令行輸出和圖像界面輸出都可以。

要求:要有需求分析,具體設計思路,代碼實作,測試,書中PSP耗時分析,總結。
      以上内容都寫到部落格中,代碼也寫到部落格中,要求寫程式時要有螢幕截圖,最後把測試的界面也截圖發到部落格上,PSP表也截圖到部落格上。

打分說明:作業滿分10分,遲交的0分,不交作業和抄襲的-10。10分包括:把代碼送出到github(1分),需求分析(1.5分),具體設計思路(1.5分),代碼實作(1分),測試(1分),書中PSP耗時分析(1.5分),總結(1.5分),代碼是否規範(1分)

作業送出截止時間為10月6日23:00,做完後把你的部落格連結和github連結發的QQ群裡,另外也要給助教的qq發一下。

github送出教程:http://www.cnblogs.com/math/p/4633472.html

我會把每次作業的完成情況統計完發到我的部落格和QQ群裡,敬請關注!

思考題(1分):如果使用者要求處理的範圍是0——100,程式應該如何設計才能很輕松的應對擴充性。
附加題(3分):程式能處理使用者的錯誤輸入,比如使用者輸入一個小數或一個字元。

思考題和附加題都是加分題,做這兩題的可以獲得相應的加分。

作業樣例,我是用C語言寫的,僅供參考。有兩個檔案,一個是head.h,另一個是calculate.c
head.h的代碼如下:
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 int  Add(int *,int *);      //加法函數,實作加法功能
 5 int  Sub(int *,int *);      //
 6 int  Mul(int *,int *);      //
 7 int  Div(int *,int *);
 8 int  Calculate();           //計算函數,判斷是哪種計算并調用相關函數
 9 int RandNum(int max,int min);//生成随機數
10 void JudgeHint(int rightOrfault);//輸出判斷對錯
11
12 int Calculate()
13 {
14     int    right=0;     //統計做對多少道題
15     int    fault=0;     //統計做錯多少道題
16     char   type=' ';    //接收使用者要生成的運算類型
17     printf("請選擇要進行那種運算\n
18             輸入 + 号表示選擇加法\n
19             輸入 - 号表示選擇減法\n
20             輸入 * 号表示選擇乘法\n
21             輸入 / 号表示選擇除法\n
22             輸入 e 表示結束程式\n
23             ");
24     scanf("%d\n",&type);
25     while(type!='e')
26     {
27         scanf("%d\n",&type);
28         if(type=='+')
29         {
30             //把變量right和fault的位址傳遞給函數Add,&是取位址符
31             //指針其實就是位址
32             Add(&right,&fault);
33         }
34         else if(type=='-')
35         {
36             // to do sub
37         }
38         else if(type=='*')
39         {
40             // to do mul
41         }
42         else if(type=='/')
43         {
44             // to do div
45         }
46     }
47     printf("您共答對%d道題,答錯%d道題\n",right,fault);
48     return 0;
49 }
50
51
52 int Add(int *right,int *fault)//函數的參數是兩個指針,分别用來統計正确和錯誤的題數
53 {
54     int answer;
55     int a,b,sum;
56     a=RandNum(10,0);
57     b=RandNum(10,0);
58     sum=a+b;
59     printf("加法運算:%d + %d = ",a,b);
60     scanf("%d",&answer);
61     if(sum==answer)//回答正确,*right加一,否則*fault加一
62     {
63         //right是一個指向整數的指針參數,*right表示right指向的
64         //記憶體單元的值,在其他程式設計語言中指針也叫引用。
65         (*right)++;
66         JudgeHint(1);
67     }
68     else
69     {
70         (*fault)++;
71         JudgeHint(0);
72     }
73     return 0;
74 }
75
76 int RandNum(int max,int min)
77 {
78     int randNumber;
79     srand((unsigned)time(NULL));//産生随機種子
80     randNumber=rand()%(max-min+1)+min;//生成想要的随機數
81     return randNumber;
82 }
83
84 void JudgeHint(int rightOrfault)
85 {
86     if(rightOrfault==1)
87         printf("回答正确!\n");
88     else if(rightOrfault==0)
89         printf("回答錯誤!\n");
90 }

calculate.c的代碼如下:
 1 #include "head.h"
 2 int main(int argc,char* argv[])
 3 {
 4     Calculate();
 5     return 0;
 6 }
           

推薦一本書《UNIX程式設計藝術》,可以從你們圖書館借來看看。