结对项目
这个作业属于哪个课程 | 软工2024(广工) |
---|---|
这个作业要求在哪里 | 结对项目 |
这个作业的目标 | 通过实践了解合作开发的流程 |
姓名:李健宇
学号:3122004870
姓名:陈彦煤
学号:3122004859
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
Estimate | 估计这个任务需要多少时间 | 400 | 420 |
Development | 开发 | 250 | 330 |
Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 30 |
Design | 具体设计 | 60 | 50 |
Coding | 具体编码 | 300 | 350 |
Code Review | 代码复审 | 60 | 90 |
Test | 测试(自我测试,修改代码,提交修改) | 40 | 50 |
Reporting | 报告 | 30 | 30 |
Test Repor | 测试报告 | 60 | 60 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 50 |
合计 | 1340 | 1620 |
性能分析
设计实现过程
代码说明
- main:读写文件、总结答题情况:
点击查看代码
int main()
{
FILE* fp1=NULL;
int n, a, right = 0,wrong=0;
double percent;
printf("Please enter the number of the test:");
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
a = takeTest();
right = right + a;
}
printf("Powerful!\n");
printf("The number of right:%d\n", right);
fp1 = fopen("D:\Grate.txt", "w");
if (fp1)
{
fprintf(fp1,"Correct:%d\n",right);
}
fclose(fp1);
wrong = n - right;
fp1 = fopen("D:\Grate.txt", "a");
if(fp1)
{
fprintf(fp1, "Wrong:%d\n", wrong);
}
percent = ((double)right * 100.00) / (double)n;
printf("The percent of right:%0.2f %%\n", percent);
}
- takeTest:生成题目、判断正误:
点击查看代码
int takeTest()
{
int get;
int num1, num2, a;
char signal;
srand((unsigned)time(NULL));
signal = getSignal();
num1 = random(0, 1000);
num2 = random(1, 1000);
if (signal == '-')
{
if (num1 < num2)
{
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
}
if (signal == '/')
{
if (num2 == 0)
{
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
}
printf("%d%c%d=", num1, signal, num2);
scanf_s("%d", &get);
fflush(stdin); //清空输入缓冲区
if (getResult(num1, num2, signal) == get)
{
printf("You're right!\n");
a = 1;
}
else
{
printf("It's wrong!\n");
printf("The right answer is: %d\n", getResult(num1, num2, signal));
a = 0;
}
return a;
}
- random:生成随机数:
点击查看代码
int random(double start, double end)
{
return (int)(start + (end - start) * rand() / (RAND_MAX + 1.0));
}
- getSignal:随机生成运算符:
点击查看代码
char getSignal()
{
char signal[4] = { '+','-','*','/' };
srand((unsigned)time(NULL));
return signal[rand() % 4];
}
- getResult:给出正确答案:
点击查看代码
int getResult(int num1, int num2, char signal)
{
int res=0;
switch (signal)
{
case '+':
res = num1 + num2; break;
case '-':
res = num1 - num2; break;
case '*':
res = num1 * num2; break;
case '/':
res = num1 / num2; break;
default:
printf("运算符错误!\n");
}
return res;
}
测试运行
随机生成十个题目并答题进行测试,结果如下:
项目小结
第一次结对开发项目,由于对合作开发的流程和方法不熟悉,出现了很多问题,如效率低、代码质量较低、部分功能实现效果差等。应考虑加强沟通、在开发过程中也要考虑整体效率、做好代码注释等。