1. 项目内容及知识应用
1.1项目完成内容
? 首先实现登录模块,分为教室登录和学生登录
? 登录界面有一个下拉条分别为学生和教师,选中哪一个就会登录到相应的
界面
? 学生管理系统分为两大块:学生和教师两个模块 ? 学生登录后进入学生界面,学生界面有菜单项和按钮
? 学生界面里面有查询自己的成绩,查询自己的详细信息,还可以修改密码,
修改自己的信息,菜单项还有帮助等按钮
? 教师界面里面可以增加学生,显示所有学生的成绩,查找学生,查询学生
的详细信息,删除学生的成绩和删除学生,还有刷新和退出等功能 ? 教室界面当点击选中学生时在上面的标签面板会显示学生的详细信息,当
查询学生的详细信息时会之间进入该学生的学生面板,教师就可以对学生的信息进行修改
? 刚登录教师界面时系统启用了另外一个线程,会默认加载所有的学生成绩
和信息,当教师点击“显示所有成绩”时就会马上把学生成绩的面板显示在界面上,所有教师就无需等待系统加载
? 教师界面当老师点击刷新时,会再启动一个线程来重新把学生的信息加载
到内存然后显示到界面上
? 教师界面的成绩表中还有总分和平均分,系统加载的时候会自动计算每一
个学生的总分和平均分
? 教师还可以直接在成绩表中修改学生的成绩,用以来会很方便,修改成绩
后要点击刷新按钮来刷新总分和平均分
? 教室界面还增加了班级的分类,可以查看所有的班级,也可以查看一个班级
的学生信息
? 学生管理系统还增加了上传照片的功能,每个学生都可以上传自己的照片,
老师也可以帮学生上传照片
1.2知识(点)应用以及经验总结
? 该学生管理系统采用了分层的思想而且参考了MVC设计模式,但是都做得
不够完美。
? 该系统分为业务逻辑层、实体层和显示层:
? 业务逻辑层(com.ccniit.student.manage)有StudentManage、GradeManage、
PasswordNotFountException
、
StduentNotFountException
和
GradeNotFountException。先写了一个工具类(DBConnection),负责与数据库的连接,业务逻辑层联系数据库实体、显示层。进行综合的控制与处理。这里自定义了几个异常类,主要是抛出无法找到相应类的异常。这样就可以返回多个结果。
? 实体层(com.ccniit.student)有两个类Student和Grade,是根据数据库里
面的表来实现的,字段就是实体里面的属性还有所有属性的get和set方法,也可以写几个构造方法,没有其他的方法。业务逻辑层就操作这两个类。
? 显示层(com.ccniit.student.view)有Login、StduentGrade、Teacher、
ImagePanel、ShowImage、Uploading这六个类。主要是负责显示给客户,用于和客户交互信息。所有学生成绩用一个表来显示,Teacher类有另外一个线程来读取所有学生的成绩,在表中教师可以直接在表中修改学生的成绩,修改过后系统会自动修改数据库的数据,来实现动态修改。 ? 显示层主要是添加的内部匿名监听,由于会有重复监听所以大部分监听
都分别写了一个方法,来调用这个方法。
? 每个学生都可以上传自己的照片,在有照片的情况下,老师可以看到学
生的照片这样可以让老师更快的认识每一个学生,点击学生的照片可以放大该学生的照片,点击别的地方该放大的照片就会消失
? 该系统主要用到的知识有:
? 流程控制 ? 类和对象 ? 类的继承 ? 接口和多态
? 数组 ? 顺序表 ? 数据库编程 ? 常用的GUI组件 ? JTable ? 多线程 ? 事件处理
2. 项目实现
系统流程图
Uploading / ShowImage / ImagePanel (显示层辅助类) Stduent / Grade (数据模型) Login / Teacher / StduentGrade (显示层) StduentManage/GradeManage (逻辑处理层) DBConnection 数据库 (数据持久层)
类 DBConnection Student Grade StduentManage GradeManage StudentNotFoundException GradeNotFoundException 包 com.ccniit.student.util com.ccniit.student com.ccniit.student com.ccniit.student.manage com.ccniit.student.manage com.ccniit.student.manage com.ccniit.student.manage 层 逻辑 模型 模型 逻辑 逻辑 逻辑 逻辑 逻辑 显示 显示 显示 显示 显示 显示 功能 连接数据库 保存学生对象 保存成绩对象 操作学生对象 操作成绩对象 当学生找不到时抛出此异常 当成绩找不到时抛出此异常 当密码找不到时抛出此异常 显示登录界面 显示教师界面 显示学生界面 读取图片 显示放大的图片 上传图片 PasswordNotFoundException com.ccniit.student.manage Login com.ccniit.student.view Teacher StudentGrade ImagePanel ShowImage Uploading
com.ccniit.student.view com.ccniit.student.view com.ccniit.student.view com.ccniit.student.view com.ccniit.student.view 3. 项目源码
com.ccniit.student..Stduent类
说明:此类是一个学生的模型类,提供了学生的属性和get、set方法,便于StudentManage来操作还提供了几个构造方法。
package com.ccniit.student;
import java.sql.Date; import java.util.List;
public class Student {
private String studentID; private String studentName; private String password; private String sex; private Date birth; private String phone; private String qq;
private String homeAddr; private Date entranceTime; private String photo; private String classes;
private List
public Student() { }
public Student(String studentID, String studentName, String password, String sex,
Date birth, String phone, String qq, String homeAddr, Date entranceTime, String photo, String classes) { this.studentID = studentID;
this.studentName = studentName; this.password = password; this.sex = sex;
this.birth = birth; this.phone = phone; this.qq = qq;
this.homeAddr = homeAddr;
this.entranceTime = entranceTime; this.photo = photo;
this.classes = classes; }
public Student(String studentID, String studentName, String sex, Date birth, String phone, String qq, String homeAddr, Date entranceTime, String photo, String classes) { this.studentID = studentID;
this.studentName = studentName; this.sex = sex;
this.birth = birth; this.phone = phone; this.qq = qq;
this.homeAddr = homeAddr;
this.entranceTime = entranceTime; this.photo = photo;
this.classes = classes; }
public Student(String studentID, String studentName,String password, String sex,
Date birth, String phone, String qq, String homeAddr,