开发环境
操作系统:Ubuntu16.04
开发语言:C++
开发环境:Qt Creator 4.0.2 ,Based on Qt 5.7.0 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64 bit)
需求分析
这是一个软件工程作业,题目要求如下:
- 能够自动生成四则运算练习题
- 可以定制题目数量
- 用户可以选择运算符
- 用户设置最大数(如十以内、百以内等)
- 用户选择是否有括号
- 用户选择输出方式(如输出到文件等)
- 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
一些说明,考虑到小学生的计算水平,不能有负数。。。。同时,不仅仅是参与运算的数据要在要求的范围内,运算完成的结果也要在要求的范围内。
具体设计
依据面向对象的设计原则,总共有下面几个类:
Calculator
:完成后台的逻辑处理,输出用户需要的数据。Widget
:主要的框架,包含了其他的一些UI类,相当于一个总的框架,组合了前端的各类显示控件,同时又担负着前端显示控件与后端逻辑处理通信的角色。SaveData
:用于存储数据到相应的文件Bridge
:相当于一个数据通信的桥梁,获取显示输出的数据,并把获取的数据传递给SaveData
类,用于保存。
通过Qt独有的信号和槽机制,进行类之间的通信。用户选择了需要的操作后,进行数据生成,并显示。如果想要保存数据的话,需要选择相应的目录进行数据存储。也可以清空之前的数据。
Github暂时坏掉啦,所有的代码在Coding.net上:https://coding.net/u/Erick_Lv/p/Qt_Calculator/git/tree/master/software_homework?public=true
基本文件的结构:
具体操作如下
软件初始化。默认10以内的运算,默认10道题目
假设我们要选择混合有括号的计算,20道100以内的题目,并输出结果:
上述图片输出了结果。
现在要把数据保存到桌面上:
之后保存成功,我们去桌面上查看:
打开记事本,文件已经保存到里面了:
一些感想
断断续续花了大约一天半到两天的时间,学习了一下Qt基本操作,并写了这么一个作业。其实,感觉真正困难的不是编程语言,而是软件架构的设计。这个软件虽然代码量不是特别多,但是却包含了一些很经典的软甲设计思想。平时写算法和数据结构或者其他一些机器学习的程序,主要是面向过程的,注重的更多是程序的过程和结果。在本次设计时,这样的思想却让我在刚开始的翻车了,,,第一次的架构设计使得类之间的耦合度太高,只能重新设计。。。最后这个发布版本是第二次设计的。。。
正如老师在课上说的,软件工程不仅仅是写代码那么简单,,我们需要学习的东西还有很多。像设计模式、软件测试等我们都需要不断的去学习。通过本次作业,我体会到了那张大学生与工作几年软件工程师在编码时间所占比例差别的原因了。其实代码只是个工具,当然,熟练使用工具肯定是有用的。但是当熟练度到达一定程度的时候,考察的更是一个软件工程师的综合能力了。
还是太菜了。。。。滚去学习。。。。。。。。软件上添加了吾王的图片,感觉就是不一样啊,,虫合虫合。。。