学生管理系统模块化编程

news2024/9/24 7:49:20

项目介绍:Java基础+mysql的一个简单练习

一.数据库

二.项目结构 

 

 lib下的jar包下载地址:Maven Repository: mysql » mysql-connector-java (mvnrepository.com)

1.db.properties 

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/student?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
user=root
password=123456

2.Student类

package pojo;

public class Student {
    private int id;
    private String name;
    private int score;

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

    public Student() {
    }

    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 int getScore() {
        return score;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
}

3.JDBCUtil工具类

package util;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import pojo.Student;

import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;

public class JDBCUtil {

    private static String driver;
    private static String url;
    private static String user;
    private static String password;
    private static Connection connection = null;

    static {
        Properties properties = new Properties();

        InputStream inputStream = JDBCUtil.class.getClassLoader().getResourceAsStream("resources/db.properties");

        try {
            properties.load(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        driver = properties.getProperty("driver");
        url = properties.getProperty("url");
        user = properties.getProperty("user");
        password = properties.getProperty("password");

        try {
            Class.forName(driver);
            connection = (Connection) DriverManager.getConnection(url,user,password);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    // 编写公共查询类
    public static ArrayList<Student> executeQuery(String sql) {
        ResultSet resultSet = null;
        Statement statement = null;
        ArrayList<Student> arrayList = null;
        try {
            statement = (Statement) connection.createStatement();
             resultSet = statement.executeQuery(sql);
             arrayList = new ArrayList<>();
             while (resultSet.next()) {
                 arrayList.add(new Student(resultSet.getInt(1),
                        resultSet.getString(2),resultSet.getInt(3)));
             }
             return arrayList;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

    // 编写公共删除,增加,更改类
    public static int executeUpdate(String sql) {
        Statement statement = null;
        try {
            statement = (Statement) connection.createStatement();
            int update = statement.executeUpdate(sql);
            return update;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}

 4.Dao层

 StudentDao

package dao;

public interface StudentDao {

    // 查询全部
    public void searchAll();

    // 名字查找
    public void searchByName(String name);

    // 学号查找
    public void searchById(int id);

    // 根据学号删除
    public void deleteById(int Id);

    // 根据学号更新名字
    public void updateByName(int id,String name);

    // 根据学号更新成绩
    public void updateByScore(int id,int score);

    // 新增用户
    public void add(String name,int score);

}

 StudentDaoImpl

package dao;

import pojo.Student;
import util.JDBCUtil;

import java.util.ArrayList;

public class StudentDaoImpl implements StudentDao{

    @Override
    public void searchAll() {
        String sql = "select * from student;";
        ArrayList<Student> arrayList = JDBCUtil.executeQuery(sql);
        for(Student student: arrayList) {
            System.out.println(student.toString());
        }

    }

    @Override
    public void searchByName(String name) {
        try {
            StringBuilder sql = new StringBuilder();
            sql.append("select * from student where name = ");
            sql.append("'");
            sql.append(name);
            sql.append("';");
            System.out.println(JDBCUtil.executeQuery(sql.toString()).toString());
        } catch (NullPointerException e) {
            System.out.println("用户不存在");
        }

    }

    @Override
    public void searchById(int id) {

        try {
            StringBuilder sql = new StringBuilder();
            sql.append("select * from student where id = ");
            sql.append(id);
            System.out.println(JDBCUtil.executeQuery(sql.toString()).toString());
        } catch (NullPointerException e) {
            System.out.println("用户不存在");
        }
    }

    @Override
    public void deleteById(int id) {
        StringBuilder sql = new StringBuilder();
        sql.append("delete from student where id=");
        sql.append(id);
        if (JDBCUtil.executeUpdate(sql.toString()) > 0) {
            System.out.println("删除成功");
        }

    }


    @Override
    public void updateByName(int id, String name) {
        StringBuilder sql = new StringBuilder();
        sql.append("update student set name=");
        sql.append("'");
        sql.append(name);
        sql.append("'");
        sql.append(" where id = ");
        sql.append(id);
        sql.append(";");
        if (JDBCUtil.executeUpdate(sql.toString()) > 0) {
            System.out.println("name修改成功");
        }

    }

    @Override
    public void updateByScore(int id, int score) {
        StringBuilder sql = new StringBuilder();
        sql.append("update student set score=");
        sql.append(score);
        sql.append(" where id = ");
        sql.append(id);
        sql.append(";");
        if (JDBCUtil.executeUpdate(sql.toString()) > 0) {
            System.out.println("score修改成功");
        }
    }

    @Override
    public void add(String name, int score) {
        StringBuilder sql = new StringBuilder();
        sql.append("insert student(name,score) values('");
        sql.append(name);
        sql.append("',");
        sql.append(score);
        sql.append(");");
        if (JDBCUtil.executeUpdate(sql.toString()) > 0) {
            System.out.println("添加成功,新用户如下");
            String sql2 = "select * from student order by id desc limit 0,1;";
            System.out.println(JDBCUtil.executeQuery(sql2).toString());
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2159823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity3d Shader】毛玻璃效果

毛玻璃也叫​磨砂玻璃​:是用物理或化学方法处理过的一种表面粗糙不平整的半透明玻璃。 毛玻璃成像原理:毛玻璃表面不平整,光线通过毛玻璃被反射后向四面八方射出去(因为毛玻璃表面不是光滑的平面,使光产生了漫反射),折射到视网膜上已经是不完整的像,于是就看不清楚(…

基于OpenCV的单目测距

随着计算机视觉技术的发展&#xff0c;单目测距作为一种重要的视觉测量手段&#xff0c;在众多领域得到了广泛的应用。本文将探讨基于OpenCV的单目测距原理、局限性、实际应用场景以及一些优化方案。 单目测距的原理 单目测距是指利用一台摄像机拍摄到的单一图像来进行距离测量…

2016年国赛高教杯数学建模D题风电场运行状况分析及优化解题全过程文档及程序

2016年国赛高教杯数学建模 D题风电场运行状况分析及优化 风能是一种最具活力的可再生能源&#xff0c;风力发电是风能最主要的应用形式。我国某风电场已先后进行了一、二期建设&#xff0c;现有风机124台&#xff0c;总装机容量约20万千瓦。请建立数学模型&#xff0c;解决以下…

【Python报错已解决】ValueError: cannot convert float NaN to integer

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

网页设计html心得

一&#xff0c;认识网页 说到网页&#xff0c;其实大家并不陌生 1.1网页究竟是什么&#xff1f; 网页主要由文字、图像和超链接等元素构成。当然&#xff0c;除了这些元素&#xff0c;网页中还可以包含音频、视频以及Flash等。 1.2网页是如何形成的呢&#xff1f; 1.特殊的…

C++读取txt文件中的句子在终端显示,同时操控鼠标滚轮(涉及:多线程,产生随机数,文件操作等)

文章目录 运行效果功能描述代码mian.cppincludeMouseKeyControl.hTipsManagement.h srcMouseControl.cppTipsManagement.cpp 运行效果 功能描述 线程一&#xff1a;每隔n随机秒&#xff0c;动一下鼠标滚轮&#xff0c;防止屏幕息屏。 线程二&#xff1a;运行时加载txt文件中的…

前端html+css+js 基础总结

​​​HTML 行级元素 标签分为行级元素与块级元素 行级元素占据区域由其显示内容决定&#xff0c;如span&#xff0c;img(图片)&#xff0c;<a></a>基本格式: <a href"链接" target"_blank"></a>用于跳转到其他网站&#xff0c…

蓝桥杯1.小蓝的漆房

样例输入 2 5 2 1 1 2 2 1 6 2 1 2 2 3 3 3样例输出 1 2 import math import os import sys tint(input())#执行的次数 for j in range(t):n,kmap(int,input().split())#n为房间数 k为一次能涂的个数alist(map(int,input().split()))#以列表的形式存放房间的颜色maxvaluemath…

环形缓冲区例子

即使使用中断函数或者定时器函数记录按键&#xff0c;如果只能记录一个键值的话&#xff0c;如果不能 及时读走出来&#xff0c;再次发生中断时新值就会覆盖旧值。要解决数据被覆盖的问题&#xff0c;可以使用 一个稍微大点的缓冲区&#xff0c;这就涉及数据的写入、读出&#…

闯关leetcode——69. Sqrt(x)

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/sqrtx/description/ 内容 Given a non-negative integer x, return the square root of x rounded down to the nearest integer. The returned integer should be non-negative as well. You mu…

MySQL --基本查询(上)

文章目录 1.Create1.1单行数据全列插入1.2多行数据指定列插入1.3插入否则更新1.4替换 2.Retrieve2.1 select列2.1.1全列查询2.1.2指定列查询2.1.3查询字段为表达式2.1.4 为查询结果指定别名2.1.5结果去重 2.2where 条件2.2.1英语不及格的同学及英语成绩 ( < 60 )2.2.2语文成…

深度解读 2024 Gartner DevOps 魔力象限

上周 Gartner 刚发布了 2024 年度的 DevOps 魔力象限。我们也第一时间来深度解读一下这份行业里最权威的报告。 和2023年对比 23 年入围 14 家厂商&#xff0c;24 年入围 11 家。4 家厂商从报告中消失&#xff0c;分别是 Bitrise, Codefresh, Google Cloud Platform (GCP), VM…

调度_命令行_环境变量

linux的进程调度算法 饥饿问题 新建进程/时间片结束进程&#xff0c;若放回active&#xff0c;很可能该进程优先级太高&#xff0c;下一个还是执行该进程&#xff0c;导致不断执行同一进程&#xff0c;各进程调度不均衡。 饥饿问题解决 新建进程不能到active&#xff0c;要到…

力扣 24.两两交换链表中的节点

力扣《反转链表》系列文章目录 刷题次序&#xff0c;由易到难&#xff0c;一次刷通&#xff01;&#xff01;&#xff01; 题目题解206. 反转链表反转链表的全部 题解192. 反转链表 II反转链表的指定段 题解224. 两两交换链表中的节点两个一组反转链表25. K 个一组翻转链表K …

《操作系统 - 清华大学》第一讲:操作系统概述 —— 学习内容概述

文章目录 1. 内容摘要2. 实验内容 1. 内容摘要 在这里对学习内容做一个整体上的介绍&#xff0c;那在这里包括我们要学习的内容&#xff0c;实验的内容。操作系统课涉及到计算机系统当中的资源管理&#xff0c;所以我们围绕着操作系统的实现来介绍相关内容&#xff0c;那主要分…

①大缓存ModbusRTU485数据集中采集器寄存器线圈重映射从站并发采集Modbus 串口RS485 转 RS485

大缓存ModbusRTU485数据集中采集器寄存器线圈重映射从站并发采集https://item.taobao.com/item.htm?ftt&id811821574300 产品型号&#xff1a; 一分一路 MS-A1-C011 一分2路 MS-A1-C021 一分4路 MS-A1-C041 一分7路 MS-A1-C071 一般技术规格 1.串口 MS-A1…

【hot100-java】【最长公共子序列】

R8-多维dp篇 直接上递推 class Solution {public int longestCommonSubsequence(String text1, String text2) {char[] stext1.toCharArray(); char[] ttext2.toCharArray(); int ns.length;int mt.length;int [][] fnew int[n1][m1];for (int i0;i<n;i){for (int j0;j<…

MySQL | 实战 | 4 种将数据同步到ES方案

文章目录 1. 前言2. 数据同步方案2.1 同步双写2.2 异步双写2.3 定时更新2.4 基于 Binlog 实时同步 3. 数据迁移工具选型3.1 Canal3.2 阿里云 DTS3.3 Databus3.4 Databus和Canal对比3.4 其它 4. 后记 上周听到公司新同事分享 MySQL 同步数据到 ES 的方案&#xff0c;发现很有意思…

02【Matlab系统辨识】白噪声

1.白噪声与有色噪声 1.1 白噪声(white noise) 系统辨识中所用到的数据通常都含有噪声。从工程实际出发&#xff0c;这种噪声往往可以视为具有有理谱密度的平稳随机过程。白噪声是一种最简单的随机过程&#xff0c;是由一系列不相关的随机变量组成的理想化随机过程。白噪声的数…