Java+Swing+mysql5实现学生成绩管理系统(带分页)

这是一个使用Java Swing和MySQL5构建的学生成绩管理系统,具备登录、添加、查询、修改和删除成绩等功能。系统详细介绍了环境配置、数据库结构,并提供了关键代码如DBConn.java、LoginFrm.java和Stuscore.java。此外,还展示了系统界面和操作流程。
摘要由CSDN通过智能技术生成


一、系统介绍

1.系统功能

1.登录系统
2.添加学生成绩
3.学生成绩列表
4.查询学生成绩
5.修改学生成绩
6.删除学生成绩
7.退出系统

2.环境配置

JDK版本:1.8
Mysql:5.7

3.数据库

/*
SQLyog Enterprise v12.09 (64 bit)
MySQL - 5.7.14 : Database - swing_stuscore
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`swing_stuscore` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `swing_stuscore`;

/*Table structure for table `stuscore` */

DROP TABLE IF EXISTS `stuscore`;

CREATE TABLE `stuscore` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `chinese` int(11) DEFAULT '0',
  `math` int(11) DEFAULT '0',
  `english` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

/*Data for the table `stuscore` */

insert  into `stuscore`(`id`,`name`,`chinese`,`math`,`english`) values (1,'郭思懿',92,86,98),(2,'翟若冰',82,80,98),(3,'李倩怡',82,75,97),(4,'郑嘉诗',76,63,91),(5,'彭晓茹',81,82,86),(6,'黄伦蜜',71,14,49),(7,'陈春林',49,33,45),(8,'叶少锦',62,25,23),(9,'骆水源',46,43,20),(10,'李新荣',73,18,50),(11,'郑嘉彬',66,59,55),(12,'郑荣辉',60,60,52),(13,'王家祥',76,56,69);

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) DEFAULT NULL,
  `userpass` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert  into `user`(`id`,`username`,`userpass`) values (1,'admin','123456');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


4.工程截图

在这里插入图片描述

二、系统展示

1.登录页

在这里插入图片描述

1.1登录成功

在这里插入图片描述

2.添加学生成绩

在这里插入图片描述

3.学生成绩列表

在这里插入图片描述
最后一页
在这里插入图片描述

4.查询学生成绩

在这里插入图片描述

5.修改学生成绩

在这里插入图片描述

6.删除学生成绩

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

7.退出系统

在这里插入图片描述

三、部分代码

DBConn.java

package cn.com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
 
public class DBConn {
    private static String driverName = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/swing_stuscore?characterEncoding=utf8";
    private static String userName = "root";
    private static String password = "root";
    private Connection conn;
    private Statement stmt;
 
    public DBConn() {
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 连接数据库
     * 
     * @return
     * @throws SQLException
     */
    public Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, userName, password);
    }
    
 
    /**
     * 释放资源
     */
    public void close() {
        try {
            if (conn != null) {
                conn.close();
            }
            if (stmt != null) {
                stmt.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
 
}

LoginFrm.java

package cn.com.view;


import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.EmptyBorder;

import cn.com.dao.UserDao;
import cn.com.model.User;
import cn.com.util.DBConn;
import cn.com.util.StringUtil;

public class LoginFrm extends JFrame {

	private JPanel contentPane;
	private JTextField username_txt;
	private JPasswordField password_txt;
	
	private DBConn db=new DBConn();
	
	private UserDao userDao=new UserDao();

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					LoginFrm frame = new LoginFrm();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public LoginFrm() {
		setResizable(false);
		setTitle("\u7BA1\u7406\u5458\u767B\u5F55");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		JLabel lblNewLabel = new JLabel("\u5B66\u751F\u6210\u7EE9\u7BA1\u7406\u7CFB\u7EDF");
		lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 24));
		
		JLabel lblNewLabel_1 = new JLabel("\u7528\u6237\u540D:");
		
		JLabel lblNewLabel_2 = new JLabel("\u5BC6\u7801:");
		
		username_txt = new JTextField();
		username_txt.setColumns(10);
		
		password_txt = new JPasswordField();
		
		JButton btnNewButton = new JButton("\u767B\u5F55");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LoginActionPerformed(e);
			}
		});
		
		JButton btnNewButton_1 = new JButton("\u91CD\u7F6E");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ResetActionPerformed(e);
			}
			
		});
		GroupLayout gl_contentPane = new GroupLayout(contentPane);
		gl_contentPane.setHorizontalGroup(
			gl_contentPane.createParallelGroup(Alignment.TRAILING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addGap(114)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING)
						.addGroup(gl_contentPane.createSequentialGroup()
							.addComponent(lblNewLabel_2)
							.addPreferredGap(ComponentPlacement.UNRELATED)
							.addComponent(password_txt, 224, 224, 224)
							.addPreferredGap(ComponentPlacement.RELATED))
						.addGroup(gl_contentPane.createSequentialGroup()
							.addComponent(lblNewLabel_1)
							.addPreferredGap(ComponentPlacement.RELATED)
							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
								.addComponent(lblNewLabel)
								.addComponent(username_txt, 226, 226, 226))))
					.addGap(48))
				.addGroup(Alignment.LEADING, gl_contentPane.createSequentialGroup()
					.addGap(153)
					.addComponent(btnNewButton)
					.addPreferredGap(ComponentPlacement.UNRELATED)
					.addComponent(btnNewButton_1)
					.addContainerGap(157, Short.MAX_VALUE))
		);
		gl_contentPane.setVerticalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addGap(50)
					.addComponent(lblNewLabel)
					.addGap(18)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblNewLabel_1)
						.addComponent(username_txt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblNewLabel_2)
						.addComponent(password_txt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(btnNewButton)
						.addComponent(btnNewButton_1))
					.addContainerGap(60, Short.MAX_VALUE))
		);
		contentPane.setLayout(gl_contentPane);
		
		this.setLocationRelativeTo(null);
	}

	protected void ResetActionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		this.username_txt.setText("");
		this.password_txt.setText("");
		
		
	}

	protected void LoginActionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
		String username=this.username_txt.getText();
		String password=new String(this.password_txt.getPassword());
		
		if(StringUtil.isEmpty(username)) {
			JOptionPane.showMessageDialog(null, "用户名不能为空");
			return;
		}
		
		if(StringUtil.isEmpty(password)) {
			JOptionPane.showMessageDialog(null, "密码不能为空");
			return;
		}
		
		User user=new User(username,password);
		Connection conn=null;
		try {
			conn=db.getConnection();
			User current_user=userDao.login(conn,user);
			if(current_user!=null) {
				JOptionPane.showMessageDialog(null, "登录成功");
				dispose();
				new MainFrm().setVisible(true);
			}else {
				JOptionPane.showMessageDialog(null, "用户名或者密码错误");
			}
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		
	}
}



Stuscore.java

package cn.com.model;

public class Stuscore {
	private Integer id;	
	private String name;
	private Integer chinese;
	private Integer math;
	private Integer english;

	
	
	public Stuscore() {
		super();
		// TODO Auto-generated constructor stub
	}


	

	public Stuscore(String name, Integer chinese,  Integer math,Integer english) {
		super();		
		this.name = name;
		this.chinese = chinese;
		this.math = math;
		this.english = english;
	}




	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 Integer getChinese() {
		return chinese;
	}




	public void setChinese(Integer chinese) {
		this.chinese = chinese;
	}




	public Integer getMath() {
		return math;
	}




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




	public Integer getEnglish() {
		return english;
	}




	public void setEnglish(Integer english) {
		this.english = english;
	}




	

	
	
	
}



四、其他

获取源码

点击以下链接获取源码,数据库文件在swing_stuscore.sql文件里面。
Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+Mysql实现超市商品管理系统源码

Java+Swing+Mysql实现通讯录管理系统源码

Java+Swing+Mysql实现图书管理系统源码

Java+Swing+Mysql自助存取款机系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

reg183

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

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

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

打赏作者

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

抵扣说明:

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

余额充值