个人项目结对同学代码分析

第一次写博,措辞上的不妥还请多多见谅~

首先我们看一下个人项目的要求:设计题目生成器,根据登录用户的评级生成相应的小初高三级题目。从加减乘除到三角函数,除了基本功能的实现外,还需要根据当前时间生成相应名称的txt文件保存题目。在这个项目中,我认为的难点有三个:①特殊符号的处理(普通困难)②括号的添加(中等困难)③保存于相应的文件夹路径(中等困难)。

先简单阐述一下结对伙伴的代码设计思路。将每道题目定义为字符串,那么一组题目便是一个字符串数组。根据顺序依键入操作数,符号,相应的括号并保存在字符串中,就实现了题目的生成。

在具体的实现上,他将用户名,密码以及经常用到的四则运算符号作为全局变量。之后使用了5个函数分别实现了数据的随机生成,生成题目的完全不同化以及获取当前日期时间。之后在主函数中完成了文件生成以及路径保存,一连串的登录交互,最终具体的题目生成部分。

优点上,首先是相当详细的查重功能。作者根据三种不同的情况写了三个不同的函数实现操作数间,题目间,每份试卷间三级的查重功能,可以说较好的杜绝了题目重复的情况。其次,对于多次利用到的用户名,密码等数据,虽然做全局变量处理会占用额外的内存空间,但方便代码后续的补充与修改。最最优秀的地方是对于括号的使用。首先因为操作数的限制,作者敏锐地找到了括号数的范围。同时简洁的0,1随机判定可以实现括号位置的随机化,之后又加之设定标记量控制后括号的键入数目。在前括号与后括号的添加上实现了规律化。同时更好的是因为本身试题是做字符串保存处理的,也就是说我们可以通过保存下来的字符串实现数据的后续处理,这点对于题目生成器的后续功能扩展很有帮助。

缺点嘛,首先登陆交互方面我觉得可以做到函数中去,可以更好的实现模块化,再次本身括号虽然实现了有序添加,但实际上很多括号本身并没有实际意义,比如((A))这样。同时括号数目的确定有讨巧的部分。其实括号数目的确定可以用操作数-2来确定其上限,可可以做成函数实现更大范围内的确定。同时sin,cos,平方我觉得也可以做成通用符号放入数组中并定义为全局变量更有利于代码功能的扩展以及代码简洁化。

特色代码展示:括号添加功能的实现

 item=random(0,1);
     while(item==1 && lnum<2)
     {
      item=random(0,1);
      quiz[i]=quiz[i]+'(';
      lnum++; 
     }

posted @ 2018-09-27 23:36  Zonda-CY  阅读(67)  评论(1编辑  收藏  举报