结对编程——对队友代码分析

要实现的功能:

  1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;

  2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;

  3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);

  4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;

  5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;

  

步骤分析:

  登录模块:将账号。密码等信息存在csv文件中,利用pandas库读取账号密码信息,与命令行输入的信息进行比较,若信息吻合则登录成功,不吻合则重新输入信息。返回账号和账户类型。

  代码

  生成题目数量模块:

    导入re模块,value = re.compile(r‘^[0-9]+$‘),正则表达式判定输入是否是数字。

    turn_grade = re.match(r‘切换为(.*)‘, str_subject_num),判断在登录状态下切换账号类型。

    

  生成题目模块:

    在判断重复上使用了set容器,每生成一道数学题,添加到set容器,如果set容器里存在该题目,则该题目不写入到txt文件中。

  主函数模块:导入os模块,在指定路径生成账号信息所属的文件夹,然后改变程序运行路径,使得在账号文件夹生成txt文件,完成之后,再修改路径,回到代码所在路径,继续生成题目。

    

    

优点: 基本实现了所有需求条件。代码书写和命名较规范,让人一目了然,更容易读懂程序。

      使用set容器保证了题目不会与之前的题目重复。

      程序运行可以多次生成试卷,有较大的方便性。

缺点:   没有注释,在一些关键代码处没有注释解释代码。

      生成txt文件时没有解决一些细节问题,切换账户类型时,生成题库的文件还是存在原来账户的文件夹,使得一个账户文件夹里有小学、初中、高中的数学卷子。

总的来说,队友还是很优秀的,代码中使用了一些库,给编写个人项目带来了很大的方便性,比C/C++、java等语言简洁。

  

  

原文地址:https://www.cnblogs.com/wwht233/p/11553063.html

时间: 2024-09-30 04:16:20

结对编程——对队友代码分析的相关文章

结对编程:队友代码分析

按照结对编程要求,对队友的代码进行分析.在代码中发现的问题可以提醒队友或者警示自己. 优点: 一.代码以外: 1.使用语言为Python,比起JAVA和C++方便许多,而且实现许多功能也方便许多,可以说是从开始就为拓展打好了基础.事实上也的确因为这点,我们选用了他的代码作为核心 2.文件按功能分为几个文件,命名为CreatSymbol.CreatFirst.CreatSecond.CreatThird.Test.各个函数位置明确,命名规范 3.注释详细且明确.文件/函数的开头都有注释,各关键部分

中小学数学卷子自动生成程序-结对编程之队友代码分析

一.编程语言:C++ 二.代码解读与分析: 1. 项目逻辑 通过输入信息与数组中存储账户信息比对完成用户登录.根据不同的类型要求生成相应类型的试卷并查重.将生成题目以指定的形式存放在指定文件夹下.过程中可切换试卷类型. 2.函数功能说明 int main():主函数负责调用各个功能函数,将各个功能模块按照项目实际的使用情况与应用逻辑结合适当的提示性信息进行组织和套用. void SetPrimary(int n):生成小学类型的试卷. void SetMiddle(int n):生成初中类型的试

结对编程_队友代码分析

项目需求:完成一个能够根据用户身份和用户请求自动生成小学,初中,高中试卷的程序,具体要求就不细说了. 队友代码的赏析:首先我得说说他的优点,不然你看缺点可能会很累(开个玩笑啦),程序的基本功能可以实现,能够对不同用户的不同需求通过随机数生成相应试卷,同时也能够创建txt文件在个人相对应的文件夹目录下,对于稳健操作的相关代码有一定的了解,实现通过循环输入判断输入是否合法,生成的三个等级的试卷有难度区分度并满足出题的基本要求. 不足: 1.从生成的题目来看,首先漏了两个要求,一个是比较难处理的括号问

结对编程之队友代码分析

优点: Java GUI界面: 界面简约,操作简单,实用性强   2 .独特的解题思想(上代码) //生成对应年级的题目     public String getSubject(int type) { Random rand = new Random(); int Num,NumOpe; if(type == 0)   NumOpe = 4; //小学运算符下标取前4个 else if(type == 1)  NumOpe = 12;    //初中运算符取前12个 else NumOpe =

结对编程评价队友代码

队友使用C++实现该个人项目,十分地面向过程 1.首先是用户初始化 优点:使用map方便检索 缺点:增加用户比较麻烦 2.main函数实现 登陆.生成题目.切换题目难度功能 其中使用while循环来实现各功能界面间切换的功能,第一层while循环是登陆,登陆成功进入第二层循环生成题目,若输入“切换为XX”,但XX不为小学初中高中的任意一个,会进入第三层循环要求输入以上任一难度. 优点:层次分明,层层递进 缺点:如果界面数量变多,继续使用该方法会使得代码臃肿,可读性变差 3.使用流水线方式生成一道

结对编程队友代码分析

这次结对编程的队友是可熊,感谢可熊不嫌弃我这个鶸,,和我组队 通过分析可熊的代码,深刻体会到了自己代码的不规范以及代码可延展性的缺失 比如using namespace std; ,这一行代码虽然自己写的时候很方便,但没有考虑到别人的编程习惯,某些工程代码里会出现以关键字做变量名的情况,这样写会不兼容 所以要用cin,cout作为标准输入输出应该如下面代码: int x; std::cin >> x ; std::cout << x << std::endl; 或者像这

结对编程初体验——代码复审

这一次和室友结对编程,第一项任务就是互看代码.想到上一次这样认真看她的C++代码,是一年前学程序设计这门课时,帮她人工debug.虽然都是从头到尾认真读代码.通逻辑,感觉却是不同的,之前的关注点是bug在哪,而现在却是带着任务的,要关注代码核查表中的项目.结果看着看着,总感觉自己在找茬dbq 回归正题↓ 编译环境:Dev-C++ 5.9.2 程序语言:C++ (一)优点: 能发现的优点,大多都是自己的缺点 1.代码可读性强. 通过详细的注释,即便是我们两个的个人项目使用的不是同一种语言,我看懂她

软件工程导论 结对编程 队友代码分析

这次的个人项目是中小学数学卷子自动生成程序,每个人都自己动手编写了自己的代码.今天的任务是看队友的代码,并指出他代码中的优点和缺点. 以下是对队友代码的个人评价. 优点: ①代码结构组织有序. 代码非常的模块化,每一个函数的功能清晰明了,框架结构清晰.而我是一个main()函数写到底,这一点我应该以后注意. 他的框架 我的框架 ②交互友好 经过对程序的实际测试,发现交互是非常友好的,我每一步都知道我应该输入什么内容,他做的比项目原本需求的交互更好. 比需求更加人性化. ③程序严谨,测试未发现明显

结对编程之队友篇

我的队友是戴旭文,他的编程能力的确比较强,我们一起讨论这个作业的时候,他的想法比较多,而且我没有想到的他也帮助我引导我怎么去构想,也感谢老师给我安排了一个这么给力的队友. 一开始我们都坚持各自的想法,觉得还是自己的想法好,别人的都不好,争执不下,本想那就自己做自己的,但是如果这样的话,那我们结对编程就没有什么意义了,最后各自让步,俩人一起讨论一个比较适合彼此想法的思路.我们一般约在图书馆六楼研究室一起学习,有时候编程过程中我们有需要翻资料书籍的,就直接可以到图书馆五楼借相关的专业书籍查找资料,这