项目四 基于JAVA学生管理系统

本文档详述了一个基于Java Swing和Mysql的学生信息管理系统的实现过程,涵盖了数据库连接、用户界面设计、数据操作(增删改查)以及查询功能。系统允许教学管理人员对学生基本信息和课程信息进行管理,但尚未实现选课信息管理和登录交互界面。项目存在不足,如未完全实现信息管理系统,登录界面缺失,且准备时间不足。
摘要由CSDN通过智能技术生成

目录

一.项目要求

二.项目平台

三.项目实现过程

1.IDEA和数据库的连接

2.界面按键框架布局

3.对修改事件监听

4.查询方法

5.增删改方法

6.增删改查程序调用数据库的过程

7.主方法

四、项目实现效果

1.运行界面

 2.查询过程

 3.添加方法

 4.选中一行进行删除/修改

 五、项目不足之处


一.项目要求

实现一个简单的学生信息管理的程序StudentInfo。

要求系统能为客户提供下列各项服务:

(1)教学管理人员能够使用StudentInfo程序对学生基本信息、课程信息进行管理,包括数据的添加、修改、删除和浏览;

(2)能够对学生选课进行管理,包括添加学生选课信息、录入成绩;

(3)能够使用查询功能,快速查看到指定学生或指定课程的基本信息以及所指定学生的选课信息;

(4)能够对学生选课情况进行简单的统计,包括所选的总的课程数、总学分数及平均成绩。 要注意添加学生基本信息、课程信息相关数据时,学号和课程号不能重复;

(5)还有在添加学生选课信息时,要求该学生和课程必须是存在的,而且不能添加重复的选课信息。

(6)提供友好的交互界面,可以方便用户进行功能选择,实现信息的管理和查询,并可清晰地显示相关信息。

二.项目平台

Mysql和IDEA.Java Swing

三.项目实现过程

1.IDEA和数据库的连接

(1)IDEA导入驱动安装包

(2) 数据库建立数据库stu,并建立表格

 

 (3)在IDEA中建立连接

public class SqlHelper {  
    //数据库  
    private Connection ct = null;  //连接
    private PreparedStatement ps = null;  //准备的元素
    private ResultSet rs = null;  //结果集合
    private String driver = "com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/stu?serverTimezone=Asia/Shanghai";
    private String user = "root";  //账户
    private String passwd = "161367";  //数据库账户密码
      

2.界面按键框架布局

public StuAddDialog(Frame owner, String title, boolean modal)   
    {  
        //重写父类方法  
        super(owner, title, modal);  
        //左侧标签栏

        idLab = new JLabel("学号: ");  
        nameLab = new JLabel("姓名: ");  
        sexLab = new JLabel("性别: ");  
        ageLab = new JLabel("年龄: ");  
        jgLab = new JLabel("课程: ");
        deptLab = new JLabel("系别: ");  
        //右侧信息填写栏  
        idTxt = new JTextField();  
        nameTxt = new JTextField();  
        sexTxt = new JTextField();  
        ageTxt = new JTextField();  
        jgTxt = new JTextField();  
        deptTxt = new JTextField();  
        //添加和取消按钮  
        addBtn = new JButton("添加");  
        cancelBtn = new JButton("取消");  
        //添加监听  
        addBtn.addActionListener(this);  
        addBtn.setActionCommand("add");  
        cancelBtn.addActionListener(this);  
        cancelBtn.setActionCommand("cancel");  
        //创建布局  
        //创建左边栏  
        left = new JPanel();  
        left.setLayout(new GridLayout(6, 1));  
        left.add(idLab);  left.add(nameLab);   
        left.add(sexLab); left.add(ageLab);   
        left.add(jgLab);  left.add(deptLab);   
        //......创建右边栏  
        center = new JPanel();  
        center.setLayout(new GridLayout(6, 1));  
        center.add(idTxt);  center.add(nameTxt);  
        center.add(sexTxt); center.add(ageTxt);  
        center.add(jgTxt);  center.add(deptTxt);  
        //底层添加和取消按钮  
        bottom = new JPanel();  
        bottom.add(addBtn);  
        bottom.add(cancelBtn);  
        //整体布局  
        this.add(left,BorderLayout.WEST);  
        this.add(center,BorderLayout.CENTER);  
        this.add(bottom,BorderLayout.SOUTH);  
        //设置窗口属性  
          
        this.setSize(300, 250);
        this.setResizable(true);
        this.setVisible(true);  
    }  

3.对修改事件监听

 public void actionPerformed(ActionEvent e) {  
        // TODO Auto-generated method stub  
        if(e.getActionCommand().equals("update")) {  
        /***********************修改学生信息**************************/  
            StuModel tmp = new StuModel();  
            String sql = "update stu set stuName=?,stuSex=?,stuAge=?,stuJg=?,stuDept=? where stuId=?";  
            String []paras = {nameTxt.getText(),sexTxt.getText(),ageTxt.getText(),  
                            jgTxt.getText(),deptTxt.getText(),idTxt.getText()};  
            if(!tmp.cudStu(sql, paras))  
                JOptionPane.showMessageDialog(this, "修改学生信息失败");  
            //关闭窗口  
            this.dispose();  
        } else if(e.getActionCommand().equals("cancel")) {  
            //关闭窗口  
            this.dispose();  
        }  
    }  

4.查询方法

public ResultSet queryExecute(String sql, String []paras)  
    {  
        try {  
            //1、加载驱动
            Class.forName(driver);  
            //2、连接
            ct = DriverManager.getConnection(url, user, passwd);
            //驱动idea连接mysql、账号、密码
            //3、创建PreparedStatement
            ps = ct.prepareStatement(sql);  //用于创建、存储数据库的记录
            //4、循环,把数据库记录给ps
            if(paras != null) {  
                for(int i = 0; i < paras.length; i++) {  
                    ps.setString(i + 1, paras[i]);  
                }  
            }  
            //5、执行
            rs = ps.executeQuery();  //执行查询ps,放在结果集合里rs,用于输出全部的记录
        } catch (Exception e) {  //处理异常
            //  handle exception
            e.printStackTrace();  //确定程序故障源的跟踪
        } finally {  
            //this.close();  
        }  
        //返回值,返回结果集合rs
        return rs;  
    }  

5.增删改方法

public boolean cudExecute(String sql, String []paras)  
    {  
        boolean b = true;  
        try {  
            //1、加载驱动
            Class.forName(driver);  
            //2、连接
            ct = DriverManager.getConnection(url, user, passwd);  
            //3、创建PreparedStatement
            ps = ct.prepareStatement(sql);  
            //4、循环,把数据库记录给ps
            for(int i = 0; i < paras.length; i++) {  
                ps.setString(i + 1, paras[i]);  
            }  
            //5、执行
            if(ps.executeUpdate() != 1) b = false;  //ps元素是否执行更新操作
        } catch (Exception e) {  //处理异常
            //  handle exception
            b = false;  
            e.printStackTrace();  //确定程序故障源的跟踪路径
        } finally {  
            this.close();  
        }  
        //========返回值  
        return b;  
    }  

6.增删改查程序调用数据库的过程

 public void actionPerformed(ActionEvent e)  
    {  
        // TODO Auto-generated method stub  
        if(e.getActionCommand().equals("query")) {  
            /***********查询***********/  
            //获取输入学生的姓名  
            String name = queryTxt.getText().trim();  
            if(name.length() != 0) {  
                //姓名输入有效时,执行查询  
                //定义参数  
                String sql = "select * from stu where stuName=?";  
                String []paras = {name};  
                //更新模型  
                jtableUpdate(sql, paras);  
            } else {  
                //姓名为空时,设置提醒  
                JOptionPane.showMessageDialog(this, "姓名输入不能为空");  
            }  
        } else if(e.getActionCommand().equals("add")) {  
            /******添加*******/  
            new StuAddDialog(this, "添加学生信息", true);  
            String sql = "select * from stu";  
            jtableUpdate(sql, null);  
        } else if(e.getActionCommand().equals("all")) {  
            /*****全部显示******/  
            String sql = "select * from stu";  
            jtableUpdate(sql, null);  
        } else if(e.getActionCommand().equals("delete")) {  
            /****删除*****/  
            //========获取选择行号  
            int rowNum = this.resultTb.getSelectedRow();  
            if(rowNum == -1) {  
                JOptionPane.showMessageDialog(this, "请选择一行");  
                return ;  
            }  
            //获取学生ID号  
            String stuId = (String)sm.getValueAt(rowNum, 0);  
            //删除学生  
            String sql = "delete from stu where stuId=?";  
            String []paras = {stuId};  
            StuModel tmp = new StuModel();  
            tmp.cudStu(sql, paras);  
            //更新模型  
            sql = "select * from stu";  
            jtableUpdate(sql, null);  
        } else if(e.getActionCommand().equals("update")) {  
            /****修改*****/  
            //获取选择行号  
            int rowNum = this.resultTb.getSelectedRow();  
            if(rowNum == -1) {  
                JOptionPane.showMessageDialog(this, "请选择一行");  
                return ;  
            }  
            new StuUpdateDialog(this, "修改学生信息", true, sm, rowNum);  
            String sql = "select * from stu";  
            jtableUpdate(sql, null);  
        }  
    }  
      
    //更新JTable内数据  
    public void jtableUpdate(String sql, String[] paras)  
    {  
        //创建模型  
        sm = new StuModel();  
        sm.queryStu(sql, paras);  
        //更新显示  
        resultTb.setModel(sm);  
    }  
  

7.主方法

  public static void main(String[] args)   
    {  
     
        new StudentManage();  
    }  

四、项目实现效果

1.运行界面

 2.查询过程

 3.添加方法

 4.选中一行进行删除/修改

 结果:

 五、项目不足之处

(1)仅实现了学生基本信息的增删改查,选课信息和老师等并没有实现

(2)由于没有实现完整的信息管理系统的建立,登录友好交互界面暂未实现,目标是实现三个不同管理账号的登录,例如:管理员、老师和学生

(3)项目花费时间较少,准备不太充分,本来可以完整的做出学生管理系统的项目来的

(4)IDEA与数据库的建立过程并没有花费多长时间

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值