JAVA实训项目第一次日志

JAVA实训项目:GUI学生信息管理系统
实训目的:让学生综合运用J2SE有关知识开发【学生信息管理系统】。主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。通过本项目的开发,让学生了解系统开发的一般流程,初步了解MVC模式与单元测试,巩固所学的Java理论知识,提高Java数据库应用编程的基本技能。
项目说明:本实训案例教学,利用Java SE基本知识是开发【学生信息管理系统】。本系统包括登录注册、系统设置(设置学校信息、设置状态栏信息、修改用户密码)、数据操作(增加学生记录、编辑学生记录、删除学生记录、浏览学生记录)、查询学生(按学号查询、按姓名查询、按班级查询、按系部查询)、人数统计(按性别统计人数、按班级统计人数、按系部统计人数)等功能。

2019.6.17
一、功能需求
1、可设置学校信息
2、可设置状态栏信息
3、登录与注册功能
4、登录用户修改密码功能
5、对学生记录增加和修改
6、查询:按学号、姓名、班级和系部进行查询
7、删除:按学号、班级、系部删除记录
8、统计:按性别、班级、系部统计人数
二、功能结构图
为满足以上需求,我们用百度脑图做了如下的结构图:
JAVA实训项目第一次日志_第1张图片
三、导入学生表数据库,使数据库里面包含四张表(t_college,t_user,t_student,t_status)
如下表所示:
t_college:JAVA实训项目第一次日志_第2张图片
t_status:
JAVA实训项目第一次日志_第3张图片
t_student:
JAVA实训项目第一次日志_第4张图片
t_user:
JAVA实训项目第一次日志_第5张图片
四、
1、在IntelliJ IDEA里面创建新的Project 学生信息管理系统
如下:JAVA实训项目第一次日志_第6张图片2.然后在project里面创建三个包(help:帮助包, images:存放图片 ,lib:放jar包):
如下:JAVA实训项目第一次日志_第7张图片
3.然后在src文件包里面创建自己名字缩写的包:
JAVA实训项目第一次日志_第8张图片
4.在里面创建bean包,用来存储四个实体类(college,status,student,user):JAVA实训项目第一次日志_第9张图片
1)、College实体类代码:
JAVA实训项目第一次日志_第10张图片
JAVA实训项目第一次日志_第11张图片
JAVA实训项目第一次日志_第12张图片2)、Status实体类:
JAVA实训项目第一次日志_第13张图片
JAVA实训项目第一次日志_第14张图片
3)、Student实体类:
JAVA实训项目第一次日志_第15张图片
JAVA实训项目第一次日志_第16张图片
4)、User实体类:
JAVA实训项目第一次日志_第17张图片
JAVA实训项目第一次日志_第18张图片
5.创建dbutil,用来连接数据库:JAVA实训项目第一次日志_第19张图片代码如下:
JAVA实训项目第一次日志_第20张图片
JAVA实训项目第一次日志_第21张图片
JAVA实训项目第一次日志_第22张图片
6、创建dao包,用于存4个接口
JAVA实训项目第一次日志_第23张图片
学校数据访问接口:
JAVA实训项目第一次日志_第24张图片
状态数据访问接口:
JAVA实训项目第一次日志_第25张图片
学生数据访问接口:
JAVA实训项目第一次日志_第26张图片
用户数据访问接口:
JAVA实训项目第一次日志_第27张图片
7. 在dao包里面创建 Impl包,用来实现接口类
学校数据访问接口实现类:
JAVA实训项目第一次日志_第28张图片
JAVA实训项目第一次日志_第29张图片
JAVA实训项目第一次日志_第30张图片
状态数据访问接口实现类:
JAVA实训项目第一次日志_第31张图片
JAVA实训项目第一次日志_第32张图片
JAVA实训项目第一次日志_第33张图片
学生数据访问接口实现类:
package net.qf.student.dao.impl;

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

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

public class StudentDaoImpl implements StudentDao {
@Override
public int deleteByClass(String clazz) {
// 定义删除记录数
int count = 0;

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "DELETE FROM t_student WHERE class = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, clazz);
        // 执行更新操作,删除记录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

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

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

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "DELETE FROM t_student WHERE department = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, department);
        // 执行更新操作,删除记录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

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

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

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "DELETE FROM t_student WHERE id = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, id);
        // 执行更新操作,删除记录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

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

@Override
public List findAll() {
    // 声明用户列表
    List students = new ArrayList<>();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT * FROM t_student";
    try {
        // 创建语句对象
        Statement stmt = conn.createStatement();
        // 执行SQL,返回结果集
        ResultSet rs = stmt.executeQuery(strSQL);
        // 遍历结果集
        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);
        }
        // 关闭结果集
        rs.close();
        // 关闭语句对象
        stmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }
    // 返回学生列表
    return students;
}

/**
 * 按班级查询学生
 */
@Override
public List findByClass(String clazz) {
    // 声明用户列表
    List students = new ArrayList();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT * FROM t_student WHERE class LIKE ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, clazz + "%");
        // 执行SQL,返回结果集
        ResultSet rs = pstmt.executeQuery();
        // 遍历结果集
        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);
        }
        // 关闭结果集
        rs.close();
        // 关闭语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }
    // 返回学生列表
    return students;
}

/**
 * 按系部查询学生
 */
@Override
public List findByDepartment(String department) {
    // 声明用户列表
    List students = new ArrayList();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT * FROM t_student WHERE department LIKE ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, department + "%");
        // 执行SQL,返回结果集
        ResultSet rs = pstmt.executeQuery();
        // 遍历结果集
        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);
        }
        // 关闭结果集
        rs.close();
        // 关闭语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }
    // 返回学生列表
    return students;
}

@Override
public Student findById(String id) {
    // 声明学生
    Student student = null;

    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT * FROM t_student WHERE id = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, id);
        // 执行SQL查询,返回结果集
        ResultSet rs = pstmt.executeQuery();
        // 判断结果集是否有记录
        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;
}

@Override
public List findByName(String name) {
    // 声明用户列表
    List students = new ArrayList();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT * FROM t_student WHERE name LIKE ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, name + "%");
        // 执行SQL,返回结果集
        ResultSet rs = pstmt.executeQuery();
        // 遍历结果集
        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);
        }
        // 关闭结果集
        rs.close();
        // 关闭语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }
    // 返回学生列表
    return students;
}

@Override
public Vector findRowsByClass() {
    // 定义向量
    Vector rows = new Vector();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT class AS '班级', count(*) AS '人数'"
            + " FROM t_student GROUP BY class ORDER BY class DESC";
    try {
        // 创建语句对象
        Statement stmt = conn.createStatement();
        // 执行SQL,返回结果集
        ResultSet rs = stmt.executeQuery(strSQL);
        // 遍历结果集
        while (rs.next()) {
            Vector currentRow = new Vector();
            currentRow.addElement(rs.getString("班级"));
            currentRow.addElement(rs.getInt("人数") + "");
            rows.addElement(currentRow);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return rows;
}

@Override
public Vector findRowsByDepartment() {
    // 定义向量
    Vector rows = new Vector();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT department AS '系部', count(*) AS '人数'"
            + " FROM t_student GROUP BY department ORDER BY department DESC";
    try {
        // 创建语句对象
        Statement stmt = conn.createStatement();
        // 执行SQL,返回结果集
        ResultSet rs = stmt.executeQuery(strSQL);
        // 遍历结果集
        while (rs.next()) {
            Vector currentRow = new Vector();
            currentRow.addElement(rs.getString("系部"));
            currentRow.addElement(rs.getInt("人数") + "");
            rows.addElement(currentRow);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return rows;
}

@Override
public Vector findRowsBySex() {
    // 定义向量
    Vector rows = new Vector();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT sex AS '性别', count(*) AS '人数'"
            + " FROM t_student GROUP BY sex ORDER BY sex DESC";
    try {
        // 创建语句对象
        Statement stmt = conn.createStatement();
        // 执行SQL,返回结果集
        ResultSet rs = stmt.executeQuery(strSQL);
        // 遍历结果集
        while (rs.next()) {
            Vector currentRow = new Vector();
            currentRow.addElement(rs.getString("性别"));
            currentRow.addElement(rs.getInt("人数") + "");
            rows.addElement(currentRow);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return rows;
}

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

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "INSERT INTO t_student (id, name, sex, age, department, class, telephone)"
            + " VALUES (?, ?, ?, ?, ?, ?, ?)";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        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());
        // 执行更新操作,插入新记录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

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

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

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "UPDATE t_student SET name = ?, sex = ?, age = ?,"
            + " department = ?, class = ?, telephone = ? WHERE id = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        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());
        // 执行更新操作,更新记录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        System.err.println(e.getMessage());
    } finally {
        ConnectionManager.closeConnection(conn);
    }

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

}

用户数据访问接口实现类:
JAVA实训项目第一次日志_第34张图片
JAVA实训项目第一次日志_第35张图片
JAVA实训项目第一次日志_第36张图片
JAVA实训项目第一次日志_第37张图片
JAVA实训项目第一次日志_第38张图片
以上就是今天一天的实训内容,虽然都是平常上课讲过的知识,但是如果让自己单独完成肯定是不行的,所以今天还是对以前的知识进行了复习和巩固,往后继续加油吧!

你可能感兴趣的:(JAVA实训项目第一次日志)