四则运算GUI
一、题目描述
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。实现了以下三种功能:
1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;
2.有计时功能,能显示用户开始答题后的消耗时间;
3.界面支持中文简体/中文繁体/英语,用户可以选择一种。
二、队伍成员
201421123110 杨海亮
201421123112 余昕宇
三、功能设计
1.基本功能,包括整数与真分数的四则运算、判断对错和正确率显示。
2.新增功能,包括计时器、语言切换和把以前的对错数量保存并在此基础上增量计算。
四、思维导图

五、代码实现
计时器
void Cnew1Dlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
static UINT mm =0;
static UINT ss =0;
static UINT ms =0;
CString str2;
switch (nIDEvent)
{
case 1:
ms++;
if (ms== 60) {ms=0; ss++;}
if (ss==60) {ss=0; mm++;}
str2.Format(_T("%02i:%02i:%02i"),mm,ss,ms);
m_tiii.SetWindowTextW(str2);
break;
}
CDialogEx::OnTimer(nIDEvent);
}
SetTimer(1,1000,NULL);//放在触发按钮函数内
为了实现把以前的对错数量保存并在此基础上增量计算,我们采用了文件读写的方式,每运行一次运算都会将对错数量写入文件,计算或重启程序时再从文件中读取相应值赋给对错总量,并在界面上直观体现出来。
写入文件
char C1[100],C2[100];
itoa(count2,C1,10);
itoa(count3,C2,10);
CFile file(_T("CFile.txt"),CFile::modeCreate|CFile::modeWrite);
//构造CFile对象
CFile file1(_T("CFile1.txt"),CFile::modeCreate|CFile::modeWrite);
file.Write(C1,strlen(C1)*sizeof(char));//写入数据到文件
file.Close();//关闭CFile对象。
file1.Write(C2,strlen(C2)*sizeof(char));//写入数据到文件
file1.Close();//关闭CFile对象。
读文件
file.Open(_T("CFile.txt"),CFile::modeRead);//构造CFile对象
file1.Open(_T("CFile1.txt"),CFile::modeRead);//构造CFile对象
char FileContent[100],FileContent1[100];
CString C4(""),C5(""),C6("");
string a1="",a2="";
memset(FileContent,0,100);//初始化FileContent
memset(FileContent1,0,100);//初始化FileContent
file.Read(FileContent,100);//读入数据
file.Close();//关闭文件对象
file1.Read(FileContent1,100);//读入数据
file1.Close();//关闭文件对象
a1=FileContent;
C4=a1.c_str();
count2=atoi(a1.c_str());
a2=FileContent1;
C5=a2.c_str();
count3=atoi(a2.c_str());
GetDlgItem(IDC_STA7)->SetWindowTextW(C4);
GetDlgItem(IDC_STA8)->SetWindowTextW(C5);
语言切换,现在只能做到切换界面文字,不能将程序中的文字一起切换,仍需进一步研究。
m_combo.AddString(_T("简体")); //m_combo为变量名
m_combo.AddString(_T("繁體"));
m_combo.AddString(_T("English"));
m_combo.SetCurSel(2);
void Cnew1Dlg::OnCbnSelchangeCombo1()
{
CString strweb,strweb1("简体"),strweb2("繁體"),strweb3("English");
CString jianti1("下一题");//这里只列出了一个,其他的以此类推。
CString fanti1("下一題");
CString en1("next");
int nSel;
nSel = m_combo.GetCurSel();
m_combo.GetLBText(nSel,strweb);
if(strweb.Compare(strweb1)==0)
{
SetDlgItemText(IDC_BUTTON1,jianti1);
}
else if(strweb.Compare(strweb2)==0)
{
SetDlgItemText(IDC_BUTTON1,fanti1);
SetDlgItemText(IDC_STA18,fanti14);
}
else if(strweb.Compare(strweb3)==0)
{
SetDlgItemText(IDC_BUTTON1,en1);
}
六、运行截图
初始默认中文简体

几次计算后截图

退出重进,对错题数在以前的基础上增量运算

切换为中文繁体

切换为英文


七、总结
1、MFC控件ID使用时出现未定义,需要进入Resoure.h 对相同控件数值进行修改
2、二人结对编程能使功能实现与错误修改有更高的效率
3、尝试学习新的知识,实现更多功能
码市地址:https://git.coding.net/yhlms/gui-szys.git
| PSP2.1 | Personal Software Process Stages | Time (%) Senior Student(/hour) | Time (%)(/hour) |
| · Planning | 计划 | 2 | 1.5 |
| · Estimate | 估计这个任务需要多少时间 | 37 | 40 |
| · Analysis | 需求分析 (包括学习新技术) | 1 | 1 |
| · Coding Standard | 代码规范 | 0.5 | 0.5 |
| · Design | 具体设计 | 1.5 | 1 |
| · Coding | 具体编码 | 30 | 35 |
| · Test | 测试(自我测试,修改代码,提交修改) | 1 | 1 |
| Reporting | 报告 | 1 | 1 |
四则运算GUI的更多相关文章
- 四则运算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版
小学四则运算界面版 李永豪 201421123117 郑靖涛 201421123114 coding 地址:https://git.coding.net/ras/work2.git 一.题目描述 我们 ...
- 结对编程1.四则运算GUI版
201421123022 王若凡 201421123026 欧阳勇 coding详细代码 a.需求分析: 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linu ...
- 结对编程-四则运算-GUI
201421123022 王若凡 201421123026 欧阳勇 https://git.coding.net/ttoyy/sizeyunsuan-GUI.git a.需求分析: ...
- 结对编程1——四则运算-GUI
码市链接:https://coding.net/u/hmhhh/p/hmh-homework/git/tree/master/ 201421123003 黄建英 201421123004 黄美海 题目 ...
- 结对编程-四则运算GUI的实现
一.项目成员以及coding地址: 洪灏捷(本人)201321122020 coding地址:https://git.coding.net/hoje/The-GUI-operation.git 白至 ...
- 结对项目——四则运算GUI项目
一.项目地址:https://git.coding.net/lvgx/wsz.git 二.PSP: PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min) Plannin ...
随机推荐
- akoj-1319-四方定理
四方定理 Time Limit:1000MS Memory Limit:65536K Total Submit:28 Accepted:11 Description 数论中著名的"四方定理 ...
- NYOJ 128 前缀表达式的计算
前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...
- 学问Chat UI(1)
前言 由于项目需要,最近开始借鉴学习下开源的Android即时通信聊天UI框架,为此结合市面上加上本项目需求列了ChatUI要实现的基本功能与扩展功能. 融云聊天UI-Android SDK 2.8. ...
- 使用ExpressionVisitor进行lambadaExpression的动态拼接
现有如下实体 public class User { public int Id { get; set; } public string Name { get; set; } } 根据这个实体创建一个 ...
- Linux - 简明Shell编程07 - 数组(Array)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash test0=() # 定义数组 ...
- 在WebGL场景中使用2DA*寻路
这篇文章将讨论如何在一个自定义的地面网格上进行简单的2D寻路,以及确定路径后如何使用基于物理引擎的运动方式使物体沿路径到达目标地点.读者需要预先对WebGL和Babylonjs知识有一些了解,可以 ...
- C++构造函数初始化列表与赋值
C++中类的初始化操作一般有四个部分组成: 1.构造函数初始化列表 2.构造函数体内赋值 3.类外部初始化 4.类声明时直接赋值 对于内部数据类型(char,int,float...),构造函数初始化 ...
- HoloLens开发与性能优化实践
HoloLens中国版终于于5月底在中国上市,同时国内的技术社区经过一年的成长也有了很大的扩张,越来越多的开发者开始进入了HoloLens开发领域,尝试着使用混合现实(Mixed Reality)技术 ...
- HIVE—索引、分区和分桶的区别
一.索引 简介 Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapRed ...
- github+hexo搭建自己的博客网站(三)主题之外的一些基本配置(图片位置,文章目录功能)
使用的yilia主题之后,还需要进行自己的定制配置 1.图片的位置 比如打赏的支付宝二维码图片,是在当前博客的source/assets/img/下 (不是当前主题) 配置:(在yilia主题下文件里 ...