一、题目描述

  1. 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是MacLinuxweb,手机上的),成为一个有基本功能、一定价值的程序。实现了以下三种功能:

1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;

2.有计时功能,能显示用户开始答题后的消耗时间;

3.界面支持中文简体/中文繁体/英语,用户可以选择一种。

二、队伍成员

201421123110 杨海亮

201421123112 余昕宇

三、功能设计

1.基本功能,包括整数与真分数的四则运算、判断对错和正确率显示。

2.新增功能,包括计时器、语言切换和把以前的对错数量保存并在此基础上增量计算。

四、思维导图

五、代码实现

计时器


  1. void Cnew1Dlg::OnTimer(UINT_PTR nIDEvent)
  2. {
  3. // TODO: Add your message handler code here and/or call default
  4. static UINT mm =0;
  5. static UINT ss =0;
  6. static UINT ms =0;
  7. CString str2;
  8. switch (nIDEvent)
  9. {
  10. case 1:
  11. ms++;
  12. if (ms== 60) {ms=0; ss++;}
  13. if (ss==60) {ss=0; mm++;}
  14. str2.Format(_T("%02i:%02i:%02i"),mm,ss,ms);
  15. m_tiii.SetWindowTextW(str2);
  16. break;
  17. }
  18. CDialogEx::OnTimer(nIDEvent);
  19. }
  20. SetTimer(1,1000,NULL);//放在触发按钮函数内

为了实现把以前的对错数量保存并在此基础上增量计算,我们采用了文件读写的方式,每运行一次运算都会将对错数量写入文件,计算或重启程序时再从文件中读取相应值赋给对错总量,并在界面上直观体现出来。


  1. 写入文件
  2. char C1[100],C2[100];
  3. itoa(count2,C1,10);
  4. itoa(count3,C2,10);
  5. CFile file(_T("CFile.txt"),CFile::modeCreate|CFile::modeWrite);
  6. //构造CFile对象
  7. CFile file1(_T("CFile1.txt"),CFile::modeCreate|CFile::modeWrite);
  8. file.Write(C1,strlen(C1)*sizeof(char));//写入数据到文件
  9. file.Close();//关闭CFile对象。
  10. file1.Write(C2,strlen(C2)*sizeof(char));//写入数据到文件
  11. file1.Close();//关闭CFile对象。

  1. 读文件
  2. file.Open(_T("CFile.txt"),CFile::modeRead);//构造CFile对象
  3. file1.Open(_T("CFile1.txt"),CFile::modeRead);//构造CFile对象
  4. char FileContent[100],FileContent1[100];
  5. CString C4(""),C5(""),C6("");
  6. string a1="",a2="";
  7. memset(FileContent,0,100);//初始化FileContent
  8. memset(FileContent1,0,100);//初始化FileContent
  9. file.Read(FileContent,100);//读入数据
  10. file.Close();//关闭文件对象
  11. file1.Read(FileContent1,100);//读入数据
  12. file1.Close();//关闭文件对象
  13. a1=FileContent;
  14. C4=a1.c_str();
  15. count2=atoi(a1.c_str());
  16. a2=FileContent1;
  17. C5=a2.c_str();
  18. count3=atoi(a2.c_str());
  19. GetDlgItem(IDC_STA7)->SetWindowTextW(C4);
  20. GetDlgItem(IDC_STA8)->SetWindowTextW(C5);

语言切换,现在只能做到切换界面文字,不能将程序中的文字一起切换,仍需进一步研究。


  1. m_combo.AddString(_T("简体")); //m_combo为变量名
  2. m_combo.AddString(_T("繁體"));
  3. m_combo.AddString(_T("English"));
  4. m_combo.SetCurSel(2);

  1. void Cnew1Dlg::OnCbnSelchangeCombo1()
  2. {
  3. CString strweb,strweb1("简体"),strweb2("繁體"),strweb3("English");
  4. CString jianti1("下一题");//这里只列出了一个,其他的以此类推。
  5. CString fanti1("下一題");
  6. CString en1("next");
  7. int nSel;
  8. nSel = m_combo.GetCurSel();
  9. m_combo.GetLBText(nSel,strweb);
  10. if(strweb.Compare(strweb1)==0)
  11. {
  12. SetDlgItemText(IDC_BUTTON1,jianti1);
  13. }
  14. else if(strweb.Compare(strweb2)==0)
  15. {
  16. SetDlgItemText(IDC_BUTTON1,fanti1);
  17. SetDlgItemText(IDC_STA18,fanti14);
  18. }
  19. else if(strweb.Compare(strweb3)==0)
  20. {
  21. SetDlgItemText(IDC_BUTTON1,en1);
  22. }

六、运行截图

初始默认中文简体

几次计算后截图

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

切换为中文繁体

切换为英文

七、总结

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的更多相关文章

  1. 四则运算GUI版本功能展现

    对于四则运算的GUI版本实现支持批量出题,由于我的不积极导致教师没找到对应的连接,现在重新补上链接 http://www.cnblogs.com/liquan/p/5978687.html codin ...

  2. 四则运算GUI版本

    要求:用户界面新增支持 Windows GUI,同时保留原有命令行下所有功能.提示: 先测试驱动开发,然后重构代码,以GUI为目标修改"核心"函数,把与GUI/Console相关的 ...

  3. 结对编程四则运算gui

    码市地址:https://git.coding.net/linzhao/sizeyunsuangui.git 林 钊 -- 201421123105 吴世荣 -- 201421123119 王坤彬 - ...

  4. 四则运算GUI版

    小学四则运算界面版 李永豪 201421123117 郑靖涛 201421123114 coding 地址:https://git.coding.net/ras/work2.git 一.题目描述 我们 ...

  5. 结对编程1.四则运算GUI版

    201421123022 王若凡        201421123026  欧阳勇 coding详细代码 a.需求分析: 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linu ...

  6. 结对编程-四则运算-GUI

     201421123022 王若凡        201421123026  欧阳勇 https://git.coding.net/ttoyy/sizeyunsuan-GUI.git a.需求分析: ...

  7. 结对编程1——四则运算-GUI

    码市链接:https://coding.net/u/hmhhh/p/hmh-homework/git/tree/master/ 201421123003 黄建英 201421123004 黄美海 题目 ...

  8. 结对编程-四则运算GUI的实现

    一.项目成员以及coding地址: 洪灏捷(本人)201321122020  coding地址:https://git.coding.net/hoje/The-GUI-operation.git 白至 ...

  9. 结对项目——四则运算GUI项目

    一.项目地址:https://git.coding.net/lvgx/wsz.git 二.PSP: PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min) Plannin ...

随机推荐

  1. TASKCTL产品功能清单-转载

    功能分类 功能描述 一级 二级 关系 调度控制 作业依赖关系调度 作业依赖关系调度是调度最基本的功能,指作业间具有顺序的运行,比如:a.b.c三个作业,只有当a完成后才运行b,b完成才能运行c 作业并 ...

  2. [ABP开源项目]--vue+vuex+vue-router+EF的权限管理系统

    好久没写文字了,当然大家也不期待嘛,反正看代码就行了. 演示网站 首先说下这个项目吧. 如标题一样是基于VUE+.NET开发的框架,也是群友一直吼吼吼要一个vue版本的ABP框架. 我们先来看看首页吧 ...

  3. org.apache.commons.io——FileUtils学习笔记

    FileUtils类的应用 1.写入一个文件: 2.从文件中读取: 3.创建一个文件夹,包括文件夹: 4.复制文件和文件夹: 5.删除文件和文件夹: 6.从URL地址中获取文件: 7.通过文件过滤器和 ...

  4. Maven注意事项

    Maven好处: 1.依赖管理:对jar包统一管理 2.项目构建:项目编码完成后,对项目进行编译.测试.打包.部署,实现项目一键发布1.配置环境变量    注意:maven工具必须有jdk环境.并且: ...

  5. 关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1

    关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1 ORACLE公司来培训BIEE,带了一个DEMO的DMP文件,其导出用户DBO具有DBA权限,缺省表 ...

  6. 关于JS中利用for循环解决实际问题的逻辑操作

    第一部分 <script>        //        <!--折纸:折多少次和珠穆朗玛峰一样高//1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度884 ...

  7. HTML颜色代码表/颜色名(网摘)

    HTML颜色代码表 原文出处:[颜色代码] HTML颜色名 source link: http://www.runoob.com/html/html-colornames.html

  8. SQL之运算符操作

    算数运算符: 用select可以实现加减乘除,求模操作等: 加法操作,      减法操作,      乘法操作,      除法操作,      DIV 除法操作,      求模操作,      ...

  9. git入门(4)团队中git保管代码常用操作

    在团队中协作代码时候,一定要熟练使用以下git命令,不至于把代码库弄乱, PS:一定要提交自己代码(git push)时候,先进行更新本地代码库(git pull),不然提交异常 git常用命令 1· ...

  10. rtems的GNU(GCC)编译环境配置

    // 创建目录 /home/shael/rtems/build   //存放解压包和编译包目录 /home/shael/rtems/archive   //存放源码包目录 /home/shael/rt ...