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编程艺术》,可以从你们图书馆借来看看。

原文地址:https://www.cnblogs.com/gmailcs/p/4832433.html