中小学题目生成项目结对编程代码分析

此篇博客是对杨同学的个人项目“中小学数学卷子自动生成程序”的代码分析

完成自己的个人项目之后再来看杨同学的项目,会比较容易看出他人程序与自己程序的不同之处。

优点:

由于感觉自己的程序最不足的地方在于括号的添加,所以首先关注杨同学题目中的括号是怎么生成的。

我的括号是在算式生成的过程中随机添加的,导致只能生成括号内括号,而不能生成两个相互独立的括。

类似下图

而对方的代码是在算式生成之后添加的括号,

如下图

并给算式中的每个数字左右两边分别建了两个数组来记录括号的个数,这样就解决了我没有实现的独立括号问题。

发现几个不足之处:
1、首先程序流程问题。

大体的流程图应该是如图所示的

个人项目需求中要求”登陆后系统提示‘准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):’”,

还要求“在登录状态下,如果用户需要切换类型选项,命令行输入‘切换为XX’,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示‘请输入小学、初中和高中三个选项中的一个’”。

综合上述两个要求,可以分析出要求在用户登录成功的情况下,需要对输入的内容进行三种形式的判断,

符合题目数量要求的数字、"切换为XX"这种字符串式的切换年级指令、退出当前用户指令-1,

输入这三种之中的一种,程序都应该能够进行相应的判断与操作。

但是对方的程序中只能在登录用户之后,输入相应的初始年级题目数量并生成题目之后才能转换年级,而不是在登录状态下的任何时候都能够切换年级、退出用户登录、生成相应的题目数量。

这一方面是程序的流程问题,另一方面对方程序没有一个可以判断三种情况并进行相应操作的函数。

2、第二个不合理的地方我的程序也存在,sin、cos、tan的值不是很合理,sin、cos和tan是生成算式之后随机添加进去的,所以他们的值不是简单的30°、45°、60°之类的简单三角函数值,不利于口算,需要用到计算器。

3、生成题目的存储位置可以更详细一点,分出小学初中高中三个文件夹。这样会方便题目查重过程的工作量,只需查该用户相同年级下的题目即可,不需要该用户全部年级的题目。

总结:

看了对方同学的程序,收获还是比较大的。

1、杨同学的程序可读性非常强,代码模块非常清晰明了,这是我的程序代码所不具备的。

2、因为对方用的是c++语言而不是python语言,看代码的过程中不仅让我复习了基本的c++语法,还学习了一些库函数的使用和新的C++语法,提高了自己写程序的基本能力。

3、同时也提高了自己分析代码的能力。

4、整个结对编程过程其实是对自己代码复查、反思、提高的一个过程,是对他人代码学习、思考、学习并发现问题的一个过程,是对整个项目全面审查的一个过程,使我较为全面地、更加深入地了解了整个项目,能够汲取借鉴对方程序中的优点,添加到自己的程序中,逐渐完善代码的bug,取其精华,去其糟粕。

原文地址:https://www.cnblogs.com/Super-Fan/p/11551329.html

时间: 2024-08-28 17:14:31

中小学题目生成项目结对编程代码分析的相关文章

结对编程代码分析

首先声明一下题目要求:中小学数学卷子自动生成程序. 提前已经设定好了一组用户数据,保存在了data.txt文档中,每个用户有自己的三个数据,账号,密码,对应的年级.输入账号和密码,若在data.txt中有此用户,则会在提醒用户输入生成题目数量.在题目数量输入完成后,会按照要求生成对应年级的数学公式,并为每一个账户创建一个文件夹,将生成的公式储存在以当前时间命名的txt文件中.例如18-9-25-10-30-59.txt,每次都会生成一个新的txt文件,文件生成后,可以将这个用户的年级切换到其他年

地铁线路项目-结对编程

地铁线路项目-结对编程 2019.7.25 完成了模块开发:填写PSP实际完成时间:完成了模块设计:进行单元测试.黑盒测试. PSP表记录: PSP2.1 Personal Software Process Stages Time Real Time Planning 计划 1h 1h ??·?Estimate ?? ·?估计这个任务需要多少时间 1h 1h Development 开发 21h 20.5h ??·?Analysis ?? ·?需求分析?(包括学习新技术) 2h 1.5h ??·

结对编程代码互评

不到一周的时间里我们完成了个人项目的编程,学习的同时发现了一些问题. 我用的是java,队友用的是c++,语言不同,存在的问题却都差不多,当然,优点也是有的嘛 代码优点: 1.结构清晰,将工程分为多个模块进行处理,单独将题目难度的处理,与随机分开,以三个函数的形式分割了需求的不同,同时将随机进行了统一处理.2.利用了结构体对账户进行处理,形成了类似数据库的处理,方便了后来用户的添加与删除.3.储存空间的节省,同时保证结构清晰,代码将文件创建与文件夹创建合成一个步骤,用户出题才会创建文件夹,节省了

EF自动生成的模型edmx代码分析

edmx代码分析 本文分析Entity Framework从数据库自动生成的模型文件代码(扩展名为edmx). 1. 概述 本文使用的数据库结构尽量简单,只有2个表,一个用户表和一个分公司表(相当于部门表),一个用户必须属于一个分公司,因此用户表有一外键关联到分公司表.数据(实体)模型如图1. 图1  数据模型 2. 整体结构 以文本方式打开.edmx文件,可以看到这是一个xml文件,根结点下包括2部分内容,如图2所示. 图2  整个文档由2大部分组成 图2中,第一部分为<edmx:Runtim

中小学数学卷子自动生成 - 结对项目wjy的代码分析

[实现思路] 命令行输入用户名和密码,匹配试卷难度,每个类的账号只能生成当前难度下的试卷: 根据试卷难度生成题目,主要是随机生成操作数的个数,每个操作数的形式,两个操作符之间的操作符,最后是随机生成括号,因为设计题目的合理性,所以在写随机生成的时候需要考虑到各种可能的情况: 最后生成的试卷以“年-月-日-时-分-秒.txt”命名方式生成到以用户名命名的文件夹中. [函数结构] public static void main(String[] args) static void init() st

中小学生自动出卷系统——个人项目结对编程分析

在对刘同学的代码进行学习之后,结合我自己项目的开发经验,我尝试对其代码文件作出分析,希望能在过程中收获更多,取长补短. 优点: 代码的层次分明,贯彻了面对对象设计的理念,除主类外分为login.create.accounts三个类,对应了登陆,出题,账户三个在需求中的重点部分.把界面操作.数据处理和数据存储分离. 编程风格统一,函数命名符合规则,可以清晰分辨函数与变量,并从函数名或变量命直接联系到其作用与意义.代码注释清晰,简洁,有重点. 可扩展性,可复用性,可维护性强.代码功能基本上都集成在各

关于四则运算题目生成项目

PSP2.1 Personal Software Process Stages Time Planning 计划     · Estimate · 估计这个任务需要多少时间 30 Development 开发    · Analysis  · 需求分析 (包括学习新技术) 1  · Design Spec  · 生成设计文档 1   · Design Review  · 设计复审 (和同事审核设计文档) 1   · Coding Standard  · 代码规范 (为目前的开发制定合适的规范)

j结队编程代码分析

首先看运行结果: 优点: (1) 思路清晰,在代码里用到了很多的函数,这些函数能够使人比较绒内衣清楚他的思路. (2) 代码简洁,没有过多的重复的代码片段,这也是使用多个函数的原因. (3) 程序实现了大部分题目要求. 缺点; (1) 在程序刚运行时如果给出提示输入用户名和密码会更好. (2) 在一些变量的定义中,如果能在后面注释是什么意思,干什么用的会让人更容易看懂代码. (3) 在输出题目时没有在行首输出题目的序号. 收获: 在以审查的目光去看别人的程序代码时,会有着很不同的感觉.会拿着别人

结对编程 代码复审

我的partner是一个做事很认真的同学,从他的作业中可以看出他花了很大的心思.他的程序思路清晰,很好理解,复审他的代码是相对快乐的一件事.他的程序代码结构比较清晰,运行速度很快,能完成基本的命令请求,是个不错的程序.但是也存在几个需要改进的地方:1.不能处理中文目录.2.交互方式不符合规定的要求.3.不能将h,cpp,cs,txt文件全部统计,只能统计某一类文件.