实训(学生管理系统)

实训第一步
利用百度脑图构建总体框架。
在这里插入图片描述
第二步创建数据库
在这里插入图片描述
创建相关的表
在这里插入图片描述
在这里插入图片描述
第三步在表中插入数据!
在这里插入图片描述
第四实现步骤
在这里插入图片描述
在lib里添加链接MySQL数据库的jar包
在这里插入图片描述
在images中添加图片
在这里插入图片描述
第五步创建相关的类
在这里插入图片描述
学校实体College
/**

  • 学校实体

  • yh

  • */
    package net.yh.student.dbutil.bean;
    import java.util.Date;
    public class College {
    private int id;
    // 学校标识符
    private String name;
    // 学校名称
    private String president;
    // 校长
    private Date startTime;
    // 建校时间
    private String address;
    //地址
    private String telephone;
    // 联系电话
    private String email;
    // 邮箱
    private String profile;
    // 学校简介

    public int getId() {
    return id;
    }

    public void setId(int id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPresident() {
    return president;
    }

    public void setPresident(String president) {
    this.president = president;
    }

    public Date getStartTime() {
    return startTime;
    }

    public void setStartTime(Date startTime) {
    this.startTime = startTime;
    }

    public String getAddress() {
    return address;
    }

    public void setAddress(String address) {
    this.address = address;
    }

    public String getTelephone() {
    return telephone;
    }

    public void setTelephone(String telephone) {
    this.telephone = telephone;
    }

    public String getEmail() {
    return email;
    }

    public void setEmail(String email) {
    this.email = email;
    }

    public String getProfile() {
    return profile;
    }

    public void setProfile(String profile) {
    this.profile = profile;
    }

    @Override
    public String toString(){
    return “College [id=” + id + “, name=” + name + “, president=” + president + “, startTime=” + startTime
    + “, telephone=” + telephone + “, email=” + email + “, address=” + address + “, profile=” + profile
    + “]”;

    }
    }
    状态实体Status
    package net.yh.student.dbutil.bean;
    //状态实体
    public class Status {
    private int id;
    //标识符
    private String college;
    //校名
    private String version;
    //版本
    private String author;
    //作者
    private String telephone;
    //联系电话
    private String address;
    // 通讯地址
    private String email;
    //邮箱

     public int getId() {
         return id;
     }
    
     public void setId(int id) {
         this.id = id;
     }
    
     public String getCollege() {
         return college;
     }
    
     public void setCollege(String college) {
         this.college = college;
     }
    
     public String getVersion() {
         return version;
     }
    
     public void setVersion(String version) {
         this.version = version;
     }
    
     public String getAuthor() {
         return author;
     }
    
     public void setAuthor(String author) {
         this.author = author;
     }
    
     public String getTelephone() {
         return telephone;
     }
    
     public void setTelephone(String telephone) {
         this.telephone = telephone;
     }
    
     public String getAddress() {
         return address;
     }
    
     public void setAddress(String address) {
         this.address = address;
     }
    
     public String getEmail() {
         return email;
     }
    
     public void setEmail(String email) {
         this.email = email;
     }
     @Override
     public  String toString(){
         return "Status [id="+id+",college="+college+
                 ",version="+version+",author="+author+",telephone="+telephone+
                 ",address="+address+",email="+email+"]";
    
    
     }
    

    }

学生类Student
package net.yh.student.dbutil.bean;
//学生实体
public class Student {

private String id;
//学号
private String name;
//姓名
private String sex;
//性别
private int age;
//年龄
private String department;
//系部
private String clazz;
//班级
private String telephone;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public String getDepartment() {
    return department;
}

public void setDepartment(String department) {
    this.department = department;
}

public String getClazz() {
    return clazz;
}

public void setClazz(String clazz) {
    this.clazz = clazz;
}

public String getTelephone() {
    return telephone;
}

public void setTelephone(String telephone) {
    this.telephone = telephone;
}

@Override
public String toString(){
    return  "Student [id="+id+",name="+name+",sex="+sex+",age="+age+",departmen=t"+department+",clazz="+clazz+",telephone="+telephone+"]";

}

}
用户类User
/**

  • */
    package net.yh.student.dbutil.bean;

import java.util.Date;

public class User {
private int id;
//用户标识符
private String usernname;
//用户名
private String password;
//密码
private String telephone;
//电话
private Date registerTime;
//注册时间

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getUsernname() {
    return usernname;
}

public void setUsernname(String usernname) {
    this.usernname = usernname;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getTelephone() {
    return telephone;
}

public void setTelephone(String telephone) {
    this.telephone = telephone;
}

public Date getRegisterTime() {
    return registerTime;
}

public void setRegisterTime(Date registerTime) {
    this.registerTime = registerTime;
}

@Override
public String toString(){
    return "User [id="+id+",usernname="+usernname+
            ",password="+password+",telephone="+telephone+
            ",registerTime"+registerTime+"]";

}

}

第六步数据访问接口
在这里插入图片描述
CollegeDao
package net.yh.student.dbutil.dao;

import net.yh.student.dbutil.bean.College;
public interface CollegeDao {
College findById(int id);
int update(College college);

}

StatusDao
package net.yh.student.dbutil.dao;
import net.yh.student.dbutil.bean.Status;
public interface StatusDao {
Status findById(int id);
int update(Status status);
}

StudentDao
package net.yh.student.dbutil.dao;
import net.yh.student.dbutil.bean.Student;

import java.util.List;
import java.util.Vector;

public interface StudentDao {
int insert(Student student);
int deleteById(String id);
int deleteByClass(String clazz);
int deleteByDepartment(String department);
int update(Student student);

Student findById(String id);
List<Student> findByName(String name);
List<Student> findByClass(String Clazz);
List<Student> findByDepartment(String department);
List<Student> findAll();
Vector findRowsBysex();

Vector findRowsBySex();

Vector findRowsByClass();
Vector findRowsByDepartment();

}

UserDao

package net.yh.student.dbutil.dao;

import net.yh.student.dbutil.bean.User;

import java.util.List;

public interface UserDao {
int insert(User user);
int deleteById(int id);
int update(User user);
User findById(int id);
ListfindAll();
User login(String username,String password);

}
第七步创建端口类

在这里插入图片描述

CollegeDaoImpl

package net.yh.student.dbutil.dao.impl;

import net.yh.student.dbutil.bean.College;
import net.yh.student.dbutil.ConnectionManager;
import net.yh.student.dbutil.dao.CollegeDao;

import java.sql.*;

public class CollegeDaoImpl implements CollegeDao {
@Override
public College findById(int id) {
// 声明学校对象
College college = null;

    // 1. 获取数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 2. 定义SQL字符串
    String strSQL = "select * from t_college where id = ?";
    try {
        // 3. 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 4. 设置占位符的值
        pstmt.setInt(1, id);
        // 5. 执行SQL,返回结果集
        ResultSet rs = pstmt.executeQuery();
        // 6. 判断结果集是否有记录
        if (rs.next()) {
            // 实例化学校对象
            college = new College();
            // 利用当前记录字段值去设置学校对象的属性
            college.setId(rs.getInt("id"));
            college.setName(rs.getString("name"));
            college.setPresident(rs.getString("president"));
            college.setStartTime(rs.getDate("start_time"));
            college.setTelephone(rs.getString("telephone"));
            college.setEmail(rs.getString("email"));
            college.setAddress(rs.getString("address"));
            college.setProfile(rs.getString("profile"));
        }
        // 7. 关闭预备语句对象
        pstmt.close();
        // 8. 关闭结果集对象
        rs.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }

    // 返回学校对象
    return college;
}

@Override
public int update(College college) {
    // 定义更新记录数
    int count = 0;

    // 1. 获取数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 2. 定义SQL字符串
    String strSQL = "update t_college set name = ?, president = ?, start_time = ?,"
            + " telephone = ?, email = ?, profile = ? where id = ?";
    try {
        // 3. 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 4. 设置占位符的值
        pstmt.setString(1, college.getName());
        pstmt.setString(2, college.getPresident());
        pstmt.setTimestamp(3, new Timestamp(college.getStartTime().getTime()));
        pstmt.setString(4, college.getTelephone());
        pstmt.setString(5, college.getEmail());
        pstmt.setString(6, college.getProfile());
        pstmt.setInt(7, college.getId());
        // 5. 执行SQL,返回更新记录数
        count = pstmt.executeUpdate();
        // 6. 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }

    // 返回更新记录数
    return count;
}

}

StatusDaoImpl

package net.yh.student.dbutil.dao.impl;

import net.yh.student.dbutil.bean.Status;
import net.yh.student.dbutil.ConnectionManager;
import net.yh.student.dbutil.dao.StatusDao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class StatusDaoImpl implements StatusDao {
@Override
public Status findById(int id){
Status status=null;
// 1. 获取数据库连接对象
Connection conn = ConnectionManager.getConnection();
// 2. 定义SQL字符串
String strSQL = “SELECT * FROM t_status WHERE id = ?”;
try {
// 3. 创建预备语句对象
PreparedStatement pstmt = conn.prepareStatement(strSQL);
// 4. 设置占位符的值
pstmt.setInt(1, id);
// 5. 执行SQL查询,返回结果集
ResultSet rs = pstmt.executeQuery();
// 6. 判断结果集是否有记录
if (rs.next()) {
// 实例化状态
status = new Status();
// 利用当前记录字段值去设置状态对象的属性
status.setId(rs.getInt(“id”));
status.setCollege(rs.getString(“college”));
status.setVersion(rs.getString(“version”));
status.setAuthor(rs.getString(“author”));
status.setTelephone(rs.getString(“telephone”));
status.setAddress(rs.getString(“address”));
status.setEmail(rs.getString(“email”));
}
// 7. 关闭预备语句对象
pstmt.close();
// 8. 关闭结果集对象
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
ConnectionManager.closeConnection(conn);
}

    // 返回状态对象
    return status;
}

@Override
public int update(Status status) {
    // 定义更新记录数
    int count = 0;

    // 1. 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 2. 定义SQL字符串
    String strSQL = "UPDATE t_status SET college = ?, version = ?, author = ?,"
            + " telephone = ?, address = ?, email = ? WHERE id = ?";
    try {
        // 3. 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 4. 设置占位符的值
        pstmt.setString(1, status.getCollege());
        pstmt.setString(2, status.getVersion());
        pstmt.setString(3, status.getAuthor());
        pstmt.setString(4, status.getTelephone());
        pstmt.setString(5, status.getAddress());
        pstmt.setString(6, status.getEmail());
        pstmt.setInt(7, status.getId());
        // 5. 执行更新操作,更新记录
        count = pstmt.executeUpdate();
        // 6. 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }

    // 返回更新记录数
    return count;
}

}

StudentdaoImpl

package net.yh.student.dbutil.dao.impl;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.dao.StudentDao;
import net.yh.student.dbutil.ConnectionManager;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

/**

  • 功能:学生数据访问接口实现类

  • 作者:yh

  • 日期:2019年6月18日
    /
    public class StudentDaoImpl implements StudentDao {
    /
    *

    • 插入学生记录

    • @param student

    • @return 插入记录数
      */
      @Override
      public int insert(Student student) {
      // 定义插入记录数
      int count = 0;

      // 1. 获得数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “insert into t_student (id, name, sex, age, department, class, telephone)”
      + " values (?, ?, ?, ?, ?, ?, ?)";
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, student.getId());
      pstmt.setString(2, student.getName());
      pstmt.setString(3, student.getSex());
      pstmt.setInt(4, student.getAge());
      pstmt.setString(5, student.getDepartment());
      pstmt.setString(6, student.getClazz());
      pstmt.setString(7, student.getTelephone());
      // 5. 执行SQL,返回插入记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回插入记录数
      return count;
      }

    /**

    • 按学号删除学生记录

    • @param id

    • @return 删除记录数
      */
      @Override
      public int deleteById(String id) {
      // 定义删除记录数
      int count = 0;

      // 1. 获取数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “delete from t_student where id = ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, id);
      // 5. 执行SQL,返回删除记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回删除记录数
      return count;
      }

    /**

    • 按班级删除学生记录

    • @param clazz

    • @return 删除记录数
      */
      @Override
      public int deleteByClass(String clazz) {
      // 定义删除记录数
      int count = 0;

      // 1. 获取数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “delete from t_student where class = ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, clazz);
      // 5. 执行SQL,返回删除记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回删除记录数
      return count;
      }

    /**

    • 按系部删除学生记录

    • @param department

    • @return 删除记录数
      */
      @Override
      public int deleteByDepartment(String department) {
      // 定义删除记录数
      int count = 0;

      // 1. 获得数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “delete from t_student where department = ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, department);
      // 5. 执行SQL,返回删除记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回删除记录数
      return count;
      }

    /**

    • 更新学生记录

    • @param student

    • @return 更新记录数
      */
      @Override
      public int update(Student student) {
      // 定义更新记录数
      int count = 0;

      // 1. 获得数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “update t_student set name = ?, sex = ?, age = ?,”
      + " department = ?, class = ?, telephone = ? where id = ?";
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, student.getName());
      pstmt.setString(2, student.getSex());
      pstmt.setInt(3, student.getAge());
      pstmt.setString(4, student.getDepartment());
      pstmt.setString(5, student.getClazz());
      pstmt.setString(6, student.getTelephone());
      pstmt.setString(7, student.getId());
      // 5. 执行SQL,返回更新记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回更新记录数
      return count;
      }

    /**

    • 按学号查询学生记录

    • @param id

    • @return 学生实体
      */
      @Override
      public Student findById(String id) {
      // 声明学生对象
      Student student = null;

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_student where id = ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, id);
      // 5. 执行SQL,返回结果集
      ResultSet rs = pstmt.executeQuery();
      // 6. 判断结果集是否有记录
      if (rs.next()) {
      // 创建学生实体
      student = new Student();
      // 利用当前记录各字段值设置学生实体属性
      student.setId(rs.getString(“id”));
      student.setName(rs.getString(“name”));
      student.setSex(rs.getString(“sex”));
      student.setAge(rs.getInt(“age”));
      student.setDepartment(rs.getString(“department”));
      student.setClazz(rs.getString(“class”));
      student.setTelephone(rs.getString(“telephone”));
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回学生对象
      return student;
      }

    /**

    • 按姓名查询学生记录

    • @param name

    • @return 学生列表
      */
      @Override
      public List findByName(String name) {
      // 声明学生列表
      List students = new ArrayList();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_student where name like ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, name + “%”);
      // 5. 执行SQL,返回结果集
      ResultSet rs = pstmt.executeQuery();
      // 6. 遍历结果集
      while (rs.next()) {
      // 创建学生实体
      Student student = new Student();
      // 利用当前记录各字段值设置学生实体属性
      student.setId(rs.getString(“id”));
      student.setName(rs.getString(“name”));
      student.setSex(rs.getString(“sex”));
      student.setAge(rs.getInt(“age”));
      student.setDepartment(rs.getString(“department”));
      student.setClazz(rs.getString(“class”));
      student.setTelephone(rs.getString(“telephone”));
      // 将实体添加到学生列表
      students.add(student);
      }
      // 7. 关闭结果集
      rs.close();
      // 8. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回学生列表
      return students;
      }

    /**

    • 按班级查询学生记录

    • @param clazz

    • @return 学生列表
      */
      @Override
      public List findByClass(String clazz) {
      // 声明学生列表
      List students = new ArrayList();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_student where class like ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, clazz + “%”);
      // 5. 执行SQL,返回结果集
      ResultSet rs = pstmt.executeQuery();
      // 6. 遍历结果集
      while (rs.next()) {
      // 创建学生实体
      Student student = new Student();
      // 利用当前记录各字段值设置学生实体属性
      student.setId(rs.getString(“id”));
      student.setName(rs.getString(“name”));
      student.setSex(rs.getString(“sex”));
      student.setAge(rs.getInt(“age”));
      student.setDepartment(rs.getString(“department”));
      student.setClazz(rs.getString(“class”));
      student.setTelephone(rs.getString(“telephone”));
      // 将实体添加到学生列表
      students.add(student);
      }
      // 7. 关闭结果集
      rs.close();
      // 8. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回学生列表
      return students;
      }

    /**

    • 按系部查询学生记录

    • @param department

    • @return 学生列表
      */
      @Override
      public List findByDepartment(String department) {
      // 声明学生列表
      List students = new ArrayList();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_student where department like ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, department + “%”);
      // 5. 执行SQL,返回结果集
      ResultSet rs = pstmt.executeQuery();
      // 6. 遍历结果集
      while (rs.next()) {
      // 创建学生实体
      Student student = new Student();
      // 利用当前记录各字段值设置学生实体属性
      student.setId(rs.getString(“id”));
      student.setName(rs.getString(“name”));
      student.setSex(rs.getString(“sex”));
      student.setAge(rs.getInt(“age”));
      student.setDepartment(rs.getString(“department”));
      student.setClazz(rs.getString(“class”));
      student.setTelephone(rs.getString(“telephone”));
      // 将实体添加到学生列表
      students.add(student);
      }
      // 7. 关闭结果集
      rs.close();
      // 8. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回学生列表
      return students;
      }

    /**

    • 查询全部学生记录

    • @return 学生列表
      */
      @Override
      public List findAll() {
      // 声明学生列表
      List students = new ArrayList();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_student”;
      try {
      // 3. 创建语句对象
      Statement stmt = conn.createStatement();
      // 4. 执行SQL,返回结果集
      ResultSet rs = stmt.executeQuery(strSQL);
      // 5. 遍历结果集
      while (rs.next()) {
      // 创建学生实体
      Student student = new Student();
      // 利用当前记录各字段值设置学生实体属性
      student.setId(rs.getString(“id”));
      student.setName(rs.getString(“name”));
      student.setSex(rs.getString(“sex”));
      student.setAge(rs.getInt(“age”));
      student.setDepartment(rs.getString(“department”));
      student.setClazz(rs.getString(“class”));
      student.setTelephone(rs.getString(“telephone”));
      // 将实体添加到学生列表
      students.add(student);
      }
      // 6. 关闭结果集
      rs.close();
      // 7. 关闭语句对象
      stmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回学生列表
      return students;
      }

    @Override
    public Vector findRowsBysex() {
    return null;
    }

    /**

    • 按性别统计学生人数

    • @return 统计结果向量
      */
      @Override
      public Vector findRowsBySex() {
      // 定义行集向量
      Vector rows = new Vector();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select sex as ‘性别’, count(*) as ‘人数’”
      + " from t_student group by sex order by sex desc";
      try {
      // 3. 创建语句对象
      Statement stmt = conn.createStatement();
      // 4. 执行SQL,返回结果集
      ResultSet rs = stmt.executeQuery(strSQL);
      // 5. 遍历结果集
      while (rs.next()) {
      // 定义当前行向量
      Vector currentRow = new Vector();
      // 利用当前记录字段值设置当前行向量的元素值
      currentRow.addElement(rs.getString(“性别”));
      currentRow.addElement(rs.getInt(“人数”) + “”);
      // 将当前行向量添加到行集向量
      rows.addElement(currentRow);
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回行集向量
      return rows;
      }

    /**

    • 按班级统计学生人数

    • @return 统计结果向量
      */
      @Override
      public Vector findRowsByClass() {
      // 定义行集向量
      Vector rows = new Vector();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select class as ‘班级’, count(*) as ‘人数’”
      + " from t_student group by class order by class desc";
      try {
      // 3. 创建语句对象
      Statement stmt = conn.createStatement();
      // 4. 执行SQL,返回结果集
      ResultSet rs = stmt.executeQuery(strSQL);
      // 5. 遍历结果集
      while (rs.next()) {
      // 定义当前行向量
      Vector currentRow = new Vector();
      // 利用当前记录字段值设置当前行向量的元素值
      currentRow.addElement(rs.getString(“班级”));
      currentRow.addElement(rs.getInt(“人数”) + “”);
      // 将当前行向量添加到行集向量
      rows.addElement(currentRow);
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回行集向量
      return rows;
      }

    /**

    • 按系部统计学生人数

    • @return 统计结果向量
      */
      @Override
      public Vector findRowsByDepartment() {
      // 定义行集向量
      Vector rows = new Vector();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select department as ‘系部’, count(*) as ‘人数’”
      + " from t_student group by department order by department desc";
      try {
      // 3. 创建语句对象
      Statement stmt = conn.createStatement();
      // 4. 执行SQL,返回结果集
      ResultSet rs = stmt.executeQuery(strSQL);
      // 5. 遍历结果集
      while (rs.next()) {
      // 定义当前行向量
      Vector currentRow = new Vector();
      // 利用当前记录字段值设置当前行向量的元素值
      currentRow.addElement(rs.getString(“系部”));
      currentRow.addElement(rs.getInt(“人数”) + “”);
      // 将当前行向量添加到行集向量
      rows.addElement(currentRow);
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回行集向量
      return rows;
      }

}

UserDaoImpl

package net.yh.student.dbutil.dao.impl;

import net.yh.student.dbutil.bean.User;
import net.yh.student.dbutil.dao.UserDao;
import net.yh.student.dbutil.ConnectionManager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import java.sql.*;
import java.util.ArrayList;

/**

  • 功能:用户数据访问接口实现类

  • 作者:yh

  • 日期:2019年6月19日
    /
    public class UserDaoImpl implements UserDao {
    /
    *

    • 插入用户记录

    • @param user

    • @return 插入记录数
      */
      @Override
      public int insert(User user) {
      // 定义插入记录数
      int count = 0;

      // 1. 获得数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “insert into t_user (username, password, telephone, register_time)”
      + " values (?, ?, ?, ?)";
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, user.getUsernname());
      pstmt.setString(2, user.getPassword());
      pstmt.setString(3,user.getTelephone());
      pstmt.setTimestamp(4, new Timestamp(user.getRegisterTime().getTime()));
      // 5. 执行SQL,返回插入记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回插入记录数
      return count;
      }

    /**

    • 按id删除用户记录

    • @param id

    • @return 删除记录数
      */
      @Override
      public int deleteById(int id) {
      // 定义删除记录数
      int count = 0;

      // 1. 获取数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “delete from t_user where id = ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setInt(1, id);
      // 5. 执行SQL,返回删除记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回删除记录数
      return count;
      }

    /**

    • 更新用户记录

    • @param user

    • @return 更新记录数
      */
      @Override
      public int update(User user) {
      // 定义更新记录数
      int count = 0;

      // 1. 获得数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “update t_user set username = ?, password = ?, telephone = ?,”
      + " register_time = ? where id = ?";
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, user.getUsernname());
      pstmt.setString(2, user.getPassword());
      pstmt.setString(3, user.getTelephone());
      pstmt.setTimestamp(4, new Timestamp(user.getRegisterTime().getTime()));
      pstmt.setInt(5, user.getId());
      // 5. 执行SQL,返回更新记录数
      count = pstmt.executeUpdate();
      // 6. 关闭预备语句对象
      pstmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回更新记录数
      return count;
      }

    /**

    • 按id查询用户

    • @param id

    • @return 用户实体
      */
      @Override
      public User findById(int id) {
      // 声明用户对象
      User user = null;

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_user where id = ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setInt(1, id);
      // 5. 执行SQL,返回结果集
      ResultSet rs = pstmt.executeQuery();
      // 6. 判断结果集是否有记录
      if (rs.next()) {
      // 创建用户实体
      user = new User();
      // 利用当前记录各字段值设置用户实体属性
      user.setId(rs.getInt(“id”));
      user.setUsernname(rs.getString(“username”));
      user.setPassword(rs.getString(“password”));
      user.setTelephone(rs.getString(“telephone”));
      user.setRegisterTime(rs.getTimestamp(“register_time”));
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回用户对象
      return user;
      }

    /**

    • 查询所有用户

    • @return 用户列表
      */
      @Override
      public List findAll() {
      // 声明用户列表
      List users = new ArrayList();

      // 1. 获取数据库连接对象
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_user”;
      try {
      // 3. 创建语句对象
      Statement stmt = conn.createStatement();
      // 4. 执行SQL,返回结果集
      ResultSet rs = stmt.executeQuery(strSQL);
      // 5. 遍历结果集
      while (rs.next()) {
      // 创建用户实体
      User user = new User();
      // 利用当前记录各字段值设置用户实体属性
      user.setId(rs.getInt(“id”));
      user.setUsernname(rs.getString(“username”));
      user.setPassword(rs.getString(“password”));
      user.setTelephone(rs.getString(“telephone”));
      user.setRegisterTime(rs.getTimestamp(“register_time”));
      // 将实体添加到用户列表
      users.add(user);
      }
      // 6. 关闭结果集
      rs.close();
      // 7. 关闭语句对象
      stmt.close();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回用户列表
      return users;
      }

    /**

    • 用户登录

    • @param username

    • @param password

    • @return 登录用户实体
      */
      @Override
      public User login(String username, String password) {
      // 声明用户对象
      User user = null;

      // 1. 获取数据库连接
      Connection conn = ConnectionManager.getConnection();
      // 2. 定义SQL字符串
      String strSQL = “select * from t_user where username = ? and password = ?”;
      try {
      // 3. 创建预备语句对象
      PreparedStatement pstmt = conn.prepareStatement(strSQL);
      // 4. 设置占位符的值
      pstmt.setString(1, username);
      pstmt.setString(2, password);
      // 5. 执行SQL,返回结果集
      ResultSet rs = pstmt.executeQuery();
      // 6. 判断结果集是否有记录
      if (rs.next()) {
      // 实例化用户
      user = new User();
      // 利用当前记录各字段值设置用户实体属性
      user.setId(rs.getInt(“id”));
      user.setUsernname(rs.getString(“username”));
      user.setPassword(rs.getString(“password”));
      user.setTelephone(rs.getString(“telephone”));
      user.setRegisterTime(rs.getTimestamp(“register_time”));
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      // 关闭数据库连接
      ConnectionManager.closeConnection(conn);
      }

      // 返回用户对象
      return user;}}

数据库连接类

在这里插入图片描述
package net.yh.student.dbutil;

/**

  • 描述:数据库连接管理类

*/

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.JOptionPane;

public class ConnectionManager {
/**
* 数据库驱动程序
/
private static final String DRIVER = “com.mysql.jdbc.Driver”;
/
*
* 数据库统一资源标识符
/
private static final String URL = “jdbc:mysql://localhost:3306/student”;
/
*
* 数据库用户名
/
private static final String USERNAME = “root”;
/
*
* 数据库密码
*/
private static final String PASSWORD = “1”;

/**
 * 私有化构造方法,拒绝实例化
 */
private ConnectionManager() {
}

/**
 * 获得数据库连接
 *
 * @return 数据库连接对象
 */
public static Connection getConnection() {
    // 定义数据库连接
    Connection conn = null;
    try {
        // 安装数据库驱动程序
        Class.forName(DRIVER);
        // 获得数据库连接
        conn = DriverManager.getConnection(URL
                + "?useUnicode=true&characterEncoding=UTF8", USERNAME, PASSWORD);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    // 返回数据库连接
    return conn;
}

/**
 * 关闭数据库连接
 *
 * @param conn
 */
public static void closeConnection(Connection conn) {
    // 判断数据库连接是否为空
    if (conn != null) {
        // 判断数据库连接是否关闭
        try {
            if (!conn.isClosed()) {
                // 关闭数据库连接
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

/**
 * 测试数据库连接是否成功
 *
 * @param args
 */
public static void main(String[] args) {
    // 获得数据库连接
    Connection conn = getConnection();
    // 判断是否连接成功
    if (conn != null) {
        JOptionPane.showMessageDialog(null, "恭喜,数据库连接成功!");
    } else {
        JOptionPane.showMessageDialog(null, "遗憾,数据库连接失败!");
    }

    // 关闭数据库连接
    closeConnection(conn);
}

}

创建服务类

在这里插入图片描述

CollegeService

package net.yh.student.dbutil.service;

import net.yh.student.dbutil.bean.College;

public interface CollegeService{
College findCollegeById(int id);
int updateCollege(College college);
}

StatusService

package net.yh.student.dbutil.service;

import net.yh.student.dbutil.bean.Status;

public interface StatusService{
Status findStatusById(int id);
int updateStatus(Status status);
}

StudentService

package net.yh.student.dbutil.service;
import net.yh.student.dbutil.bean.Student;

import java.util.List;
import java.util.Vector;

public interface StudentService{

int addStudent(Student student);
int deleteStudentById(String id);
int deleteStudentsByClass(String clazz);
int deleteStudentsByDepartment(String department);
int updateStudent(Student student);
Student findStudentById(String id);
List<Student>findStudentsByName(String name);
List<Student>findStudentsByClass(String clazz);
List<Student>findStudentsByDepartment(String Department);
List<Student>findAllStudents();

Vector findRowByClass();

Vector findRowByDepartment();

Vector findRowsBySex();
Vector findRowsByClass();

Vector findRowsByDepartment();

}

UserService

package net.yh.student.dbutil.service;

import net.yh.student.dbutil.bean.User;

import java.util.List;

public interface UserService{
int addUser(User user);
int deleteUserById(int id);
int updateUser(User user);
User findUserById(int id);
List findAllUsers();
User login(String username, String password);
}

创建测试类

在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.dao.CollegeDao;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class TestCollegeDaoImpl {
@Before
public void beforeTest(){
System.out.println(“单元测试开始了~”);
}

@Test
public void testFindByID(){
    CollegeDao dao =new net.yh.student.dbutil.dao.impl.CollegeDaoImpl();
    net.yh.student.dbutil.bean.College college=dao.findById(1);
    System.out.println(college);
}
@Test
public void testUpdate(){
    CollegeDao dao =new net.yh.student.dbutil.dao.impl.CollegeDaoImpl();
    net.yh.student.dbutil.bean.College college=dao.findById(1);
    college.setPresident("王洪礼");
    dao.update(college);
    college=dao.findById(1);
    System.out.println(college);
}
@After
public void afterTest(){
    System.out.println("单元测试结束~");
}

}
测试结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.bean.College;
import net.yh.student.dbutil.service.CollegeService;
import net.yh.student.dbutil.service.impl.CollegeServiceImpl;
import org.junit.Test;

public class TestCollegeServiceImpl {
@Test
public void testFindCollegeById(){
CollegeService service=new CollegeServiceImpl();
College college=service.findCollegeById(1);
System.out.println(college);

}
@Test
public void testUpdateCollege(){
    CollegeService service=new CollegeServiceImpl();
    College college=service.findCollegeById(1);
    college.setPresident("王洪礼");
    college.setTelephone("3152639");
    int count=service.updateCollege(college);
    if (count>0){
        System.out.println("恭喜,学校记录更新成功");
        college=service.findCollegeById(1);
        System.out.println(college);
    }else {
        System.out.println("遗憾,学校记录更新失败");
    }
}

}

在这里插入图片描述
在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.dao.StatusDao;
import net.yh.student.dbutil.bean.Status;
import net.yh.student.dbutil.dao.impl.StatusDaoImpl;
import org.junit.Test;

public class TestStatusDaoImpl {
@Test

public void testFindById(){
    StatusDao dao=new net.yh.student.dbutil.dao.impl.StatusDaoImpl();
    Status status=dao.findById(1);
    System.out.println(status);
}
@Test
public void testUpdate(){
    StatusDao dao =new StatusDaoImpl();
    Status status=dao.findById(1);
    status.setAuthor("yh");
    status.setTelephone("1558388****");
    status.setEmail("wuxinjian@163.com");
    dao.update(status);
    status=dao.findById(1);
    System.out.println(status);
}

}
在这里插入图片描述
在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.bean.Status;
import net.yh.student.dbutil.service.StatusService;
import net.yh.student.dbutil.service.impl.StatusServiceImpl;
import org.junit.Test;

public class TestStatusServicelmpl {
@Test
public void testFindStatuById(){
StatusService service=new StatusServiceImpl();
Status status=service.findStatusById(1);
System.out.println(status);
}

@Test
public void testUpdateStatus(){
    StatusService service=new StatusServiceImpl();
    Status status=service.findStatusById(1);
    status.setAuthor("YH");
    status.setTelephone("1500001111");
    int count =service.updateStatus(status);
    if(count>0){
        System.out.println("恭喜,状态记录更新成功");
        status=service.findStatusById(1);
        System.out.println(status);
    }else {
        System.out.println("遗憾,状态信息更新失败");
    }
}

}
在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.dao.StudentDao;
import net.yh.student.dbutil.dao.impl.StudentDaoImpl;
import org.junit.Test;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;

public class TestStudentDaoImpl {
@Test
public void testInsert(){
Student student=new Student();
student.setId(“18101001”);
student.setName(“唐鹏”);
student.setSex(“男”);
student.setAge(19);
student.setDepartment(“信息工程系”);
student.setClazz(“18大数据1班”);
student.setTelephone(“12345678901”);

    StudentDao dao=new StudentDaoImpl();
    int count=dao.insert(student);
    if (count>0){
        System.out.println("恭喜,插入成功");
    }else {
        System.out.println("遗憾,插入失败");
    }

}
@Test
public void testDeleteById(){
    StudentDao dao=new  StudentDaoImpl();
    String id="18101001";
    int count=dao.deleteById(id);
    if (count>0){
        System.out.println("恭喜,学生记录删除成功");
    }else{
        System.out.println("遗憾,学生记录删除失败");
    }
}
@Test
public void testDeleteByClass(){
    StudentDao dao =new StudentDaoImpl() {
        @Override
        public List<Student> findByDepartment(String department) {
            return null;
        }
    };
    String clazz="10英教1班";
    int count=dao.deleteByClass(clazz);
    if (count>0){
        System.out.println("恭喜,["+clazz+"]学生记录删除成功");
    }else {
        System.out.println("遗憾,["+clazz+"]学生记录删除失败");
    }
}

@Test
public void testFindByName(){
    StudentDao dao = new StudentDaoImpl() {
    };
    String name="很";
    List<Student>students=dao.findByName(name);
    if (students.size()>0){
        for (Student student:students){
            System.out.println(student);}
    }   else {
            System.out.println("温馨提示:查无此人");
    }
}
@Test
public void testFindRowsBysex(){
    StudentDao dao=new StudentDaoImpl();
    Vector rows=dao.findRowsBysex();
    Iterator iterator=rows.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }
}

}

在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;
import org.junit.Test;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;

public class TestStudentServiceImpl {
@Test
public void TestInsert(){
Student student = new Student();
student.setId(“18201013”);
student.setName(“刘瑶”);
student.setSex(“女”);
student.setAge(20);
student.setClazz(“18软件3班”);
student.setDepartment(“信息工程学院”);
student.setTelephone(“15228054257”);

    StudentServiceImpl service = new StudentServiceImpl();
    int count = service.addStudent(student);
    if (count > 0){
        System.out.println("记录插入成功");
    }else {
        System.out.println("记录插入失败");
    }

}

@Test
public void TestDeleteById(){
    StudentServiceImpl service = new StudentServiceImpl();
    String id = "11040202";
    int count = service.deleteStudentById(id);
    if (count > 0){
        System.out.println("删除失败");
    }else {
        System.out.println("删除成功");
    }
}

@Test
public void TestDeleteByClass(){
    StudentServiceImpl service = new StudentServiceImpl();
    String class01 = "11040202";
    int count = service.deleteStudentsByClass(class01);
    if (count > 0){
        System.out.println("删除失败");
    }else {
        System.out.println("删除成功");
    }
}


@Test

public void TestFIndById(){
    StudentService service = new StudentServiceImpl();
    Student student = service.findStudentById("11040204");
    System.out.println(student);

}

@Test
public void TestFindByName(){
    StudentServiceImpl service = new StudentServiceImpl();
    String name = "李";
    List<Student> students = service.findStudentsByName(name);
    if (students.size()>0){
        for (Student student:students){
            System.out.println(student);
        }
    }else {
        System.out.println("查无此人");
    }
}

@Test
public void TestFindByDeoartment(){
    StudentServiceImpl service = new StudentServiceImpl();
    String department = "信息工程系";
    List<Student> students = service.findStudentsByDepartment(department);
    if (students.size() > 0) {
        for (Student student : students) {
            System.out.println(student);
        }
    } else
        System.out.println("查找失败");
}

@Test
public void testUpdate(){
    StudentServiceImpl service = new StudentServiceImpl();
    Student student = service.findStudentById("10080301");
    student.setName("huang");
    service.updateStudent(student);
    student = service.findStudentById("10080301");
    System.out.println(student);
}



@Test
public void TestFindRowsBySex(){
    StudentServiceImpl service = new StudentServiceImpl();
    Vector rows = service.findRowsBySex();
    Iterator iterator = rows.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }


}

@Test
public void findByClass() {
    StudentServiceImpl service = new StudentServiceImpl();
    String class01 = "11建工";
    List<Student> students = service.findStudentsByClass(class01);
    if (students.size() > 0) {
        for (Student student : students) {
            System.out.println(student);
        }
    } else
        System.out.println("查无此班");
}

@Test
public void findAll() {
    StudentServiceImpl service = new StudentServiceImpl();
    List<Student> students = service.findAllStudents();
    if (students.size() > 0) {
        for (Student student : students) {
            System.out.println(student);
        }
    } else
        System.out.println("查找失败");
}

@Test
public  void TestFindRowsByClass(){
    StudentServiceImpl service = new StudentServiceImpl();
    Vector rows = service.findRowsByClass();
    Iterator iterator = rows.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }

}

@Test
public  void TestFindRowsByDepartment(){
    StudentServiceImpl service = new StudentServiceImpl();
    Vector rows = service.findRowsByDepartment();
    Iterator iterator = rows.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }

}

private class Vectors {
}

}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.bean.User;
import net.yh.student.dbutil.dao.UserDao;
import net.yh.student.dbutil.dao.impl.UserDaoImpl;
import org.junit.Test;

public class TestUserDaoImpl {
@Test
public void testFindById(){
UserDao dao=new UserDaoImpl();
User user=dao.findById(1);
System.out.println(user);
}
// @Test
// public void testLogin(){
// UserDao dao=new UserDaoImpl();
// String username,password;
//
// username=“admin”;
// password=“12345”;
// User user=dao.login(username,password);
// if(user!=null){
// System.out.println(“恭喜,用户名与密码正确,登录成功”);
//
// }else {
// System.out.println(“遗憾,用户名或密码错误,登录失败”);
// }
// }

@Test
public void testLogin(){
    UserDao dao=new UserDaoImpl();
    String username,password;

    username="howard";
    password="12345";
    User user=dao.login(username,password);
    if(user!=null){
        System.out.println("恭喜,用户名与密码正确,登录成功");

    }else {
        System.out.println("遗憾,用户名或密码错误,登录失败");
    }
}

}
在这里插入图片描述
package net.yh.student.dbutil.test;

import net.yh.student.dbutil.bean.User;
import net.yh.student.dbutil.service.UserService;
import net.yh.student.dbutil.service.impl.UserServiceImpl;
import org.junit.Test;

public class TestUserServiceImpl {
@Test
public void testLogin(){
UserService service=new UserServiceImpl();
String username,password;

    username="admin";
    password="12345";

    User user=service.login(username,password);
    if (user !=null){
        System.out.println("恭喜,用户名与密码正确,登录成功");
    }else {
        System.out.println("遗憾,用户名或密码错误,登录失败");
    }

}

}
在这里插入图片描述

GUI 界面部分

在这里插入图片描述

AddStudentFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.*;
import java.util.List;

public class AddStudentFrame extends JFrame {
/**
* 声明面板
*/
private JPanel panel;
private JPanel pnlCenter;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;
private JPanel pnlRow6;
private JPanel pnlRow7;
private JPanel pnlSouth;

/**
 * 声明标签
 */
private JLabel lblId;
private JLabel lblName;
private JLabel lblSex;
private JLabel lblAge;
private JLabel lblDepartment;
private JLabel lblClass;
private JLabel lblTelephone;

/**
 * 声明文本框
 */
private JTextField txtId;
private JTextField txtName;
private JTextField txtSex;
private JTextField txtAge;
private JTextField txtDepartment;
private JTextField txtClass;
private JTextField txtTelephone;

/**
 * 声明按钮
 */
private JButton btnExit;
private JButton btnOK;
private JButton btnCancel;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;

/**
 * 构造方法
 *
 * @param title
 */
public AddStudentFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建组件
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    pnlRow1 = new JPanel();
    pnlRow2 = new JPanel();
    pnlRow3 = new JPanel();
    pnlRow4 = new JPanel();
    pnlRow5 = new JPanel();
    pnlRow6 = new JPanel();
    pnlRow7 = new JPanel();

    pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));

    lblId = new JLabel("学号:");
    lblName = new JLabel("姓名:");
    lblSex = new JLabel("性别:");
    lblAge = new JLabel("年龄:");
    lblDepartment = new JLabel("系部:");
    lblClass = new JLabel("班级:");
    lblTelephone = new JLabel("电话:");

    txtId = new JTextField(20);
    txtName = new JTextField(20);
    txtSex = new JTextField(20);
    txtAge = new JTextField(20);
    txtDepartment = new JTextField(20);
    txtClass = new JTextField(20);
    txtTelephone = new JTextField(20);
    btnOK = new JButton("确定[O]");
    btnCancel = new JButton("取消[C]");
    btnExit = new JButton("退出[X]");
    btnOK.setMnemonic(KeyEvent.VK_O);
    btnCancel.setMnemonic(KeyEvent.VK_C);
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.setLayout(new BorderLayout());
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlSouth, BorderLayout.SOUTH);
    pnlCenter.setLayout(new GridLayout(7, 1));
    pnlCenter.add(pnlRow1);
    pnlCenter.add(pnlRow2);
    pnlCenter.add(pnlRow3);
    pnlCenter.add(pnlRow4);
    pnlCenter.add(pnlRow5);
    pnlCenter.add(pnlRow6);
    pnlCenter.add(pnlRow7);

    pnlRow1.add(lblId);
    pnlRow1.add(txtId);
    pnlRow2.add(lblName);
    pnlRow2.add(txtName);
    pnlRow3.add(lblSex);
    pnlRow3.add(txtSex);
    pnlRow4.add(lblAge);
    pnlRow4.add(txtAge);
    pnlRow5.add(lblDepartment);
    pnlRow5.add(txtDepartment);
    pnlRow6.add(lblClass);
    pnlRow6.add(txtClass);
    pnlRow7.add(lblTelephone);
    pnlRow7.add(txtTelephone);

    pnlSouth.add(btnOK);
    pnlSouth.add(btnCancel);
    pnlSouth.add(btnExit);

    // 设置窗口属性
    setResizable(false);
    pack();
    setLocationRelativeTo(null);
    setVisible(true);

    // 【确定】按钮单击事件
    btnOK.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 创建学生对象
            Student student = new Student();
            student.setId(txtId.getText().trim());
            student.setName(txtName.getText().trim());
            student.setSex(txtSex.getText().trim());
            student.setAge(Integer.parseInt(txtAge.getText()));
            student.setDepartment(txtDepartment.getText().trim());
            student.setClazz(txtClass.getText().trim());
            student.setTelephone(txtTelephone.getText().trim());

            // 创建学生服务对象
            StudentService studentService = new StudentServiceImpl() {
            };
            // 添加学生记录
            int count = studentService.addStudent(student);
            // 判断是否添加成功
            if (count > 0) {
                JOptionPane.showMessageDialog(null, "添加记录成功!", "增加学生记录", JOptionPane.INFORMATION_MESSAGE);
                txtId.setText("");
                txtName.setText("");
                txtSex.setText("");
                txtAge.setText("");
                txtDepartment.setText("");
                txtClass.setText("");
                txtTelephone.setText("");
                txtId.requestFocus();
            } else {
                JOptionPane.showMessageDialog(null, "添加记录失败!", "增加学生记录", JOptionPane.ERROR_MESSAGE);
            }
        }
    });

    txtId.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            if (txtId.getText().trim().equals("")) {
                JOptionPane.showMessageDialog(null, "学号不能为空!", "增加学生记录", JOptionPane.WARNING_MESSAGE);
                txtId.requestFocus();
            }
        }

        @Override
        public void focusGained(FocusEvent e) {
        }
    });

    txtAge.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            if (!isNumber(txtAge.getText().trim())) {
                JOptionPane.showMessageDialog(null, "注意:年龄全由数字构成!", "增加学生记录", JOptionPane.WARNING_MESSAGE);
                txtAge.setText("");
                txtAge.requestFocus();
            }
        }

        @Override
        public void focusGained(FocusEvent e) {
        }
    });

    // 【取消】按钮单击事件
    btnCancel.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            txtId.setText("");
            txtName.setText("");
            txtSex.setText("");
            txtAge.setText("");
            txtDepartment.setText("");
            txtClass.setText("");
            txtTelephone.setText("");
            txtId.requestFocus();
        }
    });

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    });

    // 文本框按键事件
    txtId.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                if (!txtId.getText().trim().equals("")) {
                    txtName.requestFocus();
                }
            }
        }
    });

    txtName.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtSex.requestFocus();
            }
        }
    });

    txtSex.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtAge.requestFocus();
            }
        }
    });

    txtAge.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtDepartment.requestFocus();
            }
        }
    });

    txtDepartment.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtClass.requestFocus();
            }
        }
    });

    txtClass.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtTelephone.requestFocus();
            }
        }
    });
}

/**
 * 判断一个字符串是否全是数字
 *
 * @param str
 * @return
 */
boolean isNumber(String str) {
    for (int i = 0; i < str.length(); i++) {
        if (str.charAt(i) < '0' || str.charAt(i) > '9') {
            return false;
        }
    }
    return true;
}

public static void main(String[] args) {
    new AddStudentFrame("");
}

}
在这里插入图片描述

BrowseStudentsFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.Vector;

public class BrowseStudentsFrame extends JFrame {
/**
* 声明面板
/
private JPanel panel;
private JPanel pnlCenter;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;
private JPanel pnlRow6;
private JPanel pnlRow7;
private JPanel pnlSouth;
/
*
* 声明标签
/
private JLabel lblId;
private JLabel lblName;
private JLabel lblSex;
private JLabel lblAge;
private JLabel lblDepartment;
private JLabel lblClass;
private JLabel lblTelephone;
/
*
* 声明文本框
/
private JTextField txtId;
private JTextField txtName;
private JTextField txtSex;
private JTextField txtAge;
private JTextField txtDepartment;
private JTextField txtClass;
private JTextField txtTelephone;
/
*
* 声明按钮
*/
private JButton btnTop;
private JButton btnPrevious;
private JButton btnNext;
private JButton btnBottom;
private JButton btnExit;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public BrowseStudentsFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建组件
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    pnlRow1 = new JPanel();
    pnlRow2 = new JPanel();
    pnlRow3 = new JPanel();
    pnlRow4 = new JPanel();
    pnlRow5 = new JPanel();
    pnlRow6 = new JPanel();
    pnlRow7 = new JPanel();

    pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));

    lblId = new JLabel("学号:");
    lblName = new JLabel("姓名:");
    lblSex = new JLabel("性别:");
    lblAge = new JLabel("年龄:");
    lblDepartment = new JLabel("系部:");
    lblClass = new JLabel("班级:");
    lblTelephone = new JLabel("电话:");

    txtId = new JTextField(40);
    txtName = new JTextField(40);
    txtSex = new JTextField(40);
    txtAge = new JTextField(40);
    txtDepartment = new JTextField(40);
    txtClass = new JTextField(40);
    txtTelephone = new JTextField(40);
    txtId.setEditable(false);
    txtName.setEditable(false);
    txtSex.setEditable(false);
    txtAge.setEditable(false);
    txtDepartment.setEditable(false);
    txtClass.setEditable(false);
    txtTelephone.setEditable(false);

    btnTop = new JButton("第一条[T]");
    btnPrevious = new JButton("上一条[P]");
    btnNext = new JButton("下一条[N]");
    btnBottom = new JButton("最后一条[B]");
    btnExit = new JButton("退出[X]");
    btnTop.setMnemonic(KeyEvent.VK_T);
    btnPrevious.setMnemonic(KeyEvent.VK_P);
    btnNext.setMnemonic(KeyEvent.VK_N);
    btnBottom.setMnemonic(KeyEvent.VK_B);
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.setLayout(new BorderLayout());
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlSouth, BorderLayout.SOUTH);
    pnlCenter.setLayout(new GridLayout(7, 1));

    pnlCenter.add(pnlRow1);
    pnlCenter.add(pnlRow2);
    pnlCenter.add(pnlRow3);
    pnlCenter.add(pnlRow4);
    pnlCenter.add(pnlRow5);
    pnlCenter.add(pnlRow6);
    pnlCenter.add(pnlRow7);

    pnlRow1.add(lblId);
    pnlRow1.add(txtId);
    pnlRow2.add(lblName);
    pnlRow2.add(txtName);
    pnlRow3.add(lblSex);
    pnlRow3.add(txtSex);
    pnlRow4.add(lblAge);
    pnlRow4.add(txtAge);
    pnlRow5.add(lblDepartment);
    pnlRow5.add(txtDepartment);
    pnlRow6.add(lblClass);
    pnlRow6.add(txtClass);
    pnlRow7.add(lblTelephone);
    pnlRow7.add(txtTelephone);

    pnlSouth.add(btnTop);
    pnlSouth.add(btnPrevious);
    pnlSouth.add(btnNext);
    pnlSouth.add(btnBottom);
    pnlSouth.add(btnExit);

    // 设置窗口属性
    setSize(500, 300);
    // 设置窗口不可调整大小
    setResizable(false);
    // 设置窗口刚好容纳组件
    pack();
    // 设置窗口屏幕居中
    setLocationRelativeTo(null);
    // 设置窗口可见
    setVisible(true);
    // 设置窗口默认关闭操作
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 创建学生服务对象
    studentService = new StudentServiceImpl();
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 判断是否有学生记录
    if (students.size() > 0) {
        // 设置当前记录号
        currentRow = 1;
        // 设置窗口标题
        setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
        // 填充窗口各文本框数据
        fillFrameData(currentRow);
    } else {
        JOptionPane.showMessageDialog(null, "表中没有记录!", "浏览学生表记录", JOptionPane.ERROR_MESSAGE);
        btnTop.setEnabled(false);
        btnPrevious.setEnabled(false);
        btnNext.setEnabled(false);
        btnBottom.setEnabled(false);
    }

    // 【第一条】按钮单击事件
    btnTop.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 设置当前记录号
            currentRow = 1;
            // 填充当前记录数据
            fillFrameData(currentRow);
        }
    });

    // 【上一条】按钮单击事件
    btnPrevious.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (currentRow > 1) {
                // 设置当前记录号
                currentRow--;
                // 填充当前记录数据
                fillFrameData(currentRow);
            } else {
                JOptionPane.showMessageDialog(null, "已到第一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
            }
        }
    });

    // 【下一条】按钮单击事件
    btnNext.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (currentRow < students.size() - 1) {
                // 设置当前记录号
                currentRow++;
                // 填充当前记录数据
                fillFrameData(currentRow);
            } else {
                JOptionPane.showMessageDialog(null, "已到最后一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
            }
        }
    });

    // 【最后一条】按钮单击事件
    btnBottom.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 设置当前记录号
            currentRow = students.size() - 1;
            // 填充当前记录数据
            fillFrameData(currentRow);
        }
    });

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    });
}

/**
 * 将当前记录数据填充窗口各文本框
 *
 * @param currentRow
 */
private void fillFrameData(int currentRow) {
    if (currentRow > 0) {
        setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
        txtId.setText(students.get(currentRow).getId());
        txtName.setText(students.get(currentRow).getName());
        txtSex.setText(students.get(currentRow).getSex());
        txtAge.setText(students.get(currentRow).getAge() + "");
        txtDepartment.setText(students.get(currentRow).getDepartment());
        txtClass.setText(students.get(currentRow).getClazz());
        txtTelephone.setText(students.get(currentRow).getTelephone());
    }
}

/**
 * 主方法
 *
 * @param args
 */
public static void main(String[] args) {
    new BrowseStudentsFrame("");
}

}
在这里插入图片描述

ChangePasswordFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.app.Application;
import net.yh.student.dbutil.bean.User;
import net.yh.student.dbutil.service.UserService;
import net.yh.student.dbutil.service.impl.UserServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class ChangePasswordFrame extends JFrame {
/**
* 面板
*/
private JPanel panel;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;

/**
 * 标签
 */
private JLabel lblUsername;
private JLabel lblPassword;
private JLabel lblNewPassword1;
private JLabel lblNewPassword2;

/**
 * 文本框
 */
private JTextField txtUsername;
private JPasswordField txtPassword;
private JPasswordField txtNewPassword1;
private JPasswordField txtNewPassword2;

/**
 * 按钮
 */
private JButton btnOK;
private JButton btnCancel;

/**
 * 学生管理应用程序
 */
private static Application app;
/**
 * 创建用户服务对象
 */
private UserService userService;

public ChangePasswordFrame(String title) {
    super(title);
    // 初始化用户界面
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlRow1 = new JPanel();
    pnlRow2 = new JPanel();
    pnlRow3 = new JPanel();
    pnlRow4 = new JPanel();
    pnlRow5 = new JPanel();

    lblUsername = new JLabel("用户名:");
    lblPassword = new JLabel("旧密码:");
    lblNewPassword1 = new JLabel("新密码:");
    lblNewPassword2 = new JLabel("确    认:");

    txtUsername = new JTextField(20);
    txtUsername.setEditable(false);
    txtPassword = new JPasswordField(20);
    txtNewPassword1 = new JPasswordField(20);
    txtNewPassword2 = new JPasswordField(20);

    btnOK = new JButton("确定[O]");
    btnOK.setMnemonic(KeyEvent.VK_O);
    btnCancel = new JButton("取消[C]");
    btnCancel.setMnemonic(KeyEvent.VK_C);

    // 添加组件
    panel.setLayout(new GridLayout(5, 1));
    panel.add(pnlRow1);
    panel.add(pnlRow2);
    panel.add(pnlRow3);
    panel.add(pnlRow4);
    panel.add(pnlRow5);

    pnlRow1.add(lblUsername);
    pnlRow1.add(txtUsername);
    pnlRow2.add(lblPassword);
    pnlRow2.add(txtPassword);
    pnlRow3.add(lblNewPassword1);
    pnlRow3.add(txtNewPassword1);
    pnlRow4.add(lblNewPassword2);
    pnlRow4.add(txtNewPassword2);
    pnlRow5.add(btnOK);
    pnlRow5.add(btnCancel);

    // 设置窗口属性
    pack();
    setVisible(true);
    setResizable(false);
    pack();
    setLocationRelativeTo(null);

    // 设置控件属性
    txtUsername.setEditable(false);
    txtUsername.setText(Application.username);

    // 注册监听器,实现监听器接口,编写事件处理代码
    // 取消按钮单击事件
    btnCancel.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    });

    // 确定按钮单击事件
    btnOK.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            changePassword();
        }
    });

    addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            dispose();
        }
    });

    txtUsername.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtPassword.requestFocus();
            }
        }
    });

    txtPassword.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtNewPassword1.requestFocus();
            }
        }
    });

    txtNewPassword1.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtNewPassword2.requestFocus();
            }
        }
    });

    txtNewPassword2.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                btnOK.requestFocus();
            }
        }
    });

    btnOK.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                changePassword();
            }
        }
    });
}

/**
 * 修改密码的方法
 */
private void changePassword() {

    int id = Application.id;
    String username = Application.username;
    String password = new String(txtPassword.getPassword());
    String newPassword1 = new String(txtNewPassword1.getPassword());
    String newPassword2 = new String(txtNewPassword2.getPassword());

    // 创建学生服务对象
    userService = new UserServiceImpl();

    if (userService.login(username, password) == null) {
        JOptionPane.showMessageDialog(null, "旧密码错误,请重新输入!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtPassword.requestFocus();
        txtPassword.selectAll();
    } else if (newPassword1.equals("")) {
        JOptionPane.showMessageDialog(null, "新密码不能为空!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtNewPassword1.requestFocus();
    } else if (newPassword2.equals("")) {
        JOptionPane.showMessageDialog(null, "确认密码不能为空!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtNewPassword2.requestFocus();
    } else if (!newPassword1.equals(newPassword2)) {
        JOptionPane.showMessageDialog(null, "两次密码不一致,请重新输入!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtNewPassword1.setText("");
        txtNewPassword2.setText("");
        txtNewPassword1.requestFocus();
    } else {
        // 按标识符获取用户
        User user = userService.findUserById(id);
        System.out.println(user);
        // 修改密码
        user.setPassword(newPassword1);
        // 更新用户信息
        int count = userService.updateUser(user);
        if (count > 0) {
            JOptionPane.showMessageDialog(null, "密码修改成功!", "设置密码", JOptionPane.INFORMATION_MESSAGE);
            dispose();
        } else {
            JOptionPane.showMessageDialog(null, "密码修改失败!", "设置密码", JOptionPane.WARNING_MESSAGE);
        }
    }
}

public static void main(String[] args) {
    Application.id=1;
    Application.username="李刚";
    new ChangePasswordFrame("");
}

}
在这里插入图片描述

CountStudentsByClassFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.util.Vector;

public class CountStudentsByClassFrame extends JFrame {
/**
* 面板
/
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
/
*
* 按钮
/
private JButton btnPrint;
private JButton btnExit;
/
*
* 记录行集
/
private Vector rows;
/
*
* 表格列标题
/
private Vector colHead;
/
*
* 表格
/
private JTable table;
/
*
* 滚动面板
/
private JScrollPane scroller;
/
*
* 创建学生服务对象
*/
private StudentService studentService;

public CountStudentsByClassFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建组件
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_P);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);

    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    TitledBorder tb = new TitledBorder("统计结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl();
    // 获取按班级统计结果记录行集
    rows = studentService.findRowsByClass();
    // 设置表头
    colHead.add("班级");
    colHead.add("人数");

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    pnlCenter.add(scroller, BorderLayout.CENTER);

    repaint(); // 重绘窗体

    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    }

    // 设置窗口大小
    setSize(300, 200);
    // 设置窗口不可调整大小
    setResizable(false);
    // 设置窗口屏幕居中
    setLocationRelativeTo(null);
    // 设置窗口标题
    setTitle("按班级统计学生人数");
    // 设置窗口可见
    setVisible(true);
    // 设置窗口默认关闭操作
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            dispose();
        }
    });

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });
}

/**
 * 主方法
 *
 * @param args
 */
public static void main(String[] args) {
    new CountStudentsByClassFrame("");
}}

在这里插入图片描述

CountStudentsByDepartmentFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.util.Vector;

public class CountStudentsByDepartmentFrame extends JFrame {
/**
* 面板
/
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
/
*
* 按钮
/
private JButton btnPrint;
private JButton btnExit;
/
*
* 记录行集
/
private Vector rows;
/
*
* 表格列标题
/
private Vector colHead;
/
*
* 表格
/
private JTable table;
/
*
* 滚动面板
/
private JScrollPane scroller;
/
*
* 创建学生服务对象
*/
private StudentService studentService;

public CountStudentsByDepartmentFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建组件
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_P);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);

    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    TitledBorder tb = new TitledBorder("统计结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl();
    // 获取按系部统计结果记录行集
    rows = studentService.findRowsByDepartment();
    // 设置表头
    colHead.add("系部");
    colHead.add("人数");

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    pnlCenter.add(scroller, BorderLayout.CENTER);

    repaint(); // 重绘窗体

    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    }

    // 设置窗口大小
    setSize(300, 200);
    // 设置窗口不可调整大小
    setResizable(false);
    // 设置窗口屏幕居中
    setLocationRelativeTo(null);
    // 设置窗口标题
    setTitle("按班级统计学生人数");
    // 设置窗口可见
    setVisible(true);
    // 设置窗口默认关闭操作
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            dispose();
        }
    });

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });
}

/**
 * 主方法
 *
 * @param args
 */
public static void main(String[] args) {
    new CountStudentsByDepartmentFrame("");
}

}

在这里插入图片描述

CountStudentsBySexFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.util.Vector;

public class CountStudentsBySexFrame extends JFrame {
/**
* 面板
*/
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;

/**
 * 按钮
 */
private JButton btnPrint;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

public CountStudentsBySexFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_P);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);

    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    TitledBorder tb = new TitledBorder("统计结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取按性别统计结果记录行集
    rows = studentService.findRowsBySex();
    // 设置表头
    colHead.add("性别");
    colHead.add("人数");

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    pnlCenter.add(scroller, BorderLayout.CENTER);

    repaint(); // 重绘窗体

    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    }

    // 设置窗口属性
    setSize(300, 200);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            dispose();
        }
    });

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });
}

public static void main(String[] args) {
    new CountStudentsBySexFrame("");
}

}

在这里插入图片描述

DeleteStudentByidFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.util.List;
import java.util.Vector;

public class DeleteStudentByIdFrame extends JFrame {
/**
* 学号标签
/
private JLabel lblInputId;
/
*
* 学号文本框
*/
private JTextField txtId;

/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnDelete;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public DeleteStudentByIdFrame(String title) {
    super(title);
    intiGUI();
}

private void intiGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    lblInputId = new JLabel("输入学号:");
    txtId = new JTextField(10);
    txtId.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnDelete = new JButton("删除查询的记录[D]");
    btnDelete.setEnabled(false);// 删除按钮不可用
    btnDelete.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputId);
    pnlNorth.add(txtId);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnDelete);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口属性
    setSize(600, 400);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            dispose();
        }
    });

    // 【删除】按钮单击事件
    btnDelete.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (!rows.isEmpty()) {
                long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
                if (choice == JOptionPane.OK_OPTION) {
                    // 获取待删学生学号
                    String id = txtId.getText().trim();
                    // 按学号删除学生
                    int count = studentService.deleteStudentById(id);
                    if (count > 0) {
                        JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                        // 重新获取全部学生列表
                        students = studentService.findAllStudents();
                        // 清空待删学生学号文本框
                        txtId.setText("");
                        // 填充数据
                        fillTableData();
                        // 删除按钮不可用
                        btnDelete.setEnabled(false);
                    } else {
                        JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
                    }
                }
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
            // 删除按钮不可用
            btnDelete.setEnabled(false);
        }
    });

    // 文本框按键事件
    txtId.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtId.setText(table.getValueAt(row, 0).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询学号
    String id = txtId.getText().trim();
    if (!id.equals("")) {
        students.clear();
        Student student = studentService.findStudentById(id);
        if (student != null) {
            // 将查询到的学生添加到列表
            students.add(student);
            // 让删除按钮可用
            btnDelete.setEnabled(true);
        }
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查学生学号!", "警告", JOptionPane.WARNING_MESSAGE);
        txtId.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtId.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

public static void main(String[] args) {
    new DeleteStudentByIdFrame("");
}

}

在这里插入图片描述

deletestudentByclassFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.util.List;
import java.util.Vector;

public class DeleteStudentsByClassFrame extends JFrame {
/**
* 班级标签
/
private JLabel lblInputClass;
/
*
* 班级文本框
*/
private JTextField txtClass;

/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnDelete;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public DeleteStudentsByClassFrame(String title) {
    super(title);
    intiGUI();
}

private void intiGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    lblInputClass = new JLabel("输入班级:");
    txtClass = new JTextField(10);
    txtClass.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnDelete = new JButton("删除查询的记录[D]");
    btnDelete.setEnabled(false);// 删除按钮不可用
    btnDelete.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputClass);
    pnlNorth.add(txtClass);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnDelete);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口属性
    setSize(600, 400);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            dispose();
        }
    });

    // 【删除】按钮单击事件
    btnDelete.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (!rows.isEmpty()) {
                long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
                if (choice == JOptionPane.OK_OPTION) {
                    // 获取待删班级
                    String clazz = txtClass.getText().trim();
                    // 按班级删除学生
                    int count = studentService.deleteStudentsByClass(clazz);
                    if (count > 0) {
                        JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                        // 重新获取全部学生列表
                        students = studentService.findAllStudents();
                        // 清空待删班级文本框
                        txtClass.setText("");
                        // 填充数据
                        fillTableData();
                        // 删除按钮不可用
                        btnDelete.setEnabled(false);
                    } else {
                        JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
                    }
                }
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
            // 删除按钮不可用
            btnDelete.setEnabled(false);
        }
    });

    // 文本框按键事件
    txtClass.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtClass.setText(table.getValueAt(row, 5).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询班级
    String clazz = txtClass.getText().trim();
    if (!clazz.equals("")) {
        students = studentService.findStudentsByClass(clazz);
        if (students.size() > 0) {
            // 让删除按钮可用
            btnDelete.setEnabled(true);
        }
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查班级!", "警告", JOptionPane.WARNING_MESSAGE);
        txtClass.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtClass.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

public static void main(String[] args) {
    new DeleteStudentsByClassFrame("");
}

}

在这里插入图片描述

deleteStudentBydepartmentFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.util.List;
import java.util.Vector;

public class DeleteStudentsByDepartmentFrame extends JFrame {
/**
* 系部标签
/
private JLabel lblInputDepartment;
/
*
* 系部文本框
*/
private JTextField txtDepartment;

/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnDelete;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public DeleteStudentsByDepartmentFrame(String title) {
    super(title);
    intiGUI();
}

private void intiGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    lblInputDepartment = new JLabel("输入系部:");
    txtDepartment = new JTextField(10);
    txtDepartment.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnDelete = new JButton("删除查询的记录[D]");
    btnDelete.setEnabled(false);// 删除按钮不可用
    btnDelete.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputDepartment);
    pnlNorth.add(txtDepartment);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnDelete);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口属性
    setSize(600, 400);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            dispose();
        }
    });

    // 【删除】按钮单击事件
    btnDelete.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (!rows.isEmpty()) {
                long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
                if (choice == JOptionPane.OK_OPTION) {
                    // 获取待删系部
                    String department = txtDepartment.getText().trim();
                    // 按系部删除学生
                    int count = studentService.deleteStudentsByDepartment(department);
                    if (count > 0) {
                        JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                        // 重新获取全部学生列表
                        students = studentService.findAllStudents();
                        // 清空待删班级文本框
                        txtDepartment.setText("");
                        // 填充数据
                        fillTableData();
                        // 删除按钮不可用
                        btnDelete.setEnabled(false);
                    } else {
                        JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
                    }
                }
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
            // 删除按钮不可用
            btnDelete.setEnabled(false);
        }
    });

    // 文本框按键事件
    txtDepartment.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtDepartment.setText(table.getValueAt(row, 4).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询系部
    String department = txtDepartment.getText().trim();
    if (!department.equals("")) {
        students = studentService.findStudentsByDepartment(department);
        if (students.size() > 0) {
            // 让删除按钮可用
            btnDelete.setEnabled(true);
        }
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查系部!", "警告", JOptionPane.WARNING_MESSAGE);
        txtDepartment.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtDepartment.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

public static void main(String[] args) {
    new DeleteStudentsByDepartmentFrame("");
}

}

在这里插入图片描述

EditStudentFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EditStudentFrame extends JFrame {

/**
 * 声明面板
 */
private JPanel panel;
private JPanel pnlCenter;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;
private JPanel pnlRow6;
private JPanel pnlRow7;
private JPanel pnlSouth;
private JPanel pnlSouth1;
private JPanel pnlSouth2;

/**
 * 声明标签
 */
private JLabel lblId;
private JLabel lblName;
private JLabel lblSex;
private JLabel lblAge;
private JLabel lblDepartment;
private JLabel lblClass;
private JLabel lblTelephone;

/**
 * 声明文本框
 */
private JTextField txtId;
private JTextField txtName;
private JTextField txtSex;
private JTextField txtAge;
private JTextField txtDepartment;
private JTextField txtClass;
private JTextField txtTelephone;

/**
 * 声明按钮
 */
private JButton btnTop;
private JButton btnPrevious;
private JButton btnNext;
private JButton btnBottom;
private JButton btnExit;
private JButton btnEdit;
private JButton btnOK;
private JButton btnCancel;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student>students;
/**
 * 创建学生服务对象
 */
StudentService studentService;

// 构造方法
public EditStudentFrame(String title) {
    super(title);
    initGUI();
}

private void initGUI() {
    // 创建组件
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();
    pnlSouth.setLayout(new GridLayout(2, 1));

    pnlRow1 = new JPanel();
    pnlRow2 = new JPanel();
    pnlRow3 = new JPanel();
    pnlRow4 = new JPanel();
    pnlRow5 = new JPanel();
    pnlRow6 = new JPanel();
    pnlRow7 = new JPanel();
    pnlSouth1 = new JPanel();
    pnlSouth2 = new JPanel();

    pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
    pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));

    lblId = new JLabel("学号:");
    lblName = new JLabel("姓名:");
    lblSex = new JLabel("性别:");
    lblAge = new JLabel("年龄:");
    lblDepartment = new JLabel("系部:");
    lblClass = new JLabel("班级:");
    lblTelephone = new JLabel("电话:");

    txtId = new JTextField(40);
    txtName = new JTextField(40);
    txtSex = new JTextField(40);
    txtAge = new JTextField(40);
    txtDepartment = new JTextField(40);
    txtClass = new JTextField(40);
    txtTelephone = new JTextField(40);
    txtId.setEditable(false);
    txtName.setEditable(false);
    txtSex.setEditable(false);
    txtAge.setEditable(false);
    txtDepartment.setEditable(false);
    txtClass.setEditable(false);
    txtTelephone.setEditable(false);

    btnTop = new JButton("第一条[T]");
    btnPrevious = new JButton("上一条[P]");
    btnNext = new JButton("下一条[N]");
    btnBottom = new JButton("最后一条[B]");
    btnExit = new JButton("退出[X]");
    btnEdit = new JButton("编辑[E]");
    btnOK = new JButton("确定[O]");
    btnCancel = new JButton("取消[C]");
    btnOK.setEnabled(false);
    btnCancel.setEnabled(false);
    btnTop.setMnemonic(KeyEvent.VK_T);
    btnPrevious.setMnemonic(KeyEvent.VK_P);
    btnNext.setMnemonic(KeyEvent.VK_N);
    btnBottom.setMnemonic(KeyEvent.VK_B);
    btnExit.setMnemonic(KeyEvent.VK_X);
    btnEdit.setMnemonic(KeyEvent.VK_E);
    btnOK.setMnemonic(KeyEvent.VK_O);
    btnCancel.setMnemonic(KeyEvent.VK_C);

    // 添加组件
    panel.setLayout(new BorderLayout());
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlSouth, BorderLayout.SOUTH);
    pnlCenter.setLayout(new GridLayout(7, 1));

    pnlCenter.add(pnlRow1);
    pnlCenter.add(pnlRow2);
    pnlCenter.add(pnlRow3);
    pnlCenter.add(pnlRow4);
    pnlCenter.add(pnlRow5);
    pnlCenter.add(pnlRow6);
    pnlCenter.add(pnlRow7);

    pnlRow1.add(lblId);
    pnlRow1.add(txtId);
    pnlRow2.add(lblName);
    pnlRow2.add(txtName);
    pnlRow3.add(lblSex);
    pnlRow3.add(txtSex);
    pnlRow4.add(lblAge);
    pnlRow4.add(txtAge);
    pnlRow5.add(lblDepartment);
    pnlRow5.add(txtDepartment);
    pnlRow6.add(lblClass);
    pnlRow6.add(txtClass);
    pnlRow7.add(lblTelephone);
    pnlRow7.add(txtTelephone);

    pnlSouth.add(pnlSouth1);
    pnlSouth.add(pnlSouth2);
    pnlSouth1.add(btnTop);
    pnlSouth1.add(btnPrevious);
    pnlSouth1.add(btnNext);
    pnlSouth1.add(btnBottom);
    pnlSouth1.add(btnExit);
    pnlSouth2.add(btnEdit);
    pnlSouth2.add(btnOK);
    pnlSouth2.add(btnCancel);

    // 设置窗口属性
    setSize(500, 300);
    setResizable(false);
    pack();
    setLocationRelativeTo(null);
    setVisible(true);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 判断是否有学生记录
    if (students.size() > 0) {
        // 设置当前记录号
        currentRow = 1;
        // 设置窗口标题
        setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
        // 填充窗口各文本框数据
        fillFrameData(currentRow);
    } else {
        JOptionPane.showMessageDialog(null, "表中没有记录!", "浏览学生表记录", JOptionPane.ERROR_MESSAGE);
        btnTop.setEnabled(false);
        btnPrevious.setEnabled(false);
        btnNext.setEnabled(false);
        btnBottom.setEnabled(false);
    }

    // 【第一条】按钮单击事件
    btnTop.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 设置当前记录号
            currentRow = 1;
            // 填充当前记录数据
            fillFrameData(currentRow);
        }
    });

    // 【上一条】按钮单击事件
    btnPrevious.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (currentRow > 1) {
                // 设置当前记录号
                currentRow--;
                // 填充当前记录数据
                fillFrameData(currentRow);
            } else {
                JOptionPane.showMessageDialog(null, "已到第一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
            }
        }
    });

    // 【下一条】按钮单击事件
    btnNext.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (currentRow < students.size() - 1) {
                // 设置当前记录号
                currentRow++;
                // 填充当前记录数据
                fillFrameData(currentRow);
            } else {
                JOptionPane.showMessageDialog(null, "已到最后一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
            }
        }
    });

    // 【最后一条】按钮单击事件
    btnBottom.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 设置当前记录号
            currentRow = students.size() - 1;
            // 填充当前记录数据
            fillFrameData(currentRow);
        }
    });

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    });

    // 【编辑】按钮单击事件
    btnEdit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            txtName.setEditable(true);
            txtSex.setEditable(true);
            txtAge.setEditable(true);
            txtDepartment.setEditable(true);
            txtClass.setEditable(true);
            txtTelephone.setEditable(true);
            btnOK.setEnabled(true);
            btnCancel.setEnabled(true);
        }
    });

    // 【确定】按钮单击事件
    btnOK.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 获取当前学生实体
            Student student = students.get(currentRow);

            if (isNumber(txtAge.getText())) {
                if (isLegalTelephone(txtTelephone.getText())) {
                    // 修改学生实体属性
                    student.setName(txtName.getText());
                    student.setSex(txtSex.getText());
                    student.setAge(Integer.parseInt(txtAge.getText()));
                    student.setDepartment(txtDepartment.getText());
                    student.setClazz(txtClass.getText());
                    student.setTelephone(txtTelephone.getText());
                    // 更新学生信息
                    int count = studentService.updateStudent(student);
                    // 判断是否更新成功
                    if (count > 0) {
                        JOptionPane.showMessageDialog(null, "更新记录成功!", "编辑学生记录", JOptionPane.INFORMATION_MESSAGE);
                        btnOK.setEnabled(false);
                        btnCancel.setEnabled(false);
                        btnEdit.setEnabled(true);
                        txtName.setEditable(false);
                        txtSex.setEditable(false);
                        txtAge.setEditable(false);
                        txtDepartment.setEditable(false);
                        txtClass.setEditable(false);
                        txtTelephone.setEditable(false);
                        // 重新获取全部学生列表
                        students = studentService.findAllStudents();
                    } else {
                        JOptionPane.showMessageDialog(null, "更新记录失败!", "编辑学生记录", JOptionPane.ERROR_MESSAGE);
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "非法手机号!", "编辑学生记录", JOptionPane.ERROR_MESSAGE);
                    txtTelephone.selectAll();
                    txtTelephone.requestFocus();
                }
            } else {
                JOptionPane.showMessageDialog(null, "年龄必须是数字!", "编辑学生记录", JOptionPane.ERROR_MESSAGE);
                txtAge.selectAll();
                txtAge.requestFocus();
            }
        }
    });

    // 【取消】按钮单击事件
    btnCancel.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            btnOK.setEnabled(false);
            btnCancel.setEnabled(false);
            btnEdit.setEnabled(true);
            txtName.setEditable(false);
            txtSex.setEditable(false);
            txtAge.setEditable(false);
            txtDepartment.setEditable(false);
            txtClass.setEditable(false);
            txtTelephone.setEditable(false);
            // 恢复文本框修改前的值
            txtName.setText(students.get(currentRow).getName());
            txtSex.setText(students.get(currentRow).getSex());
            txtAge.setText(students.get(currentRow).getAge() + "");
            txtDepartment.setText(students.get(currentRow).getDepartment());
            txtClass.setText(students.get(currentRow).getClazz());
            txtTelephone.setText(students.get(currentRow).getTelephone());
        }
    });

    // 文本框按键事件
    txtId.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtName.requestFocus();
            }
        }
    });

    txtName.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtSex.requestFocus();
            }
        }
    });

    txtSex.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtAge.requestFocus();
            }
        }
    });

    txtAge.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtDepartment.requestFocus();
            }
        }
    });

    txtDepartment.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtClass.requestFocus();
            }
        }
    });

    txtClass.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtTelephone.requestFocus();
            }
        }
    });
}

/**
 * 将当前记录数据填充窗口各文本框
 *
 * @param currentRow
 */
private void fillFrameData(int currentRow) {
    if (currentRow > 0) {
        setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
        txtId.setText(students.get(currentRow).getId());
        txtName.setText(students.get(currentRow).getName());
        txtSex.setText(students.get(currentRow).getSex());
        txtAge.setText(students.get(currentRow).getAge() + "");
        txtDepartment.setText(students.get(currentRow).getDepartment());
        txtClass.setText(students.get(currentRow).getClazz());
        txtTelephone.setText(students.get(currentRow).getTelephone());
    }
}

// 判断一个字符串是否全是数字
private boolean isNumber(String str) {
    for (int i = 0; i < str.length(); i++) {
        if (str.charAt(i) < '0' || str.charAt(i) > '9') {
            return false;
        }
    }
    return true;
}

/**
 * 判断是否合法手机号
 *
 * @param telephone
 * @return
 */
private boolean isLegalTelephone(String telephone) {
    Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");
    Matcher m = p.matcher(telephone);
    return m.matches();
}

public static void main(String[] args) {
    new EditStudentFrame("");
}

}

在这里插入图片描述

FindStudentByIdFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.awt.print.PrinterException;
import java.util.List;
import java.util.Vector;

public class FindStudentByIdFrame extends JFrame {
/**
* 学号标签
/
private JLabel lblInputId;
/
*
* 学号文本框
*/
private JTextField txtId;

/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnPrint;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public FindStudentByIdFrame(String title) {
    super(title);
    intiGUI();
}

/**
 * 初始化用户界面
 */
private void intiGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    lblInputId = new JLabel("输入学号:");
    txtId = new JTextField(10);
    txtId.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputId);
    pnlNorth.add(txtId);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口属性
    setSize(600, 400);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            dispose();
        }
    });

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
            // 删除按钮不可用
            btnPrint.setEnabled(false);
        }
    });

    // 文本框按键事件
    txtId.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtId.setText(table.getValueAt(row, 0).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询学号
    String id = txtId.getText().trim();
    if (!id.equals("")) {
        students.clear();
        Student student = studentService.findStudentById(id);
        if (student != null) {
            // 将查询到的学生添加到列表
            students.add(student);
        }
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查学生学号!", "警告", JOptionPane.WARNING_MESSAGE);
        txtId.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtId.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

public static void main(String[] args) {
    new FindStudentByIdFrame("");
}

}

在这里插入图片描述

FindStudentByNameFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.awt.print.PrinterException;
import java.util.List;
import java.util.Vector;

public class FindStudentByNameFrame extends JFrame {
/**
* 姓名标签
/
private JLabel lblInputName;
/
*
* 姓名文本框
*/
private JTextField txtName;

/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnPrint;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public FindStudentByNameFrame(String title) {
    super(title);
    intiGUI();
}

/**
 * 初始化用户界面
 */
private void intiGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    lblInputName = new JLabel("输入姓名:");
    txtName = new JTextField(10);
    txtName.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputName);
    pnlNorth.add(txtName);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口属性
    setSize(600, 400);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            dispose();
        }
    });

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
        }
    });

    // 文本框按键事件
    txtName.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtName.setText(table.getValueAt(row, 1).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询姓名
    String name = txtName.getText().trim();
    if (!name.equals("")) {
        // 按姓名查询获取学生列表
        students = studentService.findStudentsByName(name);
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查学生姓名!", "警告", JOptionPane.WARNING_MESSAGE);
        txtName.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtName.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

public static void main(String[] args) {
    new FindStudentByNameFrame("");
}

}

在这里插入图片描述

FindStudentsByClassFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.awt.print.PrinterException;
import java.util.List;
import java.util.Vector;

public class FindStudentsByClassFrame extends JFrame {
/**
* 班级标签
/
private JLabel lblInputClass;
/
*
* 班级文本框
*/
private JTextField txtClass;

/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnPrint;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student>students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public FindStudentsByClassFrame(String title) {
    super(title);
    intiGUI();
}

/**
 * 初始化用户界面
 */
private void intiGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    lblInputClass = new JLabel("输入班级:");
    txtClass = new JTextField(10);
    txtClass.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputClass);
    pnlNorth.add(txtClass);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口属性
    setSize(600, 400);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            dispose();
        }
    });

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
        }
    });

    // 文本框按键事件
    txtClass.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtClass.setText(table.getValueAt(row, 5).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询班级
    String clazz = txtClass.getText().trim();
    if (!clazz.equals("")) {
        // 按班级查询获取学生列表
        students = studentService.findStudentsByClass(clazz);
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查班级!", "警告", JOptionPane.WARNING_MESSAGE);
        txtClass.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtClass.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

public static void main(String[] args) {
    new FindStudentsByClassFrame("");
}

}

在这里插入图片描述
在这里插入图片描述

FindStudentsBydepartmentFrame

package net.yh.student.dbutil.gui;
import net.yh.student.dbutil.bean.Student;
import net.yh.student.dbutil.service.StudentService;
import net.yh.student.dbutil.service.impl.StudentServiceImpl;

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.awt.print.PrinterException;
import java.util.List;
import java.util.Vector;

public class FindStudentsByDepartmentFrame extends JFrame {
/**
* 系部标签
/
private JLabel lblInputDepartment;
/
*
* 系部文本框
*/
private JTextField txtDepartment;

/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnPrint;
private JButton btnExit;

/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;

/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public FindStudentsByDepartmentFrame(String title) {
    super(title);
    intiGUI();
}

/**
 * 初始化用户界面
 */
private void intiGUI() {
    // 创建对象
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    rows = new Vector();
    colHead = new Vector();

    lblInputDepartment = new JLabel("输入系部:");
    txtDepartment = new JTextField(10);
    txtDepartment.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputDepartment);
    pnlNorth.add(txtDepartment);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl() {
        @Override
        public Vector findRowsByClass() {
            return null;
        }

        @Override
        public Vector findRowsByDepartment() {
            return null;
        }
    };
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口属性
    setSize(600, 400);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

    // 【退出】按钮单击事件
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            dispose();
        }
    });

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
        }
    });

    // 文本框按键事件
    txtDepartment.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    table.addMouseListener(new MouseAdapter() {
        /* (non-Javadoc)
         * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
         */
        /* (non-Javadoc)
         * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
         */
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtDepartment.setText(table.getValueAt(row, 4).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询系部
    String department = txtDepartment.getText().trim();
    if (!department.equals("")) {
        // 按系部查询获取学生列表
        students = studentService.findStudentsByDepartment(department);
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查系部!", "警告", JOptionPane.WARNING_MESSAGE);
        txtDepartment.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtDepartment.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

public static void main(String[] args) {
    new FindStudentsByDepartmentFrame("");
}

}

在这里插入图片描述
在这里插入图片描述

LoginFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.app.Application;
import net.yh.student.dbutil.bean.User;
import net.yh.student.dbutil.service.StatusService;
import net.yh.student.dbutil.service.UserService;
import net.yh.student.dbutil.service.impl.StatusServiceImpl;
import net.yh.student.dbutil.service.impl.UserServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class LoginFrame extends JFrame {
/**
* 用户名
/
private String username;
/
*
* 密码
/
private String password;
/
*
* 用户名标签
/
private JLabel lblUsername;
/
*
* 密码标签
/
private JLabel lblPassword;
/
*
* 用户名文本框
/
private JTextField txtUsername;
/
*
* 密码文本框
/
private JPasswordField txtPassword;
/
*
* 确定按钮
/
private JButton btnOK;
/
*
* 取消按钮
/
private JButton btnCancel;
/
*
* 注册按钮
/
private JButton btnRegister;
/
*
* 主面板
/
private JPanel panel;
/
*
* 第一行面板
/
private JPanel panel1;
/
*
* 第二行面板
/
private JPanel panel2;
/
*
* 第三行面板
*/
private JPanel panel3;

/**
 * 构造方法
 *
 * @param title
 */
public LoginFrame(String title) {
    super(title);
    // 调用初始化界面方法
    initGUI();
}

/**
 * 初始化界面
 */
private void initGUI() {
    // 实例化控件
    lblUsername = new JLabel("用户名:");
    lblPassword = new JLabel("密    码:");
    txtUsername = new JTextField("", 15);
    txtPassword = new JPasswordField("", 15);
    btnOK = new JButton("确定[O]");
    btnCancel = new JButton("取消[C]");
    btnRegister = new JButton("注册[R]");
    panel = (JPanel) getContentPane();
    panel1 = new JPanel();
    panel2 = new JPanel();
    panel3 = new JPanel();

    // 设置主面板为网格布局
    panel.setLayout(new GridLayout(3, 1));
    // 将三行面板添加到主面板
    panel.add(panel1);
    panel.add(panel2);
    panel.add(panel3);

    // 将控件分别添加到三行面板
    panel1.add(lblUsername);
    panel1.add(txtUsername);
    panel2.add(lblPassword);
    panel2.add(txtPassword);
    panel3.add(btnOK);
    panel3.add(btnCancel);
    panel3.add(btnRegister);

    // 设置窗口与控件属性
    setSize(250, 200); // 设置窗口大小
    setLocationRelativeTo(null);// 让窗口居中
    setResizable(false); // 窗口不可调整大小
    pack(); // 使窗口恰好容纳组件
    setVisible(true); // 让窗口可见
    btnOK.setMnemonic(KeyEvent.VK_O); // 设置热键字母
    btnCancel.setMnemonic(KeyEvent.VK_C);// 设置热键字母
    btnRegister.setMnemonic(KeyEvent.VK_R);// 设置热键字母
    // txtPassword.setEchoChar('*');//设置回显字符

    /*
     * 注册监听器,编写事件处理代码 采用匿名内部类方式来实现
     */
    // 确定按钮单击事件
    btnOK.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            login();
        }
    });

    // 确定按钮按键事件
    btnOK.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                login();
            }
        }
    });

    // 取消按钮单击事件
    btnCancel.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });

    // 注册按钮单击事件
    btnRegister.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            // 隐藏登录窗口
            Application.loginFrame.setVisible(false);
            // 实例化注册窗口
            Application.registerFrame = new RegisterFrame("注册");
        }
    });

    // 用户名文本框按键事件
    txtUsername.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtPassword.requestFocus();
            }
        }
    });

    // 密码文本框按键事件
    txtPassword.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                login();
            }
        }
    });
}

/**
 * 登录方法
 */
private void login() {
    // 获取用户名
    username = txtUsername.getText().trim();
    // 获取密码
    password = new String(txtPassword.getPassword());
    // 创建用户服务对象
    UserService userService = new UserServiceImpl();
    // 用户登录
    User user = userService.login(username, password);
    // 判断是否登录成功
    if (user != null) {
        // 隐藏登录窗口
        Application.loginFrame.setVisible(false);
        // 定义状态服务对象
        StatusService statusService = new StatusServiceImpl();
        // 保存用户标识
        Application.id = user.getId();
        // 保存用户名
        Application.username = user.getUsernname();
        // 提示用户登录成功
        JOptionPane.showMessageDialog(null, "欢迎使用学生信息管理系统" + statusService.findStatusById(1).getVersion() + "!",
                "学生信息管理系统", JOptionPane.INFORMATION_MESSAGE);
        // 显示系统主窗口
        Application.mainFrame = new MainFrame("学生信息管理系统" + statusService.findStatusById(1).getVersion());
        // 释放登录窗口
        Application.loginFrame.dispose();
    } else {
        // 隐藏登录窗口
        Application.loginFrame.setVisible(false);
        // 提示用户登录失败
        JOptionPane.showMessageDialog(null, "用户名或密码错误,请重新输入!", "学生信息管理系统", JOptionPane.ERROR_MESSAGE);
        // 显示登录窗口
        Application.loginFrame.setVisible(true);
        // 用户名文本全部选中
        txtUsername.selectAll();
        // 密码文本全部选中
        txtPassword.selectAll();
        // 用户名文本框获取焦点
        txtUsername.requestFocus();
    }
}

/**
 * 主方法
 *
 * @param args
 */
public static void main(String[] args) {
    // 设置应用程序登录窗口
    Application.loginFrame = new LoginFrame("登录");
}

}
在这里插入图片描述
在这里插入图片描述

MainFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.app.Application;
import net.yh.student.dbutil.bean.Status;
import net.yh.student.dbutil.service.StatusService;
import net.yh.student.dbutil.service.impl.StatusServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.*;
import java.io.IOException;

/**

  • 功能:主界面窗口
  •  通过菜单系统
    
  •  调用各个功能模块
    
  • 作者:杨华
  • 日期:2019年6月22日
    */

public class MainFrame extends JFrame {
/**
* 菜单部分
/
private JMenuBar mnbMain;
/
*
* 设置菜单
/
private JMenu mnuSet;
private JMenuItem mniSetCollegeInfo;
private JMenuItem mniSetStatusBar;
private JMenuItem mniChangePassword;
private JMenuItem mniExit;
/
*
* 操作菜单
/
private JMenu mnuOperate;
private JMenuItem mniAddStudent;
private JMenuItem mniBrowseStudent;
private JMenuItem mniEditStudent;
/
*
* 删除菜单
/
private JMenu mnuDelStu;
private JMenuItem mniDelStudentById;
private JMenuItem mniDelStudentsByClass;
private JMenuItem mniDelStudentsByDepartment;
/
*
* 查询菜单
/
private JMenu mnuFind;
private JMenuItem mniFindStudentById;
private JMenuItem mniFindStudentsByName;
private JMenuItem mniFindStudentsByClass;
private JMenuItem mniFindStudentsByDepartment;
/
*
* 统计菜单
/
private JMenu mnuCount;
private JMenuItem mniCountStudentsBySex;
private JMenuItem mniCountStudentsByClass;
private JMenuItem mniCountStudentsByDepartment;
/
*
* 帮助菜单
/
private JMenu mnuHelp;
private JMenuItem mniHelp;
private JMenuItem mniAbout;
/
*
* 面板
/
private JPanel panel;
private JPanel pnlCenter;
private JPanel pnlSouth;
/
*
* 状态栏标签
/
private JLabel lblStatusBar;
/
*
* 背景标签
*/
private JLabel lblBackground;

/**
 * 图标对象
 */
private ImageIcon imgCollege;
private ImageIcon imgExit;
private ImageIcon imgPassword;
private ImageIcon imgQuery;
private ImageIcon imgBrowse;
private ImageIcon imgCount;
private ImageIcon imgBackground;
/**
 * 工具栏
 */
private JToolBar toolbar;
/**
 * 按钮
 */
private JButton btnSetCollege;
private JButton btnChangePassword;
private JButton btnFindStudentById;
private JButton btnExit;
private JButton btnBrowseStudent;
private JButton btnCountByDepartment;
/**
 * 状态对象
 */
private Status status;
/**
 * 状态服务对象
 */
private StatusService statusService;

/**
 * 构造方法
 *
 * @param title
 */
public MainFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化图形用户界面
 */
private void initGUI() {
    // 创建主菜单
    mnbMain = new JMenuBar();

    // 创建【设置】菜单及其菜单项
    mnuSet = new JMenu("系统设置[S]");
    mnuSet.setMnemonic(KeyEvent.VK_S);
    mniSetCollegeInfo = new JMenuItem("学校信息");
    mniSetStatusBar = new JMenuItem("状态栏信息");
    mniChangePassword = new JMenuItem("修改密码");
    mniExit = new JMenuItem("退出系统");

    // 创建【操作】菜单及其菜单项
    mnuOperate = new JMenu("数据操作[O]");
    mnuOperate.setMnemonic(KeyEvent.VK_O);
    mniAddStudent = new JMenuItem("增加学生表记录");
    mnuDelStu = new JMenu("删除学生表记录");
    mniEditStudent = new JMenuItem("编辑学生表记录");
    mniBrowseStudent = new JMenuItem("浏览学生表记录");

    // 创建【删除学生表记录】的子菜单
    mniDelStudentById = new JMenuItem("按学号删除");
    mniDelStudentsByClass = new JMenuItem("按班级删除");
    mniDelStudentsByDepartment = new JMenuItem("按系部删除");

    // 创建【查询】菜单及其菜单项
    mnuFind = new JMenu("查询学生[Q]");
    mnuFind.setMnemonic(KeyEvent.VK_Q);
    mniFindStudentById = new JMenuItem("按学号查询");
    mniFindStudentsByName = new JMenuItem("按姓名查询");
    mniFindStudentsByClass = new JMenuItem("按班级查询");
    mniFindStudentsByDepartment = new JMenuItem("按系部查询");

    // 创建【统计】菜单及其菜单项
    mnuCount = new JMenu("人数统计[C]");
    mnuCount.setMnemonic(KeyEvent.VK_C);
    mniCountStudentsBySex = new JMenuItem("按性别统计");
    mniCountStudentsByClass = new JMenuItem("按班级统计");
    mniCountStudentsByDepartment = new JMenuItem("按系部统计");

    // 创建【帮助】菜单及其菜单项
    mnuHelp = new JMenu("帮助[H]");
    mnuHelp.setMnemonic(KeyEvent.VK_H);
    mniHelp = new JMenuItem("帮助");
    mniAbout = new JMenuItem("关于");

    // 创建图标对象
    imgCollege = new ImageIcon("images/college.png");
    imgPassword = new ImageIcon("images/password.png");
    imgQuery = new ImageIcon("images/query.png");
    imgBrowse = new ImageIcon("images/browse.png");
    imgCount = new ImageIcon("images/count.png");
    imgExit = new ImageIcon("images/exit.png");

    // 创建工具栏
    toolbar = new JToolBar();
    btnSetCollege = new JButton("设置学校", imgCollege);
    btnSetCollege.setToolTipText("设置学校信息");
    btnSetCollege.setVerticalTextPosition(AbstractButton.BOTTOM);
    btnSetCollege.setHorizontalTextPosition(AbstractButton.CENTER);
    btnChangePassword = new JButton("修改密码", imgPassword);
    btnChangePassword.setToolTipText("修改用户密码");
    btnChangePassword.setVerticalTextPosition(AbstractButton.BOTTOM);
    btnChangePassword.setHorizontalTextPosition(AbstractButton.CENTER);
    btnBrowseStudent = new JButton("浏览学生", imgBrowse);
    btnBrowseStudent.setToolTipText("浏览学生记录");
    btnBrowseStudent.setVerticalTextPosition(AbstractButton.BOTTOM);
    btnBrowseStudent.setHorizontalTextPosition(AbstractButton.CENTER);
    btnFindStudentById = new JButton("查询学生", imgQuery);
    btnFindStudentById.setToolTipText("按学号查询学生记录");
    btnFindStudentById.setVerticalTextPosition(AbstractButton.BOTTOM);
    btnFindStudentById.setHorizontalTextPosition(AbstractButton.CENTER);
    btnCountByDepartment = new JButton("统计人数", imgCount);
    btnCountByDepartment.setToolTipText("按系部统计学生人数");
    btnCountByDepartment.setVerticalTextPosition(AbstractButton.BOTTOM);
    btnCountByDepartment.setHorizontalTextPosition(AbstractButton.CENTER);
    btnExit = new JButton("退出系统", imgExit);
    btnExit.setToolTipText("退出系统");
    btnExit.setVerticalTextPosition(AbstractButton.BOTTOM);
    btnExit.setHorizontalTextPosition(AbstractButton.CENTER);
    toolbar.add(btnSetCollege);
    toolbar.add(btnChangePassword);
    toolbar.add(btnBrowseStudent);
    toolbar.add(btnFindStudentById);
    toolbar.add(btnCountByDepartment);
    toolbar.add(btnExit);

    // 创建面板
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();
    pnlSouth.setLayout(new FlowLayout(FlowLayout.LEFT));

    // 创建背景图片
    imgBackground = new ImageIcon("images/background.jpg");
    // 创建背景标签
    lblBackground = new JLabel(imgBackground);
    // 创建状态栏标签
    lblStatusBar = new JLabel();

    // 设置菜单栏
    setJMenuBar(mnbMain);
    // 添加【设置】菜单
    mnbMain.add(mnuSet);
    mnuSet.add(mniSetCollegeInfo);
    mnuSet.add(mniSetStatusBar);
    mnuSet.add(mniChangePassword);
    mnuSet.addSeparator();
    mnuSet.add(mniExit);

    // 添加【删除学生表记录】菜单
    mnuDelStu.add(mniDelStudentById);
    mnuDelStu.add(mniDelStudentsByClass);
    mnuDelStu.add(mniDelStudentsByDepartment);

    // 添加【操作】菜单
    mnbMain.add(mnuOperate);
    mnuOperate.add(mniAddStudent);
    mnuOperate.add(mniEditStudent);
    mnuOperate.add(mnuDelStu);
    mnuOperate.add(mniBrowseStudent);

    // 添加【查询】菜单
    mnbMain.add(mnuFind);
    mnuFind.add(mniFindStudentById);
    mnuFind.add(mniFindStudentsByName);
    mnuFind.add(mniFindStudentsByClass);
    mnuFind.add(mniFindStudentsByDepartment);

    // 添加【统计】菜单
    mnbMain.add(mnuCount);
    mnuCount.add(mniCountStudentsBySex);
    mnuCount.add(mniCountStudentsByClass);
    mnuCount.add(mniCountStudentsByDepartment);

    // 添加【帮助】菜单
    mnbMain.add(mnuHelp);
    mnuHelp.add(mniHelp);
    mnuHelp.add(mniAbout);

    // 添加面板
    panel.setLayout(new BorderLayout());
    panel.add(toolbar, "North");
    panel.add(pnlCenter, "Center");
    panel.add(pnlSouth, "South");
    pnlCenter.add(lblBackground);
    pnlSouth.add(lblStatusBar);

    // 非管理员不能设置状态栏
    if (!Application.username.equals("admin")) {
        mniSetStatusBar.setEnabled(false);
        mniAddStudent.setEnabled(false);
        mnuDelStu.setEnabled(false);
        mniEditStudent.setEnabled(false);
    }

    // 设置状态栏信息
    setStatusBar();

    // 创建状态服务对象
    statusService = new StatusServiceImpl();
    // 获取状态对象
    status = statusService.findStatusById(1);

    // 设置窗口尺寸
    setSize(800, 640);
    // 设置窗口可见
    setVisible(true);
    // 设置窗口屏幕居中
    setLocationRelativeTo(null);
    // 设置窗口标题
    setTitle("学生信息管理系统" + status.getVersion());

    // 注册窗口监听器,继承窗口适配器,编写事件处理方法
    addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            exitSystem();
        }
    });

    // 设置菜单
    // 【设置学校信息】菜单项单击事件
    mniSetCollegeInfo.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new SetCollegeInformationFrame("");
        }
    });

    // 【设置状态栏信息】菜单项单击事件
    mniSetStatusBar.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new SetStatusBarFrame("");
        }
    });

    // 【修改密码】菜单项单击事件
    mniChangePassword.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new ChangePasswordFrame("");
        }
    });

    // 【退出系统】菜单项单击事件
    mniExit.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            exitSystem();
        }
    });

    // 查询菜单
    // 【按学号查询】菜单项单击事件
    mniFindStudentById.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new FindStudentByIdFrame("");
        }
    });

    // 【按姓名查询】菜单项单击事件FindStudentsByNameFrame
    mniFindStudentsByName.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new FindStudentByNameFrame("");
        }
    });

    // 【按班级查询】菜单项单击事件
    mniFindStudentsByClass.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new FindStudentsByClassFrame("");
        }
    });

    // 【按系部查询】菜单项单击事件
    mniFindStudentsByDepartment.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new FindStudentsByDepartmentFrame("");
        }
    });

    // 统计菜单
    // 【按性别统计人数】菜单项单击事件
    mniCountStudentsBySex.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new CountStudentsBySexFrame("");
        }
    });

    // 【按班级统计人数】菜单项单击事件
    mniCountStudentsByClass.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new CountStudentsByClassFrame("");
        }
    });

    // 【按系部统计人数】菜单项单击事件
    mniCountStudentsByDepartment.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new CountStudentsByDepartmentFrame("");
        }
    });

    // 【增加学生记录】菜单项单击事件
    mniAddStudent.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new AddStudentFrame("");
        }
    });

    // 【按学号删除学生记录】菜单项单击事件
    mniDelStudentById.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new DeleteStudentByIdFrame("");
        }
    });

    // 【按班级删除学生记录】菜单项单击事件
    mniDelStudentsByClass.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new DeleteStudentsByClassFrame("");
        }
    });

    // 【按系部删除学生记录】菜单项单击事件
    mniDelStudentsByDepartment.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new DeleteStudentsByDepartmentFrame("");
        }
    });

    // 【编辑学生记录】菜单项单击事件
    mniEditStudent.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new EditStudentFrame("");
        }
    });

    // 【浏览学生记录】菜单项单击事件
    mniBrowseStudent.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new BrowseStudentsFrame("");
        }
    });

    // 【帮助】菜单单击事件
    mniHelp.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                Runtime.getRuntime().exec("cmd /c start help/帮助文档.chm");
            } catch (IOException e1) {
                JOptionPane.showMessageDialog(null, e1.getMessage(), "学生信息管理系统", JOptionPane.ERROR_MESSAGE);
            }
        }
    });

    // 【关于】菜单单击事件
    mniAbout.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null,
                    "开发人员:" + status.getCollege() + "_" + status.getAuthor() + "\n联系电话:" + status.getTelephone()
                            + "\n电子邮箱:" + status.getEmail(),
                    "学生信息管理系统" + status.getVersion(), JOptionPane.INFORMATION_MESSAGE);
        }
    });

    // 工具栏按钮单击事件
    // 【设置学校信息】按钮
    btnSetCollege.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new SetCollegeInformationFrame("");
        }
    });

    // 【修改密码】按钮
    btnChangePassword.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new ChangePasswordFrame("");
        }
    });

    // 【浏览】按钮
    btnBrowseStudent.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new BrowseStudentsFrame("");
        }
    });

    // 【查询】按钮
    btnFindStudentById.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new FindStudentByIdFrame("");
        }
    });

    // 【统计】按钮
    btnCountByDepartment.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new CountStudentsByDepartmentFrame("");
        }
    });

    // 【退出】按钮
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            exitSystem();
        }
    });
}

/**
 * 退出系统(询问用户是否要退出)
 */
private void exitSystem() {
    int choice = JOptionPane.showConfirmDialog(this,
            "您是否要退出系统?", "学生信息管理系统", JOptionPane.YES_NO_OPTION);
    if (choice == JOptionPane.YES_OPTION) {
        System.exit(0);
    } else {
        // 卸载当前窗口
        dispose();
        // 重新显示主窗口
        Application.mainFrame = new MainFrame("学生信息管理系统" + status.getVersion());
    }
}

/**
 * 设置状态栏信息
 */
public void setStatusBar() {
    // 创建状态服务对象
    statusService = new StatusServiceImpl();
    // 获取状态栏对象
    status = statusService.findStatusById(1);
    // 设置状态栏标签
    lblStatusBar.setText(
            status.getCollege() + "学生信息管理系统" + status.getVersion() + "      作者:" + status.getAuthor() + "      地址:"
                    + status.getAddress() + "      电话:" + status.getTelephone() + "      邮箱:" + status.getEmail());
}

/**
 * 主方法
 *
 * @param args
 */
public static void main(String[] args) {
    Application.mainFrame = new MainFrame("");
}

}

ResisterFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.app.Application;
import net.yh.student.dbutil.bean.User;
import net.yh.student.dbutil.service.UserService;
import net.yh.student.dbutil.service.impl.UserServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.*;
import java.sql.Timestamp;
import java.util.Date;

public class RegisterFrame extends JFrame {

/**
 * 标签
 */
private JLabel lblUsername;
private JLabel lblPassword;
private JLabel lblTelephone;

/**
 * 文本框
 */
private JTextField txtUsername;
private JTextField txtTelephone;
private JPasswordField txtPassword;

/**
 * 按钮
 */
private JButton btnSubmit;
private JButton btnCancel;
private JButton btnLogin;

/**
 * 面板
 */
private JPanel panel;
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
private JPanel panel4;

private String username;
private String password;
private String telephone;
private Date registerTime;

/**
 * 学生管理应用程序
 */
private static Application app;

/**
 * 构造方法
 *
 * @param title
 */
public RegisterFrame(String title) {
    super(title);
    // 创建学生管理应用程序
    app = new Application();
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建对象
    lblUsername = new JLabel("用户名:");
    lblPassword = new JLabel("密    码:");
    lblTelephone = new JLabel("电   话:");
    txtUsername = new JTextField("", 15);
    txtPassword = new JPasswordField("", 15);
    txtTelephone = new JTextField("", 15);
    btnSubmit = new JButton("提交[S]");
    btnCancel = new JButton("取消[C]");
    btnLogin = new JButton("登录[L]");

    panel = (JPanel) getContentPane();
    panel1 = new JPanel();
    panel2 = new JPanel();
    panel3 = new JPanel();
    panel4 = new JPanel();

    // 添加组件
    panel.setLayout(new GridLayout(4, 1));
    panel.add(panel1);
    panel.add(panel2);
    panel.add(panel3);
    panel.add(panel4);

    panel1.add(lblUsername);
    panel1.add(txtUsername);
    panel2.add(lblPassword);
    panel2.add(txtPassword);
    panel3.add(lblTelephone);
    panel3.add(txtTelephone);
    panel4.add(btnSubmit);
    panel4.add(btnCancel);
    panel4.add(btnLogin);

    // 设置属性
    setSize(250, 200); // 设置窗口大小
    setLocationRelativeTo(null);// 让窗口居中
    setResizable(false); // 窗口不可调整大小
    pack(); // 使窗口恰好容纳组件
    setVisible(true); // 让窗口可见
    btnSubmit.setMnemonic(KeyEvent.VK_O); // 设置热键字母
    btnCancel.setMnemonic(KeyEvent.VK_C);// 设置热键字母
    btnLogin.setMnemonic(KeyEvent.VK_R);// 设置热键字母
    txtPassword.setEchoChar('*');// 设置回显字符

    /*
     * 注册监听器,编写事件处理代码 采用匿名内部类方式来实现
     */
    // 提交按钮单击事件
    btnSubmit.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            register();
        }
    });

    // 提交按钮按键事件
    btnSubmit.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                register();
            }
        }
    });

    // 取消按钮单击事件
    btnCancel.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // 显示登录窗口
            Application.loginFrame.setVisible(true);
            // 关闭当前窗口
            dispose();
        }
    });

    // 登录按钮按键事件
    btnLogin.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            // 显示登录窗口
            Application.loginFrame.setVisible(true);
            // 关闭当前窗口
            dispose();
        }
    });

    // 用户名文本框按键事件
    txtUsername.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtPassword.requestFocus();
            }
        }
    });

    // 密码文本框按键事件
    txtPassword.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                txtTelephone.requestFocus();
            }
        }
    });

    // 电话文本框按键事件
    txtTelephone.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                btnSubmit.requestFocus();
            }
        }
    });
}

/**
 * 注册方法
 */
private void register() {
    // 获取用户名
    username = txtUsername.getText().trim();
    // 获取密码
    password = new String(txtPassword.getPassword());
    // 获取电话
    telephone = txtTelephone.getText().trim();
    // 定义当前时间为注册时间
    registerTime = new Timestamp(System.currentTimeMillis());

    // 定义用户服务对象
    UserService userService = new UserServiceImpl();
    // 创建用户
    User user = new User();
    user.setUsernname(username);
    user.setPassword(password);
    user.setTelephone(telephone);
    user.setRegisterTime(registerTime);

    // 添加用户
    int count = userService.addUser(user);

    // 判断是否添加成功
    if (count > 0) {
        setVisible(false);
        JOptionPane.showMessageDialog(null, "恭喜!注册成功!", "学生信息管理系统", JOptionPane.INFORMATION_MESSAGE);
        setVisible(true);
    } else {
        JOptionPane.showMessageDialog(null, "遗憾!注册失败!", "学生信息管理系统", JOptionPane.INFORMATION_MESSAGE);
    }
}

}

SetCollegeInformationFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.bean.College;
import net.yh.student.dbutil.service.CollegeService;
import net.yh.student.dbutil.service.impl.CollegeServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.*;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class SetCollegeInformationFrame extends JFrame {
/**
* 面板
/
JPanel panel;
JPanel pnlNorth;
JPanel panel1;
JPanel panel2;
JPanel panel3;
JPanel panel4;
JPanel panel5;
JPanel pnlCenter;
JPanel pnlSouth;
/
*
* 标签
/
JLabel lblName;
JLabel lblPresident;
JLabel lblStartTime;
JLabel lblTelephone;
JLabel lblEmail;
JLabel lblAddress;
JLabel lblProfile;
/
*
* 按钮
/
JButton btnSave;
JButton btnExit;
/
*
* 文本框与文本区
/
JTextField txtName;
JTextField txtPresident;
JTextField txtStartTime;
JTextField txtTelephone;
JTextField txtEMail;
JTextField txtAddress;
JTextArea txtProfile;
/
*
* 滚动面板
/
JScrollPane scrollPane;
/
*
* 学校服务
*/
private CollegeService collegeService;
private College college;
private int id = 1;

/**
 * 构造方法
 *
 * @param title
 */
public SetCollegeInformationFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建组件(面板与控件)
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    panel1 = new JPanel();
    panel2 = new JPanel();
    panel3 = new JPanel();
    panel4 = new JPanel();
    panel5 = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();

    lblName = new JLabel("学校名称:");
    lblPresident = new JLabel("校         长:");
    lblStartTime = new JLabel("建校时间:");
    lblTelephone = new JLabel("联系电话:");
    lblEmail = new JLabel("电子邮箱:");
    lblAddress = new JLabel("通讯地址:");
    lblProfile = new JLabel("学校简介:");

    txtName = new JTextField(30);
    txtPresident = new JTextField(11);
    txtStartTime = new JTextField(12);
    txtTelephone = new JTextField(11);
    txtEMail = new JTextField(12);
    txtAddress = new JTextField(30);
    txtProfile = new JTextArea(5, 37);
    txtProfile.setLineWrap(true);// 让文本区自动换行
    scrollPane = new JScrollPane(txtProfile, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    btnSave = new JButton("保存[S]");
    btnSave.setMnemonic(KeyEvent.VK_S);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 设置大面板布局,将北面板、中面板与南面板添加到大面板
    panel.setLayout(new BorderLayout());
    panel.add(pnlNorth, "North");
    panel.add(pnlCenter, "Center");
    panel.add(pnlSouth, "South");

    // 设置北面板布局,添加五个小面板
    pnlNorth.setLayout(new GridLayout(5, 1));
    pnlNorth.add(panel1);
    pnlNorth.add(panel2);
    pnlNorth.add(panel3);
    pnlNorth.add(panel4);
    pnlNorth.add(panel5);

    // 将控件依次添加到五个小面板
    panel1.add(lblName);
    panel1.add(txtName);
    panel2.add(lblPresident);
    panel2.add(txtPresident);
    panel2.add(lblStartTime);
    panel2.add(txtStartTime);
    panel3.add(lblTelephone);
    panel3.add(txtTelephone);
    panel3.add(lblEmail);
    panel3.add(txtEMail);
    panel4.add(lblAddress);
    panel4.add(txtAddress);
    panel5.add(lblProfile);

    // 将滚动面板添加到中面板
    pnlCenter.add(scrollPane);

    // 将两个按钮添加到南面板
    pnlSouth.add(btnSave);
    pnlSouth.add(btnExit);

    // 创建学校服务对象
    collegeService = new CollegeServiceImpl();
    // 获取学校对象
    college = collegeService.findCollegeById(id);
    // 利用学校对象属性值设置相应控件的内容
    txtName.setText(college.getName());
    txtPresident.setText(college.getPresident());
    txtStartTime.setText(college.getStartTime().toString());
    txtTelephone.setText(college.getTelephone());
    txtEMail.setText(college.getEmail());
    txtAddress.setText(college.getAddress());
    txtProfile.setText(college.getProfile());

    // 设置窗口大小
    setSize(550, 450);
    // 设置窗口屏幕居中
    setLocationRelativeTo(null);
    // 设置窗口不可调整大小
    setResizable(false);
    // 设置窗口刚好容纳组件
    pack();
    // 设置窗口标题
    setTitle("设置学校信息");
    // 设置窗口可见
    setVisible(true);
    // 设置窗口默认关闭操作
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 【关闭】按钮单击事件处理
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 关闭窗口
            dispose();
        }
    });

    // 【保存】按钮单击事件处理
    btnSave.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            try {
                // 修改学校对象属性
                college.setName(txtName.getText());
                college.setPresident(txtPresident.getText());
                college.setStartTime(new Timestamp(
                        new SimpleDateFormat("yyyy-MM-dd")
                                .parse(txtStartTime.getText().toString()).getTime()));
                college.setTelephone(txtTelephone.getText());
                college.setEmail(txtEMail.getText());
                college.setAddress(txtAddress.getText());
                college.setProfile(txtProfile.getText());
                // 更新学校信息
                collegeService.updateCollege(college);
                // 提示用户更新成功
                JOptionPane.showMessageDialog(null, "更新数据成功!");
            } catch (ParseException e) {
                // 提示用户更新失败
                JOptionPane.showMessageDialog(null, "更新数据失败!");
            }
        }
    });
}

/**
 * 主方法
 *
 * @param args
 */
public static void main(String[] args) {
    new SetCollegeInformationFrame("");
}

}

在这里插入图片描述

SetStatuBarFrame

package net.yh.student.dbutil.gui;

import net.yh.student.dbutil.app.Application;
import net.yh.student.dbutil.bean.Status;
import net.yh.student.dbutil.service.StatusService;
import net.yh.student.dbutil.service.impl.StatusServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
public class SetStatusBarFrame extends JFrame {
/**
* 面板
/
private JPanel panel;
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
private JPanel panel4;
private JPanel panel5;
/
*
* 标签
/
private JLabel lblCollege;
private JLabel lblVersion;
private JLabel lblAuthor;
private JLabel lblTelephone;
private JLabel lblAddress;
private JLabel lblEmail;
/
*
* 文本框
/
private JTextField txtCollege;
private JTextField txtVersion;
private JTextField txtAuthor;
private JTextField txtTelephone;
private JTextField txtAddress;
private JTextField txtEmail;
/
*
* 按钮
/
private JButton btnSave;
private JButton btnExit;
/
*
* 状态服务对象
*/
private StatusService statusService;

/**
 * 构造方法
 *
 * @param title
 */
public SetStatusBarFrame(String title) {
    super(title);
    initGUI();
}

/**
 * 初始化用户界面
 */
private void initGUI() {
    // 创建组件
    panel = (JPanel) getContentPane();
    panel1 = new JPanel();
    panel2 = new JPanel();
    panel3 = new JPanel();
    panel4 = new JPanel();
    panel5 = new JPanel();

    lblCollege = new JLabel("校名:");
    lblVersion = new JLabel("版本:");
    lblAuthor = new JLabel("作者:");
    lblTelephone = new JLabel("电话:");
    lblAddress = new JLabel("地址:");
    lblEmail = new JLabel("邮件:");

    txtCollege = new JTextField(12);
    txtVersion = new JTextField(12);
    txtAuthor = new JTextField(12);
    txtTelephone = new JTextField(12);
    txtAddress = new JTextField(29);
    txtEmail = new JTextField(29);

    btnSave = new JButton("保存[S]");
    btnSave.setMnemonic(KeyEvent.VK_S);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.setLayout(new GridLayout(5, 1));
    panel.add(panel1);
    panel.add(panel2);
    panel.add(panel3);
    panel.add(panel4);
    panel.add(panel5);

    panel1.add(lblCollege);
    panel1.add(txtCollege);
    panel1.add(lblVersion);
    panel1.add(txtVersion);

    panel2.add(lblAuthor);
    panel2.add(txtAuthor);
    panel2.add(lblTelephone);
    panel2.add(txtTelephone);

    panel3.add(lblAddress);
    panel3.add(txtAddress);
    panel4.add(lblEmail);
    panel4.add(txtEmail);

    panel5.add(btnSave);
    panel5.add(btnExit);

    // 创建状态服务对象
    statusService = new StatusServiceImpl();
    // 按标识符获取状态对象
    Status status = statusService.findStatusById(1);
    if (status != null) {
        txtCollege.setText(status.getCollege());
        txtVersion.setText(status.getVersion());
        txtAuthor.setText(status.getAuthor());
        txtAddress.setText(status.getAuthor());
        txtTelephone.setText(status.getTelephone());
        txtAddress.setText(status.getAddress());
        txtEmail.setText(status.getEmail());
    }

    // 设置窗口属性
    setResizable(false);
    pack();
    setLocationRelativeTo(null);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 【关闭】按钮事件处理
    btnExit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            dispose();
        }
    });

    // 【保存】按钮事件处理
    btnSave.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 获取状态信息对象
            Status status = statusService.findStatusById(1);
            // 修改属性值
            status.setCollege(txtCollege.getText());
            status.setVersion(txtVersion.getText());
            status.setAuthor(txtAuthor.getText());
            status.setTelephone(txtTelephone.getText());
            status.setAddress(txtAddress.getText());
            status.setEmail(txtEmail.getText());
            // 更新状态记录
            int count = statusService.updateStatus(status);
            // 判断是否更新成功
            if (count > 0) {
                Application.mainFrame.setStatusBar();
                Application.mainFrame.setTitle("学生信息管理系统" + status.getVersion());
            }
        }
    });
}

}

测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、本课题的目的和意义 目前我国的信息数字化工作也进入一个全新发展时期,特别是高校的信息化建设已进入了全面的发展阶段,诸多高校充分地认识到,信息化建设己经成为了高校提高自身管理水平、提升综合竞争实力的重要手段。学校作为一个教育单位,学生实习信息管理是学校日常管理不可缺少的部分,这就需要有一个能够提供这类服务的工具,因此学生实习信息管理系统的开发就成为了必然。现在我国的大部分学校的实习信息管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。同时,因特网的出现和发展,使信息交流进入到一个崭新的历史时期,它打破了时空的障碍,使生活在不同国度的人们可共享网络信息资源,进而极大地促进全球经济的发展。 随着学生人数的增加,对于学生的实习信息管理也越来越复杂,要求也越来越高,因此需要一个全面、详细的学生实习信息管理系统,以便完成对学生实习信息的管理。 学生实习信息管理系统,可以用集中的数据库将与人力资源管理相关的信息全面、有机地联系起来,有效地减少了信息更新和查找中的重复劳动,保证了信息的相容性,从而大大地提高了工作效率,还能使原来不可能提供的分析报告成了可能。在采用和实施学生实习信息管理系统之后,就会将依赖于人的过程改为依赖于计算机系统的过程。学校管理人员和学生本人只要获取了相应的权限,就可以随时进入系统,直接查阅相应的信息。 采用和实施学生实习信息管理系统不仅仅是为了提高工作效率。同时在使用实习信息管理系统后,学校相关领导可以较为全面、准确的了解到同学们的综合信息,然后方便更具各种信息对学校的管理做出各种决策。 二、课题的国内外开发动态 人类已进入21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的迅速发展和广泛应用,对社会的政治、经济、军事、文化等领域产生越来越深刻的影响,也正在改变人们的工作、生活学习、交流方式。信息的获取、处理、交流和应用能力,已经成为人们最重要的能力之一。在不久的将来知识经济将占世界经济发展的主导地位,国家综合国力和国际竞争能力越来越取决于教育发展,科学技术和知识创新的水平,教育在经济和社会的发展过程中将呈现出越来越突出的重要作用。学生实习信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生实习信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。 三、课题的基本内容 学生实习信息管理系统作为一款教学管理工作的系统,它将复杂的工作便捷化、高效化。本系统按功能分为以下几个模块: (1)管理员模块:管理员负责具体信息系统日常管理和维护,具有信息系统的最高管理权限。 (2)老师模块:老师可以查询本人以及学生的信息。 (3)毕业实习模块:毕业生是本科学校大四的学生,应学校要求选择相关实习单位。 四、拟解决的主要问题 本系统开发的技术难点主要有两个方面:一是业务逻辑的理解;二是数据库逻辑结构的设计。只要在准确理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确理解实际应用中的业务逻辑需求的前提下完成的。 此外、利用SQL 2005建立好关系数据库和建好客户端和服务器之间的连接又是另一个难点。建立良好的数据库要从科学性、安全性、规范性、结构性等各个方面进行考虑。客户端和服务器之间的连接要配置好数据库服务器等。 五、课题设计的实现方案 (1)本系统开发语言的选择 本系统使用的开发语言是c#语言,C#语言是一种优秀的面向对像程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C#以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C#完美地体现了面向对象的各种特性。正是因为c#语言有如此多的优点,因此在开发本系统时我把它作为本系统的开发语言。 (2)本系统开发工具的选择 本系统前台使用的开发工具是Microsoft Visual C#。Microsoft Visual C#是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。正是因为Microsoft Visual C#有如此多的有点,因此在开发本系统时我把它作为本系统前台的开发工具。 本系统创建、管理数据库使用的工具是SQL Server 2005。SQL Server 2005 是Microsoft公司推出的SQL Server 数据库管理系统的一个版本。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2005 的大型多处理器的服务器等多种平台使用。 六、研究方法 该毕业设计采用的研究方法主要有文献法和调查法。该毕业设计具体功能的获取过程主要使用文献法和走访调查法,通过网络调查和查阅网络资料来具体确定该软件的功能需求细节;在软件开发过程中,解决技术问题使用的方法是文献法,通过查阅课本、图书馆资料和网络在线文献等,解决在软件开发过程中的技术问题,比如数据库、建模工具的使用、软件测试等。 七、选题的特色及创新点 选题的特色:本毕业设计的开题经过走访调查和文献查阅等多种方式,基本可以与现实的需求相一致,并能体现用所学的知识和计算机技术解决实际问题。 选题的创新点:该选题采用的均是计算机成熟的技术,在计算机技术方面并没有体现创新点,但是通过完成该毕业设计,可以使得自己对计算机软件开发由更深的认识,积极培养自己的创新意识。 八、已查阅的相关文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值