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. Linux IO 监控与深入分析

    https://jaminzhang.github.io/os/Linux-IO-Monitoring-and-Deep-Analysis/ Linux IO 监控与深入分析 引言 接昨天电话面试,面 ...

  2. Instantiate实例化的注意事项

    _obj= Resources.Load("xxx") as GameObject;Instantiate(_obj); 这里的_obj对象和 _obj= Instantiate( ...

  3. FPGA前世今生(三)

    上期介绍了关于FPGA的IOB单元,这期我们介绍一下FPGA内部的其他资源,这些都是学好FPGA的基础.不管前世的沧桑,还是后世的风光,我们都要把我现在的时光,打好基础,学好FPGA. 大多数FPGA ...

  4. (转)winform下TCP通信的简单应用

    本文转载自:http://blog.csdn.net/wanlong360599336/article/details/7557064 先看效果图: TCP比较繁琐的就是三次握手定理,每次再发送数据前 ...

  5. Java-Runoob:Java 运算符

    ylbtech-Java-Runoob:Java 运算符 1.返回顶部 1. Java 运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量. ...

  6. Java-API-Package:java.net百科

    ylbtech-Java-API-Package:java.net百科 并非所有系统都支持 IPv6 协议,而当 Java 网络连接堆栈尝试检测它并在可用时透明地使用它时,还可以利用系统属性禁用它.在 ...

  7. 文件操作open,r,w,a三种模式

    对文件操作的流程: 1.打开文件,得到文件句柄并赋值给一个变量: 2.通过句柄对文件进行操作 3.关闭文件 open("文件名"),默认为只读打开,如果你打开文件,不指定编码集,那 ...

  8. java成神之——properties,lambda表达式,序列化

    Properties 加载defaults.properties文件 写Properties到xml文件 读Properties从xml文件 Lambda表达式 自定义 内置 sort方法中使用Lam ...

  9. Centos6.6安装Python3.5笔录

    1.CentOS6.6 安装Python3.5 的依赖包 yum groupinstall "Development tools" yum install zlib-devel b ...

  10. ORACLE各版本下载地址

    ORACLE 10g下载|ORACLE 10g下载地址|ORACLE 10g官网下载地址 ORACLE 10g下载地址 oracle 下载还需要用户名我自己注册了个方便大家使用下载 user:1603 ...