标签:mic 数据库 div 做了 设计 部分 想法 性问题 可读性
前言:通过仔细研读刘至臻同学的代码,我觉得这位同学无论是从学习态度上还是个人习惯上,都值得我认真的学习。其代码风格简单而又不缺乏诗意,注释什么的都很完整,整体菜单看起来层次分明,清晰明了,代码写的可读性很高,很容易懂。废话少说,接下来就开始分析刘至臻同学的代码吧!
中小学数学试卷自动生成程序
--------对刘至臻同学的代码分析
优点1:将判断用户信息的程序与用户个人信息分开,这样使得程序具有通用广泛性。也为之后用数据库存放数据作下铺垫。有远见。
这里刘至臻同学建立了一个User.java文件目的是为了将用户个人信息程序与应用设计程序分开,这样就可以避免要从繁杂的应用程序代码中找出个人信息部分,为以后的工作做了简化
优点2:对于题目生成方式的方法值得学习
提到这里我拿至臻关于生成高中问题部分的代码举个例子:
1 public static String CreatHighProblem(String problem) 2 { 3 StringBuffer sBuffer = new StringBuffer(problem); 4 int i = 0; 5 while(true) 6 { 7 i = g_r.nextInt(problem.length()-1); 8 if(i == problem.indexOf(‘+‘) || i == problem.indexOf(‘-‘) 9 || i == problem.indexOf(‘*‘) || i == problem.indexOf(‘/‘)) break; 10 } 11 sBuffer.insert(i+1, g_sign3[g_r.nextInt(2)]); 12 if(g_r.nextInt(9) > 6) sBuffer.insert(0, g_sign3[g_r.nextInt(2)]); 13 problem = new String(sBuffer); 14 return problem; 15 }
这里产生算式采用先生成小学算式然后生成加上sin,cos,tan,根号以及平方,最后通过查找可以添加括号的地方再加上括号,这种清晰的思路可以帮我们很好的解决这类最后结果十分复杂的题目,抽丝剥茧,直捣黄龙。
优点3:用hashset来存取之前生成的试题,在之后的查重中因为hashset查找相同速度非常的快,所以查找相同也会变得很快、很方便。
g_set = new HashSet<String>();
将所有的不重复题目放入一个大的题库这样查找就不需要一个个账户文件夹的读,这种思路是我之前并未想到的,我觉得这种想法非常不错。
虽然至臻同学的优点很多,但仍然掩盖不了有部分程序本身存在的问题作为这份代码的瑕疵:
缺点1:随机性问题
题目是否真的能随机产生,这个恐怕是困扰了像我们这样连续几天熬夜完成个人项目的学生。当然程序肯定做不到完全随机,都要有界定的范围,这个无可厚非。在自己阅读了至臻的代码后,我发现他的平方只能在算式最后面,不能达到完全的随机,甚是可惜。
缺点2:界面在切换为“xxx”时没有给用户提示
这个可能导致用户无法使用,我给他改进了一下。
缺点3:使用while(true)来运行界面,导致只能强行关闭这个页面才能够退出
这个只需要加个登录页面函数即可,已帮修改。
综上:除了随机性问题以外,刘至臻同学的项目代码已无其他问题。
标签:mic 数据库 div 做了 设计 部分 想法 性问题 可读性
原文地址:https://www.cnblogs.com/sky-bug00/p/11552456.html