Java编写学生档案管理系统(MySQL+命令行显示)代码

文件结构

|-- SQLConnection.java(Java连接MySQL)
|-- User.java(用户注册登录)
|-- Student.java(学生类)
|-- StudentSystem.java(学生档案管理)
|-- Menu.java(菜单类)
|-- Main.java(主程序)

代码拆分

SQLConnection类(Java连接到MySQL)

  • 下面的类有两个方法,连接数据库和关闭连接,可供其他类调用。
//SQLConnection.java
package StudentSystem;

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

public class SQLConnection {
   
    private static final String database = "student_system";
    //连接数据库所需的三个参数:url,username,password
    private static final String url = "jdbc:mysql://localhost:3306/"+database+"?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=true";
	//连接自己数据库的用户名和密码
    private static final String username = "root"; 
    private static final String password = "root";

    public static Connection Connect() {
   
        Connection connection = null;
        try {
   
            Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
        } catch (ClassNotFoundException e) {
   
            System.out.println("The driver was not loaded successfully, please check whether the driver was imported!");
            e.printStackTrace();
        }
        try {
   
            connection = DriverManager.getConnection(url, username, password); //获得connection对象
        } catch (SQLException e) {
   
            System.out.println("fail to connect database");
            e.printStackTrace();
        }
        return connection;
    }

    public static void Close(Connection connection) {
   
        if (connection != null) {
   
            try {
   
                connection.close(); //关闭连接
            } catch (SQLException e) {
   
                connection = null;
                e.printStackTrace();
            }
        }
    }
}

User类(用户注册登录)

  • 这个类提供了注册和登录的方法。
//User.java
package StudentSystem;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class User {
   
    private static final Connection connection = SQLConnection.Connect(); //连接数据库
    private static final String table = "user"; //所选用的数据表
    private static String username; //注册的用户名
    private static String password; //注册的密码

    public static void Register() {
   
    	//先判断能否注册,即查询用户名有无重复
        if (judge_register()) {
   
            try {
   
                Statement statement = connection.createStatement(); //获取执行SQL的对象

                String sql_insert = "insert into " + table + " (username,password) values ('" + username + "','" + password + "')"; //SQL语句:增
                int result = statement.executeUpdate(sql_insert); //执行SQL语句,返回结果
                if (result == 0) {
   
                    System.out.println("fail to register");
                } else {
   
                    System.out.println("registered successfully");
                    System.out.println();
                }
            } catch (SQLException e) {
   
                e.printStackTrace();
            }
        }
    }

    public static void Login() {
   
        get_information(); //获取用户名和密码
        try {
   
            Statement statement = connection.createStatement();
            String sql = "select * from "+table+" where username='"+ username +"' AND password='"+ password +"'"; //SQL语句:查
            ResultSet resultSet = statement.executeQuery(sql); //执行SQL语句,返回结果集
            if (!resultSet.next()) {
    //resultSet.next()是指还有下一行的意思
                System.out.println("Incorrect name or password. Please try again.");
                System.out.println();
                Menu.start_user_system(); //登录失败,重新进入用户注册登录系统
            } else {
   
                System.out.println("login successfully");
            }
        } catch (SQLException e) {
   
            System.out.println("Error");
            e.printStackTrace();
        } finally {
   
            Close(); //登录后关闭数据库连接
        }
    }

    public static void Close() {
   
        SQLConnection.Close(connection);
    }

    private static boolean judge_register() {
    //查询用户名是否重复
        get_information();
        try {
   
            Statement statement = connection.createStatement();
            String sql_select_username = "select * from "+table+" where username='"+username+"'";
            ResultSet resultSet_username = statement.executeQuery(sql_select_username);
            if (resultSet_username.next()) {
   
                System.out.println("The account already exists, please try again");
                System.out.println();
                return false;
            }
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
        return true;
    }

    private static void get_information() {
    //获取用户名和密码
        System.out.print("Please input your name:");
        username = PreventSQLInjection();
        System.out.print("Please enter your password:");
        password = PreventSQLInjection();
    }

    private static String PreventSQLInjection() {
    //过滤单引号,防止SQL注入
        String str;
        Scanner sc = new Scanner(System.in);
        str = sc.nextLine();
        if (str.contains("'")) {
   
            System.out.println("An illegal character \"'\" was entered. Please re-enter.");
            return PreventSQLInjection();
        }
        return str;
    }
}

Student类

  • 定义了学生的基本信息,获取信息的方法,返回信息的方法。
//Student.java
package StudentSystem;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.regex.Pattern;

public class Student {
   
    private static int id,age,score;
    private static String name="", gender ="",birthYear="",birthMonth="",birthDay="";
    private static final int ThisYear = Calendar.getInstance().get(Calendar.YEAR); //获取当前年份,用于计算年龄

    public int return_id() {
   
        return id;
    }
    public int return_age() {
   
        return age;
    }
    public int return_score() {
   
        return score;
    }
    public String return_name() {
   
        return name;
    }
    public String return_gender() {
   
        return gender;
    }
    public String return_birth() {
    //规范化返回生日
        return birthYear+"-"+birthMonth+"-"+birthDay;
    }

    public static int get_id() {
   
        Scanner sc = new Scanner(System.in
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要做码农呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值