管理系统示例(学生管理系统JAVA GUI+MYSQL)

学生管理系统JAVA GUI+MYSQL

目录

数据库连接类

student实体类

登录

功能界面

学生管理:

添加信息

删除信息

修改信息

信息查询

成绩查询

扫描二维码关注公众号,回复: 5113340 查看本文章

运行结果

需求:学生信息的增加删除修改,查询学生信息和成绩

开发环境:elipse+MYSQL5.7

数据库表的设计:

students信息表

grades成绩表:

实现:

数据库连接类

package com.database;

import java.sql.*;


/**
 * 数据库连接类
 * @author Administrator
 *
 */
public class DBConnection {
	private static Connection con = null;
	private static String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8&useSSL=false";
	private static String user = "root";
	private static String password = "root";

	public static Connection getCon() {
		//加载数据库驱动
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			System.out.println("加载数据库驱动失败!");
			e.printStackTrace();
		}
		
		//获取数据库连接
		try {
			con = DriverManager.getConnection(url, user, password);
			if(con !=null) {
				System.out.println("数据库连接成功!");
			}
		} catch (SQLException e) {
			System.out.println("数据库连接失败!");
			e.printStackTrace();
		}
		//返回Connection对象
		return con;
	}
		
	
}

student实体类

package com.login;

public class Students {
	private Integer id;
	private String name;
	private String sex;
	private String birthday;
	private String classes;
	private String academy;
	private float math;
	private float chniese;
	
	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 float getMath() {
		return math;
	}

	public void setMath(float math) {
		this.math = math;
	}

	public float getChniese() {
		return chniese;
	}

	public void setChniese(float chniese) {
		this.chniese = chniese;
	}

	@Override
	public String toString() {
		
		return id+"  "+name+"  "+sex;
	}
	
	
}

登录

package com.login;

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import com.database.*;
import com.management.StudentManagement;

import javax.swing.*;

/**
 * 登录
 * @author Administrator
 *
 */
public class Login extends Frame implements ActionListener{
	private static final long serialVersionUID = 1L;
	//记录登录次数
	private int flag = 0;
	//创建标签、文本框、密码框对象
	JPanel panel = new JPanel();
	JLabel JLUserName = new JLabel("用户名:");
	JLabel JLUserPaw = new JLabel("密    码:");
	JTextField JTUserName = new JTextField();
	JPasswordField JTUserPaw = new JPasswordField();
	
	//创建按钮对象
	JButton login = new JButton("登录");
	JButton cancle = new JButton("取消");
	JLabel identity = new JLabel("身    份:");
	//创建下拉列表框对象
	JComboBox<String> JC = new JComboBox<String>();
	
	public Login() {
		this.setTitle("管理系统示例1.0(增删改查)");
		this.setLayout(null);
		
		this.setResizable(false);    //禁止改变窗口大小

		//姓名
		JLUserName.setBounds(100, 50, 60, 20);
		JTUserName.setBounds(200, 50, 100, 20);
		this.add(JLUserName);
		this.add(JTUserName);
		
		//密码
		JLUserPaw.setBounds(100, 100, 60, 20);
		JTUserPaw.setBounds(200, 100, 100, 20);
		this.add(JLUserPaw);
		this.add(JTUserPaw);
		
		//身份
		identity.setBounds(100, 150, 60, 20);
		JC.setBounds(200, 150, 100, 20);
		JC.addItem(new String("学生"));
		JC.addItem(new String("教师"));
		this.add(identity);
		this.add(JC);
		
		//登录、取消
		login.setBounds(100, 200, 60, 20);
		cancle.setBounds(240, 200, 60, 20);
		login.addActionListener(this);
		cancle.addActionListener(this);
		this.add(login);
		this.add(cancle);
		
		this.setVisible(true);
		this.setSize(400, 250); //设置窗口的大小
		this.setLocationRelativeTo(null);//窗体居中显示
		
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
				
			}
		});
		
	}

	//身份验证
	private boolean logindb(String password, String sql) {
		//查询数据库
		ResultSet rs = null;

		//验证用户名是否存在
		try {
			rs = DBConnection.getCon().createStatement().executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		//验证密码是否存在
		try {
			if(rs.next()&&rs.getString(1).equals(password)) {
				rs.close();
				return true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return false;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		
		//处理登录事件
		if(e.getSource() == login) {
			
			//将文本框中包含的文本传给字符串name
			String name = JTUserName.getText();
			String password = new String(JTUserPaw.getPassword());
			
			//将当前所选项传给字符串box
			String box = (String)JC.getSelectedItem();
			String loginsql = null;
			
			if(box.equals("学生")) {
				loginsql ="select password from students where name ='"+name+"'";
				
				//登录成功后进入,否则返回提示信息
				if(logindb(password,loginsql)) {
					this.setVisible(false);
					new StudentManagement();
					System.out.println("学生登录成功!");
				}else {
					flag++;
					if(flag >= 3) {
						JOptionPane.showMessageDialog(this, "输入三次错误,退出登录!","提示信息",JOptionPane.WARNING_MESSAGE);
						System.exit(0);
					}
					
					JOptionPane.showMessageDialog(this, "输入有误,请重新输入!","提示信息",JOptionPane.WARNING_MESSAGE);
				}
					
			}
			else if(box.equals("教师")) 
			{
				loginsql ="select password from students where name ='"+name+"'";
				if(logindb(password,loginsql))
					System.out.println("教师登录成功!");
			}
			
		}
		
		//处理取消事件
		if(e.getSource() == cancle) {
			System.out.println("退出成功!");
			System.exit(0);
		}
		
	}
	

	public static void main(String[] args) {
		//new Login();
		new StudentManagement();
	}
	
}

功能界面

package com.management;

import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.*;

public class StudentManagement extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	
	JMenuBar menubar = new JMenuBar(); //创建菜单栏对象
	//一级菜单
	JMenu informationMenu = new JMenu("信息");		
	JMenu searchMenu = new JMenu("查询");	
	JMenu otherMenu = new JMenu("其他");	
	
	JMenuItem addMenu = new JMenuItem("增加信息");
	JMenuItem deleteMenu = new JMenuItem("删除信息");
	JMenuItem alterMenu = new JMenuItem("修改信息");
	
	JMenuItem searchInforMenu = new JMenuItem("信息查询");
	JMenuItem searchGradeMenu = new JMenuItem("成绩查询");
	
	JMenuItem quitMenu = new JMenuItem("退出");
	JLabel label = new JLabel();
	
	
	public StudentManagement() {
		this.setTitle("学生基本信息");
		this.setLayout(new CardLayout());
		this.setJMenuBar(menubar);	//将菜单栏组件添加到容器
		this.setResizable(false);	//设置窗口大小不可变
		//this.setUndecorated(true);   //设置frame边框不可见
		//一级菜单添加到菜单栏及事件监听
		menubar.add(informationMenu);
		menubar.add(searchMenu);
		menubar.add(otherMenu);
		informationMenu.addActionListener(this);
		searchMenu.addActionListener(this);
		otherMenu.addActionListener(this);
		
		
		//二级菜单添加及事件监听
		informationMenu.add(addMenu);
		informationMenu.add(deleteMenu);
		informationMenu.add(alterMenu);
		addMenu.addActionListener(this);
		deleteMenu.addActionListener(this);
		alterMenu.addActionListener(this);
		
		searchMenu.add(searchInforMenu);
		searchMenu.add(searchGradeMenu);
		searchInforMenu.addActionListener(this);
		searchGradeMenu.addActionListener(this);
		
		otherMenu.add(quitMenu);
		quitMenu.addActionListener(this);
		
		label.setIcon(new ImageIcon("images/主界面.jpg"));
		this.add(label);
		
		this.setVisible(true);
		this.setSize(580, 400); //设置窗口的大小
		this.setLocationRelativeTo(null);//窗体居中显示
		
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
				
			}
		});
		
	}
	
	@Override
	/**
	 * 事件监听
	 */
	public void actionPerformed(ActionEvent e) {
		
		//增加信息
		if(e.getSource() == addMenu) {
			new AddManagement();
		}
		//删除信息
		if(e.getSource() == deleteMenu) {
			new DeleteManagement();
		}
		//修改信息
		if(e.getSource() == alterMenu) {
			new AlterManagement();
		}
		//查询基本信息
		if(e.getSource() == searchInforMenu) {
			new SearchManagement();
		}
		
		//查询成绩
		if(e.getSource() == searchGradeMenu) {
			new SearchGrade();
		}
		
		//退出
		if(e.getSource() == quitMenu) {
			System.exit(0);
			//new UsingExit().setVisible(true);
		}
	}
	
}

学生管理:

添加信息

package com.management;

import java.awt.Color;
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 com.database.DBConnection;


/**
 * 添加信息
 * @author Administrator
 *
 */
public class AddManagement extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;

	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.setBackground(Color.red);  //label前景色为红色
		label.setFont(new Font("宋体", Font.HANGING_BASELINE, 19));
		label.setBounds(170, 20, 100, 20);
		this.add(label);
		//学号
		JLNumber.setBounds(120, 60, 30, 25);
		JTNumber.setBounds(150, 60, 120, 25);
		this.add(JLNumber);
		this.add(JTNumber);
		
		//姓名
		JLName.setBounds(120, 100, 30, 20);
		JTName.setBounds(150, 100, 120, 25);
		this.add(JLName);
		this.add(JTName);
		
		//性别
		JLSex.setBounds(120,140,30,20);
		radioBtn01.setBounds(150, 140, 60, 20);
		radioBtn02.setBounds(210, 140, 60, 20);
		btnGroup.add(radioBtn01);
		btnGroup.add(radioBtn02);
		this.add(JLSex);
		this.add(radioBtn01);
		this.add(radioBtn02);

		//生日
		JLBirth.setBounds(120, 180, 30, 20);
		JTBirth.setBounds(150, 180, 120, 25);
		this.add(JLBirth);
		this.add(JTBirth);
		
		//班级
		JLClass.setBounds(120, 220, 30, 20);
		JTClass.setBounds(150, 220, 120, 25);
		this.add(JLClass);
		this.add(JTClass);

		//学院
		JLAcademy.setBounds(120, 260, 30, 20);
		JTAcademy.setBounds(150, 260, 120, 25);
		this.add(JLAcademy);
		this.add(JTAcademy);
		
		addBtn.setBounds(100, 320, 60, 25);
		readdBtn.setBounds(170, 320, 60, 25);
		cancelBtn.setBounds(240, 320, 60, 25);
		//添加监听
		addBtn.addActionListener(this);
		readdBtn.addActionListener(this);
		cancelBtn.addActionListener(this);
		this.add(addBtn);
		this.add(readdBtn);
		this.add(cancelBtn);
		
		this.setVisible(true);	
		this.setSize(400, 400); //设置窗口的大小
		this.setLocationRelativeTo(null);//窗体居中显示
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() == addBtn) {
			
			Integer snumber = Integer.parseInt(JTNumber.getText());
			String sname = JTName.getText();
			String ssex = "女";
			String sbirth = JTBirth.getText();
			String sclass = JTClass.getText();
			String sacademy = JTAcademy.getText();
				
			
			if(radioBtn01.isSelected()) {
				ssex = "男";
			}
			//检索学生
			String sql = "select * from students where id='"+snumber+"'";
			//打开数据库连接并创建Statement对象
			try {
				Statement stm = DBConnection.getCon().createStatement();
				ResultSet rs = stm.executeQuery(sql);
				if(rs.next()) {
					JOptionPane.showMessageDialog(null, "该账号已存在!", "提示信息", JOptionPane.WARNING_MESSAGE);
				}
				else {
					//插入一条记录
					sql = "insert into students values('"+snumber+"','"+sname+"','"+ssex+"','"+sbirth+"','"+sclass+"','"+sacademy+"','"+snumber+"')";
					int i = stm.executeUpdate(sql);
					if(i>0) {
						JOptionPane.showMessageDialog(null, "添加成功!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
					}else {
						JOptionPane.showMessageDialog(null, "添加失败!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
					}
					
				}
				stm.close();
				
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			
		}
		
		if(e.getSource() == readdBtn) {
			JTNumber.setText(null);
			JTName .setText(null);
			JTClass.setText(null);
			JTAcademy.setText(null);
			JTBirth.setText(null);
		}
		
		if(e.getSource() == cancelBtn) {
			setVisible(false);
		}
		
	}

}

删除信息

package com.management;

import java.awt.Color;
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.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import com.database.DBConnection;

/**
 * 删除信息
 * @author Administrator
 *
 */
public class DeleteManagement extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;

	JLabel label = new JLabel("删除信息",JLabel.CENTER);
	
	JLabel JLNumber = new JLabel("学号");
	JTextField JTNumber = new JTextField();
	
	JLabel JLName = new JLabel("姓名");
	JTextField JTName = new JTextField();
	
	JButton ensureBtn = new JButton("确定");
	JButton nextBtn = new JButton("重置");
	JButton cancelBtn = new JButton("取消");
	
	public DeleteManagement() {
		this.setTitle("删除信息");
		this.setLayout(null);
		label.setBackground(Color.red);  //label前景色为红色
		label.setFont(new Font("宋体", Font.HANGING_BASELINE, 19));
		label.setBounds(170, 20, 100, 20);
		this.add(label);
		//学号
		JLNumber.setBounds(120, 60, 30, 25);
		JTNumber.setBounds(150, 60, 120, 25);
		this.add(JLNumber);
		this.add(JTNumber);
		
		//姓名
		JLName.setBounds(120, 100, 30, 20);
		JTName.setBounds(150, 100, 120, 25);
		this.add(JLName);
		this.add(JTName);
		
		
		ensureBtn.setBounds(100, 320, 60, 25);
		nextBtn.setBounds(170, 320, 60, 25);
		cancelBtn.setBounds(240, 320, 60, 25);
		//添加事件监听
		ensureBtn.addActionListener(this);
		nextBtn.addActionListener(this);
		cancelBtn.addActionListener(this);
		this.add(ensureBtn);
		this.add(nextBtn);
		this.add(cancelBtn);
		
		this.setVisible(true);	
		this.setSize(400, 400); //设置窗口的大小
		this.setLocationRelativeTo(null);//窗体居中显示
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == ensureBtn) {
			
			Integer snumber = Integer.parseInt(JTNumber.getText());
			
			//检索学生
			String sql = "select * from students where id='"+snumber+"'";
			//打开数据库连接并创建Statement对象
			try {
				Statement stm = DBConnection.getCon().createStatement();
				ResultSet rs = stm.executeQuery(sql);
				if(rs.next()) {
					//删除一条记录
					sql = "delete from students where id ='"+snumber+"'";
					int i = stm.executeUpdate(sql);
					if(i>0) {
						JOptionPane.showMessageDialog(null, "删除成功!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
					}else {
						JOptionPane.showMessageDialog(null, "删除失败!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
					}
				}
				else {
					JOptionPane.showMessageDialog(null, "该账号不存在!", "提示信息", JOptionPane.WARNING_MESSAGE);					
				}
				stm.close();
				
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		}
		
		if(e.getSource() == nextBtn) {
			JTNumber.setText(null);
			JTName .setText(null);
		}
		
		if(e.getSource() == cancelBtn) {
			setVisible(false);
		}
		
	}

}

修改信息

package com.management;

import java.awt.Color;
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.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import com.database.DBConnection;

/**
 * 修改信息
 * @author Administrator
 *
 */
public class AlterManagement extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;

	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 ensureBtn = new JButton("确定");
	JButton readdBtn = new JButton("重置");
	JButton cancelBtn = new JButton("取消");
	
	public AlterManagement() {
		this.setTitle("修改信息");
		this.setLayout(null);
		label.setBackground(Color.red);  //label前景色为红色
		label.setFont(new Font("宋体", Font.HANGING_BASELINE, 19));
		label.setBounds(170, 20, 100, 20);
		this.add(label);
		//学号
		JLNumber.setBounds(120, 60, 30, 25);
		JTNumber.setBounds(150, 60, 120, 25);
		this.add(JLNumber);
		this.add(JTNumber);
		
		//姓名
		JLName.setBounds(120, 100, 30, 20);
		JTName.setBounds(150, 100, 120, 25);
		this.add(JLName);
		this.add(JTName);
		
		//性别
		JLSex.setBounds(120,140,30,20);
		radioBtn01.setBounds(150, 140, 60, 20);
		radioBtn02.setBounds(210, 140, 60, 20);
		btnGroup.add(radioBtn01);
		btnGroup.add(radioBtn02);
		this.add(JLSex);
		this.add(radioBtn01);
		this.add(radioBtn02);

		//生日
		JLBirth.setBounds(120, 180, 30, 20);
		JTBirth.setBounds(150, 180, 120, 25);
		this.add(JLBirth);
		this.add(JTBirth);
		
		//班级
		JLClass.setBounds(120, 220, 30, 20);
		JTClass.setBounds(150, 220, 120, 25);
		this.add(JLClass);
		this.add(JTClass);

		//学院
		JLAcademy.setBounds(120, 260, 30, 20);
		JTAcademy.setBounds(150, 260, 120, 25);
		this.add(JLAcademy);
		this.add(JTAcademy);
		
		ensureBtn.setBounds(100, 320, 60, 25);
		readdBtn.setBounds(170, 320, 60, 25);
		cancelBtn.setBounds(240, 320, 60, 25);
		//添加监听
		ensureBtn.addActionListener(this);
		readdBtn.addActionListener(this);
		cancelBtn.addActionListener(this);
		this.add(ensureBtn);
		this.add(readdBtn);
		this.add(cancelBtn);
		
		this.setVisible(true);	
		this.setSize(400, 400); //设置窗口的大小
		this.setLocationRelativeTo(null);//窗体居中显示
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == ensureBtn) {
			
			Integer snumber = Integer.parseInt(JTNumber.getText());
			String sname = JTName.getText();
			String ssex = "女";
			String sbirth = JTBirth.getText();
			String sclass = JTClass.getText();
			String sacademy = JTAcademy.getText();
				
			
			if(radioBtn01.isSelected()) {
				ssex = "男";
			}
			//检索学生
			String sql = "select * from students where id='"+snumber+"'";
			//打开数据库连接并创建Statement对象
			try {
				Statement stm = DBConnection.getCon().createStatement();
				ResultSet rs = stm.executeQuery(sql);
				if(rs.next()) {
					//更新一条记录
					sql = "update students set name ='"+sname+"',sex='"+ssex+"',birthday='"+sbirth+"',class='"+sclass+"',academy='"+sacademy+"'where id="+snumber;
					int i = stm.executeUpdate(sql);
					if(i>0) {
						JOptionPane.showMessageDialog(null, "修改成功!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
					}else {
						JOptionPane.showMessageDialog(null, "修改失败!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
					}
				}
				else {
					JOptionPane.showMessageDialog(null, "该账号不存在!", "提示信息", JOptionPane.WARNING_MESSAGE);
					
				}
				stm.close();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			
		}
		
		if(e.getSource() == readdBtn) {
			JTNumber.setText(null);
			JTName .setText(null);
			JTClass.setText(null);
			JTAcademy.setText(null);
			JTBirth.setText(null);
		}
		
		if(e.getSource() == cancelBtn) {
			setVisible(false);
		}
		
	}

}

信息查询

package com.management;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

import javax.swing.*;

import com.database.DBConnection;
import com.login.Students;


public class SearchManagement extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;
	
	private Object [][]rowData;
	private Object []column = {"学号","姓名","性别","生日","班级","学院"};  //表头
	
	JPanel epanel = new JPanel();
	JPanel spanel = new JPanel();
	JPanel wpanel = new JPanel();
	
	JLabel JLNumber = new JLabel("学号");
	JTextField JTNumber = new JTextField(16);
	
	JButton searchBtn = new JButton("查询个人");
	JButton searchAllBtn = new JButton("查询全部");
	JButton nextBtn = new JButton("重置");
	JButton cancelBtn = new JButton("取消");
		
	
	public SearchManagement() {
	
		this.setTitle("查询信息");
		this.setLayout(new BorderLayout());
		//标签和输入框
		wpanel.add(searchAllBtn);
		wpanel.add(JLNumber);
		wpanel.add(JTNumber);
		
		//三个按钮添加事件
		searchAllBtn.addActionListener(this);
		searchBtn.addActionListener(this);
		nextBtn.addActionListener(this);
		cancelBtn.addActionListener(this);
		
		
		epanel.add(searchBtn);
		epanel.add(nextBtn);
		epanel.add(cancelBtn);
			
		
		this.add(epanel, BorderLayout.EAST);
		this.add(wpanel, BorderLayout.WEST);
		
		this.pack();
		this.setLocationRelativeTo(null);//窗体居中显示
		this.setVisible(true);
	}
	
	/**
	 * 设置表格的样式
	 * @param num
	 */
	public void setTable(int num) {
		
		this.setVisible(false);
		
		JFrame jf =new JFrame("查询结果");
		jf.setLocationRelativeTo(null);
		JPanel panel = new JPanel();
		
		//表格所有行
		Object [][]rowData = queryData(num);
		
		JTable table = new JTable(rowData,column);
		//设置表格内容颜色
		table.setForeground(Color.BLACK);	//字体颜色
		table.setFont(new Font(null, Font.PLAIN, 14));	//字体样式
		table.setSelectionBackground(Color.DARK_GRAY);	//选中后字体背景
		table.setSelectionForeground(Color.LIGHT_GRAY);	//选中后字体颜色
		table.setGridColor(Color.GRAY);	//网格颜色

		//设置表头
		//设置表头字体样式
		table.getTableHeader().setFont(new Font(null, Font.BOLD, 14));
		//表头名称字体颜色
		table.getTableHeader().setForeground(Color.RED);
		//不允许手动改变列宽
		table.getTableHeader().setResizingAllowed(false);
		//不允许拖动重新排列各列
		table.getTableHeader().setReorderingAllowed(false);

		//设置行高30
		table.setRowHeight(30);
		//列宽设置为100
		table.getColumnModel().getColumn(0).setPreferredWidth(80);
		table.getColumnModel().getColumn(5).setPreferredWidth(180);

		//设置滚动面板视口大小
		table.setPreferredScrollableViewportSize(new Dimension(550,400));
		//把表格放到滚动面板中(自动添加到顶部)
		JScrollPane scrollPane = new JScrollPane(table);
		panel.add(scrollPane);
		jf.add(panel);
		
		jf.pack();
		jf.setContentPane(panel);
		jf.setVisible(true);			
	}
	
	
	/**
	 * 查询所有用户数据
	 * @return	查找到的数据生成的list集合
	 */
	public List<Students> queryAllUser(){

		Connection conn=null;
		//预编译语句
		PreparedStatement ps=null;
		//结果集
		ResultSet rs=null;

		String sql="select * from students";
		List<Students> list=new ArrayList<Students>();
		try {
			conn=DBConnection.getCon();
			//获取结果集
			ps=conn.prepareStatement(sql);
			rs=ps.executeQuery();
			
			while(rs.next()){
				Students student=new Students();
				student.setId(rs.getInt(1));
				student.setName(rs.getString(2));
				student.setSex(rs.getString(3));
				student.setBirthday(rs.getString(4));
				student.setClasses(rs.getString(5));
				student.setAcademy(rs.getString(6));

				list.add(student);
			}
			conn.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;
	}

	/**
	 * 查询一个用户数据(用户id)
	 * @return	查找到的用户数据返回
	 */
	public Students queryUser(Integer id){

		Connection conn=null;
		//预编译语句
		PreparedStatement ps=null;
		//结果集
		ResultSet rs=null;

		Students student = new Students();
		String sql="select * from students where id="+id;

		try {
			conn=DBConnection.getCon();
			//获取结果集
			ps=conn.prepareStatement(sql);
			rs=ps.executeQuery();
			
			if(rs.next()){
				
					student.setId(rs.getInt(1));
					student.setName(rs.getString(2));
					student.setSex(rs.getString(3));
					student.setBirthday(rs.getString(4));
					student.setClasses(rs.getString(5));
					student.setAcademy(rs.getString(6));
				
				
			}
			conn.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		System.out.println(student.toString());
		
		return student;
	}

    /**
     * 生成表格数据
     * @return 表格数据二维数组
     */
    public Object[][] queryData(int num){
		
		if(num == 0) {
			List<Students> list=queryAllUser();
			rowData=new Object[list.size()][column.length];
			System.out.println("查询全部信息");
			for(int i=0;i<list.size();i++){
				for(int j=0;j<column.length;j++) {
					rowData[i][0]=list.get(i).getId();
					rowData[i][1]=list.get(i).getName();
					rowData[i][2]=list.get(i).getSex();
					rowData[i][3]=list.get(i).getBirthday();
					rowData[i][4]=list.get(i).getClasses();
					rowData[i][5]=list.get(i).getAcademy();
					System.out.print(rowData[i][j]+"    ");
				}
				System.out.println();
			}

        }else {
        	Students student = new Students();
			student = queryUser(num);
			//行设置为1,防止数组越界
			rowData=new Object[1][column.length];
			rowData[0][0]=student.getId();
			rowData[0][1]=student.getName();
			rowData[0][2]=student.getSex();
			rowData[0][3]=student.getBirthday();
			rowData[0][4]=student.getClasses();
			rowData[0][5]=student.getAcademy();
		}
		return rowData;
    }


	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == searchBtn) {
				int num = Integer.parseInt(JTNumber.getText());
				if(num >0) 
					setTable(num);
				else
					JOptionPane.showMessageDialog(null, "输入数据错误!");
		}
		if(e.getSource() == searchAllBtn) {
			JTNumber.setText("0");
			setTable(0);
		}
		
		if(e.getSource() == nextBtn) {
			JTNumber.setText(null);
		}
		
		if(e.getSource() == cancelBtn) {
			this.setVisible(false);
		}
		
	}
	
	
	
}

成绩查询

package com.management;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.*;

import com.database.DBConnection;
import com.login.Students;

public class SearchGrade extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	
	private Object [][]rowData;
	private Object []column = {"学号","姓名","语文","数学","班级","学院"};  //表头
	JLabel JLNumber = new JLabel("学号");
	JTextField JTNumber = new JTextField(16);
	
	JPanel epanel = new JPanel();
	JPanel wpanel = new JPanel();
	
	JButton searchBtn = new JButton("查询个人");
	JButton searchAllBtn = new JButton("查询全部");
	JButton nextBtn = new JButton("重置");
	JButton cancelBtn = new JButton("取消");
	
	public SearchGrade() {
		this.setTitle("查询成绩");
		this.setLayout(new BorderLayout());
		this.setLocation(400, 400);
		//标签和输入框
		wpanel.add(searchAllBtn);
		wpanel.add(JLNumber);
		wpanel.add(JTNumber);
		
		//三个按钮添加事件
		searchAllBtn.addActionListener(this);
		searchBtn.addActionListener(this);
		nextBtn.addActionListener(this);
		cancelBtn.addActionListener(this);
		
		
		epanel.add(searchBtn);
		epanel.add(nextBtn);
		epanel.add(cancelBtn);
			
		
		this.add(epanel, BorderLayout.EAST);
		this.add(wpanel, BorderLayout.WEST);
		
		this.pack();
		this.setLocationRelativeTo(null);//窗体居中显示
		this.setVisible(true);
	}
	
	
	
	/**
	 * 设置表格的样式
	 * @param num
	 */
	public void setTable(int num) {
		
		this.setVisible(false);
		
		JFrame jf =new JFrame("查询结果");
		jf.setLocationRelativeTo(null);
		JPanel panel = new JPanel();
		
		//表格所有行
		Object [][]rowData = queryData(num);
		
		JTable table = new JTable(rowData,column);
		//设置表格内容颜色
		table.setForeground(Color.BLACK);	//字体颜色
		table.setFont(new Font(null, Font.PLAIN, 14));	//字体样式
		table.setSelectionBackground(Color.DARK_GRAY);	//选中后字体背景
		table.setSelectionForeground(Color.LIGHT_GRAY);	//选中后字体颜色
		table.setGridColor(Color.GRAY);	//网格颜色

		//设置表头
		//设置表头字体样式
		table.getTableHeader().setFont(new Font(null, Font.BOLD, 14));
		//表头名称字体颜色
		table.getTableHeader().setForeground(Color.RED);
		//不允许手动改变列宽
		table.getTableHeader().setResizingAllowed(false);
		//不允许拖动重新排列各列
		table.getTableHeader().setReorderingAllowed(false);

		//设置行高30
		table.setRowHeight(30);
		//列宽设置为100
		table.getColumnModel().getColumn(1).setPreferredWidth(80);

		//设置滚动面板视口大小
		table.setPreferredScrollableViewportSize(new Dimension(550,400));
		//把表格放到滚动面板中(自动添加到顶部)
		JScrollPane scrollPane = new JScrollPane(table);
		panel.add(scrollPane);
		jf.add(panel);
		
		jf.pack();
		jf.setContentPane(panel);
		jf.setVisible(true);
				
	}
	
	/**
	 * 查询所有用户数据
	 * @return	查找到的数据生成的list集合
	 */
	public List<Students> queryAllUser(){

		String sql="select * from students,grades where grades.sid="+"students.id";
		List<Students> list=new ArrayList<Students>();
		try {
			Connection conn=DBConnection.getCon();
			//获取结果集
			PreparedStatement ps=conn.prepareStatement(sql);
			ResultSet rs=ps.executeQuery();
			
			while(rs.next()){
				Students student=new Students();
				//跨表列号相加
				student.setId(rs.getInt(1));
				student.setName(rs.getString(2));
				student.setSex(rs.getString(3));
				student.setClasses(rs.getString(5));
				student.setAcademy(rs.getString(6));
				
				student.setMath(rs.getFloat(9));
				student.setChniese(rs.getFloat(10));
				
				list.add(student);
			}
			conn.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;
	}

	/**
	 * 查询一个用户数据(用户id)
	 * @return	查找到的用户数据返回
	 */
	public Students queryUser(Integer snumber){

		Students student = new Students();
		//关联两张表查询
		String sql="select * from students,grades where grades.sid="+"students.id and students.id="+snumber;

		try {
			Statement stm = DBConnection.getCon().createStatement();
			//结果集
			ResultSet rs=stm.executeQuery(sql);
			
			if(rs.next()){
					//跨表列号相加
					student.setId(rs.getInt(1));
					student.setName(rs.getString(2));
					student.setSex(rs.getString(3));
					student.setClasses(rs.getString(5));
					student.setAcademy(rs.getString(6));
					
					student.setMath(rs.getFloat(9));
					student.setChniese(rs.getFloat(10));				
			}
			stm.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return student;
	}
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == searchBtn) {
			int num = Integer.parseInt(JTNumber.getText());
			if(num >0) 
				setTable(num);
			else
				JOptionPane.showMessageDialog(null, "输入数据错误!");
		}
		if(e.getSource() == searchAllBtn) {
			setTable(0);
		}
		
		if(e.getSource() == nextBtn) {
			JTNumber.setText(null);
		}
		
		if(e.getSource() == cancelBtn) {
			this.setVisible(false);
		}
		
	}
		

	 /**
     * 生成表格数据
     * @return 表格数据二维数组
     */
    public Object[][] queryData(int num){
               
		if(!(queryUser(num)==null)) {
			Students student = new Students();
			student = queryUser(num);
			//行设置为1,防止数组越界  "学号","姓名","班级","学院","语文","数学"
			rowData=new Object[1][column.length];
			rowData[0][0]=student.getId();
			rowData[0][1]=student.getName();
			rowData[0][2]=student.getChniese();
			rowData[0][3]=student.getMath();
			rowData[0][4]=student.getClasses();
			rowData[0][5]=student.getAcademy();
			
		}
		
		if(num == 0) {
			List<Students> list=queryAllUser();
			rowData=new Object[list.size()][column.length];
			System.out.println("查询全部信息");
			for(int i=0;i<list.size();i++){
				for(int j=0;j<column.length;j++) {
					rowData[i][0]=list.get(i).getId();
					rowData[i][1]=list.get(i).getName();
					rowData[i][2]=list.get(i).getChniese();
					rowData[i][3]=list.get(i).getMath();
					rowData[i][4]=list.get(i).getClasses();
					rowData[i][5]=list.get(i).getAcademy();
					System.out.print(rowData[i][j]+"    ");
				}
				System.out.println();
			}
        }
		return rowData;
    }



}


运行结果

登录

主界面

添加信息

修改信息

删除信息

查询信息

查询成绩

总结:总体实现MYSQL数据库增删改查功能,界面方面没有仔细制作,功能实现还存在一些BUG,逻辑方面还存在一些问题,总体实现没有问题,细节请忽略。

猜你喜欢

转载自blog.csdn.net/qq_40270579/article/details/82555696