实验总结——结对编程(300道四则运算练习题)
实验总结——结对编程(300道四则运算练习题)
成员1:杨继周2252334 主要负责设计UI界面,以及最后整合两人的代码
* 成员2:张子桀* 2252324 主要负责编写程序的核心框架和功能的实现方法
源代码展示(GitHub):Yangjizhou147/300Arithmetic (github.com)
考虑到两人都比较擅长C++,所以选择C++作为编程语言,配合EasyX图形库绘制自己的UI界面。使用面向对象的编程语言,逻辑更加明了。
1、题目类
一个题目包含三个数字和两个运算符,和一个计算结果。
并且把四则运算题目中的每个部分转换为string类型,再进行组合成一个完整的式子进行显示。
(编写结束后发现一个较大的设计缺陷:我们的Tpic类既负责生成题目,又负责计算结果,导致代码的逻辑不够清晰,不易于拓展。但这个缺陷是完全编写结束后才发现的,要修改的话,花费的人力不亚于再次重新编写,以后有机会再进行改进)
class Tpic //题目类
{
public:
struct TPIC
{
int a = 0;
int b = 0;
int c = 0;
char OPERATOR1; char OPERATOR2;
float RESULT;
};
string str1, str2, str3;
string equation[30]; //题目字符串数组
LPCTSTR text[30]; //类型转换
vector<TPIC>TPIC1;
}
2、随机出题的实现方法
使用srand()实现随机数的生成
void CreateTpic(char OPERATOP1,char OPERATOP2) { //随机出题
time_t t;
srand((unsigned)time(&t));
TPIC tpic[30];
for (int i = 0; i < 30; i++) {
tpic[i].a = rand() % 100;
tpic[i].b = rand() % 100;
tpic[i].c = rand() % 100;
tpic[i].OPERATOR1 = OPERATOP1;
tpic[i].OPERATOR2 = OPERATOP2;
TPIC1.push_back(tpic[i]);
str1 = to_string(TPIC1[i].a);
str2 = to_string(TPIC1[i].b);
str3 = to_string(TPIC1[i].c);
GetTpic(i);
int m;
if (TPIC1[i].OPERATOR1 == '+') {
m = TPIC1[i].a + TPIC1[i].b;
}
if (TPIC1[i].OPERATOR1 == '-') {
m = TPIC1[i].a - TPIC1[i].b;
}
if (TPIC1[i].OPERATOR1 == 'x') {
m = TPIC1[i].a * TPIC1[i].b;
}
if (TPIC1[i].OPERATOR1 == '/') {
m = TPIC1[i].a / TPIC1[i].b;
}
/////////////////////////////////////////////////////////////
if (TPIC1[i].OPERATOR2 == '+') {
TPIC1[i].RESULT = m + TPIC1[i].c;
}
if (TPIC1[i].OPERATOR2 == '-') {
TPIC1[i].RESULT = m - TPIC1[i].c;
}
if (TPIC1[i].OPERATOR2 == 'x') {
TPIC1[i].RESULT = m * TPIC1[i].c;
}
if (TPIC1[i].OPERATOR2 == '/') {
TPIC1[i].RESULT = m / TPIC1[i].c;
}
}
return;
}
3、UI界面
1)按钮类
class Button {
public:
/**** 控件左上角的x坐标 ****/
int x = -1,
/**** 控件左上角的y坐标 ****/
y = -1;
/**** 控件的宽度 ****/
int width = -1,
/**** 控件的高度 ****/
height = -1;
/**** 控件所显示的文本 ****/
LPCTSTR text = L"";
/**** 控件显示的文本高度 ****/
int size = 16;
/**** 控件是否可见,可见为true,否则为false ****/
bool visible = false;
}
2)文本类
/**** 文本(该控件为自动调整大小) ****/
class Label {
private:
int width, height;
public:
/**** 控件左上角的x坐标 ****/
int x = -1,
/**** 控件左上角的y坐标 ****/
y = -1;
/**** 控件所显示的文本 ****/
LPCTSTR text = L"";
/**** 控件显示的文本高度 ****/
int size = 16;
/**** 控件是否可见,可见为true,否则为false ****/
bool visible = false;
}
4、成果展示
每一页可以显示30道四则运算题目,点击“下一页”便可切换到下一页。
可以按照需求生成不同运算符的题目:
5、实验体会
(1)优点
1)结对编程给我的第一感觉就是提高了代码质量,两个人一起编程更容易发现代码的漏洞和逻辑上的错误。
2)实现了知识共享:两个人擅长的地方都不同,结对编程增加了交流学习的机会,加速了双方的学习曲线。
3)更快的问题解决。两人一起思考解决问题往往能更快的发现问题的解决方案,尤其是在遇到复杂的问题或者困难时。
4)提高了团队的合作和沟通,建立了团队精神。
5)减少了长时间独自编程的孤独感。
(2)缺点
1)有的时候会产生较大的分歧,进而引发不必要的争执。
2)有时导致生产力下降。因为两个开发者需要花更多的时间来共同讨论决策,而不是编写代码,进而可能增加整个项目的成本。
(3)总结
结对编程在团队中会有很多好处,但还是得谨慎使用、合理使用,最大限度地拓展其优势。
posted on 2024-04-26 00:02 WinterCruel 阅读(20) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步