一.整体分析:
苏晨阳同学的代码包括了大量的类,大致分析如下:
1. User类:这是一个抽象类,包含了用户的基本信息(name、password、authority)和一个设置用户权限的方法。其他用户类(如Teacher)可以继承这个类来共享属性和方法。
2. Teacher类:这个类继承了User类,表示教师用户。它包含了各种方法,用于生成数学题目、处理用户登录和权限切换,以及创建文件夹等操作。该类依赖于Method和Autica类来完成题目生成和身份验证等功能。
3. Autica类:这个类处理用户身份验证和题目去重。它可以验证用户身份和在数据库中操作题目,还包含一个sql类的实例。sql属性充当了与数据库交互的接口。
4. Method类:这个类包含了生成数学题目的方法和一些加载界面的具体方法。除此之外还包括计算答案和创建文件等方法。
5. Sql类:这个类负责与数据库交互,包括验证用户身份、检查题目是否重复以及插入新题目等操作。它使用JDBC连接到数据库并执行相应的操作。
二.优点:
1.将代码分别写到多个类的编程方式是我值得学习的地方,这样子会有很多优点,可以更好地组织和管理代码。使代码更易于理解和维护,和类的重用。
2.苏同学采用了数据库交互,在处理用户数据和题目数据时显得非常便捷。数据库允许数据长期存储,同时提供了安全的存储机制,这有助于保护数据。数据库提供了强大的查询和检索功能,虽然在本次个人项目中对此需求不高,但是考虑到未来的功能拓展,在一开始就采用数据库存储是很明智的。
3.代码基本符合谷歌规范,包括方法命名以 lowerCamelCase 风格编写。这样子提高了代码的可读性便于我理解代码。lowerCamelCase 命名风格使得在编写代码时更容易触发自动完成提示,提高了编码效率,比如以下是Autica类的内容:
public class Autica { Sql sql = new data.Sql(); public String Authentication(String account, String password) { String ss = sql.Check(account, password); return ss; } //验证账号密码 public String changeAu(String account, String authority) { String ss = sql.changeAu(account, authority); return ss; } //验证账号密码 public String checkSql(String prob, Double ans) { String ss = sql.checkProb(prob, ans); return ss; } //题目去重 public void insProb(String prob, Double ans) { sql.insProb(prob, ans); } }
三.缺点
1.部分错误处理不完善,有的读取输入函数没有考虑到用户的异常错误输入。比如createTopic(),用户可能并不会输入一个int型。
public int createTopic() { m.top(name, authority); m.createTopic(authority); Scanner it = new Scanner(System.in); int num = it.nextInt(); return num; }
2.在生成题目的时候,对于三个难度分别写了三个函数,这会导致部分代码的重复出现,导致如果将来需要添加新的难度级别或进行修改,必须分别修改每个独立的函数。还有可能产生代码冗余。这会浪费内存,增加代码复杂性。
3.部分代码结构过于复杂,然而注释却比较匮乏,导致阅读起来较为困难。
标签:题目,String,个人,项目,代码,用户,互评,sql,public From: https://www.cnblogs.com/Little-genius/p/17715955.html