zoukankan      html  css  js  c++  java
  • 计算与软件工程作业二

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

    第二次作业链接

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

    作业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、最后删除之前配的公钥,重新生成公钥,并与码云建立连接

    重新生成公钥链接在这里

    附录

    这里是第一次作业链接

  • 相关阅读:
    微信小程序wx:key以及wx:key=" *this"详解:
    JavaScript实现按照指定长度为数字前面补零输出的方法
    多行文字溢出点点点的3中实现方法
    C#多态“说来也说”——逻辑层BLL中的多态使用
    .NET文件并发与RabbitMQ(初探RabbitMQ)
    StackExchange.Redis客户端读写主从配置,以及哨兵配置。
    RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用
    StackExchange.Redis帮助类解决方案RedisRepository封装(散列Hash类型数据操作)
    StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)
    StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)
  • 原文地址:https://www.cnblogs.com/1249575119jh/p/12386326.html
Copyright © 2011-2022 走看看