目录
该项目实现了学生信息系统的增删改查,可以更好的让大家理解数据库,有什么问题可以私信我。
一、开发环境
软件:IntelliJ IDEA 2023.3.4
JDK:22版本
数据库软件:Navicat 17 for MySQL
二、数据库
1、连接方式
安装好Navicat 17 for MySQL后,点击连接按钮去连接自己的数据库,选择数据库语言类型然后点击下一步。
2、创建连接
连接名称自由填写,主机和端口默认是下面的,其中用户名和密码是在安装数据库的时候自己设置的,需要自己记住,输入完成后点击测试按钮,成功的话确定就可以进入界面了。
3、新建一个数据库
双击刚才创建的连接名称就可以变成绿色,然后右键选择新建数据库
4、新建表
新建完数据库后双击点开,然后在表这里右键选择新建表格即可
5、创建表格
填完名称后选择这个表格接收的是什么类型的数据,我选择的是int数字的,填完一个点击上面+号添加字段,添加多个格子。
6、配置表格
将字段配置成和我的一样可以省去很多修改
三、导入代码
1、项目创建
2、代码写入
DBConnection.java
package stu.database;
/*
连接数据库
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static Connection con = null;
public static Connection getCon(){
try{
//加载驱动,其路径在左侧的jdbc里,如果和我的不一样,可以自己找到然后写上去
Class.forName("com.mysql.cj.jdbc.Driver");
}catch (ClassNotFoundException e){
System.out.println("加载数据库失败!");
e.printStackTrace();
}
try{
jdbc加载方式:mysql数据库类型://localhost:3306(端口号):要连接的数据库库名
String url = "jdbc:mysql://localhost:3306/store?";
String user = "root";//账户名称
String password = "123456";//密码
con = DriverManager.getConnection(url,user,password);//得到连接的对象
//判断数据库是否连接成功,不熟悉一定要加这个步骤不然不知道错在哪一步
if(con !=null){
System.out.println("数据库连接成功!");
}
}catch (SQLException e){
System.out.println("数据库连接失败!");
e.printStackTrace();
}
return con;
}
}
Login.java(运行入口、主函数)
package stu.login;
import stu.management.StudentManagement;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Login extends Frame implements ActionListener {
public static void main(String[] args) {
new StudentManagement();
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
Students.java
package stu.login;
public class Students {
private Integer id;
private String name;
private String sex;
private String birthday;
private String classes;
private String academy;
public Students(){super();}
public Integer getId(){ return id;} // 获取面板上的组件数据
public void setId(Integer id){ this.id = id;} // 通过这个面板设置信息
public String getName(){ return name;}
public void setName(String name){ this.name = name;}
public String getSex(){ return sex;}
public void setSex(String sex){ this.sex = sex;}
public String getBirthday(){ return birthday;}
public void setBirthday(String birthday){ this.birthday = birthday;}
public String getClasses(){ return classes;}
public void setClasses(String classes){ this.classes = classes;}
public String getAcademy(){ return academy;}
public void setAcademy(String academy){ this.academy = academy;}
public String toString(){
return id + "" + name + " " + sex;
}
}
AddManagement.java
package stu.management;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
import stu.database.DBConnection;
/**
* 添加信息
* @author Administrator
*
*/
public class AddManagement extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
// JLabel组件表示的是一个标签,本身是用于显示信息的
JLabel label = new JLabel("添加信息",JLabel.CENTER); //创建一个“添加信息”标签,位置在中间
JLabel JLNumber = new JLabel("学号"); //创建一个“学号”标签
JTextField JTNumber = new JTextField(); //创建一个输入学号的文本框
JLabel JLName = new JLabel("姓名"); //创建一个“姓名”标签
JTextField JTName = new JTextField(); //创建一个输入学号的文本框
JLabel JLBirth = new JLabel("生日"); //创建一个“生日”标签
JTextField JTBirth = new JTextField(); //创建一个输入生日的文本框
JLabel JLClass = new JLabel("班级"); //同上
JTextField JTClass = new JTextField();
JLabel JLSex = new JLabel("性别"); //创建一个“性别标签”
//创建按钮组,把两个按钮添加到按钮组中
ButtonGroup btnGroup = new ButtonGroup(); //定义一个按钮组
//创建两个单选按钮
JRadioButton radioBtn01 = new JRadioButton("男"); //创建一个“男”按钮
JRadioButton radioBtn02 = new JRadioButton("女"); //创建一个“女”按钮
JLabel JLAcademy = new JLabel("学院"); //创建一个“学院标签”
JTextField JTAcademy = new JTextField(); //创建一个“文本框”
JButton addBtn = new JButton("添加"); //创建一个“添加”按钮
JButton readdBtn = new JButton("重置"); //创建一个“重置”按钮
JButton cancelBtn = new JButton("取消"); //创建一个“取消”按钮
public AddManagement() { //构造函数
this.setTitle("添加信息"); //设置标题
this.setLayout(null); //清空默认布局,使用自己设置的坐标作为布局
label.setFont(new Font("宋体&#