文件结构
|-- SQLConnection.java(Java连接MySQL)
|-- User.java(用户注册登录)
|-- Student.java(学生类)
|-- StudentSystem.java(学生档案管理)
|-- Menu.java(菜单类)
|-- Main.java(主程序)
代码拆分
SQLConnection类(Java连接到MySQL)
- 下面的类有两个方法,连接数据库和关闭连接,可供其他类调用。
package StudentSystem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class SQLConnection {
private static final String database = "student_system";
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);
} 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类(用户注册登录)
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();
String sql_insert = "insert into " + table + " (username,password) values ('" + username + "','" + password + "')";
int result = statement.executeUpdate(sql_insert);
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 +"'";
ResultSet resultSet = statement.executeQuery(sql);
if (!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() {
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类
- 定义了学生的基本信息,获取信息的方法,返回信息的方法。
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);
System.out.print("student id:");
try {
int id =sc.