首页 > 其他分享 >结对项目

结对项目

时间:2024-03-26 14:24:34浏览次数:37  
标签:结对 qu 项目 int sum 3397991 100 void

这个作业属于哪个课程 软件工程
这个作业要求在哪里 四则运算
这个作业的目标 完成一个小学四则运算题目生成的项目
项目成员 学号
吴炳辉 3122004709
刘睿 3122004697

Github地址: 项目2

2、PSP表格

Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
计划 20 20
· 估计这个任务需要多少时间 30 35
开发 200 250
· 需求分析 (包括学习新技术) 100 120
· 生成设计文档 10 20
· 设计复审 20 25
· 代码规范 (为目前的开发制定合适的规范) 10 15
· 具体设计 30 50
· 具体编码 400 500
· 代码复审 60 50
· 测试 60 70
报告 40 55
· 测试报告 30 30
· 计算工作量 10 10
· 事后总结, 并提出过程改进计划 20 25
合计 1040 1275

3、性能分析

4、设计实现
本项目一共有6个函数
int main()函数负责用户界面及调用其他函数
void fenshu(int &a1, int &a2)方便分数的计算
void chufa(int str1, int str2,int str3, float &sum, int a[])用来计算除法
void randmath(int n, int r, int answer[100], int qu[100][11])生成算式及计算答案
void write_qu(int n, int qu[100][11], FILE *file)将算式写入文件
void write_answer(int n, int qu[100][11], FILE *file)将答案写入文件

运行过程:用户输入n,r, 其中n是控制生成题目数量的参数,r是控制题目中数值范围的参数。程序会自动生成算式和答案在文件中。

5、代码说明

main

点击查看代码
int main() {
	int answer[100] = { 0 };
	int qu[100][11] = { 0 };
	int n = 0;
	int r = 0;
	printf("请输入生成题目数\n");
	scanf("%d", &n);
	printf("请输入题目范围\n");
	scanf("%d", &r);

	// 打开 Exercises.txt 文件进行写入
	FILE *exercisesFile = fopen("D:\\Exercises.txt", "w");
	if (exercisesFile == NULL) {
		printf("无法打开 Exercises.txt 文件进行写入。\n");
		return -1;
	}

	// 生成题目并写入 Exercises.txt 文件
	randmath(n, r, answer, qu);
	write_qu(n, qu, exercisesFile);
	fclose(exercisesFile); // 关闭文件

	// 打开 Answers.txt 文件进行写入
	FILE *answersFile = fopen("D:\\Answers.txt", "w");
	if (answersFile == NULL) {
		printf("无法打开 Answers.txt 文件进行写入。\n");
		return -1;
	}

	// 将答案写入 Answers.txt 文件
	write_answer(n, qu, answersFile);
	fclose(answersFile); // 关闭文件

	printf("题目和答案已生成并存入文件中。\n");

	return 0;
}


void fenshu(int &a1, int &a2)

点击查看代码
void fenshu(int &a1, int &a2) {
	//a1为分子,a2为分母
	int i = a2 - 1;
	while (i > 0) {
		if (a2 % i == 0)
			if (a1 % i == 0) {
				a2 = a2 / i;
				a1 = a1 / i;
			}
		i--;
	}
}

void chufa(int str1, int str2,int str3, float &sum, int a[])

点击查看代码
void chufa(int str1, int str2,int str3, float &sum, int a[]) {
	int c = 0;
	sum = str1 * str3 / str2;
	c = str1 * str3 / str2;//c为整数部分
	int r = str1 * str3 % str2;//r为分子
	if (r == 0) {
		//整除
		a[0] = c;
		a[1] = '?';
	} else if (c == 0) {
		fenshu(r, str2);
		a[0] = r;
		a[1] = '/';
		a[2] = str2;
		a[3] = '?';
	} else {
		fenshu(r, str2);
		a[0] = c;
		a[1] = '\'';
		a[2] = r;
		a[3] = '/';
		a[4] = str2;
	}


}

void randmath(int n, int r, int answer[100], int qu[100][11])

点击查看代码
//生成运算
//生成n条,r以内的运算,n不能小于1,r不能小于10
void randmath(int n, int r, int answer[100], int qu[100][11]) {
	if (n < 1 || r < 10 ) {
		printf("规定:n应该大于0,r不能小于10");
		return;
	}

	int i = 0,k1,k2;
	float sum = 0;
	for (; i < n; i++) {
		int num1 = rand() % r;
		int num2 = rand() % r;
		int num3 = rand() % r;
		int fuhao[4] = { '+', '-', '*', '/' };
		int f = rand() % 10;
		int a[5] = { 0, 0, 0, 0, 0 };
		switch (f) {

			case 0:
				//双加
				k1 = 0;
				k2 = 0;
				sum = num1 + num2 + num3;
				a[0] = sum;
				a[1] = '?';
				break;
			case 1:
				//一加一减
				k1 = 0;
				k2 = 1;
				sum = num1 + num2 - num3 ;
				a[0] = sum;
				a[1] = '?';
				break;
			case 2:
				//一加一乘
				k1 = 0;
				k2 = 2;
				sum = num1 + num2 * num3;
				a[0] = sum;
				a[1] = '?';
				break;
			case 3:
				//双减
				k1=1;
				k2=1;
				sum = num1 - num2 - num3 ;
				a[0] = sum;
				a[1] = '?';

				break;
			case 4:
				//一减一加
				k1=1;
				k2=0;
				sum = num1 - num2 + num3 ;
				a[0] = sum;
				a[1] = '?';

				break;

			case 5:
				//一减一乘
				k1=1;
				k2=2;
				sum = num1 - num2 * num3 ;
				a[0] = sum;
				a[1] = '?';

				break;

			case 6:
				//一乘一加
				k1=2;
				k2=0;
				sum = num1 * num2 + num3 ;
				a[0] = sum;
				a[1] = '?';

				break;

			case 7:
				//一乘一减
				k1=2;
				k2=1;
				sum = num1 * num2 - num3 ;
				a[0] = sum;
				a[1] = '?';

				break;

			case 8:
				//双乘
				k1=2;
				k2=2;
				sum = num1 * num2 * num3;
				a[0] = sum;
				a[1] = '?';

				break;
			case 9:
				//除法
				k1=3;
				k2=3;
				chufa(num1, num2,num3, sum, a);
			default:
				break;
		}

		//把答案和题目填入数组
		answer[i] = (int)sum;
		qu[i][0] = num1;
		qu[i][1] = fuhao[k1];
		qu[i][2] = num2;
        qu[i][3] = fuhao[k2];
        qu[i][4] = num3;
		qu[i][5] = '=';
		qu[i][6] = a[0];
		qu[i][7] = a[1];
		if (a[1] != '?') {
			qu[i][8] = a[2];
			qu[i][9] = a[3];
			if (a[3] != '?') {
				qu[i][10] = a[4];
				qu[i][11] = '?';
			}
		}
		int temp = 0 ;
		if(a[0]<0){
			temp = 1;
		}
		if (temp == 1)
			i--;
	}
}
void write_qu(int n, int qu[100][11], FILE *file)
点击查看代码
void write_qu(int n, int qu[100][11], FILE *file) {
	for (int i = 0; i < n; i++) {
		fprintf(file, "%d, %d%c%d%c%d%c?\n", i+1,qu[i][0],qu[i][1],qu[i][2],qu[i][3],qu[i][4],qu[i][5]);
	}
}
void write_answer(int n, int qu[100][11], FILE *file)
点击查看代码
void write_answer(int n, int qu[100][11], FILE *file) {
	for (int i = 0; i < n; i++) {
		fprintf(file, "%d, %d",i+1, qu[i][6]);
		if (qu[i][7] != '?') {
			fprintf(file, "%c%d", qu[i][8], qu[i][9]);
			if (qu[i][9] != '?') {
				fprintf(file, "%c%d", qu[i][10], qu[i][11]);
			}
		}
		fprintf(file, "\n");
	}
}
**6、运行测试** 测试生成题目与答案 ![](/i/l/?n=24&i=blog/3397991/202403/3397991-20240326140500105-703497532.png) ![](/i/l/?n=24&i=blog/3397991/202403/3397991-20240326140510105-1864483163.png) ![](/i/l/?n=24&i=blog/3397991/202403/3397991-20240326140517903-1285114955.png) 生成100道算式 ![](/i/l/?n=24&i=blog/3397991/202403/3397991-20240326140603530-949797617.png) ![](/i/l/?n=24&i=blog/3397991/202403/3397991-20240326140613193-1552735349.png) ![](/i/l/?n=24&i=blog/3397991/202403/3397991-20240326140620486-794990829.png) ![](/i/l/?n=24&i=blog/3397991/202403/3397991-20240326140633560-472750992.png)

7、项目小结
结对编程相比个人编程可以分工合作,发挥各自的优点,但也需要两人进行沟通与理解。
这次作业还有很多的不足之处,没有完成用户答案的判断功能。

标签:结对,qu,项目,int,sum,3397991,100,void
From: https://www.cnblogs.com/wubinghui/p/18095610

相关文章

  • 结对项目
    温吞:结对项目这个作业属于哪个课程软件工程4班这个给作业要求在哪里结对项目这个作业的目标实现一个自动生成小学四则运算题目的命令行程序合作人员学号姓名3122004557蔡昱鹏3122004567韩逸朗Github链接结对项目PSS表格PSP2.1Pers......
  • 结对编程--自动生成小学四则运算
    小学四则运算题目生成这个作业属于哪个课程软件工程2024这个作业要求在哪里结对项目这个作业的目标完成结对项目,共同合作实现自动生成小学四则运算题目参与人员温泽坤3122004582、黄浩3122004571作业github地址PSP2.1表格PSP2.1PersonalSoftwareP......
  • 结对项目
    结对项目这个作业属于哪个课程软件工程这个作业要求在哪里结对作业这个作业的目标制作一个自动生成十以内四则运算的项目,熟悉结对项目的开发Github仓库Github姓名郑炜冯可富学号31220045043122004476PSP表PSP2.1PersonalSoftwarePr......
  • javaWeb项目-快捷酒店信息管理系统功能介绍
    开发工具:IDEA、Eclipse编程语言:Java数据库:MySQL5.7+框架:ssm、Springboot前端:Vue、ElementUI关键技术:springboot、SSM、vue、MYSQL、MAVEN数据库工具:Navicat、SQLyog项目关键技术 1、JSP技术JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。Ja......
  • 结对项目
    这个作业属于哪个课程软件工程这个作业要求在哪里结对项目一、合作者姓名学号张楠3222004599周广3122004418github链接二、PSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划4030·Es......
  • 结对项目
    杨宇航3122004498赵军3122004501这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024这个作业要求在哪里结对项目-作业-软件工程2024-班级博客-博客园(cnblogs.com)这个作业的目标1.能够生成包含自然数和真分数的四......
  • 信息系统项目管理师——第7章项目立项管理
    本章考选择题2-3分,案例和论文均有可能作为领域考试。项目建议与立项申请♥♥♥♥♥立项申请的概念立项申请又称为项目建议书,是项目建设单位向上级主管部门提交项目申请时所必须的文件,是该项目建设筹建单位根据国民经济的发展、国家和地方中长期规划、产业政策、生产力......
  • 海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)
    海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)第2集账号微服务和流量包数据库表+索引规范讲解《下》简介:账号微服务和流量包数据库表+索引规范讲解账号和流量包的关系:一对多traffic流量包表思考点海量数据下每天免费次数怎么更新?海量数据付费流量套餐包每天......
  • 使用Go语言开发一个短链接服务:三、项目目录结构设计
    章节 使用Go语言开发一个短链接服务:一、基本原理 使用Go语言开发一个短链接服务:二、架构设计 使用Go语言开发一个短链接服务:三、项目目录结构设计 使用Go语言开发一个短链接服务:四、生成code算法 使用Go语言开发一个短链接服务:五、添加和获取短链接 使用Go语言开......
  • 智慧工地解决方案,智慧工地项目管理系统源码,支持大屏端、PC端、手机端、平板端
    智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合,为工程项目管理提供先进技术手段,构建工地现场智能监控和控制体系,弥补传统方法在监管中的缺陷,最线实现项目对人、机、料、法、环的全方位实时监控。支持多端展示(大屏、PC端、手机端、平板......