中小学数学卷子自动生成程序——结对编程队友代码分析
概述
这是我搭档编写的中小学数学卷子自动生成程序,总体来说功能实现比较完整,代码规范性好、可读性高。
优点
1.类变量、函数命名规范,变量和函数的功能也比较清晰。类变量的命名完全按照命名规范,如m_type、m_username、m_password等,命名符合变量含义。
private String m_type; private String m_username; private int m_password; private int m_cnt;
2.题目功能实现比较完善,能够正确生成符合要求的题目
3.整个系统的完整度较高,有登陆提示语、退出提示语,用户体验感较好;生成的试卷题目符合每个组别的题目要求且题目形式全面;生成试卷后能够生成按规定命名的文件夹,且可以重复多次地生成不同的试卷。

4.代码逻辑清晰,条理性好,利用函数对代码进行封装,函数命名规范,功能一目了然,代码整体的可读性好。
- 在GeneratingXxxProblem()的函数中,使用数组分类储存操作符,实现不同难度题目的生成,且符合要求中规定的至少条件;对括号符号进行特殊处理,使能生成正确有效的算式
public void GeneratingSeniorProblem() { //生成高中题目的函数 String[] lOperator=new String[] {"+", "-", "*", "/" }; String[] mOperator=new String[] {"²", "√" }; String[] hOperator=new String[] {"sin", "cos", "tan"}; Date now = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); String NowTime = format.format( now ); FileWriter writer; String str="下列为高中题目,总有"+m_cnt+"道题\r\n"; Random random = new Random(); for(int i=0;i<m_cnt;i++) { str+=i+1+"、"; int number=random.nextInt(5)%5 + 1; //生成一个1~5的随机数 String[] operand=new String[number]; int rd=random.nextInt(99)+1; int onezero=random.nextInt(3); operand[0]=hOperator[onezero]+rd; for(int j=1;j<number;j++) //获得number个0--99的数字及²、√、sin、cos、tan组成的字符串 { rd=random.nextInt(99)+1; onezero=random.nextInt(8); if(onezero>4) { operand[j]=""+rd; continue; } else if(onezero==3) { operand[j]=rd+mOperator[onezero-3]; continue; } else if(onezero==4) { operand[j]=mOperator[onezero-3]+rd; continue; } operand[j]=hOperator[onezero]+rd; } int j=random.nextInt(number); for(int n=0;n<number-1;j++,n++) { int temp=random.nextInt(4); str+=operand[j]+lOperator[temp]; if(j==number-1) j=-1; } str+=operand[j]+"="+"\r\n\r\n"; } try { String root="src/"+m_username+"/"+NowTime+".txt";; writer = new FileWriter(root); writer.write(str); writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } }
5.每个功能用函数封装,体现了代码的模块化以及面向对象编程的思想
private void InitType() //初始化学生信息 private void InputNumber() //用于读取输入的函数 public void LoginGenerator() //登录系统的函数 public void GeneratingPrimaryProblem() //生成小学题目 public void GeneratingMiddleProblem() //生成初中题目 public void GeneratingSeniorProblem() //生成高中题目的函数
缺点
1.切换组别的时候没有提示语,感觉可以更加完善,提升用户体验感;界面的容错能力也可以再提升一点
2.没有实现查重功能
3.用if-else语句判断用户名和密码对应在本题给出的特殊条件下可以适用,但是这种判断不太符合实际情况
4.只有小学组别的题目使用到了括号,功能实现还不够完善

心得
对比起我自己,我的搭档考虑问题需求仔细严谨,基本实现了所有功能;通过队友的代码,发现了自己的个人项目中的很多不足,功能实现不完整,交互界面也不够完善,还有太多需要修改和改进的地方。希望能在之后的结对编程里把这些问题都一一解决和改进,做出一个更好的图形用户交互界面。

浙公网安备 33010602011771号