学生管理系统--java+mysql

这篇具有很好参考价值的文章主要介绍了学生管理系统--java+mysql。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学生管理系统

简介

练习:完成学生信息的增删查改(根据id),项目进行了三层架构进行创建。
学生管理系统mysql,数据库,java,idea,后端
pojo层,dao层,service层,utils层,程序入口;

1.pojo层

实体层 数据库在项目中的类
Entity层是实体层,也就是所谓的model,也称为pojo层,是数据库在项目中的类,该文件包含实体类的属性和对应属性的set、get方法;
pojo内的student类,主要是与数据库中相应的表进行对应,字段类型需一一对应。

package student.pojo;
/**
 * @description: TODO
 * @date 2023/7/15 9:14
 */
public class Student {
    private int id;
    private String name;
    private String className;
    private String score;

    public Student() {
    }

    public Student(int id, String name, String className, String score) {
        this.id = id;
        this.name = name;
        this.className = className;
        this.score = score;
    }

    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 getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getScore() {
        return score;
    }

    public void setScore(String score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return
                "学号:" + id +"\t" +
                " 姓名:" + name + '\t' +
                "班级:" + className + '\t' +
                "成绩:" + score + '\t' ;
    }
}

2.dao层

持久层 主要与数据库进行交互
DAO层=mapper层,现在用Mybatis逆向工程生成的mapper层,其实就是dao层。DAO层会调用entity层,DAO中会定义实际使用到的方法,比如增删改查。DAO 层的数据源和数据库连接的参数都是在配置文件中进行配置的,配置文件一般在同层的XML文件夹中。数据持久化操作就是指,把数据放到持久化的介质中,同时提供增删改查操作。

package student.dao;

import student.pojo.Student;

public interface StudentDao {
    /**
     *  根据id查询信息
     * @param id
     */
    Student findById(int id);

    /**
     * 新增学生信息
     * @param student
     * @return
     */
    void addStudent(Student student);

    /**
     * 根据id删除信息
     * @param id
     */
    void deleteStudent(int id);

    /**
     * 更新学生信息
     * @param student
     */
    void updateStudent(Student student);
}

实现类impl
dao接口中方法的具体实现

package student.dao.imp;

import student.dao.StudentDao;
import student.pojo.Student;
import student.utils.OperationUtils;

/**
 * @description: TODO
 * @date 2023/7/15 10:33
 */
public class StudentDaoImp implements StudentDao {
    @Override
    public Student findById(int id) {
        Student student = OperationUtils.findById(id);
        return student;
    }

    @Override
    public void addStudent(Student student) {
        OperationUtils.addStudent(student);
    }

    @Override
    public void deleteStudent(int id) {
        OperationUtils.deleteStudent(id);
    }

    @Override
    public void updateStudent(Student student) {
        OperationUtils.updateStudent(student);
    }
}

3.service层

业务层 控制业务
Service层主要负责业务模块的逻辑应用设计。先设计放接口的类,再创建实现的类,然后在配置文件中进行配置其实现的关联。service层调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计。
封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。

public interface StudentService {

    Student findById(int id);
    void addStudent(Student student);
    void deleteStudent(int id);
    void updateStudent(Student student);

}
package student.service.imp;

import student.dao.StudentDao;
import student.dao.imp.StudentDaoImp;
import student.pojo.Student;
import student.service.StudentService;

/**
 * @description: TODO
 * @date 2023/7/15 10:44
 */
public class StudentServiceImp implements StudentService {
    StudentDao studentDaoImp = new StudentDaoImp();
    @Override
    public Student findById(int id) {
        Student student = studentDaoImp.findById(id);
        return student;
    }

    @Override
    public void addStudent(Student student) {
        studentDaoImp.addStudent(student);
    }

    @Override
    public void deleteStudent(int id) {
        studentDaoImp.deleteStudent(id);
    }

    @Override
    public void updateStudent(Student student) {
        studentDaoImp.updateStudent(student);
    }
}

4.utils工具类

完成数据库连接,具体的增删查改方法等,提高代码的复用率。

4.1数据库连接工具

这里使用jbdc,properties进行数据库连接(具体jdbc知识之前的博客有)

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/student_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
username = root
password = 123456

这里将关闭和连接分成两个方法,方便调用释放资源

package student.utils;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
 * @description: TODO
 * @date 2023/7/14 20:07
 */
public class JdbcUtils {
    private static String url;
    private static String driver;
    private static String username;
    private static String password;

    static {
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("src\\db.properties"));
             url = properties.getProperty("url");
             driver = properties.getProperty("driver");
             username = properties.getProperty("username");
             password = properties.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 建立数据库连接
     * @return
     */
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(url,username,password);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 关闭数据库连接,释放资源
     */
    public static void close(Statement statement, ResultSet resultSet,Connection connection){
        try {
            if (statement != null){
                statement.close();
            }
            if (resultSet != null){
                resultSet.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

4.2 OperationUtils具体的增删查改方法

package student.utils;

import student.pojo.Student;

import java.sql.*;

/**
 * @description: TODO
 * @date 2023/7/15 9:13
 * 数据库的增删查改
 */
public class OperationUtils {
    private Student student = new Student();

    /**
     * 查询
     * @param id
     * @return 根据id查找学生信息
     */
    public static Student findById(int id){
        Student student = null;
        try {
            Connection connection = JdbcUtils.getConnection();
            String sql = "select * from student where id = ?";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setInt(1, id);
            ResultSet resultSet = statement.executeQuery();
            while (resultSet.next()) {
                id = resultSet.getInt(1);
                String name = resultSet.getString(2);
                String classname = resultSet.getString(3);
                String score = resultSet.getString(4);

                 student = new Student(id, name, classname, score);

                 //JdbcUtils.close(statement,resultSet,connection);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
       return student;
    }

    /**
     * 添加信息
     * @return
     */
    public static void addStudent(Student student){

        Connection connection = JdbcUtils.getConnection();
        String sql = "insert into student values(?,?,?,?)";
        try {
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setInt(1, student.getId());
            statement.setString(2, student.getName());
            statement.setString(3, student.getClassName());
            statement.setString(4, student.getScore());

           int i = statement.executeUpdate();
             if (i>0){
                 System.out.println("数据添加成功!");
             }
             JdbcUtils.close(statement,null,connection);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * 根据id删除学生信息
     * @param id
     */
    public static void deleteStudent(int id){
        Connection connection = JdbcUtils.getConnection();
        String sql = "delete from student where id = ?";
        try {
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setInt(1,id);
            int i = statement.executeUpdate();
            if (i>0){
                System.out.println("删除成功!");
            }else {
                System.out.println("删除失败");
            }
            JdbcUtils.close(statement, null, connection);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * 更新
     * @param student
     */
    public static void updateStudent(Student student){
        Connection connection = JdbcUtils.getConnection();
        String sql = "update student set name = ?,className = ?,score =? where id = ?";
        try {
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, student.getName());
            statement.setString(2, student.getClassName());
            statement.setString(3, student.getScore());
            statement.setInt(4,student.getId());

            int i = statement.executeUpdate();
            if (i>0) {
                System.out.println("更新成功");
            }
            JdbcUtils.close(statement,null,connection);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

4.3 Menu主菜单

switch语句进行选择

package student.utils;

import student.dao.StudentDao;
import student.dao.imp.*;
import student.pojo.Student;

import java.util.Scanner;

/**
 * @description: TODO
 * @date 2023/7/15 10:49
 */
@SuppressWarnings("all")
public class Menu {
    private static Scanner scanner = new Scanner(System.in);
    public static void menuStudent() {
        while (true) {
            OperationMenu.start();
            int i = scanner.nextInt();
        switch (i) {
            case 1:
                OperationMenu.find();
                break;
            case 2:
              OperationMenu.update();
                break;
            case 3:
                OperationMenu.add();
                break;
            case 4:
               OperationMenu.delete();
                break;
            case 5:
                System.exit(0);
       		 }
    	}
	}
}

4.4 OperationMenu每一个case里的具体操作

package student.utils;

import student.dao.StudentDao;
import student.dao.imp.StudentDaoImp;
import student.pojo.Student;
import student.service.StudentService;
import student.service.imp.StudentServiceImp;

import java.util.Scanner;

/**
 * @description: TODO
 * @date 2023/7/15 14:28
 */
public class OperationMenu {
   private static StudentDao studentDaoImp = new StudentDaoImp();
   private static StudentService studentService = new StudentServiceImp();
   private static Scanner scanner = new Scanner(System.in);
    public static void find(){
        System.out.print("输入要查询学生的学号:");
        int id = scanner.nextInt();
        Student student = studentService.findById(id);
        System.out.println(student);
    }

    public static void  update() {
        System.out.println("请输入要修改的信息");
        System.out.println("请输入要修改学生的学号:");
        int updateid = scanner.nextInt();
        System.out.println("请输入修改后的姓名:");
        String name = scanner.next();
        System.out.println("请输入修改后的班级:");
        String classname = scanner.next();
        System.out.println("请输入要修改的成绩:");
        String score = scanner.next();
        Student student = new Student();
        student.setId(updateid);
        student.setName(name);
        student.setScore(score);
        student.setClassName(classname);
        studentService.updateStudent(student);
    }

    public static void add(){
        System.out.println("请输入要增加的学生信息:");
        System.out.println("输入学生学号:");
        int addid = scanner.nextInt();
        System.out.println("输入学生姓名:");
        String addname = scanner.next();
        System.out.println("输入学生班级:");
        String addclass = scanner.next();
        System.out.println("输入学生成绩:");
        String addscore = scanner.next();
        Student newstudent = new Student(addid,addname,addclass,addscore);
        studentService.addStudent(newstudent);
    }
    public static void delete(){
        System.out.println("请输入要删除的学生学号");
        int delid = scanner.nextInt();
        studentService.deleteStudent(delid);

    }
    public static void start(){
        System.out.println("=============欢迎登录学生管理系统=============");
        System.out.println("1.查询学生信息");
        System.out.println("2.修改学生信息");
        System.out.println("3.增加学生信息");
        System.out.println("4.删除学生信息");
        System.out.println("5.退出");
        System.out.println("选择功能:");

    }
}

4.5 AppMain程序入口

public class AppMain {
    public static void main(String[] args) {
        Menu.menuStudent();
    }
}

5.实现效果

学生管理系统mysql,数据库,java,idea,后端文章来源地址https://www.toymoban.com/news/detail-598742.html

到了这里,关于学生管理系统--java+mysql的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生信息管理系统的数据库设计MySQL

    1.课程设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷

    2024年02月05日
    浏览(54)
  • 数据库实战:基于Tkinter+MySQL的学生成绩管理系统

    用Python和数据库一起实现了一个简单的学生成绩管理系统,一起来看看吧! 本篇博客主要分为两大部分,数据库部分和Python程序设计部分,先将数据导入到数据库中,随后通过python程序设计连接到数据库,实现一系列的操作。 代码下载地址:https://download.csdn.net/download/m0_68

    2024年02月03日
    浏览(60)
  • JAVA学生信息管理系统(数据库实现)

    这次的项目是用数据库实现学生的信息管理系统,有三步组成,写项目链接数据库实现相关的操作 开发工具: eclipse、MySQL、navicat、mysql-connector-java-8.0.27     (1)主页面   (2)添加界面   (3)删除界面    (4)修改界面  (5)查找界面 (6)数据库链接   添加Java驱动包

    2024年02月11日
    浏览(46)
  • 【MySQL数据库原理】在MySQL Workbench界面运行SQL代码——学生管理系统

    在 MySQL Workbench 8.0 中,你可以使用以下步骤新建内容并运行 MySQL 语言代码: 1、打开 MySQL Workbench 并连接到你的 MySQL 数据库服务器。 2、在左侧的导航栏中,展开你的连接以查看数据库。选择你要在其中运行 SQL 代码的数据库。 3、在顶部菜单栏中,点击 “Query”(查询)选项

    2024年02月03日
    浏览(58)
  • java课程设计(学生信息管理系统设计)+数据库

    🔍 🔎 本期带领大家一起来学习 java课程设计(学生信息管理系统设计)+数据库 的实现思路 🔍 🔎 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作 2、学生信息录入功能

    2024年02月08日
    浏览(59)
  • python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~

    1、系统说明 python 编写的学生信息管理系统+MySQL数据库,实现了增删改查的基本功能。 2、数据库说明 本人使用的是 MySQL8.0 版本 数据库端口号为:3306 数据库用户名是:root 数据库名称是:practice 建立的表是:students 3、系统功能 增加学生信息 删除学生信息 修改学生信息 查

    2024年02月11日
    浏览(54)
  • 学生信息管理系统 Java+SQL Server 数据库原理课程

    该项目实现了图形化界面的数据库的登录,以及对数据库中表的增删查改。 正好老师布置了相关作业,通过Java 连接 SQL Server 数据库,就写一个学生管理系统。 jdk8 数据库连接通过sqljdbc6.0 图形化界面用swing 目录 1、Java 连接SQL Server数据库 2、准备数据库 3、登录界面 要求:

    2024年02月09日
    浏览(69)
  • Java连接数据库(学生管理系统案例,可以实现增删改查)

    首先,需要做一个准备工作 ——下载jar包,这个包是用来支持数据库的连接的 官网的下载链接:MySQL :: Download Connector/J 点击链接进入页面: 选择画红框的下载按钮。 与此同时,打开IDEA开发工具,在当前项目目录下新建一个lib目录文件夹用来存放第三方jar包,这样做方便管

    2024年02月07日
    浏览(55)
  • 【JAVA】MySQL数据库信息管理系统

    目录 前言 一、环境搭建 二、功能实现 1.商品信息类的创建 2.商品信息的查询 3.商品信息的添加 4.商品信息的修改 5.商品信息的删除 三、主类的调用 1.加载配置文件并获取数据库连接 2.界面的搭建 3.功能的选择 总结 JAVA实现的MySQL数据库信息管理系统 包含数据库的增删改查功

    2024年02月09日
    浏览(76)
  • java 银行管理系统(连接数据库Mysql)

    程序共有三个文件 Bankmangement.java:包括程序运行的主函数,方法等 User.java:实体类,用于创建对象 JDBCUtils:对数据库方法进行封装 1.User实体类 数据库共有三张表,分别是admin管理员帐号,user用户账号,record用户记录。 2.Bankmangement功能图 Bankmangement User JDBCUtils

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包