计算与软件工程第二次作业
软件工程包括了开发,运营, 维护软件的过程中有很多技术, 做法, 习惯, 和思想。
软件工程把这些相关的技术和过程统一到一个体系中, 叫 “软件开发流程”,软件开发流程的目的是为了提高软件开发, 运营, 维护的效率,以及用户满意度, 可靠性,和软件的可维护性。
作业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、最后删除之前配的公钥,重新生成公钥,并与码云建立连接