博客信息 | 沈阳航空航天大学计算机学院2020软件工程作业 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10685 |
课程目标 | 熟悉一个“高质量”软件的开发过程 |
作业目标 | 结对编程练习 |
1 题目要求
本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。
选择题目:
我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
- 能够自动生成四则运算练习题
- 可以定制题目数量
- 用户可以选择运算符
- 用户设置最大数(如十以内、百以内等)
- 用户选择是否有括号、是否有小数
- 用户选择输出方式(如输出到文件、打印机等)
- 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
2 任务分配
驾驶员:曹康杰
- 能够完成全部代码工作,程序基本实现全部要求功能,并将代码上传至GitHub代码托管系统中
- 能够对导航员在本次编程工作中起到的作用给出客观评价,并完成500字以上的总结,并且上传和队友工作时的照片
领航员:盛鹏(队友)
- 能够辅助驾驶员完成全部代码工作,并且为关键函数选用合适的覆盖标准设计测试用例,并编写代码进行单元自动测试
- 利用上次结对编程作业的代码检查表对驾驶员的本次工作进行评价,并同时填写PSP 0.1工作记录表
- 能够对本次工作完成500字以上的总结
3 开发语言及软件
开发语言:python
使用软件:pycharm 2019.3.3
4 模块设计
程序主要分为算式随机生成和图形用户界面两个模块
-
随机算式生成较为简单,使用random模块进行随机生成数字数量、随机选择用户选定的运算符、随机生成括号,将本模块封装为一个函数。
-
图形用户界面主要用于用户输入,并根据用户输入的参数,调用算式生成模块生成题目,并且显示题目。设置一个“查看答案”功能,使用python中的eval()函数即可直接计算表达式的结果。交互界面主要用到python中的Tkinter模块,Tkinter可以生成Windows窗口,同时提供很多GUI组件,本次开发用到的组件有:
- Label:标签控件,显示文本或位图
- Listbox:列表框控件,显示多个项目,并允许用户选择一个或多个项目
- Entry:输入控件,输入单行字符串和显示文本
- Button:按钮控件,在程序中实现按钮,可以通过command属性关联函数或方法
- Radiobutton:单选控件,实现选项的单选
- Checkbutton:多选框控件,实现选项的多选
- Scrollbar:滚动条控件,在内容超过可视化区域时使用,例如Listbox
想要学习Tkinter的同学可以参考这篇教程
5 源代码
6 运行结果
- 初始界面
- 生成题目
7 合作过程
在线使用QQ进行交流
8 总结评价
- 由于本次是我第一次使用python进行开发,对于Tkinter组件不是特别熟练,因此花了较长的时间在图形用户界面部分。python语言比其他语言简洁易懂,并且提供很多内置的包和API,是一门上手特别快的语言。
- Python有多个GUI(图形界面)库,如
Tkinter、wxPython、Jython
等,最终选择容易入手的Tkinter。首先明确了各组件的参数设置,以及组件之间的连接和关系,如几何布局器分为pack() grid() place()
三种,根据不同的功能需要,选择不同的几何布局器,最终通过使用各种组件完成了一个较为满意的交互界面。 - 感谢领航员盛鹏同学为我提供的很多帮助,提供给我很好的编程思路,并且指出多处可优化的地方。
9 工作记录表
项目 | 预计 | 实际 |
---|---|---|
设计时间 | 1h | 40min |
编码时间 | 3h | 4h |
代码行数 | 200 | 172 |
错误数量 | 0 | 3 |
错误修复时间 | 30min | 1h |
开发总时间 | 5h | 5h40min |