锦妖和她的小伙伴们 2018-04-19
借鉴文章:
一.需求分析
1.用户画像
用户群体:小学生
用户特征:年龄小、处于数学初级学习阶段
用户需求:获取四则运算题目、答题、查看统计结果
2.功能需求
1. 使用 -n 参数控制生成题目的个数,使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围
2.每道题目中的运算符个数不超过3个
3. 题目和运算结果中如果出现假分数应用真分数表示
4.将生成的题目存入Exercise.txt,题目答案存入Answer.txt,用户做题结果存入Grade.txt
5.程序支持1万道题目的生成
6.对生成的题目进行查重
二.功能设计
基本功能:生成表达式、表达式查重、生成标准答案、提交答案、统计结果
拓展功能:输入参数合法性检测及错误提示、buttonclick快捷打开txt文件
高级功能:软件图形交互界面
三.设计实现
(部分代码截图)
1.生成表达式二叉树:
构建二叉树,将运算数放入叶子节点,运算符放入非叶子节点,递归生成表达式tree.getroot().s
2.生成标准答案:后序遍历二叉树生成四则运算表达式,并计算出答案tree.getroot().value
3.表达式查重:树结构调整为左子树永远比右子树大,再依次比较树的高度、运算符数量、树的结构
4.将表达式、答案、统计结果分别存入Exercises.txt、Answers.txt、Grade.txt
5.假分数转换成真分数:
四.测试结果
五.源代码
项目地址:https://gitee.com/Linzhiyuan666/math.git
六.小结
本实验加深了我对数据结构、编译原理知识、面向对象思想的理解与掌握,在实验过程中也遇到了诸多问题,尤其是如何做到准确且高效率地实现对10000道题目的查重,通过调整树结构、优化查重算法最终解决了该问题。由于对C#比较了解故采用.Net Framwork框架顺便实现了软件图形交互界面,使其使用起来更加方便、体验感更好,在设计图形交互界面过程中做了诸多体验感的优化,如参数合法性检测与错误提示、ButtonClick快捷打开txt文件、表达式与答案内容预览的ListView、界面排版等,这些都加深了我对产品设计的理解与掌握。