https://github.com/kielingpao/sizeyunsuan

项目相关要求

1题目:实现一个自动生成小学四则运算题目的命令行程序

2说明

自然数:0, 1, 2, …。
• 真分数:1/2, 1/3, 2/3, 1/4, 1’1/2, …。
• 运算符:+, −, ×, ÷。
• 括号:(, )。
• 等号:=。
• 分隔符:空格(用于四则运算符和等号前后)。
• 算术表达式:
e = n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e),
其中e, e1和e2为表达式,n为自然数或真分数。
• 四则运算题目:e = ,其中e为算术表达式。

3需求:
1. 使用 -n 参数控制生成题目的个数,例如

Myapp.exe -n 10

将生成10个题目。
2. 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如

Myapp.exe -r 10

将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。
3. 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。
4. 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。
5. 每道题目中出现的运算符个数不超过3个。
6. 程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。
生成的题目存入执行程序的当前目录下的Exercises.txt文件。
其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。
7. 在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件,格式如下:
特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。
8. 程序应能支持一万道题目的生成。
9. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,输入参数如下:

Myapp.exe -e <exercisefile>.txt -a <answerfile>.txt

统计结果输出到文件Grade.txt,格式如下:

Correct: 5 (1, 3, 5, 7, 9)
Wrong: 5 (2, 4, 6, 8, 10)

其中“:”后面的数字5表示对/错的题目的数量,括号内的是对/错题目的编号。为简单起见,假设输入的题目都是按照顺序编号的符合规范的题目。

解题思路

实现部分:

1.要通过命令行运行,输入指令而且带有 使用 -n 参数控制生成题目的个数、使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围的参数,所以程序用使用命令行参数的main函数。

2.生成的题目存入执行程序的当前目录下的Exercises.txt文件,所以要使用文件操作,创建题目文件,写入文件,还要创建答案的文件。

3.程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。需要通过有限次交换来判断是否是同一个题目。

测试部分:

1.需要考虑到各种文件字符、各种输入的情况,创建0道题等等保证程序的鲁棒性。

设计实现过程

命令行运行Myapp.exe该程序,可以通过命令行参数,可以通过

Myapp.exe -n 10

Myapp.exe -r 10

Myapp.exe -e <exercisefile>.txt -a <answerfile>.txt

等命令运行程序。

遇到的困难及解决方法

1.一开始没分工好,导致我们两人做的功能有重复。解决办法:好好沟通。

关键代码or设计说明

所有操作都在dos命令行下操作即可。不用IDE,只用记事本写代码,用命令行编译运行即可。

在命令行使用Myapp.exe以及几个可选参数进行工作。

可以与dos的命令配合,例如CD、type指令这些通通都可以使用,Myapp.exe(或Myapp.exe)已然成为DOS命令行下一个指令。

测试运行

PSP

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

一小时

一小时

· Estimate

· 估计这个任务需要多少时间

一周

一周

Development

开发

3h

3h

· Analysis

· 需求分析 (包括学习新技术)

2d

2d

· Design Spec

· 生成设计文档

3h

3h

· Design Review

· 设计复审 (和同事审核设计文档)

1h

1h

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

2h

2h

· Design

· 具体设计

5h

5h

· Coding

· 具体编码

4h

4h

· Code Review

· 代码复审

1h

1h

· Test

· 测试(自我测试,修改代码,提交修改)

2h

2h

Reporting

报告

1h

1h

· Test Report

· 测试报告

1h

1h

· Size Measurement

· 计算工作量

20min

20min

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

30min

30min

合计

 

项目小结与结对感受

1.程序员要吃饭,如何才能吃饭并吃好饭,那就是自己必须比别人强。如果才能显得自己比别人强,那就要做到自己写的代码有自己的个性在里面。其实不然,目前,单兵作战只能适用于小型项目,对于大型的项目,组件化的开发,各个模块的接口,都需要定义,单靠单兵作战,无法成就强大而稳定的系统。

2.闭关自守,不交流。自己在那里Coding,只管自己的一摊子。殊不知,自己做了改动,会影响到别人的程序。

3.听不见别人的意见。程序员都认为自己很牛,对于别人的提出的意见都很难虚心地接受。

4.认为项目的成功不是自己的功劳而是大家的功劳,自己的地位很难在Team中体现。

5.过高地估计自己的能力。觉得自己什么都比别人好。

然而,开发一个项目就像踢足球一样,光有前锋是不够的,还要有教练(架构师)、队长(Team leader)。后卫踢得好的话,也能够有机会进球。自己有机会进球,虽然彰显了自己的能力,整个Team输了比赛,结果一样是失败。

所以,对于程序员来说,和足球运动员一样,只有彰显自己的个性,同时能够团结周围的Team的成员,一起去踢好一场球,做到双赢,才能够真正发挥自己的价值和作用。

C++小学生四则运算_余伟淇_郑鉴的更多相关文章

  1. 拉登是我罩的队_第三周_需求改进&原型设计

    需求改进&原型设计 1. 需求&原型改进 1.1硬件部分(1) 硬件部分分为主机和遥控器,分别由两个单片机进行控制.(2) 单片机1:负责显示游戏的界面.使用数码管显示当前得分,使用不 ...

  2. 30道小学生四则运算题C/C++编程

    软件工程科课上,老师通过实例讲解什么是程序,程序和软件的区别,要求我们通过短时间写一道编程题, 题目就是编写30道小学生四则运算题.以下就是源代码: #include<iostream.h> ...

  3. Demo02_对结构体进行文件读写_张仕传_作业_

    #include <iostream> using namespace std; #define StructArrarySize 5 // 老师数量 #define StudentNum ...

  4. CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站

    CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站 CLOSE-UP FORMA ...

  5. 金洪林:红邦创衣止于至善_品牌-生活时尚_品牌_YOKA时尚网

    金洪林:红邦创衣止于至善_品牌-生活时尚_品牌_YOKA时尚网 金洪林:红邦创衣止于至善

  6. 联系我们_你我想法_【有男度】UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站

    联系我们_你我想法_[有男度]UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站 联系我们 2012-02-17   国内北京公司总部  邮编 ...

  7. 联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐

    联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐 衬衫乐定制网是国内领先的成衣定制机构,专业从事衬衫网络在线定制.高级定制服装的价格不菲,而衬衫乐运用了&qu ...

  8. Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!

    Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!       首页 / 关于 ...

  9. MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载

    MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载  武侠类手机文字游戏,经典再现高度自由玩法宠物 自制装备 师徒自立门派 自造武功欢迎来玩 Q群 1 ...

随机推荐

  1. UNION和UNION ALL关键字

    UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. 1.对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复 ...

  2. ORMLite的使用

    首先需要下载core和android两个jar http://ormlite.com/releases/ 然后拷贝到libs文件夹下并且添加为库 具体的使用看标程: School.java packa ...

  3. mysql复制原理与机制一

    复制原理:复制需要二进制日志记录数据库上的改变 slave的IO线程复制把master上的Binary log读取到本地的relay log里SQL线程负责把relay log恢复到数据库数据里 sh ...

  4. oracle ---中文乱码问题

    ---- 1.原因分析 ---- 通过对用户反映情况的分析,发现字符集的设置不当是影响ORACLE数据库汉字显示的关键问题.那么字符集是怎么一会事呢?字符集是ORACLE 为适应不同语言文字显示而设定 ...

  5. Py修行路 python基础 (十三)匿名函数 与 内置函数

    一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是 ...

  6. CVE-2017-8464(震网三代)复现

    开启msf root@sch01ar:~# msfconsole 设置模块 msf > use exploit/windows/fileformat/cve_2017_8464_lnk_rce ...

  7. Java面向对象-递归

    Java面向对象-递归 递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己: 我们给出一个案例,求阶乘  1*2*3*...*(n-1)*n 我们用非递归和递归方式分别实现下, ...

  8. Java如何解决form表单上传文件,以及页面返回处理结果通知!

    前端JSP代码 <form id='formSumbit' class='form-horizontal' action='/ncpay/route/chlsubmcht/batchImpor' ...

  9. git用法小结(1)--建立远程仓库

    最近一直在学习使用git来管理自己的程序,总是今天东学一点,明天西凑一点,到用的时候,总是有些茫然不知所措. 在博客园里看见一篇老好的文章,教我们做笔记啦,但是做完笔记还是要记得总结哦! 来吧,让我们 ...

  10. iPython notebook 安装使用

    pip install jupyter jupyter notebook --allow-root