学生信息管理系统 图形用户界面(GUI) java 实现对数据库的操作 数据库用的mysql_java图形化编程学生信息系统csdn-程序员宅基地

技术标签: 面试  java  阿里巴巴  maven  mysql  数据库  学习路线  

学生信息管理系统

此项目包括四个类

  1. StartMySql → 用于启动登录界面
  2. Login → 登录进入操作界面
  3. MySQLGUI → 图形用户界面
  4. 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("添加");
        InsertReco
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_67401606/article/details/125401508

智能推荐

flask + pyecharts 疫情数据分析 搭建交互式动态可视化疫情趋势分析、舆情监测平台(附代码实现)_疫情舆情分析代码-程序员宅基地

文章浏览阅读978次,点赞3次,收藏21次。该项目是浙江大学地理空间数据库课程作业8:空间分析中,使用 flask + pyecharts搭建的简单新冠肺炎疫情数据可视化交互分析平台的一部分,完整的实现包含疫情数据获取、态势感知、预测分析、舆情监测等任务;包含完整代码、数据集和实现的github地址: https://github.com/yunwei37/COVID-19-NLP-vis项目分析报告已部署到网页端,可点击 http://flask.yunwei123.tech/ 进行查看,数据已更新到6.17本项目采用flask作为_疫情舆情分析代码

python之09-tuple元组-程序员宅基地

文章浏览阅读254次。详细请参考:https://www.cnblogs.com/Neeo/articles/11212374.html1、元组的基本操作1>创建元组Python中,元组(tuple)用一对小括号()表示,元组内的各元素以逗号分隔。t = ()print(type(t)) # <type 'tuple'>t1 = ('name', )print(t1) ..._tuple元祖for循环取值

c语言程序怎样生产dll文件,关于c语言创建dll文件及dll文件的调用-程序员宅基地

文章浏览阅读860次。关于c语言创建dll文件及dll文件的调用近来又有人在群里问如何用c语言编制dll文件(动态链接库)。原来没有对这个问题太在意过,也没有尝试过任何解决方案,毕竟原来我是用vb的(现在用.net),做个dll只不过是点选一下建立activeX dll工程的图标而已。今天在网上与朋友聊天,看了他指给我的几个几个文件,用MingW将C程序编译成dll文件的例子,我恍然大悟,原来讲C程序编译成dll文件只..._keil c语言 生成dll

【学习笔记】基于遗传算法的BP神经网络优化算法_遗传算法优化 bp 染色体-程序员宅基地

文章浏览阅读6.8k次,点赞11次,收藏111次。一、背景介绍BP神经网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。BP神经网络是人工神经网络中应用广泛的算法,但依然存在着一些缺陷,例如学习收敛速度太慢、不能保证收敛到全局最小点、网络结构不易确定等。另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。二、算法流程创建网络;确定网络的初始权重值和阈值,对其进行编码得到初始种群;while_遗传算法优化 bp 染色体

Redis6 主从复制及哨兵机制_redis 6 哨兵-程序员宅基地

文章浏览阅读316次。Sentinel(哨兵)进程是用于监控Redis集群中Master主服务器工作的状态在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用(HA)其已经被集成在redis2.6+的版本中,Redis的哨兵模式到了2.8版本之后就稳定了下来。......_redis 6 哨兵

C语言 | 链表的建立和剔除_snode *init()-程序员宅基地

文章浏览阅读363次。单向链表,定义、插入、剔除操作,模块化能直接调用_snode *init()

随便推点

二、Json对象、Json数组和Json字符串_json字符串数组-程序员宅基地

文章浏览阅读6.7k次,点赞3次,收藏17次。一、Json字符串和Json对象定义:1、Json字符串:所谓字符串:单引号或者双引号引起来,是一个String类型的字符串:如下:var person='{"name":"shily","sex":"女","age":"23"}';//json字符串console.log(person)console.log(person.name)console.log(typeof person) 2、Json对象:最显著的特征:对象的值可以用 “对象.属性” 进行访问,_json字符串数组

Linux系统100条命令:关于Ubuntu和 CentOS 7 相同功能的不同的终端操作命令_ubuntu 命令跟centos-程序员宅基地

文章浏览阅读718次。CentOS 7:ip link set interface_name up 或 ip link set interface_name down。Ubuntu:ifconfig interface_name up 或 ifconfig interface_name down。CentOS 7:编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件。Ubuntu:编辑 /etc/network/interfaces 文件。_ubuntu 命令跟centos

windows10下VS2019编译jpegsrc.v9e.tar.gz为lib静态库(已验证)_jpeg library error vs2019-程序员宅基地

文章浏览阅读652次。jpegsr9e windows vs2019生成方法,以及库下载_jpeg library error vs2019

重磅?华为 Mate60/Pro 系列网速实测结果公布,最高 1205.57 Mbps_华为mate60pro+核实网络-程序员宅基地

文章浏览阅读647次。总的来说,华为Mate 60/Pro系列手机的高速网速表现引起了广泛的关注,这也是消费者对该系列手机购买热情高涨的一个重要因素。可以看出,华为Mate 60/Pro系列手机的网速表现非常出色,这也是消费者购买该系列手机的一个重要原因。此前,华为Mate 60 Pro的供应量已经增至1500万至1700万台,而最新消息称,华为Mate 60 Pro和Mate 60 Pro+的出货量甚至已上调至2000万台。目前,在中国市场上,手机竞争愈发激烈,不仅华为Mate 60系列,其他品牌的手机也都受到了高温的迎接。_华为mate60pro+核实网络

access查找出生日期年份_access怎样利用出生日期计算年龄呀!-程序员宅基地

文章浏览阅读7.1k次。公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。话题:access怎样利用出生日期计算年龄呀!回答:lt;%set rs = server.createobject("adodb.recordset") curid=request("id") sql = "UPDATE pany SET a_num=a_num+1,day_count=day_count+1 WHERE day_lda..._access出生年份表达式

python 内置函数-程序员宅基地

文章浏览阅读75次。Python内置函数(1)——absPython内置函数(2)——divmodPython内置函数(3)——maxPython内置函数(4)——minPython内置函数(5)——powPython内置函数(6)——roundPython内置函数(7)——sumPython内置函数(8)——bool...

推荐文章

热门文章

相关标签