学生信息管理系统
此项目包括四个类
- StartMySql → 用于启动登录界面
- Login → 登录进入操作界面
- MySQLGUI → 图形用户界面
- OperationMySql → 对数据库数据的操作功能实现
mysql 中 Table 的设计
涉及三个表
数据库名 StudentInfo 表名分别为 grade、course、summary
grade
ID
Name
Chinese
Math
English
course
ID
Name
Course
Credit
summary
Course
Average
实现概貌:
- 这个项目的注释真的 真的灰常详细 ~ o( ̄▽ ̄)ブ
- 此项目代码量在 1000 行左右,纯手打,奥力给
直接上代码啦
-
启动单独成类
// StartMySql.java
package StudentInfo;public class StartMySql {
// 启动登录界面
public static void main(String[] args) {
new Login();
}
} -
这是一个登录界面的小框框
// Login.java
package StudentInfo;import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Login implements ActionListener {
// 定义主窗口
private final JFrame jf;
// 定义输入用户名和密码的标签提示
private final JLabel InputUserName;
private final JLabel InputPassWord;
// 定义输入用户名文本框
private final JTextField UserName;
// 定义输入密码框
private final JPasswordField PassWord;
// 定义登录和取消按钮
private final JButton Login;
private final JButton Cancel;Login() { // 各组件实例化过程 jf = new JFrame("Login"); InputUserName = new JLabel(" ID: "); InputPassWord = new JLabel("password:"); UserName = new JTextField(); PassWord = new JPasswordField(); Login = new JButton("登录"); Cancel = new JButton("退出"); // 设置主窗口大小、位置和布局 jf.setSize(400, 150); jf.setLocation(600, 400); // 设置窗口流式布局 jf.setLayout(new FlowLayout()); // 设置用户名和密码框大小 UserName.setPreferredSize(new Dimension(300, 30)); PassWord.setPreferredSize(new Dimension(300, 30)); // 依次向主窗口添加各组件 jf.getContentPane().add(InputUserName); jf.getContentPane().add(UserName); jf.getContentPane().add(InputPassWord); jf.getContentPane().add(PassWord); jf.getContentPane().add(Login); jf.getContentPane().add(Cancel); // 设置主窗口不可调节大小 jf.setResizable(false); // 设置主窗口默认关闭操作 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 给登录和取消按钮添加 Action 监听器 Login.addActionListener(this); Cancel.addActionListener(this); // 设置主窗口可见 jf.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // 如果单击【退出】按钮则程序退出 if (e.getSource().equals(Cancel)) { System.exit(0); } // 如果单击【登录】按钮则检查用户名和密码是否匹配 else if (e.getSource().equals(Login)) { // 如果用户名和密码匹配,则打开具体操作面板 if (UserName.getText().equals("admin") && String.valueOf(PassWord.getPassword()).equals("1234")) { // MySQLGUI myS = new MySQLGUI(); // myS.initial(); new MySQLGUI(); jf.setVisible(false); jf.dispose(); } // 如果用户名和密码不匹配,则给出提示对话框 else { JOptionPane.showOptionDialog(jf, "用户名或密码错误", "登陆失败", JOptionPane.CLOSED_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); } } }
}
-
这是 GUI 界面代码
// MySQLGUI.java
package StudentInfo;import javax.swing.;
import java.awt.;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;public class MySQLGUI extends JFrame implements MouseListener, ItemListener {
// 定义选项卡
private JTabbedPane Base;
// 定义选项卡上的嵌板
/*
* jp1, 添加记录
* jp2, 删除记录
* jp3, 更新记录
* jp4, 查找记录
* jp5, 选课记录
* jp6 课程平均分
* /
private JPanel jp1, jp2, jp3, jp4, jp5, jp6;
// 定义各按钮
/
* InsertRecord, 添加记录按钮
* InsertReset, 添加取消按钮
* DeleteRecord, 删除记录按钮
* DeleteReset, 删除取消按钮
* QueryRecord, 查询记录按钮
* UpdateRecord, 更改记录按钮
* UpdateReset, 重置更新框
* CourseQuery, 选课表查询按钮
* GradeQuery, 成绩查询按钮
* /
private JButton InsertRecord, InsertReset, DeleteRecord, DeleteReset,
QueryRecord, UpdateRecord, UpdateReset, CourseQuery, GradeQuery;
// 定义各标签
/
* InsertID1, 插入学号提示标签
* InsertName1, 插入姓名提示标签
* InsertChinese1, 插入语文成绩提示标签
* InsertMath1, 插入数学提示标签
* InsertEnglish1, 插入英语提示标签
* DeleteID1, 删除学号提示标签
* UpdateID1, 更新学号提示标签
* /
private JLabel InsertID1, InsertName1, InsertChinese1, InsertMath1,
InsertEnglish1, DeleteID1, UpdateID1;
// 定义各文本框
/
* InsertID2, 插入学号文本框
* InsertName2, 插入姓名文本框
* InsertChinese2, 插入语文文本框
* InsertMath2, 插入数学文本框
* InsertEnglish2, 插入英语文本框
* DeleteID2, 所要删除学号的文本框
* UpdateID2, 所要更新学号的文本框
* UpdateContent, 更新内容填写文本框
* IDCondition, 查询ID文本框
* NameCondition, 查询姓名文本框
* ChineseCondition,查询语文文本框
* MathCondition, 查询数学文本框
* EnglishCondition,查询英语文本框
* /
private JTextField InsertID2, InsertName2, InsertChinese2, InsertMath2, InsertEnglish2,
DeleteID2, UpdateID2, UpdateContent, IDCondition, NameCondition, ChineseCondition, MathCondition,
EnglishCondition;
// 定义显示结果文本域 显示 jp4 jp5 jp6 的查询结果
/
* QueryRecordResult, 查询学生信息结果文本域
* CourseQueryResult, 查询课程信息文本域
* GradeQueryResult, 查询课程成绩平均分文本域
* /
private JTextArea QueryRecordResult, CourseQueryResult, GradeQueryResult;
// 定义查询选项
/
* ID, 选择学号查询
* Name, 选择姓名查询
* Chinese, 选择语文查询
* Math, 选择数学查询
* English, 选择英语查询
* */
private JRadioButton ID, Name, Chinese, Math, English;
// 定义一个数据库操作的实例
private OperationMySql db = null;
// 定义滚动条
private JScrollPane scroll = null;
private JScrollPane CourseScroll = null;
private JScrollPane GradeScroll = null;
// 定义一个复选框用于选择更新的项目
private JComboBox UpdateItem = null;
// 定义复选框用于选择查询的项目
private JComboBox CourseItem = null; // 课程信息复选框
private JComboBox GradeItem = null; // 课程成绩复选框MySQLGUI() { // 设置各按钮信息 setButton(); // 设置各标签信息 setLabel(); // 设置各文本框信息 setTextField(); // 设置各面板信息 setPanel(); // 设置布局信息 setLayout(); // 设置选项卡信息 setBase(); // 设置主窗口信息 setThis(); // 设置数据库信息 setDB(); } // 设置各按钮信息的方法 private void setButton() { // jp1 上的按钮 InsertRecord = new JButton("添加"); InsertRecord.setFont(new Font("宋体", 1, 20)); // 1 代表加粗,20 代表字体大小 InsertRe