四则运算题目生成——BIT软件工程基础结队项目

组内成员博客链接:https://blog.csdn.net/weixin_41709195/article/details/86515191
核心代码仓库链接:https://github.com/Archie7777/Arithmetic-Problems
图形界面程序代码仓库链接:https://github.com/Archie7777/Shitty-Game

一、用时记录

PSPPersonal Software Process Stages计划用时(min)实际用时(min)
PLANNING计划--
----estimate估计这个任务需要多长时间1010
DEVELOPMENT开发--
----analysis需求分析(包括学习新技术)120200
----design spec生成设计文档6080
----design review设计复审(和同事审核设计文档)3020
----coding standard代码规范(为目前的开发制定合适的规范)1010
----design具体设计2060
----coding具体编码600600
----code review代码复审300300
----test测试(自我测试,修改代码,提交修改)120200
REPORTING报告
test report测试报告2060
size measurement计算工作量1010
postmortem & process improvement plan事后总结,并提出过程改进计划180100
合计14801650

二、开发环境

IDE:Visual Studio 2017

语言:C#

操作系统: windows10

三、组内分工&开发过程

我设计及编码基础的数据结构以及图形界面部分。

另一个成员实现表达式生成部分。

开发过程

  1. 我们共同制定了一个代码标准,为方便队员读懂他人代码。
  2. 我们进行了详细的需求分析,并进行了概要设计。
  3. 组内分工,并进行详细设计。
  4. 编码并整合。
  5. 编写图形界面。

四、设计思路概要

因为要生成表达式,所以最好的先生成一颗表达式树,通过这颗表达式树,可以完成对表达式的求值,以及中序表达式的生成。

因为涉及到真分数和整数的运算,所以我设计了一个Number类,统一进行数字的运算。

然后,通过一个Expression类将所有表达式操作封装。

最后,通过一个ArgumentParser类分析cmd参数,进行控制。

总的生成过程为:随机生成一棵树,树的叶节点随机生成Number类,非叶节点随机生成Expression类。

用户输入答案判定对错部分,只需比较用户输入的String和已经保存的答案(一个Number实例)的String是否相等即可。

项目所有的类(不包括GUI部分):

  1. Number(数字及数字运算)——我

  2. Operator(运算符)——我

  3. Expression(生成表达式)——我&队友

  4. ArgumentParser(分析参数)——队友

  5. Program(入口类)——队友

五、详细设计思路(不包括队友分工部分)

4.1 Number类

Number类的想法是,通过将整数看作分母为一的分数,来统一真分数和整数的运算。

当数字的分母为1时,则只输出分子,这样在外部看来,整数还是整数,分数还是分数。但实际上整数与整数之间运算还是需要通分之类的分数操作的。

同时,将Number与Number之间的运算进行了运算符重载,并将防止除零的代码封装进Number类中。

还有Number类的格式化打印等操作也被统一封装。

4.2 Operator类

Operator类很简单,一个实例保存一种运算符,可以进行格式化打印输出等操作。目的是保存随机生成的运算符。

4.3 Problem类

在完成Expression类之前,我写了一个简单的生成表达式的版本,Problem类。这个类通过随机生成一颗极限深度为3的树来生成表达式。

因为是简单版本,所以代码混乱,功能不齐全,主要是提供思路,后经过组内另一个成员的代码重构,形成了现在的Expression类的版本,新版本代码思路清晰,功能更加齐全,封装更加完善。

4.4 GUI

GUI很简单,通过C#的所见即所得编程模式和网络上的查阅资料很容易就写出了图形界面。

GUI中新增加的历史纪录功能并没有利用数据库,而是求简单,在本地创建了文件。

六、项目心得

首先,这是我第一次与别人通过代码托管共同完成一个小项目,我熟悉了软件开发设计的过程,深刻理解了软件设计、代码质量的重要性。一个好的项目,需要有好的软件设计思路作为基础,以及好的代码规范作为工具。

同样,我明白了小组分工合理的重要性,组内成员的配合很大程度上影响了项目的开发进度,以及软件质量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值