李永豪 201421123117 郑靖涛 201421123114html
coding 地址:https://git.coding.net/ras/work2.gitgit
1、题目描述web
咱们在我的做业1中,用各类语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序作成GUI(能够是Windows PC 上的,也能够是Mac、Linux,web,手机上的),成为一个有基本功能、必定价值的程序。在下面的功能需求中实现两个:编程
2、题目要求小程序
在两人合做的过程当中, 请看下面的内容app
a. 知足代码风格规范和代码设计规范(参考书第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html
- 请重视这点,在开发时两我的要有口头上的沟通:“好的,咱们一块儿在开发中遵照一块儿承认的编码规范”
- 请把大家约定的编码规范文档也提交到gitdom
c. 理解领航员和驾驶员两种角色关系,并在结对编程中两我的轮流作对方的角色。两人都必须参与本次做业的编码工做,并在git提交日志上体现这点。学习
3、功能分析测试
4、思惟导图编码
5、代码分析
1.使用MFC实现GUI界面
2.点击生成按钮自动生成式子
void C第二周Dlg::OnBnClickedButton1() { CString num1; CString num2, result; CString oper; CString s1, s2; int b, c; char a; s1 = "正确答案"; s2 = "判断对错"; a = getopre(); b = random(0, 20); c = random(1, 20); oper.Format(_T("%c"), a); num1.Format(_T("%d"), b); num2.Format(_T("%d"), c); switch (a) { case '+': GetDlgItem(IDC_STA1)->SetWindowTextW(num1); GetDlgItem(IDC_STA2)->SetWindowTextW(oper); GetDlgItem(IDC_STA3)->SetWindowTextW(num2); break; case '-': GetDlgItem(IDC_STA1)->SetWindowTextW(num1); GetDlgItem(IDC_STA2)->SetWindowTextW(oper); GetDlgItem(IDC_STA3)->SetWindowTextW(num2); break; case '*': GetDlgItem(IDC_STA1)->SetWindowTextW(num1); GetDlgItem(IDC_STA2)->SetWindowTextW(oper); GetDlgItem(IDC_STA3)->SetWindowTextW(num2); break; case '/': b = c*b; num1.Format(_T("%d"), b); GetDlgItem(IDC_STA1)->SetWindowTextW(num1); GetDlgItem(IDC_STA2)->SetWindowTextW(oper); GetDlgItem(IDC_STA3)->SetWindowTextW(num2); break; } GetDlgItem(IDC_STA4)->SetWindowTextW(s1); GetDlgItem(IDC_STA5)->SetWindowTextW(s2); // TODO: 在此添加控件通知处理程序代码 }
3.点击计算按钮,计算出正确答案并显示
void C第二周Dlg::OnBnClickedButton2() { CString num1, oper, num2,s1,s2,s3,s4,answer; int result; GetDlgItem(IDC_STA1)->GetWindowText(num1); GetDlgItem(IDC_STA2)->GetWindowText(oper); GetDlgItem(IDC_STA3)->GetWindowText(num2); int a = _tstoi(LPCTSTR(num1)); int b = _tstoi(LPCTSTR(num2)); s1 = "+"; s2 = "-"; s3 = "*"; s4 = "/"; if (oper == s1) { result = a + b; } else if (oper == s2) { result = a - b; } else if (oper == s3) { result = a*b; } else { result = a / b; } answer.Format(_T("%d"), result); GetDlgItem(IDC_STA4)->SetWindowTextW(answer); // TODO: 在此添加控件通知处理程序代码 }
4.输入用户计算结果后点击检验按钮,能够判断对错,而且记录保存对错数量
void C第二周Dlg::OnBnClickedButton5() { CString num1, oper, num2, s1, s2, s3, s4,s5,s6,s7, answer,key,rights,mistakes; int result,right,mistake,i=0,t=0; CString strline; CStdioFile File1; CStdioFile File2; File1.Open(_T("TRUE.txt"), CFile::modeReadWrite); File2.Open(_T("FALSE.txt"), CFile::modeReadWrite); while (File1.ReadString(strline)) i++; while (File2.ReadString(strline)) t++; rights.Format(_T("%d"), i); mistakes.Format(_T("%d"), t); GetDlgItem(IDC_STA1)->GetWindowText(num1); GetDlgItem(IDC_STA2)->GetWindowText(oper); GetDlgItem(IDC_STA3)->GetWindowText(num2); int a = _tstoi(LPCTSTR(num1)); int b = _tstoi(LPCTSTR(num2)); s1 = "+"; s2 = "-"; s3 = "*"; s4 = "/"; s5 = "true"; s6 = "false"; s7 = "恭喜"; if (oper == s1) { result = a + b; } else if (oper == s2) { result = a - b; } else if (oper == s3) { result = a*b; } else { result = a / b; } answer.Format(_T("%d"), result); GetDlgItem(IDC_EDIT1)->GetWindowText(key); if (key == answer) { GetDlgItem(IDC_STA5)->SetWindowTextW(s5); GetDlgItem(IDC_STA4)->SetWindowTextW(s7); GetDlgItem(IDC_STA10)->SetWindowTextW(rights); File1.SeekToEnd(); File1.WriteString(rights); File1.Write("\n", 1); } else { GetDlgItem(IDC_STA5)->SetWindowTextW(s6); GetDlgItem(IDC_STA4)->SetWindowTextW(answer); GetDlgItem(IDC_STA11)->SetWindowTextW(mistakes); File2.SeekToEnd();//文件尾部 File2.WriteString(mistakes); File2.Write("\n", 1); } File1.Close(); File2.Close(); // TODO: 在此添加控件通知处理程序代码 }
5.点击开始按钮开始计时,点击暂停按钮暂停计时
void C第二周Dlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialogEx::OnTimer(nIDEvent); static UINT mm = 0; static UINT ss = 0; static UINT mss = 0; CString str2; switch (nIDEvent) { case 1: mss++; if (mss == 60) { mss = 0; ss++; } if (ss == 60) { ss = 0; mm++; } str2.Format(_T("%02i:%02i:%02i"), mm, ss, mss); m_time.SetWindowTextW(str2); break; } } void C第二周Dlg::OnStnClickedSta6() { // TODO: 在此添加控件通知处理程序代码 } void C第二周Dlg::OnBnClickedButton4() { // TODO: 在此添加控件通知处理程序代码 SetTimer(1, 1000, NULL); } void C第二周Dlg::OnBnClickedButton7() { // TODO: 在此添加控件通知处理程序代码 KillTimer(1); }
6、PSP展现
PSP2.1 |
Personal Software Process Stages |
Time (%) Senior Student |
Time (%) |
Planning |
计划 |
2h |
2.5h |
· Estimate |
估计这个任务须要多少时间 |
36h |
41h |
· Analysis |
需求分析 (包括学习新技术) |
1h |
2h |
· Coding Standard |
代码规范 |
1h |
1h |
· Design |
具体设计 |
2h |
3h |
· Coding |
具体编码 |
30h |
32h |
· Test |
测试(自我测试,修改代码,提交修改) |
1.5h |
2h |
Reporting |
报告 |
1h |
1h
|
7、总结
第一次尝试结对的方法进行编程,能够说是很不习惯的,由于历来编程都是一我的来完成的,两我的原本是能够分开写两个不一样的模块,加快完成的速度,但是这样有的时候本身的思路和同伴的思路不相符,还须要解释,这样大大拉长了完成的时间。可有利有弊,有一我的在旁边复审,一段代码通过两双眼睛,这样减小了错误的发生,也能够集思广益想出更多的解决方法。可是即使如此我仍是比较习惯于本身写代码,由于有我的在旁边看着让我感受很不习惯,并且每一次的编程都须要调节两我的都有空的时间,感受很麻烦。