作业要求:
https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10402
作业1
预习
阅读讲义( https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html )第二部分内容 2. 个人开发技术
- 软件开发流程不光指团队的流程, 软件团队是由个人组成的。在团队的大流程中, 是每一个具体的个人在做开发,测试,用户界面设计,管理,交流等工作。因此, 个人在软件团队中也有个人的流程。
软件开发的工作量和质量怎么衡量呢? PSP认为有下列4 个因素: - 项目/任务有多大?
说明项目的大小, 一般用代码行数 (Line Of Code, LOC) 来表示;也可以用功能点 (function point). 一个重要的指标是: 你在实际产品中写了多少代码, 不包括空行/注释行/单字符行 . - 花了多少时间?
可以用小时, 天,月,年来表示。一组人所花费的时间可以用 (人数*时间) 来表示,例如某项目花费了10个人·月。 - 质量如何?
可以用缺陷的数量来除以项目的大小。 例如 5 bugs / KLOC, 意味着每千行程序有5个缺陷。 - 是否按时交付?
稳定即可
两种效能分析方法:抽样(Sampling), 代码注入(Instrumentation)
单元测试:
- 单元测试应该在最低的功能/参数上验证程序的正确性。
- 单元测试必须由最熟悉代码的人(程序的作者)来写。
- 单元测试过后,机器状态保持不变。
- 单元测试要快(一个测试运行时间是几秒钟,而不是几分钟)。
- 单元测试应该产生可重复、一致的结果
- 单元测试应该覆盖所有代码路径,包括错误处理路径,为了保证单元测试的代码覆盖率,单元测试必须测试公开的和私有的函数/方法。
- 单元测试应该集成到自动测试的框架中
- 单元测试必须和产品代码一起保存和维护。
个人程序
(本作业内容来源于网址:https://www.cnblogs.com/xinz/p/7417960.html,
与 https://www.cnblogs.com/jiel/p/4810756.html )
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。 可以使用C,C++,或者C#等语言实现。
要求
分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
对于三、四、五年级需要支持括号与多个运算符
程序支持判断对错及累计得分与时间
一次可以出100道题目,而且不能重复(比如2+3 与 3+2 算重复的)
充分发挥想象增加满足小学生数学检测需要的功能
编程思路:
- 四则运算.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度 - 解决思路:switch进行变量控制,年纪用+,-,,/,运算个数来分类。一年级只有+,-,二年级三个数进行+,-,三年级,/,四年级三个数运算,五年级小数运算。()加入其中。
要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级 - 解决思路,易0-100以内运算,中,100-1000以内运算,难,1000-10000以上运算
程序支持判断对错及累计得分与时间 - 解决思路:对错用count计数,最终算出正确率。时间用clock函数计算
一次可以出100道题目,而且不能重复(比如2 + 3 与 3 + 2 算重复的) - 采用不重复随机算法,尽量降低重复。
充分发挥想象增加满足小学生数学检测需要的功能 - 想法:支持循环测验。
运行结果:
作业2
git学习与码云代码托管平台gitee
- 阅读网址如下关于git的使用https://www.liaoxuefeng.com/wiki/896043488029600或https://gitee.com/help/categories/43
- 通过之前已经注册的码云账号,学会简单的使用将作业1所写代码托管到gitee平台上个人仓库
在博客园给出作业并包括所写的代码,同时给出托管于gitee上的链接
程序下载非常的慢,我就直接用网页端提交了,发现效果挺好。
https://gitee.com/TG1999/four_arithmetic_operations/blob/master/四则运算/四则运算.cpp
代码:
// 四则运算.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
//解决思路:switch进行变量控制,年纪用+,-,*,/,运算个数来分类。一年级只有+,-,二年级三个数进行+,-,三年级*,/,四年级三个数运算,五年级小数运算。()加入其中。
//要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
//解决思路,易0-100以内运算,中,100-1000以内运算,难,1000-10000以上运算
//程序支持判断对错及累计得分与时间
//解决思路:对错用count计数,最终算出正确率。时间用clock函数计算
//一次可以出100道题目,而且不能重复(比如2 + 3 与 3 + 2 算重复的)
//采用不重复随机算法,尽量降低重复。
//充分发挥想象增加满足小学生数学检测需要的功能
//想法:支持循环测验。
#include <iostream>
#include<cstdlib>
#include<time.h>
#define CLOCKS_PER_SEC ((clock_t)1000)
using namespace std;
int Difficulty(int difficulty)
{
int N=0;
switch (difficulty)
{
case 1:
N = 100;
break;
case 2:
N = 1000;
break;
case 3:
N = 10000;
break;
default:
cout << "请输入正确的难度。" << endl;
break;
}
return N;
}
void Grade(int grade,int numberExercise,int N) {
double a1, a2, a3,c,k, correctrate;
double duration;//做题花费的时间
clock_t start, finish;
int mode, count = 0;
switch (grade)
{
case 1: //+,-,2
start = clock();
srand((unsigned)time(NULL));
for (int i = 0; i < numberExercise; i++) {
a1 = rand() % N;
a2 = rand() % N;
mode = rand() % 2;
switch (mode) //确定运算符
{
case 0:
cout << a1<< "+" << a2 << "=" << endl;
c = a1+a2;
break;
case 1:
c = a1-a2;
cout << a1 << "-" << a2<< "=" << endl;
break;
}
cout << "请输入答案:";
cin >> k;
if (k == c) {
cout << "恭喜你答对了,请再接再厉" << endl;
count = count + 1;
}
else if (k != c) {
cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
}
}
correctrate = (count*100) / numberExercise;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" <<" 一共耗时(s):"<<duration<<endl;
break;
case 2://+-,3
start = clock();
srand((unsigned)time(NULL));
for (int i = 0; i < numberExercise; i++) {
a1 = rand() % N;
a2 = rand() % N;
a3 = rand() % (2*N)-N;
mode = rand() % 2;
switch (mode) //确定运算符
{
case 0:
cout << a1 << "+" << a2 <<"+("<<a3<< ")=" << endl;
c = a1+a2+a3;
break;
case 1:
c = a1 - a2+a3;
cout << a1 << "-" << a2 <<"+("<<a3<< ")=" << endl;
break;
}
cout << "请输入答案:";
cin >> k;
if (k == c) {
cout << "恭喜你答对了,请再接再厉" << endl;
count = count + 1;
}
else if (k != c) {
cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
}
}
correctrate = (count * 100) / numberExercise;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << " 一共耗时(s):" << duration << endl;
break;
case 3://*,/,2
start = clock();
srand((unsigned)time(NULL));
for (int i = 0; i < numberExercise; i++) {
a1 = rand() % N;
a2 = rand() % N;
mode = rand() % 4;
switch (mode) //确定运算符
{
case 0:
cout << a1 << "+" << a2 << "=" << endl;
c = a1 + a2;
break;
case 1:
c = a1 - a2;
cout << a1 << "-" << a2 << "=" << endl;
break;
case 2:
c = a1 * a2;
cout << a1 << "*" << a2 << "=" << endl;
break;
case 3:
c = a1 / a2;
cout << a1 << "/" << a2 << "=" << endl;
break;
}
cout << "请输入答案:";
cin >> k;
if (k == c) {
cout << "恭喜你答对了,请再接再厉" << endl;
count = count + 1;
}
else if (k != c) {
cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
}
}
correctrate = (count * 100) / numberExercise;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << " 一共耗时(s):" << duration << endl;
break;
case 4://+,-,*,/,3
start = clock();
srand((unsigned)time(NULL));
for (int i = 0; i < numberExercise; i++) {
a1 = rand() % N;
a2 = rand() % N;
a3 = rand() % (2 * N) - N;
mode = rand() % 4;
switch (mode) //确定运算符
{
case 0:
cout << a1 << "+(" << a2 <<"*("<<a3<<"))=" << endl;
c = a1 + a2*a3;
break;
case 1:
c = a1 - a2/a3;
cout << a1 << "-(" << a2 << "/(" << a3 << "))=" << endl;
break;
case 2:
c = a1 * (a2-a3);
cout << a1 << "*(" << a2 << "-(" << a3 << "))=" << endl;
break;
case 3:
c = a1 / (a2+a3);
cout << a1 << "/(" << a2 << "+(" << a3 << "))=" << endl;
break;
}
cout << "请输入答案:";
cin >> k;
if (k == c) {
cout << "恭喜你答对了,请再接再厉" << endl;
count = count + 1;
}
else if (k != c) {
cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
}
}
correctrate = (count * 100) / numberExercise;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << " 一共耗时(s):" << duration << endl;
break;
case 5://小数运算
start = clock();
srand((unsigned)time(NULL));
for (int i = 0; i < numberExercise; i++) {
a1 = rand() % N+ rand() / double(RAND_MAX);//加上0-1的小数,即可。
a2 = rand() % N+ rand() / double(RAND_MAX);
a3 = rand() % (2 * N) - N+ rand() / double(RAND_MAX);
mode = rand() % 4;
switch (mode) //确定运算符
{
case 0:
cout << a1 << "+(" << a2 << "*(" << a3 << "))=" << endl;
c = a1 + a2 * a3;
break;
case 1:
c = a1 - a2 / a3;
cout << a1 << "-(" << a2 << "/(" << a3 << "))=" << endl;
break;
case 2:
c = a1 * (a2 - a3);
cout << a1 << "*(" << a2 << "-(" << a3 << "))=" << endl;
break;
case 3:
c = a1 / (a2 + a3);
cout << a1 << "/(" << a2 << "+(" << a3 << "))=" << endl;
break;
}
cout << "请输入答案:";
cin >> k;
if (k == c) {
cout << "恭喜你答对了,请再接再厉" << endl;
count = count + 1;
}
else if (k != c) {
cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
}
}
correctrate = (count * 100) / numberExercise;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << " 一共耗时(s):" << duration << endl;
break;
default:
cout << "请输入正确的年级。" << endl;
break;
}
}
int main()
{
int T;
do {
int grade, numberExercise, difficulty, N = 0;
cout << "请选择您的当前年级:1:一年级,2:二年级,3:三年级,4:四年级,5:五年级。" << endl;
cin >> grade;
cout << "请选择难度:1:简单,2:普通,3:困难。" << endl;
cin >> difficulty;
cout << "请输入你要做的题数:" << endl;
cin >> numberExercise;
N = Difficulty(difficulty);
Grade(grade, numberExercise, N);
cout << "如果您想继续做题,请输入1,退出系统请输入其他任意数" << endl;
cin >> T;
} while (T==1);
system("pause");
return 0;
}