(解析+源码)基于JAVA Swing+MySQL实现学生信息管理系统(增、删、改、查)数据库/文件存储

这篇具有很好参考价值的文章主要介绍了(解析+源码)基于JAVA Swing+MySQL实现学生信息管理系统(增、删、改、查)数据库/文件存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文适合有一定JAVA编程基础(听过一点课的同学)的同学“食用”,源代码都在文末源代码(点击跳转),第四部分是各个模块的实现,新建一个工程把下面代码添加进去,然后在数据库里按id-username-password和id-name-sex-telephone-number-birthday-note创建两个表,在Connect.java里面将username和password改成你自己的数据库用户名和密码连接上数据库即可使用,有问题欢迎私信交流!

根据学校对学生信息日常管理需要,学生信息管理系统包括以下功能:

  1. 登录系统;
  2. 新建学生信息:添加学生信息;
  3. 删除学生信息:对指定学生信息进行删除;
  4. 修改学生信息:对指定学生信息进行修改
  5. 查找学生信息:输入名字关键字、学号、政治面貌等查询符合条件的学生;
  6. 退出系统。

用户登录后可以对学生信息进行增、删、改、查操作,通过数据库或者文件存储用户录入的信息。

一、功能模块划分

图1 功能模块划分图

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

二、数据库结构描述

2.1 数据库E-R模型

图2 登录E-R图

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

图3 学生E-R图

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

2.2 数据库关系模型--二维表

表1 登录用户名和密码

字段

数据类型

说明

Username

varchar

用户名

Password

varchar

登录密码

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

图4 录入信息后的用户名和密码

表2 学生信息表

字段

数据类型

说明

id

int

编号

name

varchar

姓名

sex

varchar

性别

telephone

varchar

联系方式

number

varchar

学号

birthday

varchar

出生日期

note

varchar

政治面貌

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

图5 录入信息后的学生信息表

三、系统详细设计

3.1系统执行流程

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

图6 系统执行流程图

3.2类的划分

表3

类名

类的成员属性和方法

说明

Connect.

java

private static String driverName

driverName

private static String url

url

private static String userName,private static String password

用户名和密码

private Connection conn

Connection对象

private Statement stmt

Statement对象

public Connect()

加载数据库

public Connection getConnection() throws SQLException

获取数据库连接

表4

类名

类的成员属性和方法

说明

StudentSystem.java

JButton searchBtn, createBtn, updateBtn, deleteBtn,exitBtn

定义5个系统功能按钮,用于事件响应

JTable infoTable

定义5个表格,用于显示学生信息

JLabel keyLab

定义1个标签,用于提醒用户输入信息

JTextField keyText

定义1个文本框,用于用户查询信息

private Map<String, String> PersonInfo

私有化Map集合对象

public StudentSystem()

在面板中添加组件、标签和文本框

public static void flashInfo()

将学生信息写入数据库

 public void actionPerformed(ActionEvent e)

功能按钮监听

protected void searchInfo(String key)

实现查询信息

public static Vector<String> column

实例化用于存储表格数据的Vector数组

public static Vector<Vector<String>> info = new Vector<Vector<String>>()

实例化用于存储学生信息的Vector数

表5

类名

类的成员属性和方法

说明

Login.

java

public void showUI

登录界面按钮、标签和组件

button.addMouseListener(new MouseAdapter()

内部类用于监听用户鼠标事件

表6

类名

类的成员属性和方法

说明

MyDialog.java

private JPanel pCenter, pSouth

定义2个面板

private JLabel nameLab, sexLab, mailLab, birthLab, phoneLab,noteLab

定义6个学生信息标签,用于提示

private JTextField nameText, mailText, birthText, phoneText,noteText

定义6个学生信息文本框用于输入信息

private JComboBox<String> sex

定义1个下拉列表组件

private JButton yesBtn, noBtn

定义2个按钮,用于给用户选择储存方式

public MyDialog(String title, Map<String, String> info)

构造方法,用于窗口添加组件和标案等

public void actionPerformed(ActionEvent e)

系统功能按钮监听器模块

public void insertPerson()

添加信息当用户输入无效信息时提示模块

public void dbinsertPerson()

将新建的学生信息写入数据库的表中模块

public void fileinsertPerson()

将新建的学生信息写入文件中模块

public void deletePerson()

删除指定学生信息模块

public void updatePerson()

修改指定学生信息模块

四、各个模块实现方法

4.1 连接数据库

与创建的数据库进行连接,实现步骤如下:

  1. 加载jdbc驱动程序;
  2. 创建数据库的连接;
  3. 创建StatementConnect
  4. 执行SQL语句;

代码:

public class Connect {
	private static String driverName="com.mysql.cj.jdbc.Driver";
	private static String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf8&ServerTimezone=GMT&useSSL=false&serverTimezone=UTC";
	private static String userName = "root";
	private static String password = "111111";
	private Connection conn;
	private Statement stmt;

	public Connect() {
		try {
			Class.forName(driverName);//加载数据库
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	public Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url, userName, password);//使用DriverManger获取数据库连接
	}
	
	public void dispose() {
		try {
			if (conn != null) {
				conn.close();
			}
			if (stmt != null) {
				stmt.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

4.2 登录界面

用户登录界面由JFrame窗口和JLable、JPanel、JTextField等组件构成,通过鼠标事件监听器进行登录,实现方法如下:

  1. 定义输入用户名和密码所需文本框以及提示组件;
  2. 创建按钮和鼠标事件监听器;
  3. 获取数据库用户资料并判断用户名和密码是否正确;
  4. 显示主界面进行增、删、改、查操作;

运行结果:

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

图7 登录界面

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

图8 程序判断用户名和密码是否正确

代码:

public class Login {
	public static void main(String args[]) {
		Login l=new Login();//实例化Login对象
		l.showUI();
	}
	
	public void showUI() {
		JFrame login=new JFrame();//创建一个JFrame容器窗口
		login.setTitle("登录系统");//设置标题
		login.setSize(340,240);//设置窗口大小
		login.setDefaultCloseOperation(3);//0-DO_NITHING窗口无法关闭;1-HIDE隐藏程序界面但没有关闭程序;2-DISPOSE自动隐藏释放窗体,继续运行应用程序;3-EXIT
		login.setLocationRelativeTo(null);//设置窗口位置相对于指定组件的位置
		login.setResizable(false);//设置窗口不可被调整大小,布尔值
		//FlowLayout fl=new FlowLayout(FlowLayout.CENTER,5,5);
		login.setLayout(new FlowLayout());//FloeLayout默认居中对齐,水平、垂直间距默认为5个单位
		login.setVisible(true);//窗体可见
		
		//用户名标签组件
		JLabel labname=new JLabel();
		labname.setText("用户名:");
		labname.setPreferredSize(new Dimension(60, 60));//设置最适合窗口的位置(setPreferredSize)和JLable标签组件的宽度和高度(Dimension)
		login.add(labname);//加入JFrame窗口
		JTextField textname=new JTextField();//创建一个JTextField文本框用于输入用户名
		textname.setPreferredSize(new Dimension(250, 30));
		login.add(textname);//加入到JFrame窗口中
		//密码标签组件
		JLabel labpassword=new JLabel();
		labpassword.setText("密    码:");
		labpassword.setPreferredSize(new Dimension(60, 60));
		login.add(labpassword);
		JPasswordField jp=new JPasswordField();
		jp.setPreferredSize(new Dimension(250, 30));
		login.add(jp);
		
		//登录按钮
		JButton button=new JButton();
	  	button.setText("登录"); 
		button.setPreferredSize(new Dimension(100, 40));
		login.add(button);
		login.setVisible(true);
		
		//为登录键添加鼠标事件监听器
		button.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				Connect dbconn = new Connect();//实例化Connect对象
				Statement stmt = null;
				ResultSet rs = null;
				try {
					//用于创建一个 Statement 对象,封装 SQL 语句发送给数据库,通常用来执行不带参数的 SQL 语句
					stmt = dbconn.getConnection().createStatement();
					//select * from查询在数据库中表内信息
					rs = stmt.executeQuery("select * from my_address_login where username='"+textname.getText()+"' and password='"+jp.getText()+"'");
					if (rs.next()) {
						new StudentSystem();//主界面
						login.dispose();//释放界面窗口占用的屏幕资源
					}else{
						JOptionPane.showMessageDialog(null, "用户名或密码不正确!!!","提示",2);//java弹窗
JOptionPane.showMessageDialog(null, "提示内容" ,"标题", -1~3);
					}
					rs.close();
				} catch (SQLException e1) {
					e1.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因,显示出更深的调用信息
					//System.out.println(e1);
				} finally {
					try {
						if (stmt != null) {
							stmt.close();
						}
						if (rs != null) {
							rs.close();
						}
					} catch (SQLException e1) {
						e1.printStackTrace();
					}
				}
			}
		});
	}
}

4.3 主界面

主界面由JFrame窗口和JLable、JPanel、JTextField等组件构成,通过鼠标、键盘事件监听器进行功能选项和信息录入,实现方法如下:

  1. 定义输入信息和功能选择所需文本框以及按钮;
  2. 创建键盘和鼠标事件监听器;
  3. 根据用户选择执行对应模块。

运行结果:

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言 图9 主界面

代码:

public StudentSystem() {
		PersonInfo = new HashMap<String, String>();//数组和链表的结合体,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。新建一个HashMap的时候,就会初始化一个数组
		Font font = new Font("宋体", Font.PLAIN, 15);//设置字体,类型和大小;Front.PLAIN普通,Front.BLOD加粗,Front.ITALIC斜体
		JPanel pNorth = new JPanel();
		pNorth.setLayout(new FlowLayout(FlowLayout.RIGHT));
		keyLab = new JLabel("请输入关键字:");
		keyText = new JTextField(10);//搜索文本框
		
		//创建系统功能按钮
		searchBtn = new JButton("搜索学生信息");
		createBtn = new JButton("新增学生信息");
		updateBtn = new JButton("修改学生信息");
		deleteBtn = new JButton("删除学生信息");
		exitBtn = new JButton("退出系统");
		
		//设置字体大小
		keyLab.setFont(font);
		searchBtn.setFont(font);		
		createBtn.setFont(font);		
		updateBtn.setFont(font);		
		deleteBtn.setFont(font);
		exitBtn.setFont(font);
		
		//添加监听器
		searchBtn.addActionListener(this);
		createBtn.addActionListener(this);
		updateBtn.addActionListener(this);
		deleteBtn.addActionListener(this);
		exitBtn.addActionListener(this);
		
		//在JPanel面板的上方加入搜索功能所需的一系列组件
		pNorth.add(keyLab);
		pNorth.add(keyText);
		pNorth.add(searchBtn);

		//在JPanel面板下方加入系统功能组件
		JPanel pSouth = new JPanel();
		pSouth.add(createBtn);
		pSouth.add(updateBtn);
		pSouth.add(deleteBtn);
		pSouth.add(exitBtn);

		//表格数据
		column = new Vector<String>();
		column.add("编号");
		column.add("姓名");
		column.add("性别");
		column.add("电话");
		column.add("学号");
		column.add("生日");
		column.add("政治面貌");
		flashInfo();//将数据存入数据库
		infoTable = new JTable(info, column);
		TableColumn column1 = infoTable.getColumnModel().getColumn(0);
		column1.setPreferredWidth(30);//自适应

		TableColumn column3 = infoTable.getColumnModel().getColumn(2);
		column3.setPreferredWidth(30);//自适应

		JScrollPane pCenter = new JScrollPane(infoTable);//创建垂直滚动面板
		this.add(pNorth, "North");
		this.add(pCenter, "Center");
		this.add(pSouth, "South");

		this.setTitle("学生信息管理系统");
		this.setSize(800, 450);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public static void flashInfo() {
		Connect dbconn = new Connect();
		Statement stmt = null;
		ResultSet rs = null;
		info.clear();
		try {
			stmt = dbconn.getConnection().createStatement();//创建一个 Statement 对象,封装 SQL 语句发送给数据库
			rs = stmt.executeQuery("select * from my_address_book");//下达命令执行查询语句并且存放在ResultSet对象中
			while (rs.next()) {
				Vector<String> row = new Vector<String>();
				row.add(rs.getString(1));
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
				row.add(rs.getString(5));
				row.add(rs.getString(6));
				row.add(rs.getString(7));
				info.add(row);
			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
				}
				if (rs != null) {
					rs.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

4.4 新建学生信息

新建学生信息界面,通过模式对话,即通过JDialog对话框来实现,实现方法如下:

  1. 定义表格所需集合;
  2. 定义一个用于连接数据库的对象;
  3. 定义新建学生信息的相关组件;
  4. 把组件添加到窗体;
  5. 调用新建学生信息界面的方法;
  6. 调用数据库连接;
  7. 录入学生信息;
  8. 选择储存方式;
  9. 判断信息是否正确;
  10. 完成相应功能。

运行结果:

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

 图10 新建学生信息界面

代码:

public void dbinsertPerson(){//将新建的学生信息写入数据库的表中
		boolean flag=true;
		String sql = "insert into my_address_book(name, sex, telephone, number, birthday, note)value(?,?,?,?,?,?)";
		try {
			PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);
			pstmt.setString(1, nameText.getText());
			pstmt.setString(2, (String) sex.getSelectedItem());
			pstmt.setString(3, phoneText.getText());
			pstmt.setString(4, mailText.getText());
			pstmt.setString(5, birthText.getText());
			pstmt.setString(6, noteText.getText());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "新建联系人失败!");//提示弹窗
			flag = false;
		} finally {
			dispose();
			if (flag) {
				JOptionPane.showMessageDialog(null, "新建联系人成功!");//提示弹窗
			}
			StudentSystem.flashInfo();//将数据写入数据库
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);

			StudentSystem.infoTable.setModel(model);
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);
			
			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}
	
	public void fileinsertPerson(){//将新建的学生信息写入文件中
		boolean flag=true;
		try {
			StringBuffer sbf=new StringBuffer();
			sbf.append(nameText.getText()).append(" ")
			.append((String) sex.getSelectedItem()).append(" ")
			.append(phoneText.getText()).append(" ")
			.append(mailText.getText()).append(" ")
			.append(birthText.getText()).append(" ")
			.append(noteText.getText());
			File file = new File("information.txt");
            FileOutputStream fos = null;
            if(!file.exists()){
                file.createNewFile();//如果文件不存在,创建该文件
                fos = new FileOutputStream(file);//首次写入获取
            }else{
                //如果文件已存在,就在文件末尾追加写入
                fos = new FileOutputStream(file,true);
            }
            OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");//指定以UTF-8格式写入文件
            osw.write(sbf.toString());
            osw.write("\r\n");
            osw.close();
		} catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "新建联系人失败!");//提示弹窗
			flag = false;
		} finally {
			dispose();
			if (flag) {
				JOptionPane.showMessageDialog(null, "新建联系人成功!");//提示弹窗
			}
		}
	}

4.5 删除学生信息

删除学生信息界面,通过模式对话,即通过JDialog对话框来实现,实现方法如下:

  1. 选择删除对象
  2. 调用数据库连接;
  3. 删除学生信息;
  4. 完成相应功能。

运行结果

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

 图11 未选择删除对象提示信息

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

 图12 删除成功提示

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

 图13 删除指定对象信息后返回主界面

代码:

public void deletePerson() {//删除信息
		String sql = "delete from my_address_book where id=?";

		try {			
PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);
			pstmt.setString(1, id);
			pstmt.executeUpdate();
		} 
		catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dispose();
			StudentSystem.flashInfo();
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);

			StudentSystem.infoTable.setModel(model);
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);

			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}

4.6 修改学生信息

修改学生信息界面,通过模式对话,即通过JDialog对话框来实现,实现方法如下:

  1. 定义修改叙述信息的相关组件;
  2. 加载数据库,获得选中的那一行的所有信息;
  3. 把组件添加到窗体;
  4. 调用修改学生信息界面的方法;
  5. 修改学生信息;
  6. 完成相应功能。

运行结果:

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

 图14 未选择修改对象程序提示

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言 图15 修改指定对象信息界面

代码:

public void updatePerson() {//修改信息
		if (nameText.getText().isEmpty()) {
			JOptionPane.showMessageDialog(null, "请输入姓名!");
		}
		String sql = "update my_address_book set name=?,sex=?,telephone=?,number=?,birthday=?,note=? where id=?";

		try {			PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);
			pstmt.setString(1, nameText.getText());
			pstmt.setString(2, (String) sex.getSelectedItem());
			pstmt.setString(3, phoneText.getText());
			pstmt.setString(4, mailText.getText());
			pstmt.setString(5, birthText.getText());
			pstmt.setString(6, noteText.getText());
			pstmt.setString(7, id);
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dispose();
			StudentSystem.flashInfo();
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);

			StudentSystem.infoTable.setModel(model);
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);

			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}
}

public static void flashInfo() {
		Connect dbconn = new Connect();
		Statement stmt = null;
		ResultSet rs = null;
		info.clear();
		try {
			stmt = dbconn.getConnection().createStatement();//创建一个 Statement 对象,封装 SQL 语句发送给数据库
			rs = stmt.executeQuery("select * from my_address_book");//下达命令执行查询语句并且存放在ResultSet对象中
			while (rs.next()) {
				Vector<String> row = new Vector<String>();
				row.add(rs.getString(1));
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
				row.add(rs.getString(5));
				row.add(rs.getString(6));
				row.add(rs.getString(7));
				info.add(row);
			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
				}
				if (rs != null) {
					rs.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

4.7 查找学生信息

查找学生信息界面,实现方法如下:

  1. 定义查找学生信息的相关组件;
  2. 通过读取用户输入信息建立数据库连接读取数据;
  3. 以表格形式显示查找结果
  4. 完成相应功能。

运行结果:

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

 图16 以政治面貌查询学生信息

java swing学生管理系统,数据库,java,mysql,eclipse,开发语言

 图17 以姓名关键字查询学生信息

代码:

protected void searchInfo(String key) {//搜索
		Connect dbconn = new Connect();
		Statement stmt = null;
		ResultSet rs = null;
		try {
			stmt = dbconn.getConnection().createStatement();
			String sql = "select * from my_address_book where name like'%" + key + "%'";
			String sql2 = "select * from my_address_book where sex like'%" + key + "%'";
			String sql3 = "select * from my_address_book where telephone like'%" + key + "%'";
			String sql4 = "select * from my_address_book where number like'%" + key + "%'";
			String sql5 = "select * from my_address_book where birthday like'%" + key + "%'";
			String sql6 = "select * from my_address_book where note like'%" + key + "%'";
			
			rs = stmt.executeQuery(sql);
			rs = stmt.executeQuery(sql2);
			rs = stmt.executeQuery(sql3);
			rs = stmt.executeQuery(sql4);
			rs = stmt.executeQuery(sql5);
			rs = stmt.executeQuery(sql6);
			info.clear();
			while (rs.next()) {
				Vector<String> row = new Vector<String>();//创建自增长数组
				row.add(rs.getString(1));//向Vector中添加值
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
				row.add(rs.getString(5));
				row.add(rs.getString(6));
				row.add(rs.getString(7));
				info.add(row);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
				}
				if (rs != null) {
					rs.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);//构造一个 DefaultTableModel,并通过将 data 和 columnNames 传递到 setDataVector 方法来初始化该表。
			StudentSystem.infoTable.setModel(model);//数据绑定
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);

			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}

源代码

Connect.java

package com.txl;

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

public class Connect {
	private static String driverName = "com.mysql.cj.jdbc.Driver";
	private static String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf8&ServerTimezone=GMT&useSSL=false&serverTimezone=UTC";
	private static String userName = "root";
	private static String password = "111111";
	private Connection conn;
	private Statement stmt;

	public Connect() {
		try {
			Class.forName(driverName);//加载数据库
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	public Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url, userName, password);//使用DriverManger获取数据库连接
	}
	
	public void dispose() {
		try {
			if (conn != null) {
				conn.close();
			}
			if (stmt != null) {
				stmt.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

Login.java

package com.txl;

import java.awt.FlowLayout;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
 //登录界面
public class Login {
	public static void main(String args[]) {
		Login l=new Login();//实例化Login对象
		l.showUI();
	}
	
	public void showUI() {
		JFrame login=new JFrame();//创建一个JFrame容器窗口
		login.setTitle("登录系统");//设置标题
		login.setSize(340,240);//设置窗口大小
		login.setDefaultCloseOperation(3);//0-DO_NITHING窗口无法关闭;1-HIDE隐藏程序界面但没有关闭程序;2-DISPOSE自动隐藏释放窗体,继续运行应用程序;3-EXIT
		login.setLocationRelativeTo(null);//设置窗口位置相对于指定组件的位置
		login.setResizable(false);//设置窗口不可被调整大小,布尔值
		//FlowLayout fl=new FlowLayout(FlowLayout.CENTER,5,5);
		login.setLayout(new FlowLayout());//FloeLayout默认居中对齐,水平、垂直间距默认为5个单位
		login.setVisible(true);//窗体可见
		
		//用户名标签组件
		JLabel labname=new JLabel();
		labname.setText("用户名:");
		labname.setPreferredSize(new Dimension(60, 60));//设置最适合窗口的位置(setPreferredSize)和JLable标签组件的宽度和高度(Dimension)
		login.add(labname);//加入JFrame窗口
		JTextField textname=new JTextField();//创建一个JTextField文本框用于输入用户名
		textname.setPreferredSize(new Dimension(250, 30));
		login.add(textname);//加入到JFrame窗口中
		//密码标签组件
		JLabel labpassword=new JLabel();
		labpassword.setText("密    码:");
		labpassword.setPreferredSize(new Dimension(60, 60));
		login.add(labpassword);
		JPasswordField jp=new JPasswordField();
		jp.setPreferredSize(new Dimension(250, 30));
		login.add(jp);
		
		//登录按钮
		JButton button=new JButton();
	  	button.setText("登录"); 
		button.setPreferredSize(new Dimension(100, 40));
		login.add(button);
		login.setVisible(true);
		
		//为登录键添加鼠标事件监听器
		button.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				Connect dbconn = new Connect();//实例化Connect对象
				Statement stmt = null;
				ResultSet rs = null;
				try {
					//用于创建一个 Statement 对象,封装 SQL 语句发送给数据库,通常用来执行不带参数的 SQL 语句
					stmt = dbconn.getConnection().createStatement();
					//执行查询;用statement类的executeQuery()方法来下达select指令以查询数据库,把数据库响应的查询结果存放在ResultSet类对象中供我们使用
					//select * from查询在数据库中表内信息
					rs = stmt.executeQuery("select * from my_address_login where username='"+textname.getText()+"' and password='"+jp.getText()+"'");
					if (rs.next()) {
						new StudentSystem();//主界面
						login.dispose();//释放登录界面窗口占用的屏幕资源
					}else{
						JOptionPane.showMessageDialog(null, "用户名或密码不正确!!!","提示",2);//java弹窗JOptionPane.showMessageDialog(null, "提示内容" ,"标题", -1~3);
					}
					rs.close();
				} catch (SQLException e1) {
					e1.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因,显示出更深的调用信息
					//System.out.println(e1);
				} finally {
					try {
						if (stmt != null) {
							stmt.close();
						}
						if (rs != null) {
							rs.close();
						}
					} catch (SQLException e1) {
						e1.printStackTrace();
					}
				}
			}
		});
	}
}

StudentSystem.java

package com.txl;

import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class StudentSystem extends JFrame implements ActionListener {//继承自JFrame使得这个类成为一个窗体,可以对窗体的属性进行扩展并且可以定义自己需要的特殊操作方法
	private static final long serialVersionUID = 1L;//把java对象序列化而后进行保存
	private Map<String, String> PersonInfo;
	public static Vector<Vector<String>> info = new Vector<Vector<String>>();
	private JLabel keyLab;
	private JButton searchBtn, createBtn, updateBtn, deleteBtn,exitBtn;
	public static JTable infoTable;
	private JTextField keyText;
	public static Vector<String> column;

	public StudentSystem() {
		PersonInfo = new HashMap<String, String>();//数组和链表的结合体,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。新建一个HashMap的时候,就会初始化一个数组
		Font font = new Font("宋体", Font.PLAIN, 15);//设置字体,类型和大小;Front.PLAIN普通,Front.BLOD加粗,Front.ITALIC斜体
		JPanel pNorth = new JPanel();
		pNorth.setLayout(new FlowLayout(FlowLayout.RIGHT));
		keyLab = new JLabel("请输入关键字:");
		keyText = new JTextField(10);//搜索文本框
		
		//创建系统功能按钮
		searchBtn = new JButton("搜索学生信息");
		createBtn = new JButton("新增学生信息");
		updateBtn = new JButton("修改学生信息");
		deleteBtn = new JButton("删除学生信息");
		exitBtn = new JButton("退出系统");
		
		//设置字体大小
		keyLab.setFont(font);
		searchBtn.setFont(font);		
		createBtn.setFont(font);		
		updateBtn.setFont(font);		
		deleteBtn.setFont(font);
		exitBtn.setFont(font);
		
		//添加监听器
		searchBtn.addActionListener(this);
		createBtn.addActionListener(this);
		updateBtn.addActionListener(this);
		deleteBtn.addActionListener(this);
		exitBtn.addActionListener(this);
		
		//在JPanel面板的上方加入搜索功能所需的一系列组件
		pNorth.add(keyLab);
		pNorth.add(keyText);
		pNorth.add(searchBtn);

		//在JPanel面板下方加入系统功能组件
		JPanel pSouth = new JPanel();
		pSouth.add(createBtn);
		pSouth.add(updateBtn);
		pSouth.add(deleteBtn);
		pSouth.add(exitBtn);

		//表格数据
		column = new Vector<String>();
		column.add("编号");
		column.add("姓名");
		column.add("性别");
		column.add("电话");
		column.add("学号");
		column.add("生日");
		column.add("政治面貌");
		flashInfo();//将数据存入数据库
		infoTable = new JTable(info, column);
		TableColumn column1 = infoTable.getColumnModel().getColumn(0);
		column1.setPreferredWidth(30);//自适应

		TableColumn column3 = infoTable.getColumnModel().getColumn(2);
		column3.setPreferredWidth(30);//自适应

		JScrollPane pCenter = new JScrollPane(infoTable);//创建垂直滚动面板
		this.add(pNorth, "North");
		this.add(pCenter, "Center");
		this.add(pSouth, "South");

		this.setTitle("学生信息管理系统");
		this.setSize(800, 450);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public static void flashInfo() {
		Connect dbconn = new Connect();
		Statement stmt = null;
		ResultSet rs = null;
		info.clear();
		try {
			stmt = dbconn.getConnection().createStatement();//创建一个 Statement 对象,封装 SQL 语句发送给数据库
			rs = stmt.executeQuery("select * from my_address_book");//下达命令执行查询语句并且存放在ResultSet对象中
			while (rs.next()) {
				Vector<String> row = new Vector<String>();
				row.add(rs.getString(1));
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
				row.add(rs.getString(5));
				row.add(rs.getString(6));
				row.add(rs.getString(7));
				info.add(row);
			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
				}
				if (rs != null) {
					rs.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public void actionPerformed(ActionEvent e) {
		int rowNum = infoTable.getSelectedRow();//返回第一个选定行的索引
		if (rowNum != -1) {
			PersonInfo = new HashMap<String, String>();
			//将值插入HasMap中
			PersonInfo.put("id", (String) infoTable.getValueAt(rowNum, 0));//返回表格row和column位置的单元格值
			PersonInfo.put("name", (String) infoTable.getValueAt(rowNum, 1));
			PersonInfo.put("sex", (String) infoTable.getValueAt(rowNum, 2));
			PersonInfo.put("telephone", (String) infoTable.getValueAt(rowNum, 3));
			PersonInfo.put("number", (String) infoTable.getValueAt(rowNum, 4));
			PersonInfo.put("birthday", (String) infoTable.getValueAt(rowNum, 5));
			PersonInfo.put("note", (String) infoTable.getValueAt(rowNum, 6));
		}

		if (e.getSource() == searchBtn) {//搜索
			String keyStr = keyText.getText();
			searchInfo(keyStr);
		} else if (e.getSource() == createBtn) {//新建
			MyDialog InsertPane = new MyDialog("新建学生信息", new HashMap<String, String>());
			InsertPane.setVisible(true);
		} else if (e.getSource() == updateBtn) {//修改
			if (rowNum == -1) {
				JOptionPane.showMessageDialog(null, "请选择学生");//提示弹窗
			}
			MyDialog UpdatePane = new MyDialog("修改学生信息", PersonInfo);
			UpdatePane.setVisible(true);
		} else if (e.getSource() == deleteBtn) {//删除
			if (rowNum == -1) {
				JOptionPane.showMessageDialog(null, "请选择学生");//提示弹窗
			}
			MyDialog DeletePane = new MyDialog("删除学生信息", PersonInfo);
			DeletePane.setVisible(true);
		}else if(e.getSource()==exitBtn) {//退出
			this.setVisible(false);
		}
	}

	protected void searchInfo(String key) {//搜索
		Connect dbconn = new Connect();
		Statement stmt = null;
		ResultSet rs = null;
		try {
			stmt = dbconn.getConnection().createStatement();
			String sql = "select * from my_address_book where name like'%" + key + "%'";
			/*String sql2 = "select * from my_address_book where sex like'%" + key + "%'";
			String sql3 = "select * from my_address_book where telephone like'%" + key + "%'";*/
			//String sql4 = "select * from my_address_book where number like'%" + key + "%'";
			/*String sql5 = "select * from my_address_book where birthday like'%" + key + "%'";
			String sql6 = "select * from my_address_book where note like'%" + key + "%'";*/
			
			rs = stmt.executeQuery(sql);
			/*rs = stmt.executeQuery(sql2);
			rs = stmt.executeQuery(sql3);*/
			//rs = stmt.executeQuery(sql4);
			/*rs = stmt.executeQuery(sql5);
			rs = stmt.executeQuery(sql6);*/
			info.clear();
			while (rs.next()) {
				Vector<String> row = new Vector<String>();//创建自增长数组
				row.add(rs.getString(1));//向Vector中添加值
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
				row.add(rs.getString(5));
				row.add(rs.getString(6));
				row.add(rs.getString(7));
				info.add(row);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
				}
				if (rs != null) {
					rs.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);//构造一个 DefaultTableModel,并通过将 data 和 columnNames 传递到 setDataVector 方法来初始化该表。
			StudentSystem.infoTable.setModel(model);//数据绑定
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);

			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}

	public static void main(String[] args) {
		new StudentSystem();
	}
}

MyDialog.java文章来源地址https://www.toymoban.com/news/detail-765029.html

package com.txl;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class MyDialog extends JDialog implements ActionListener {

	private static final long serialVersionUID = 1L;//把java对象序列化而后进行保存
	private Connect dbconn = new Connect();
	private static String id;
	private JPanel pCenter, pSouth;
	private JLabel nameLab, sexLab, mailLab, birthLab, phoneLab,noteLab;
	private JTextField nameText, mailText, birthText, phoneText,noteText;
	private JComboBox<String> sex;
	private JButton yesBtn, noBtn;
	public MyDialog() {}
	
	public MyDialog(String title, Map<String, String> info) {
		id = info.get("id");
		if("删除联系人".equals(title)) {
			deletePerson();
		}else {
			Font font = new Font("宋体", Font.BOLD, 14);
			String[] sexType = { "-请选择-","男", "女" };//下拉列表组件添加内容
			pCenter = new JPanel();
			pCenter.setLayout(new GridLayout(5, 1));
			nameLab = new JLabel("姓名:");
			sexLab = new JLabel("性别:");
			mailLab = new JLabel("学号:");
			birthLab = new JLabel("生日:");
			phoneLab = new JLabel("电话:");
			noteLab = new JLabel("政治面貌:");
			nameLab.setFont(font);
			sexLab.setFont(font);
			mailLab.setFont(font);
			birthLab.setFont(font);
			phoneLab.setFont(font);
			noteLab.setFont(font);
			nameText = new JTextField(10);
			mailText = new JTextField(10);
			birthText = new JTextField(10);
			phoneText = new JTextField(10);
			noteText = new JTextField(10);
			sex = new JComboBox<String>(sexType);

			JPanel jp1 = new JPanel();
			jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
			jp1.add(nameLab);
			jp1.add(nameText);

			JPanel jp5 = new JPanel();
			jp5.setLayout(new FlowLayout(FlowLayout.LEFT));
			jp5.add(sexLab);
			jp5.add(sex);
			nameText.setText(info.get("name"));
			sex.setSelectedItem(info.get("sex"));

			JPanel jp2 = new JPanel();
			jp2.setLayout(new FlowLayout(FlowLayout.LEFT));
			jp2.add(mailLab);
			jp2.add(mailText);
			mailText.setText(info.get("number"));

			JPanel jp3 = new JPanel();
			jp3.setLayout(new FlowLayout(FlowLayout.LEFT));
			jp3.add(birthLab);
			jp3.add(birthText);
			birthText.setText(info.get("birthday"));

			JPanel jp4 = new JPanel();
			jp4.setLayout(new FlowLayout(FlowLayout.LEFT));
			jp4.add(phoneLab);
			jp4.add(phoneText);
			phoneText.setText(info.get("telephone"));
			
			JPanel jp6 = new JPanel();
			jp6.setLayout(new FlowLayout(FlowLayout.LEFT));
			jp6.add(noteLab);
			jp6.add(noteText);
			noteText.setText(info.get("note"));
			
			pCenter.add(jp1);
			pCenter.add(jp5);
			pCenter.add(jp2);
			pCenter.add(jp3);
			pCenter.add(jp4);
			pCenter.add(jp6);

			pSouth = new JPanel();
			yesBtn = new JButton("以数据库保存");
			yesBtn.addActionListener(this);
			noBtn = new JButton("以文件保存");
			noBtn.addActionListener(this);
			pSouth.add(yesBtn);
			pSouth.add(noBtn);

			this.add(pCenter, "Center");
			this.add(pSouth, "South");

			this.setTitle(title);
			this.setSize(400, 450);
			this.setLocationRelativeTo(null);
			this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		}
	}

	public void actionPerformed(ActionEvent e) {//系统功能按钮监听器
		if (e.getSource() == yesBtn) {
			if (this.getTitle().equals("新建学生信息")) {
				dbinsertPerson();
			} else if (this.getTitle().equals("修改学生信息")) {
				updatePerson();
			} else if (this.getTitle().equals("删除学生信息")) {
				deletePerson();
			}
		} else if (e.getSource() == noBtn) {
			fileinsertPerson();
		}
	}

	public void insertPerson() {
		if (nameText.getText().isEmpty()) {
			JOptionPane.showMessageDialog(null, "请输入姓名!");//提示弹窗
			return;
		}
	}

	public void dbinsertPerson(){//将新建的学生信息写入数据库的表中
		boolean flag=true;
		String sql = "insert into my_address_book(name, sex, telephone, number, birthday, note)value(?,?,?,?,?,?)";
		try {
			//PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能
			PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);
			pstmt.setString(1, nameText.getText());
			pstmt.setString(2, (String) sex.getSelectedItem());
			pstmt.setString(3, phoneText.getText());
			pstmt.setString(4, mailText.getText());
			pstmt.setString(5, birthText.getText());
			pstmt.setString(6, noteText.getText());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "新建学生信息失败!");//提示弹窗
			flag = false;
		} finally {
			dispose();
			if (flag) {
				JOptionPane.showMessageDialog(null, "新建学生信息成功!");//提示弹窗
			}
			StudentSystem.flashInfo();//将数据写入数据库
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);

			StudentSystem.infoTable.setModel(model);
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);
			
			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}
	
	public void fileinsertPerson(){//将新建的学生信息写入文件中
		boolean flag=true;
		try {
			StringBuffer sbf=new StringBuffer();
			sbf.append(nameText.getText()).append(" ")
			.append((String) sex.getSelectedItem()).append(" ")
			.append(phoneText.getText()).append(" ")
			.append(mailText.getText()).append(" ")
			.append(birthText.getText()).append(" ")
			.append(noteText.getText());
			File file = new File("information.txt");
            FileOutputStream fos = null;
            if(!file.exists()){
                file.createNewFile();//如果文件不存在,就创建该文件
                fos = new FileOutputStream(file);//首次写入获取
            }else{
                //如果文件已存在,就在文件末尾追加写入
                fos = new FileOutputStream(file,true);
            }
            OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");//指定以UTF-8格式写入文件
            osw.write(sbf.toString());
            osw.write("\r\n");
            osw.close();
		} catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "新建学生信息失败!");//提示弹窗
			flag = false;
		} finally {
			dispose();
			if (flag) {
				JOptionPane.showMessageDialog(null, "新建学生信息成功!");//提示弹窗
			}
		}
	}
	
	public void deletePerson() {//删除信息
		String sql = "delete from my_address_book where id=?";

		try {
			//PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能
			PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);
			pstmt.setString(1, id);
			pstmt.executeUpdate();
		} 
		catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dispose();
			StudentSystem.flashInfo();
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);
			JOptionPane.showMessageDialog(null, "删除成功!");
			StudentSystem.infoTable.setModel(model);
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);

			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}

	public void updatePerson() {//修改信息
		if (nameText.getText().isEmpty()) {
			JOptionPane.showMessageDialog(null, "请输入姓名!");//提示弹窗
		}
		String sql = "update my_address_book set name=?,sex=?,telephone=?,number=?,birthday=?,note=? where id=?";

		try {
			//PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能
			PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);
			pstmt.setString(1, nameText.getText());
			pstmt.setString(2, (String) sex.getSelectedItem());
			pstmt.setString(3, phoneText.getText());
			pstmt.setString(4, mailText.getText());
			pstmt.setString(5, birthText.getText());
			pstmt.setString(6, noteText.getText());
			pstmt.setString(7, id);
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dispose();
			StudentSystem.flashInfo();
			DefaultTableModel model = new DefaultTableModel(StudentSystem.info, StudentSystem.column);
			
			StudentSystem.infoTable.setModel(model);
			TableColumn column1 = StudentSystem.infoTable.getColumnModel().getColumn(0);
			column1.setMaxWidth(40);
			column1.setMinWidth(40);

			TableColumn column3 = StudentSystem.infoTable.getColumnModel().getColumn(2);
			column3.setMaxWidth(40);
			column3.setMinWidth(40);
		}
	}
}

到了这里,关于(解析+源码)基于JAVA Swing+MySQL实现学生信息管理系统(增、删、改、查)数据库/文件存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于java Swing 和 mysql实现的购物管理系统(源码+数据库+说明文档+运行指导视频)

    本项目是一套基于java Swing 和 mysql实现的购物管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,确保可以运行! 技术栈:Jav

    2024年02月10日
    浏览(46)
  • 基于java swing和mysql实现的汽车租赁管理系统(源码+数据库+文档+运行指导视频)

    本项目是一套基于java swing和mysql实现的汽车租赁管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,确保可以运行! 该系统功能

    2024年02月10日
    浏览(50)
  • 基于Java+Swing+Mysql项目信息管理系统

    该系统实现了查看项目列表、新增项目信息、删除项目信息 运行环境:eclipse、idea、jdk1.8 Java+Swing实现学生选课管理系统 Java+Swing实现学校教务管理系统 Java+Swing+sqlserver学生成绩管理系统 Java+Swing用户信息管理系统 Java+Swing实现的五子棋游戏 基于JavaSwing 银行管理系统 Java+Swing

    2024年02月11日
    浏览(50)
  • java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 随着学校规模的

    2024年02月04日
    浏览(67)
  • 基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)

    本项目是一套基于java Swing 和 mysql实现的飞机订票系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,确保可以运行! 技术栈:Jav

    2024年02月11日
    浏览(41)
  • JAVA GUI 学生信息管理系统(Swing)

    一、JAVA GUI 项目介绍 ​ GUI 是指图形用户界面显示的计算机操作用户界面,GUI主要有两个核心库,分别是AWT和Swing,本项目就是使用Swing进行开发。项目基于Swing,使用JDBC操作数据库,并且在程序运行阶段创建数据库表结构信息,可做为JAVA课程实训。 容器 ​ 容器是组件的子

    2024年02月04日
    浏览(57)
  • 基于java+springboot+vue实现的学生信息管理系统(文末源码+Lw+ppt)23-54

     摘  要 人类现已进入21世纪,科技日新月异,经济、信息等方面都取得了长足的进步,特别是信息网络技术的飞速发展,对政治、经济、军事、文化等方面都产生了很大的影响。 利用计算机网络的便利,开发一套基于java的大学生信息管理系统,将会给人们的生活带来更多的

    2024年04月16日
    浏览(43)
  • java swing(GUI) MySQL实现的视频播放器系统源码+运行教程

    今天给大家演示一下由Java swing实现的一款简单的多媒体播放器,项目源码我会放在我的网站上,并配有视频配置教程,保证运行起来的。这个小播放器实现了视频、音频文件的播放、暂停、快进、快退、停止、全屏等功能,还有历史记录功能,调用的是vcl库的播放内核。接下

    2023年04月08日
    浏览(41)
  • 基于Java+Swing+mysql实现垃圾分类管理系统

    该系统实现了 管理员:系统登陆、社区管理、设备管理、垃圾管理 小区负责人:查看垃圾分类信息、垃圾站信息、垃圾运输信息 运行环境 idea、mysql5.7以上、maven 小区负责人 撤诉管理 报修信息 垃圾分类信息 垃圾站管理 垃圾运输信息 Java+Swing实现学生选课管理系统 Java+Swing实

    2024年02月12日
    浏览(72)
  • 学生社团管理系统(Java+Swing+mysql)(超简陋)

    目录 学生社团管理系统(Java+Swing+mysql) 写在前面: 根据需求分析的输入描绘的社团活动管理系统结构图如下: 用户(社团管理员)登录社团活动管理系统DFD图: 其中活动信息的数据字典如下: 概念设计(E-R图) 制作阶段 写在前面:         作为一个计本专业大二的学生,

    2024年02月08日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包