基于Java Swing+mysql的学生信息管理系统

学生信息管理系统

一、前期工作

①下载eclipse、mysql、navicat

②建立navicat与mysql的连接

二、明确项目的具体实现思路

★系统功能分析

本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统的主要功能有:
① 学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。
② 学生流动情况的输入,包括:转系、休学、复学、退学、毕业。
③ 奖惩情况的输入。
④ 学生个人情况查询和修改,包括流动情况和奖罚情况。

★项目功能模块设计

在这里插入图片描述

★数据流程图

在这里插入图片描述

★数据库需求分析

① 学生:学号、姓名、性别、生日、籍贯、所在院系、所在班级。
② 处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。
③ 奖励记录:记录号、级别、奖励对象、记录时间、详细描述。
④ 学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。
⑤ 班级:班级编号、班级名称、所属院系。
⑥ 院系:代码、名称

★学籍信息、奖励信息、处分信息必要代码表的建立
学籍变更代码表
代码说明
0转系
1休学
2复学
3退学
4毕业
奖励级别代码表
代码说明
0校特等奖学金
1校一等奖学金
2校二等奖学金
3校三等奖学金
4系一等奖学金
5系二等奖学金
6系三等奖学金
处罚级别代码表
代码说明
0警告
1严重警告
2记过
3记大过
4开除

三、在数据库中新建表格

学生注册表

在这里插入图片描述

老师注册表

在这里插入图片描述

学生基本信息表

在这里插入图片描述

学籍信息代码表

在这里插入图片描述

学生奖励信息表

在这里插入图片描述

学生奖励代码表

在这里插入图片描述

学生奖励信息表

在这里插入图片描述

学生处罚代码表

在这里插入图片描述

学生处罚信息表

在这里插入图片描述

四、创建项目并连接mysql数据库

导入jar包且通过eclipse视图显示数据库数据

链接: 关于eclipse连接数据库的简单操作.

五、开始敲项目

①用户注册窗口

用户注册窗口

用户注册界面的全部代码
/*用户注册页面的全部代码*/
package kcsj_mysqlOrjava;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;

import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;

import org.apache.commons.dbutils.QueryRunner;
import org.eclipse.jface.text.templates.GlobalTemplateVariables.User;

import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.DefaultComboBoxModel;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.Connection;
import java.sql.Statement;
import java.awt.event.ActionEvent;
import javax.swing.SwingConstants;
import javax.swing.JCheckBox;

public class register_frame {

	private JFrame register;
	private JTextField textField_username;
	private JTextField textField_password;
	private JTextField textField_rightKey;

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

	/**
	 * Create the application.
	 */
	public register_frame() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		register = new JFrame();
		register.getContentPane().setBackground(Color.PINK);
		register.getContentPane().setForeground(Color.LIGHT_GRAY);
		register.setBounds(100, 100, 450, 300);
		register.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		register.setLocationRelativeTo(null);//将登录界面置于屏幕中间
		
		JLabel label_register = new JLabel("\u7528\u6237\u6CE8\u518C");
		label_register.setFont(new Font("方正粗黑宋简体", Font.PLAIN, 25));
		
		JLabel label_user = new JLabel("\u7528\u6237\u540D\uFF1A");
		label_user.setFont(new Font("楷体", Font.PLAIN, 19));
		
		JLabel label_password = new JLabel("\u5BC6\u7801\uFF1A");
		label_password.setFont(new Font("楷体", Font.PLAIN, 19));
		
		textField_username = new JTextField();
		textField_username.setColumns(10);
		
		textField_password = new JPasswordField();
		((JPasswordField) textField_password).setEchoChar('*');
		textField_password.setColumns(10);
		
		JComboBox comboBox_user = new JComboBox();
		comboBox_user.setModel(new DefaultComboBoxModel(new String[] {"\u5B66\u751F", "\u8001\u5E08"}));
		
		JLabel label_select = new JLabel("\u7528\u6237\u7C7B\u578B\uFF1A");
		label_select.setFont(new Font("楷体", Font.PLAIN, 17));
		
		//注册确认按钮板块
		JButton button_right = new JButton("\u786E\u5B9A");
		button_right.addActionListener(new ActionListener() {
			/*注册确认按钮实现的代码*/
			public void actionPerformed(ActionEvent e) {
				
				if (e.getSource()==button_right) {//用户点击了确认按钮
					
					/*判断用户行为,显示相应窗口*/
					if (textField_username.getText().toString().equals("")) {
						JOptionPane.showMessageDialog(null, "请输入用户名和密码","友情提示",2);//用户用户名和密码均未输入
					}else if (textField_password.getText().toString().equals("")) {
						JOptionPane.showMessageDialog(null, "请输入密码","友情提示",2);//用户未输入密码
					}else if (textField_username.getText().toString().equals("")) {
						JOptionPane.showMessageDialog(null, "请输入用户名","友情提示",2);//用户未输入用户名
					}else if (textField_rightKey.getText().toString().equals("")) {
						JOptionPane.showMessageDialog(null, "请确认密码,保证两次输入密码相同","友情提示",2);//用户未确认密码
					}else {//用户所有信息均已输入且满足确认的要求
						if (textField_rightKey.getText().toString().equals(textField_password.getText().toString())) {//两次输入密码相同
							if (comboBox_user.getSelectedItem().toString().equals("老师")) {//判断出用户类型为老师
								String sql="Insert Into register_teacher(username,password) values(?,?)";//编写sql语句
								sqlUpdate.update(sql, textField_username.getText().toString(),textField_password.getText().toString());//调用自定义函数将老师的账号和密码插入到数据库中
								JOptionPane.showMessageDialog(null, "注册成功");
							}else {//判断出用户类型为学生
								String sql="Insert Into register_student(username,password) values(?,?)";//编写sql语句
								sqlUpdate.update(sql, textField_username.getText().toString(),textField_password.getText().toString());//调用自定义函数将学生的账号和密码插入到数据库中
								JOptionPane.showMessageDialog(null, "注册成功");
							}
							new xt_application().main(null);//打开登录窗口
							register.dispose();//关闭注册窗口
						}else {//两次输入密码不同
							JOptionPane.showMessageDialog(null, "两次输入的密码不一致","友情提示",2);
						}
					}
				}
		}});
		button_right.setFont(new Font("微软雅黑 Light", Font.BOLD, 17));
		
		//注册返回按钮板块
		/*返回按钮代码实现*/
		JButton button_back = new JButton("\u8FD4\u56DE");
		button_back.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getSource()==button_back) {
					new xt_application().main(null);//打开登录窗口
					register.dispose();//关闭注册窗口
				}
			}
		});
		button_back.setFont(new Font("微软雅黑 Light", Font.BOLD, 17));
		
		JButton button_exit = new JButton("\u9000\u51FA");
		button_exit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getSource()==button_exit) {
					int isExit=JOptionPane.showConfirmDialog(null, "您确定要退出系统吗?","友情提示",JOptionPane.YES_NO_OPTION);//提示用户是否要退出系统
					if (isExit==0) {
						register.dispose();
					}
				}
			}
		});
		button_exit.setFont(new Font("微软雅黑 Light", Font.BOLD, 17));
		
		JLabel label_rightKey = new JLabel("\u786E\u8BA4\u5BC6\u7801\uFF1A");
		label_rightKey.setFont(new Font("楷体", Font.PLAIN, 19));
		
		textField_rightKey = new JPasswordField();
		((JPasswordField) textField_rightKey).setEchoChar('*');
		textField_rightKey.setColumns(10);
		
		//显示密码选项框板块
		/*显示密码选项框代码实现*/
		JCheckBox JcheckBox_pwd = new JCheckBox("\u663E\u793A\u5BC6\u7801");
		JcheckBox_pwd.addItemListener(new ItemListener() {
			
			@Override
			public void itemStateChanged(ItemEvent e) {
				// TODO 自动生成的方法存根
				if (e.getStateChange()==ItemEvent.SELECTED) {
					((JPasswordField) textField_password).setEchoChar((char)0);
				}else {
					((JPasswordField) textField_password).setEchoChar('*');
				}
			}
		});
		JcheckBox_pwd.setFont(new Font("楷体", Font.PLAIN, 17));
		JcheckBox_pwd.setBackground(Color.PINK);
		JcheckBox_pwd.setForeground(Color.WHITE);
		
		//显示密码选项框板块
		/*显示密码选项框代码实现*/
		JCheckBox JchectBox_rightKey = new JCheckBox("\u663E\u793A\u5BC6\u7801");
		JchectBox_rightKey.addItemListener(new ItemListener() {
			
			@Override
			public void itemStateChanged(ItemEvent e) {
				// TODO 自动生成的方法存根
				if (e.getStateChange()==ItemEvent.SELECTED) {
					((JPasswordField) textField_rightKey).setEchoChar((char)0);
				}else {
					((JPasswordField) textField_rightKey).setEchoChar('*');
				}
			}
		});
		JchectBox_rightKey.setBackground(Color.PINK);
		JchectBox_rightKey.setForeground(Color.WHITE);
		JchectBox_rightKey.setFont(new Font("楷体", Font.PLAIN, 17));
		GroupLayout groupLayout = new GroupLayout(register.getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(165)
							.addComponent(label_register))
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(48)
							.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
								.addComponent(label_user)
								.addComponent(label_select)
								.addComponent(label_rightKey)
								.addComponent(label_password))
							.addPreferredGap(ComponentPlacement.RELATED)
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
								.addComponent(comboBox_user, GroupLayout.PREFERRED_SIZE, 96, GroupLayout.PREFERRED_SIZE)
								.addGroup(groupLayout.createSequentialGroup()
									.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING, false)
										.addComponent(textField_rightKey, Alignment.LEADING)
										.addComponent(textField_password, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE))
									.addPreferredGap(ComponentPlacement.UNRELATED)
									.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
										.addComponent(JchectBox_rightKey, 0, 0, Short.MAX_VALUE)
										.addComponent(JcheckBox_pwd, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
								.addComponent(textField_username, GroupLayout.PREFERRED_SIZE, 231, GroupLayout.PREFERRED_SIZE))
							.addGap(36))
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(72)
							.addComponent(button_right, GroupLayout.PREFERRED_SIZE, 94, GroupLayout.PREFERRED_SIZE)
							.addPreferredGap(ComponentPlacement.UNRELATED)
							.addComponent(button_back, GroupLayout.PREFERRED_SIZE, 87, GroupLayout.PREFERRED_SIZE)
							.addGap(18)
							.addComponent(button_exit, GroupLayout.PREFERRED_SIZE, 85, GroupLayout.PREFERRED_SIZE)))
					.addContainerGap())
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(label_register)
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
						.addComponent(label_user)
						.addComponent(textField_username, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(8)
					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
						.addComponent(label_password)
						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
							.addComponent(textField_password, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
							.addComponent(JcheckBox_pwd)))
					.addPreferredGap(ComponentPlacement.RELATED)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(label_rightKey)
						.addComponent(textField_rightKey, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
						.addComponent(JchectBox_rightKey))
					.addGap(10)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(comboBox_user, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
						.addComponent(label_select))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(button_right)
						.addComponent(button_back)
						.addComponent(button_exit))
					.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
		);
		register.getContentPane().setLayout(groupLayout);
	}
}

②用户登录窗口

用户登录窗口

用户登录界面的全部代码
/*用户登录界面的全部代码*/
package kcsj_mysqlOrjava;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.ResultSet;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import java.awt.Font;
import java.awt.HeadlessException;

import javax.swing.SwingConstants;

import org.eclipse.equinox.log.ExtendedLogReaderService;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.internal.win32.TCHITTESTINFO;

import java.awt.Window;

import com.mysql.cj.util.StringUtils;

import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JComboBox;
import javax.security.auth.login.LoginContext;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.ImageIcon;

public class xt_application {

	private JFrame login;
	private JTextField user_text;
	private JTextField key_text;

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

	/**
	 * Create the application.
	 */
	public xt_application() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		login = new JFrame();
		login.getContentPane().setForeground(Color.LIGHT_GRAY);
		login.getContentPane().setBackground(Color.LIGHT_GRAY);
		login.setBackground(Color.LIGHT_GRAY);
		login.setBounds(100, 100, 849, 598);
		login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		login.setLocationRelativeTo(null);//将登录界面置于屏幕中间
		
		JLabel title = new JLabel("\u5B66\u751F\u7BA1\u7406\u7CFB\u7EDF");
		title.setBounds(532, 304, 164, 46);
		title.setHorizontalAlignment(SwingConstants.CENTER);
		title.setForeground(Color.GRAY);
		title.setFont(new Font("方正粗黑宋简体", Font.PLAIN, 25));
		title.setBackground(Color.BLACK);
		
		JLabel user = new JLabel("\u7528\u6237\u540D\uFF1A");
		user.setBounds(448, 363, 76, 22);
		user.setFont(new Font("楷体", Font.PLAIN, 19));
		
		JLabel key = new JLabel("\u5BC6\u7801\uFF1A");
		key.setBounds(467, 408, 57, 22);
		key.setFont(new Font("楷体", Font.PLAIN, 19));
		
		user_text = new JTextField();
		user_text.setBounds(532, 364, 243, 24);
		user_text.setColumns(10);
		
		key_text = new JPasswordField();
		key_text.setBounds(532, 409, 135, 24);
		key_text.setColumns(10);
		((JPasswordField) key_text).setEchoChar('*');
		
		JLabel user_type = new JLabel("\u7528\u6237\u7C7B\u578B\uFF1A");
		user_type.setBounds(439, 462, 85, 20);
		user_type.setFont(new Font("楷体", Font.PLAIN, 17));
		
		JComboBox user_type_comboBox = new JComboBox();
		user_type_comboBox.setBounds(532, 461, 128, 24);
		user_type_comboBox.setModel(new DefaultComboBoxModel(new String[] {"\u5B66\u751F", "\u8001\u5E08"}));
		user_type_comboBox.setToolTipText("");
		
		//登录按钮板块
		JButton button_login = new JButton("\u767B\u5F55");
		button_login.setBounds(430, 506, 94, 33);
		button_login.setFont(new Font("微软雅黑 Light", Font.BOLD, 17));
		/*登录按钮的代码实现*/
		button_login.addActionListener(new ActionListener(){
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				String name=user_text.getText().toString();//用户名
				String key=key_text.getText().toString();//密码
				String idtf=user_type_comboBox.getSelectedItem().toString();
				if (e.getActionCommand().equals("登录")) {
					if (name.isEmpty()&&!key.isEmpty()) {//用户未输入用户名,只输入了密码
						JOptionPane.showMessageDialog(null,"用户名不能为空","友情提示",2);//弹出用户名为空的提示性对话框
					}else if (key.isEmpty()&&!name.isEmpty()) {//用户只输入了用户名而未输入密码
						JOptionPane.showMessageDialog(null, "密码不能为空","友情提示",2);//弹出密码为空的提示性对话框
					}else if (key.isEmpty()&&name.isEmpty()) {//用户均未输入用户名和密码
						JOptionPane.showMessageDialog(null, "用户名和密码不能为空","友情提示",2);//弹出用户名和密码均为空的提示性对话框
					}else {
						if (idtf.equals("学生")) {//当用户类型为学生时
							try {
								if (name.equals(sqlUpdate.user_Query("select username from register_student where username=?", name))) {//在数据库中查询到指定用户名
									if (key.equals(sqlUpdate.pwd_Query("select password from register_student where password=?", key))) {//在数据库中查询到用户名所对应的密码
									
										stu_menu_frame f=new stu_menu_frame();//由于getId()未设置为静态方法,故必须新设对象一调用getId()方法
										f.getId(sqlUpdate.id_Query("select id from register_student where username=?", name));//调用stu_menu_frame中的getId()方法,达到传参的目的
										new stu_menu_frame().main(null);//验证身份成功,登录成功
										
										login.dispose();//关闭登录页面
									}else {
										JOptionPane.showMessageDialog(null, "密码错误,请重新输入","友情提示",2);//密码错误,验证身份失败,登录失败
									}
								}else {
									JOptionPane.showMessageDialog(null, "用户名不存在","友情提示",2);//用户名不存在或者用户类型不符合
								}
							} catch (HeadlessException e1) {
								// TODO 自动生成的 catch 块
								e1.printStackTrace();
							} catch (Exception e1) {
								// TODO 自动生成的 catch 块
								e1.printStackTrace();
							}
						}else {//当用户类型为老师时
							try {
								if (name.equals(sqlUpdate.user_Query("select username from register_teacher where username=?", name))) {//在数据库中查询到指定用户名
									if (key.equals(sqlUpdate.pwd_Query("select password from register_teacher where password=?", key))) {//在数据库中查询到用户名所对应的密码
										tea_menu_frame tea=new tea_menu_frame();//由于getId()未设置为静态方法,故必须新设对象——调用getId()方法
										tea.getId(sqlUpdate.id_Query("select id from register_teacher where username=?", name));//调用tea_menu_frame中的getId()方法,达到传参的目的
										new tea_menu_frame().main(null);//验证身份成功,登录成功
										login.dispose();//关闭登录页面
									}else {
										JOptionPane.showMessageDialog(null, "密码错误,请重新输入","友情提示",2);//密码错误,验证身份失败,登录失败
									}
								}else {
									JOptionPane.showMessageDialog(null, "用户名不存在","友情提示",2);//用户名不存在或者用户类型不符合
								}
							} catch (HeadlessException e1) {
								// TODO 自动生成的 catch 块
								e1.printStackTrace();
							} catch (Exception e1) {
								// TODO 自动生成的 catch 块
								e1.printStackTrace();
							}
						}
					}
				}
			}
		});
		
		
		//重置按钮板块
		JButton button_resetting = new JButton("\u91CD\u7F6E");
		button_resetting.setBounds(557, 506, 91, 33);
		button_resetting.setFont(new Font("微软雅黑 Light", Font.BOLD, 17));
		/*重置按钮的代码实现*/
		button_resetting.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				user_text.setText("");/*将输入框置空*/
				key_text.setText("");
				user_type_comboBox.setSelectedIndex(0);
			}
		});
		
		//退出按钮板块
		JButton button_exit = new JButton("\u9000\u51FA");
		button_exit.setBounds(687, 506, 88, 33);
		button_exit.setFont(new Font("微软雅黑 Light", Font.BOLD, 17));
		/*退出按钮的代码实现*/
		button_exit.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				if (e.getActionCommand().toString().equals("退出")) {//捕获到用户行为
					int isExit = JOptionPane.showConfirmDialog(null, "您确定要退出系统吗?","友情提示",JOptionPane.YES_NO_OPTION);//提示用户是否要退出系统
					if(isExit==0) login.dispose();//退出系统
				}
				
			}
		});
		
		//用户注册按钮板块
		JButton button_register = new JButton("\u6CE8\u518C");
		button_register.setBounds(687, 455, 88, 33);
		/*注册按钮的代码实现(直接退出登录窗口,打开注册窗口)*/
		button_register.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new register_frame().main(null);//打开注册
				login.dispose();//关闭登录窗口
			}
		});
		button_register.setFont(new Font("微软雅黑 Light", Font.BOLD, 17));
		
		//显示密码的选择框
		JCheckBox checkBox_toSeeKey = new JCheckBox("\u663E\u793A\u5BC6\u7801");
		checkBox_toSeeKey.setBounds(671, 406, 93, 29);
		checkBox_toSeeKey.addItemListener(new ItemListener() {
			
			@Override
			public void itemStateChanged(ItemEvent e) {
				// TODO 自动生成的方法存根
				if (e.getStateChange()==ItemEvent.SELECTED) {//选择框被选中
					((JPasswordField) key_text).setEchoChar((char)0);
				}else {
					((JPasswordField) key_text).setEchoChar('*');//将密码显示为*加密后的密文
				}
			}
		});
		checkBox_toSeeKey.setForeground(Color.WHITE);
		checkBox_toSeeKey.setFont(new Font("楷体", Font.PLAIN, 17));
		checkBox_toSeeKey.setBackground(Color.LIGHT_GRAY);
		login.getContentPane().setLayout(null);
		login.getContentPane().add(user);
		login.getContentPane().add(key);
		login.getContentPane().add(button_login);
		login.getContentPane().add(user_type);
		login.getContentPane().add(title);
		login.getContentPane().add(button_resetting);
		login.getContentPane().add(user_type_comboBox);
		login.getContentPane().add(button_register);
		login.getContentPane().add(button_exit);
		login.getContentPane().add(key_text);
		login.getContentPane().add(checkBox_toSeeKey);
		login.getContentPane().add(user_text);
		
		JPanel panel = new JPanel();
		panel.setBounds(0, 0, 363, 557);
		login.getContentPane().add(panel);
		panel.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("New label");
		lblNewLabel.setIcon(new ImageIcon(xt_application.class.getResource("/images/\u594B\u6597.png")));
		lblNewLabel.setBounds(0, -19, 363, 600);
		panel.add(lblNewLabel);
		
		JPanel panel_1 = new JPanel();
		panel_1.setBounds(362, 0, 469, 302);
		login.getContentPane().add(panel_1);
		panel_1.setLayout(null);
		
		JLabel lblNewLabel_1 = new JLabel("");
		lblNewLabel_1.setIcon(new ImageIcon(xt_application.class.getResource("/images/\u9633\u5149\u4E0B.jpeg")));
		lblNewLabel_1.setBounds(0, -29, 469, 341);
		panel_1.add(lblNewLabel_1);
	}
}

③学生主页面

在这里插入图片描述

学生主页面的全部代码
/*学生主页面的全部代码*/
package kcsj_mysqlOrjava;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.security.auth.login.LoginContext;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.event.MenuDragMouseEvent;
import javax.swing.event.MenuDragMouseListener;

import org.eclipse.swt.internal.mozilla.nsIWebBrowser;
import org.eclipse.swt.internal.win32.TCHITTESTINFO;
import org.omg.PortableServer.SERVANT_RETENTION_POLICY_ID;

import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JDesktopPane;
import java.awt.Color;
import javax.swing.SwingConstants;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.LayoutStyle.ComponentPlacement;

public class stu_menu_frame {

	private JFrame menu_frame;
	private static int s_id;//设置student表中的id号
	public void getId(int id) {
		s_id=id;//接收来自register_student表中的id号,在后续操作中将该id号值赋予student表id栏目值
	}

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

	/**
	 * Create the application.
	 */
	public stu_menu_frame() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		menu_frame = new JFrame();
		menu_frame.getContentPane().setBackground(Color.PINK);
		menu_frame.setBounds(100, 100, 450, 300);
		menu_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		menu_frame.setLocationRelativeTo(null);
		
		JMenuBar menuBar = new JMenuBar();
		menu_frame.setJMenuBar(menuBar);
		
		JMenu menu_xtsz = new JMenu("\u83DC\u5355");
		menuBar.add(menu_xtsz);
		
		/*菜单中菜单项修改密码的按钮板块*/
		JMenuItem menuItem_change_key = new JMenuItem("\u4FEE\u6539\u5BC6\u7801");
		menu_xtsz.add(menuItem_change_key);
		menuItem_change_key.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}// TODO 自动生成的方法存根
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				if (e.getSource()==menuItem_change_key) {//捕获到用户点击了菜单项修改密码的按钮
					stu_change_key_frame change_key=new stu_change_key_frame();//由于change_key_frame类中的getId()方法不是静态方法,所以必须先创建对象
					change_key.getId(s_id);//调用getId()传参
					new stu_change_key_frame().main(null);//打开修改密码的窗口
					menu_frame.dispose();//关闭菜单窗口
				}
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseEntered(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseClicked(MouseEvent e) {}// TODO 自动生成的方法存根
		});
		
		/*菜单中菜单项返回登录页面的按钮板块*/
		JMenuItem menuItem_back_xt = new JMenuItem("\u8FD4\u56DE\u767B\u5F55\u754C\u9762");
		menu_xtsz.add(menuItem_back_xt);
		menuItem_back_xt.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}// TODO 自动生成的方法存根
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				if (e.getSource()==menuItem_back_xt) {//捕获到用户点击了返回登录界面的菜单选项
					new xt_application().main(null);//打开登录窗口
					menu_frame.dispose();//关闭菜单窗口
				}
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseEntered(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseClicked(MouseEvent e) {}// TODO 自动生成的方法存根
		});
		
		/*菜单中菜单项退出系统的按钮板块*/
		JMenuItem menuItem_exit = new JMenuItem("\u9000\u51FA\u7CFB\u7EDF");
		menu_xtsz.add(menuItem_exit);
		menuItem_exit.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}// TODO 自动生成的方法存根
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				if (e.getSource()==menuItem_exit) {
					int isExit = JOptionPane.showConfirmDialog(null, "您确定要退出系统吗?","友情提示",JOptionPane.YES_NO_OPTION);
					if (isExit==0) {
						menu_frame.dispose();
					}
				}
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseEntered(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseClicked(MouseEvent e) {}// TODO 自动生成的方法存根
		});
		
		JMenu menu_finInfomation = new JMenu("\u5B8C\u5584\u4FE1\u606F");
		menuBar.add(menu_finInfomation);
		
		JMenuItem menuItem_confirm = new JMenuItem("\u5B9E\u540D\u8BA4\u8BC1");
		menu_finInfomation.add(menuItem_confirm);
		menuItem_confirm.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}// TODO 自动生成的方法存根
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				if (e.getSource()==menuItem_confirm) {
					try {
						confrim_frame confrim=new confrim_frame();//由于getId()并没有设置为confrim_frame类中的静态方法,所以必须新建立对象才能调用方法
						confrim.getId(s_id);//想confrim_frame类中传参
						/*isId是id_Query()方法的返回值,若数据库中已存在该s_id号,方法返回值为id值,说明在此之前用户已经完善过信息,无需完善,若方法返回0值,说明此前用户未完善信息*/
						int isId = sqlUpdate.id_Query("select id from student where id=?", s_id);//查找数据库中是否存在登录界面传来的id号

						if (isId!=0) {//若id号存在说明该用户无需完善信息
							JOptionPane.showMessageDialog(null, "信息已足够完善","友情提示",2);
						}else {//若id号不存在说明该用户是新用户,需要完善信息
							new confrim_frame().main(null);//打开完善信息页面
						}
					} catch (Exception e2) {
						// TODO: handle exception
						e2.printStackTrace();
					}
				}
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseEntered(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseClicked(MouseEvent e) {}// TODO 自动生成的方法存根
		});
		
		
		JMenu menu_query = new JMenu("\u67E5\u8BE2\u4FE1\u606F");
		menuBar.add(menu_query);
		
		/*查询信息中的基本信息板块*/
		JMenuItem menuItem_queryInformation = new JMenuItem("\u57FA\u672C\u4FE1\u606F");
		menu_query.add(menuItem_queryInformation);
		menuItem_queryInformation.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}// TODO 自动生成的方法存根
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				if (e.getSource()==menuItem_queryInformation) {
					stu_queryInformation queryInformation=new stu_queryInformation();//由于stu_queryInformation是非静态方法,所以必须先创建对象
					queryInformation.getId(s_id);//调用方法传参
					new stu_queryInformation().main(null);
					menu_frame.dispose();
				}
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseEntered(MouseEvent e) {}// TODO 自动生成的方法存根
			@Override
			public void mouseClicked(MouseEvent e) {}// TODO 自动生成的方法存根
		});
		
		JMenuItem menuItem_change = new JMenuItem("\u5B66\u7C4D\u53D8\u66F4");
		menu_query.add(menuItem_change);
		menuItem_change.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				stu_query_xj s=new stu_query_xj();//由于getId()未被定义为静态方法,所以必须创建对象
				s.getId(s_id);
				menu_frame.dispose();//关闭当前窗口
				new stu_query_xj().main(null);//打开新窗口
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}
			
			@Override
			public void mouseEntered(MouseEvent e) {}
			
			@Override
			public void mouseClicked(MouseEvent e) {}
		});
		
		JMenuItem menuItem_great = new JMenuItem("\u5956\u52B1\u8BB0\u5F55");
		menu_query.add(menuItem_great);
		menuItem_great.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				stu_query_reward s=new stu_query_reward();//由于getId()未被定义为静态方法,所以必须创建对象
				s.getId(s_id);
				menu_frame.dispose();//关闭当前窗口
				new stu_query_reward().main(null);//打开新窗口
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}
			
			@Override
			public void mouseEntered(MouseEvent e) {}
			
			@Override
			public void mouseClicked(MouseEvent e) {}
		});
		
		
		JMenuItem menuItem_bad = new JMenuItem("\u5904\u5206\u8BB0\u5F55");
		menu_query.add(menuItem_bad);
		menuItem_bad.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {}
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO 自动生成的方法存根
				stu_query_punish s=new stu_query_punish();//由于getId()未被定义为静态方法,所以必须创建对象
				s.getId(s_id);
				menu_frame.dispose();//关闭当前窗口
				new stu_query_punish().main(null);//打开新窗口
			}
			
			@Override
			public void mouseExited(MouseEvent e) {}
			
			@Override
			public void mouseEntered(MouseEvent e) {}
			
			@Override
			public void mouseClicked(MouseEvent e) {}
		});
		
		JLabel label_welcome = new JLabel("\u6B22\u8FCE\u6765\u5230\u5B66\u751F\u7BA1\u7406\u7CFB\u7EDF");
		label_welcome.setForeground(Color.WHITE);
		label_welcome.setFont(new Font("华文行楷", Font.BOLD, 31));
		label_welcome.setHorizontalAlignment(SwingConstants.TRAILING);
		
		JButton button_stuToDo = new JButton("\u5B66\u751F\u624B\u518C");
		
		JLabel label_prompt = new JLabel("\u6E29\u99A8\u63D0\u793A\uFF1A\u65B0\u624B\u5165\u5B66\u8BF7\u5148\u9605\u8BFB\u5B66\u751F\u624B\u518C\uFF0C\u5E76\u5B8C\u5584\u4E2A\u4EBA\u4FE1\u606F");
		label_prompt.setForeground(Color.RED);
		label_prompt.setFont(new Font("华文楷体", Font.PLAIN, 15));
		label_prompt.setHorizontalAlignment(SwingConstants.TRAILING);
		GroupLayout groupLayout = new GroupLayout(menu_frame.getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.TRAILING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap(53, Short.MAX_VALUE)
					.addComponent(label_welcome)
					.addGap(49))
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap(33, Short.MAX_VALUE)
					.addComponent(label_prompt)
					.addGap(24))
				.addGroup(Alignment.LEADING, groupLayout.createSequentialGroup()
					.addGap(167)
					.addComponent(button_stuToDo)
					.addContainerGap(172, Short.MAX_VALUE))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(45)
					.addComponent(label_welcome)
					.addGap(23)
					.addComponent(button_stuToDo)
					.addPreferredGap(ComponentPlacement.UNRELATED)
					.addComponent(label_prompt)
					.addContainerGap(66, Short.MAX_VALUE))
		);
		menu_frame.getContentPane().setLayout(groupLayout);
	}
}

④创建学生类
学生类的全部代码
/*学生类的全部代码*/
package kcsj_mysqlOrjava;

public class Student {
	private int studentId;
	public Student(int studentId2, String name2, String sex2, int classid2, String collage2, String born2,
			String resident2) {
		// TODO 自动生成的构造函数存根
		this.studentId=studentId2;
		this.name=name2;
		this.sex=sex2;
		this.classid=classid2;
		this.collage=collage2;
		this.born=born2;
		this.resident=resident2;
	}
	public int getStudentId() {
		return studentId;
	}
	public void setStudentId(int studentId) {
		this.studentId = studentId;
	}
	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 int getClassid() {
		return classid;
	}
	public void setClassid(int classid) {
		this.classid = classid;
	}
	public String getCollage() {
		return collage;
	}
	public void setCollage(String collage) {
		this.collage = collage;
	}
	public String getBorn() {
		return born;
	}
	public void setBorn(String born) {
		this.born = born;
	}
	public String getResident() {
		return resident;
	}
	public void setResident(String resident) {
		this.resident = resident;
	}
	public String getXj_information() {
		return xj_information;
	}
	public void setXj_information(String xj_information) {
		this.xj_information = xj_information;
	}
	public String getReward_information() {
		return reward_information;
	}
	public void setReward_information(String reward_information) {
		this.reward_information = reward_information;
	}
	public String getPunish_information() {
		return punish_information;
	}
	public void setPunish_information(String punish_information) {
		this.punish_information = punish_information;
	}
	public String getIsRight() {
		return isRight;
	}
	public void setIsRight(String isRight) {
		this.isRight = isRight;
	}
	private String name;
	private String sex;
	private int classid;
	private String collage;
	private String born;
	private String resident;
	private String xj_information;
	private String reward_information;
	private String punish_information;
	private String isRight;
}

⑤封装连接数据库和查找语句的类
封装类的全部代码
/*封装类的全部代码*/
package kcsj_mysqlOrjava;

import java.awt.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import javax.management.RuntimeErrorException;

import com.mysql.cj.PerConnectionLRUFactory;

public class sqlUpdate {
	/*执行增删改查*/
	public static int update(String sql,Object...params) {//执行增删改查
		try {
			//1、获取连接
			Connection con = connection.getConnection();
			
			//2、执行sql语句
			PreparedStatement statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			
			int update=statement.executeUpdate();
			return update;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}
	}
	/*查询学生的姓名*/
	public static String name_query(String sql,Object...params) throws Exception{
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			con=connection.getConnection();
			
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			if (set.next()) {
				return set.getString("s_name");
			}
			return null;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
	}
	/*查询学生的学籍和奖励和处分信息*/
	public static String xj_rReward_Punish_query(String sql,Object...params) throws Exception{
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			con=connection.getConnection();
			
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			if (set.next()) {
				return set.getString("DESCRIPTION");
			}
			return null;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
	}
	/*查询学生的处分是否生效*/
	public static String IsPunish_query(String sql,Object...params) throws Exception{
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			con=connection.getConnection();
			
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			if (set.next()) {
				return set.getString("ENABLE");
			}
			return null;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
	}
	/*查询学生的相关信息并返回该学生*/
	public static java.util.List<Student> Student_Query(String sql,Object...params) throws Exception {
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			//1、获取连接
			con=connection.getConnection();
			//2、执行查询
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			java.util.List<Student> list=new ArrayList<>();
			while (set.next()) {
				int studentId=set.getInt("s_studentid");
				String name=set.getString("s_name");
				String sex=set.getString("s_sex");
				int classid=set.getInt("s_classid");
				String collage=set.getString("s_collage");
				String born=set.getString("s_born");
				String resident=set.getString("s_resident");
				
				Student stu=new Student(studentId, name, sex, classid, collage, born, resident);
				list.add(stu);
			}
			return list;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
		
	}
	/*查询用户名*/
	public static String user_Query(String sql,Object...params) throws Exception {
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			//1、获取连接
			con=connection.getConnection();
			
			//2、执行查询
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			if (set.next()) {
				return set.getString("username");
			}
			return null;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
	}
	/*查询学籍代码的描述*/
	public static String description_Query(String sql,Object...params) throws Exception {
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			con=connection.getConnection();
			
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			if (set.next()) {
				return set.getString("DESCRIPTION");
			}
			return null;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
	}
	/*查询密码*/
	public static String pwd_Query(String sql,Object...params) throws Exception {
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			//1、获取连接
			con=connection.getConnection();
			
			//2、执行查询
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			if (set.next()) {
				return set.getString("password");
			}
			return null;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
		
	}
	/*查询id号*/
	public static int id_Query(String sql,Object...params) throws Exception {
		Connection con=null;
		PreparedStatement statement=null;
		ResultSet set=null;
		try {
			//1、获取连接
			con=connection.getConnection();
			
			//2、执行查询
			statement=con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				statement.setObject(i+1, params[i]);
			}
			set=statement.executeQuery();
			if (set.next()) {
				return set.getInt("id");
			}
			else return 0;
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}finally {
			connection.close(set, con);
		}
	}
}


⑥老师录入学籍信息奖励信息和处分信息的窗口
老师录入学籍信息的窗口

老师录入学籍信息的窗口

老师录入奖励信息的窗口

老师录入奖励信息的窗口

老师录入处分信息的窗口

老师录入处分信息的窗口

⑦老师查找学生信息的窗口

老师查找学生信息的窗口

六、总结

以上展示了此项目的部分代码,页面算不上美观,有不足的地方还请各位大佬指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

近景_

打赏拉满,动力满满

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

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

打赏作者

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

抵扣说明:

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

余额充值