结对编程——队友代码的优缺点分析

一·项目的需求分析

  需求文档中给出5个需求,第一个是用户的登录要求用户名和密码相匹配,并且有着初始的出题类型;需求二则限制题目的操作数和取值范围;

需求三要求我们输入题目数量,这里给出限定条件10-30个题目并且要求同一位老师的题目不能一样;需求四则要我们满足切换出题类型;需求五则

是对题目保存路径和文件的要求。

二·代码优缺点分析

  main函数大体框架为:一个循环加一个if的判断语句来确定登陆对象,并且每一个登录对象都有一个唯一的标识,eg:张三1的标识为(0,1),再将其标

识传递给user_do函数。分析一下这个main的框架,利用一个while(cout<<"请输入用户名和密码:"<<endl,cin>>user>>password)循环来实现对错误的登录的

处理,算是满足了需求一。

string user,password;
	void xiaoxue(int a, int b, string str);
	void chuzhong(int a, int b, string str);
	void gaozhong(int a, int b, string str);
	void user_do(int a, int b);
	while(cout<<"请输入用户名和密码:"<<endl,cin>>user>>password) {
		//小学
		if(user=="张三1"&&password=="123") {
			cout<<"当前选择为小学出题"<<endl;
			cout<<"准备生成"<<"小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(0,1);
		} else if(user=="张三2"&&password=="123") {
			cout<<"当前选择为小学出题"<<endl;
			cout<<"准备生成"<<"小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(0,2);
		} else if(user=="张三3"&&password=="123") {
			cout<<"当前选择为小学出题"<<endl;
			cout<<"准备生成"<<"小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(0,3);
		}
		//初中
		else if(user=="李四1"&&password=="123") {
			cout<<"当前选择为初中出题"<<endl;
			cout<<"准备生成"<<"初中数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(1,4);
		} else if(user=="李四2"&&password=="123") {
			cout<<"当前选择为初中出题"<<endl;
			cout<<"准备生成"<<"初中数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(1,5);
		} else if(user=="李四3"&&password=="123") {
			cout<<"当前选择为初中出题"<<endl;
			cout<<"准备生成"<<"初中数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(1,6);
		}
		//高中
		else if(user=="王五1"&&password=="123") {
			cout<<"当前选择为高中出题"<<endl;
			cout<<"准备生成"<<"高中数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(2,7);
		} else if(user=="王五2"&&password=="123") {
			cout<<"当前选择为高中出题"<<endl;
			cout<<"准备生成"<<"高中数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(2,8);
		} else if(user=="王五3"&&password=="123") {
			cout<<"当前选择为高中出题"<<endl;
			cout<<"准备生成"<<"高中数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"<<endl;
			user_do(2,9);
		} else cout<<"请输入正确的用户名、密码"<<endl;
	}
}

  

  再来看user_do函数,同样一个while(cin>>num0)循环,num0是一个字符串型,紧接着就是将字符型转为整型数据,接下来加是对于

切换类型的判断,并且加了一个新的标识代表切换类型,之后便是数值判断,调用出题函数。代码如下:

while(cin>>num0) {
		num1=num0.substr(0,6);
		stringstream ss0;
		ss0<<num0;
		ss0>>num;
		if(num1!="切换为");
		else if(num0=="切换为小学") {
			degree=0;
			cout<<"准备生成小学数学题目,请输入生成题目数量"<<endl;
		} else if(num0=="切换为初中") {
			degree=1;
			cout<<"准备生成初中数学题目,请输入生成题目数量"<<endl;
		} else if(num0=="切换为高中") {
			degree=2;
			cout<<"准备生成高中数学题目,请输入生成题目数量"<<endl;
		} else {
			cout<<"请输入小学、初中和高中三个选项中的一个"<<endl;
		}
		if(num!=-1) {
			if(num<10||num>30)cout<<"请输入10~30之间的数据"<<endl;
			else {
				string timu;
				if(degree==0)xiaoxue(num,add,timu);
				else if(degree==1)chuzhong(num,add,timu);
				else if(degree==2)gaozhong(num,add,timu);
				if(degree==0)cout<<"备生成小学数学题目,请输入生成题目数量"<<endl;
				else if(degree==1)cout<<"准备生成初中数学题目,请输入生成题目数量"<<endl;
				else if(degree==2)cout<<"准备生成高中数学题目,请输入生成题目数量"<<endl;
			}
		} else break;
	}
	if(num==-1) {
		cout<<"已退出当前账号"<<endl;
	}

  优点总结: 代码的缩进、排列整洁美观,大致思路清晰,需求满足的挺好,注释也是恰到好处,主函数的架构野写得挺好。

  缺点:没有对出过的题目进行查重,代码的大括号和变量的命名不是很符合编程规范。

原文地址:https://www.cnblogs.com/FIRE11/p/11553071.html

时间: 2024-11-06 12:46:29

结对编程——队友代码的优缺点分析的相关文章

结对编程队友个人项目优缺点分析

程序运行结果截图(如下) 首先说一下对方的优点: (1)该程序输出的题目很整齐,每道题都有题号,数字和符号之间都有空格,每行题目之间一行空行,让人看起来不会有密密麻麻的感觉: (2)他的代码写了一个teacher类,一个老师账户对应类的一个实例,teacher类里有一个做试卷的函数: (3)生成题目的算法使用了二分法和递归,从而使得代码很简单,很清晰. 缺点在于: (1)分层不够明确,teacher类里面有很多函数并不属于老师的行为,比如有一个将整数转化为字符串的函数,这样的函数并不是老师的行为

结对编程队友代码分析

这次结对编程的队友是可熊,感谢可熊不嫌弃我这个鶸,,和我组队 通过分析可熊的代码,深刻体会到了自己代码的不规范以及代码可延展性的缺失 比如using namespace std; ,这一行代码虽然自己写的时候很方便,但没有考虑到别人的编程习惯,某些工程代码里会出现以关键字做变量名的情况,这样写会不兼容 所以要用cin,cout作为标准输入输出应该如下面代码: int x; std::cin >> x ; std::cout << x << std::endl; 或者像这

软件工程导论 结对编程 队友代码分析

这次的个人项目是中小学数学卷子自动生成程序,每个人都自己动手编写了自己的代码.今天的任务是看队友的代码,并指出他代码中的优点和缺点. 以下是对队友代码的个人评价. 优点: ①代码结构组织有序. 代码非常的模块化,每一个函数的功能清晰明了,框架结构清晰.而我是一个main()函数写到底,这一点我应该以后注意. 他的框架 我的框架 ②交互友好 经过对程序的实际测试,发现交互是非常友好的,我每一步都知道我应该输入什么内容,他做的比项目原本需求的交互更好. 比需求更加人性化. ③程序严谨,测试未发现明显

结对编程——队友代码分析

队友使用的是c++语言,IDE用得是VS2015.下面开始进行优缺点的分析. 优点:①严格按照代码规范,分文件进行模块的分类.整个工程一共有8个文件,Login.h,Login.cpp,Subject.h,Subject.cpp,User.h,User.cpp,UsersTable.h,main.cpp,类的声明在几个头文件中,然后再在另一个文件中对类中的方法进行具体实现.比如login类: #pragma once #include"User.h" using namespace s

结对编程-队友代码分析

按照老师的要求,对队友的代码进行解析,先说缺点在看优点,改正缺点学习优点,一起进步! 1.首先打开代码的时候,关于账号密码的存储,将账号和密码直接存储在了一个数组中.按照"用户名 密码"的格式,这在之后的登陆检测中确实可以方便检测,但是个人感觉将账号密码直接存储在一起会造成一些安全问题. string allUser[]={"张三1 123","张三2 123","张三3 123","李四1 123",&q

结对编程-队友代码欣赏

运行结果: 优点: 1.注释恰当,符合命名规范 2.添加了新增用户的功能 3.将不选用初中/高中的操作符视为正常情况而不是特殊情况,使代码的分支减少,逻辑清晰 缺点: 1.user.java下的三个类都存储了用户名与密码,而没有特别的区别与彼此的函数,显得有点多余,个人认为可以用一个类表示,减少代码量以及数据的传递次数 2.题目之间没有空行,没有检查题目是否重复 原文地址:https://www.cnblogs.com/marinmoring/p/9710751.html

对结对编程队友的代码分析

通过这次的个人项目以及和别人的代码比较完之后,我发现在做一个项目的时候,还是需要多写函数,一个好的代码一定是比较清晰的,像main函数就应该是越简单越好.本次结对同学的代码就是如此,将出题,计算等内容单独定义出来,所以在整个代码看下来之后感觉很有层次感,理解起来也会更加的容易.而且该同学在写代码的时候也写了好多注释,这是一个好习惯,对于自己以后再次看这个代码会有很大的帮助,这是值得借鉴的.因为定义了很多函数之后,在main函数只需要疯狂调用函数就会显得函数十分的整齐 同时巧妙的运用了goto函数

中小学数学卷子自动生成程序: 结对编程对方代码分析

需求分析: 1.命令行输入用户名和密码,两者之间用空格隔开(程序预设小学.初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学.初中和高中三个选项中的一个.否则提示“请输入正确的用户名.密码”,重新输入用户名.密码: 2.登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学.初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题.每道题目的操作

结对编程队友个人项目分析

队友代码分析: 优点: 1:首先在函数中对账号进行了判断 具有良好的扩展性,也方便之后的功能里面增加新的账号,并且进行了注释 2.结构的逻辑性良好,根据不同的年级,通过if语句能够跳转到对应的模块进行输出 3.代码简洁明了,方便阅读以及理解代码的功能实现 4.变量命名规,具有良好可读性 5.在对输入判断这方面,提示的很好 缺点: 1.对账号密码判断位于一行,影响了代码的可读性 2.在生成出题文件这块,没有注释具体生成的文件的位置,影响后续的测试,并且在文件名字上,没有按照需求中所给的名字进行文件