计算与软件工程作业二

计算与软件工程第二次作业

第二次作业链接

软件工程包括了开发,运营, 维护软件的过程中有很多技术, 做法, 习惯, 和思想。
软件工程把这些相关的技术和过程统一到一个体系中, 叫 “软件开发流程”,软件开发流程的目的是为了提高软件开发, 运营, 维护的效率,以及用户满意度, 可靠性,和软件的可维护性。

作业1

个人开发技术预习

Individual Contributor (IC)在团队中的流程

• 理解问题或任务
• 提出多种解决办法并估计工作量
• 其中包括寻找以前的解决方案,因为很多工作是重复性的 – 例如实现某些类似的web页面。
• 与相关角色交流解决问题的提案, 决定最终方案
• 执行, 把想法变成实际中能工作的代码
• 修复缺陷, 对结果负责

软件工程师的成长

• 知识: 对具体技术的掌握, 动手能力
• 经验: 对问题领域的知识和经验的积累 (例如: 对于医疗行业的了解, 对于金融行业的了解)。
• 通用的软件设计思想, 软件工程思想的提高
• 职业技能 (区别于技术技能)

PSP 各个阶段

• 计划: 明确需求和其他因素,估计以下的各个任务需要多少时间
• 开发 (包括下面 8 项子任务) 需求分析 (包括学习新技术、新工具的时间)

• 生成设计文档 (整体框架的设计,各模块的接口,用时序图,快速原型等方法)
• 设计复审 (和同事审核设计文档,或者自己复审)
• 代码规范 (为目前的开发制定或选择合适的规范)
• 具体设计(用伪代码,流程图等方法来设计具体模块)
• 具体编码
• 代码复审
• 测试(自我测试,修改代码,提交修改)
• 报告

测试报告(发现了多少bug,修复了多少)
计算工作量 (多少行代码,多少次签入,多少测试用例,其他工作量)
事后总结, 并提出改进计划 (包括写文档、博客的时间)

软件开发的工作量和质量的衡量指标

• 项目/任务有多大?
• 花了多少时间?
• 质量如何?
• 是否按时交付?

PSP的特点:

• 不局限于某一种软件技术 (如编程语言), 而是着眼于软件开发的流程, 这样不同应用的工程师可以互相比较。
• 不依赖于考试, 而主要靠工程师自己收集数据, 然后统计提高。
• 在小型,初创的团队中, 高质量的项目需求很难找到,这意味着给程序员的输入质量不高,在这种情况下, 程序员的输出 (程序/软件) 往往质量不高, 然而这并不能全部由程序员负责。

程序完成

要求

• 分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
• 要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
• 对于三、四、五年级需要支持括号与多个运算符
• 程序支持判断对错及累计得分与时间
• 一次可以出100道题目,而且不能重复(比如2+3 与 3+2 算重复的)
• 充分发挥想象增加满足小学生数学检测需要的功能

运行展示

图片名称 图片名称

代码在这里

#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 = 50;
		break;
	case 2:
		N = 100;
		break;
	case 3:
		N = 1000;
		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;
}

作业二

使用git代码托管仓库教程

个人仓库链接

上传截图

图片名称 ##遇到的问题及解决办法 ####在连接git与码云时出现了较多问题总结如下 1、[编程环境搭建,这里是visual studio 2017安装链接及教程](https://www.cnblogs.com/SivilTaram/p/software_pretraining_cpp.html) >代码主要是参照网上写的,自己修改了一小部分。没有出现大的问题 >

2、git初始时需要配置本地的 Git 用户信息

git config --global user.name "你的名字或昵称" 注意这里填是码云个人空间地址,不是昵称

3、配置完公钥后再git bash中查看是否配置成功时,出现Could not resolve hostname github.com: Name or service not known.(无法解析主机错误)

这里是解决教程其中,执行到 netsh winsock reset 重置Winsock目录 这一步时,出现需要管理员权限。---重新打开cmd,注意这次要以管理员身份打开

4、最后删除之前配的公钥,重新生成公钥,并与码云建立连接

重新生成公钥链接在这里

附录

这里是第一次作业链接

原文地址:https://www.cnblogs.com/1249575119jh/p/12386326.html