四则运算GUI版
小学四则运算界面版
李永豪 201421123117 郑靖涛 201421123114
coding 地址:https://git.coding.net/ras/work2.git
一、题目描述
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
有计时功能,能显示用户开始答题后的消耗时间。
界面支持中文简体/中文繁体/英语,用户可以选择一种;
二、题目要求
一个小组中的两个同学选取比较优秀的 作业1 (两个人的都独立完成了), 把它作为本次作业的基础,然后再修改。
结对编程实现上述功能,同样的,在程序正式开发之前,请先预估下PSP每个环节的消耗时间,并在过程中统计实际耗时,最后提交PSP表格。依然注意,这个主要是给你们自己看的,不必造假数据。
在两人合作的过程中, 请看下面的内容
a. 满足代码风格规范和代码设计规范(参考书第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html
- 请重视这点,在开发时两个人要有口头上的沟通:“好的,我们一起在开发中遵守一起认可的编码规范”
- 请把你们约定的编码规范文档也提交到git
b. 给人提意见的方式——送一个汉堡包http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html
c. 理解领航员和驾驶员两种角色关系,并在结对编程中两个人轮流做对方的角色。两人都必须参与本次作业的编码工作,并在git提交日志上体现这点。
三、功能分析
a.实现GUI界面;
b.实现基础式子生成、计算以及判断对错;
c.记录过往的对错总数,并且在程序退出再启动时可以实现保存对错数量并增量计算;
d.实现计时功能;
四、思维导图
1.计时功能实现
2.增量计算实现
五、代码分析
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);
}
六、PSP展示
七、总结
一开始知道要用这种结对编程方式写程序很怪,感觉是用两个人的时间做一件事情,一人写一个模块不是更快完成demo,感觉1+1<2。尝试几次,发现旁边有一个人帮忙看着自己写的代码,提建议,发现自己程序的错误少了好多,这是最好的一点,也省去了后面再修改的麻烦,还挺不错的。还有一点好处就是,一个人一直写效率会变低,轮流换班写代码轻松了很多,效率也提高了不少。但是我觉得这种做法最大的问题是,有时候会固执己见,谁也不服谁,思维不统一,造成没必要的矛盾。不过这次还是有收获的,学了新鲜的编程模式,也对伙伴的编程思维有了一定的了解。
四则运算GUI版的更多相关文章
- 结对编程1.四则运算GUI版
201421123022 王若凡 201421123026 欧阳勇 coding详细代码 a.需求分析: 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linu ...
- 结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
- 四则运算APP版
(一)四则运算APP版 这这个Demo的目的就是强化一下本周学习的Android的Jetpack里的新内容,接下来我将通过这个Demo来展示我所学到的新知识. 先列出新学到的知识:ViewModel, ...
- 结对项目-四则运算出题程序(GUI版)
目录: 一.致搭档(含项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模 ...
- 团队作业之四则运算GUI展示
一.项目Coding.net原码仓库地址:https://git.coding.net/caoying/Teamwork.git 队员: 卢琪:2016011986 曹滢:2016012102 二.P ...
- 四则运算GUI版本功能展现
对于四则运算的GUI版本实现支持批量出题,由于我的不积极导致教师没找到对应的连接,现在重新补上链接 http://www.cnblogs.com/liquan/p/5978687.html codin ...
- 四则运算GUI版本
要求:用户界面新增支持 Windows GUI,同时保留原有命令行下所有功能.提示: 先测试驱动开发,然后重构代码,以GUI为目标修改"核心"函数,把与GUI/Console相关的 ...
- 结对编程四则运算gui
码市地址:https://git.coding.net/linzhao/sizeyunsuangui.git 林 钊 -- 201421123105 吴世荣 -- 201421123119 王坤彬 - ...
- 四则运算GUI
一.题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成 ...
随机推荐
- 算法竞赛入门经典 习题2-10 排列(permutation)
习题2-10 排列(permutation) 用1,2,3,-,9组成3个三位数 abc, def, 和ghi,每个数字恰好使用一次,要求 abc:def:ghi = 1:2:3.输出所有解.提示:不 ...
- pythonchallenge
# _*_ coding:utf-8 _*_ translated = '' message = 'g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr ...
- Mysql MHA(GTID)配置(实操)
实现环境 centos6.7 MYSQL5.6.36 主:192.168.1.191 从1:192.168.1.145 从2:192.168.1.146 监测:放在从2上 192.168.1.146 ...
- ASP.NET前台html页面对table数据的编辑删除
摘要:本来说这个企业的门户网站单纯的做做显示公司文化信息的,做好了老板说要新增在线办理业务,本来这个网站是基于别人的框架做的前台都只能用纯html来做.好吧上两篇我就写了table里面向数据库插入数据 ...
- 小A点菜 洛谷 p1164
题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目描述 不过ui ...
- 社群系统ThinkSNS + 移动端研发周报
社群系统"ThinkSNS+"对比ThinkSNS V4系列,ThinkSNS V4系列的产品规划主要偏重于企业服务应用,注重功能的覆盖面和用户关系的逻辑处理.Thin社群系统kS ...
- Vue组件选项props
前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...
- 深度理解div+css布局嵌套盒子
1. 网页布局概述 网页布局的概念是把即将出现在网页中的所有元素进行定位,而CSS网页排版技术有别于传统的网页排版方法,它将页面首先在整体上使用<div>标记进行分块,然后对每个快进行CS ...
- 程序设计中的数学思维函数总结(代码以C#为例)
最近以C#为例,学习了程序设计基础,其中涉及到一些数学思维,我们可以巧妙的将这些逻辑问题转换为代码,交给计算机运算. 现将经常会使用到的基础函数做一总结,供大家分享.自己备用. 1.判断一个数是否为奇 ...
- 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装
[MySQL]Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后, ...