Java课程设计 学生信息管理系统

目录

团队信息

项目git地址

项目git提交记录

项目组要功能架构图

UML类图

项目运行

项目关键代码分模块描述

对数据库进行增删改差操作

创建GUI界面(以操作界面为例)

监听模块(以登录为例)

项目总结

队长个人博客地址


团队信息

组长 李雯倩在数据库中实现增删改查,数据管理即操作界面
组员叶秀登录界面、注册界面、把注册账号写入数据库

项目git地址

https://gitee.com/xpeannut/java

项目git提交记录

 由于叶秀git和eclipse版本不对,询问老师过后,得知可以由组长李雯倩一并提交。

项目组要功能架构图

UML类图

项目运行

登录界面

注册界面

查询全部学生信息

删除信息

(以下图片为删除学号为2的学生)

修改信息

(以下为修改叶秀的信息)

项目关键代码分模块描述

对数据库进行增删改差操作

    public Mysqld(String account,String password) {
        //定义一个数据库的账号和密码
        //第一步加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("加载驱动成功");
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("加载驱动失败");
        }
        //
        String uri="jdbc:mysql://localhost:3306/student?characterEncoding=utf-8&useSSL=false";
        try {
            con=DriverManager.getConnection(uri,account,password);
            System.out.println("数据库连接成功");
        } catch (SQLException e) {
            // TODO: handle exception
            System.out.println("数据库连接失败");
        }
    }
    public static boolean LoginAccount(String account,String password) {
        Statement sql;//用来执行命令的
        ResultSet rs;//定义一个结果
        String uri = "select account,password from user";
        try {
            
            sql = con.createStatement();
            rs = sql.executeQuery(uri);
            while(rs.next()) {
                String acc=rs.getString(1);
                String pass=rs.getString(2);
//              System.out.println(acc);
//              System.out.println(pass);
                if(acc.equals(account)&&pass.equals(password)) {
//                  System.out.println("hhh");
                    return true;
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return false;
    }
    public static void addStudent(String name,String gender,String id,String birthday,String politicaloutlook,String ad,String tel,String number) {
        PreparedStatement presql;
        String sqlstr="insert into stu(name,gender,id,birthday,politicaloutlook,ad,tel,number)values(?,?,?,?,?,?,?,?)";
        try {
            
            presql=con.prepareStatement(sqlstr);
            presql.setString(1, name);
            presql.setString(2, gender);
            presql.setString(3, id);
            presql.setString(4, birthday);
            presql.setString(5, politicaloutlook);
            presql.setString(6, ad);
            presql.setString(7, tel);
            presql.setString(8, number);
            int ok=presql.executeUpdate();
            JOptionPane.showMessageDialog(null, "添加成功", "添加数据", JOptionPane.WARNING_MESSAGE);
            String[] data = new String[8];
            data[0] = name;
            data[1] = gender;
            data[2] = id;
            data[3] = birthday;
            data[4] = politicaloutlook;
            data[5] = ad;
            data[6] = tel;
            data[7] = number;
            Maneger.model.addRow(data);
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "当前学号已经存在", "添加数据", JOptionPane.WARNING_MESSAGE);
        }
        
    }
    public static void delStudent(String id) {
        PreparedStatement presql;
        String sqlstr="delete from stu where id=?";
        try {
        
            presql=con.prepareStatement(sqlstr);
            presql.setString(1, id);
            int ok=presql.executeUpdate();
            if(ok==0) {
                JOptionPane.showMessageDialog(null, "未找到相关学号", "删除数据", JOptionPane.WARNING_MESSAGE);
            }else {
                JOptionPane.showMessageDialog(null, "删除成功", "删除数据", JOptionPane.WARNING_MESSAGE);
            }
            
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "当前学号已经存在", "添加数据", JOptionPane.WARNING_MESSAGE);
        }
        
    }
    public static void changeStudent(String name,String gender,String id,String birthday,String politicaloutlook,String ad,String tel,String number) {
        PreparedStatement presql;
        String sqlstr="delete from stu where id=?";
        try {
            presql=con.prepareStatement(sqlstr);
            presql.setString(1, id);
            int ok=presql.executeUpdate();
            if(ok==0) {
                JOptionPane.showMessageDialog(null, "未找到相关学号", "删除数据", JOptionPane.WARNING_MESSAGE);
            }else {
                sqlstr="insert into stu(name,gender,id,birthday,politicaloutlook,ad,tel,number)values(?,?,?,?,?,?,?,?)";
                
                    presql=con.prepareStatement(sqlstr);
                    presql.setString(1, name);
                    presql.setString(2, gender);
                    presql.setString(3, id);
                    presql.setString(4, birthday);
                    presql.setString(5, politicaloutlook);
                    presql.setString(6, ad);
                    presql.setString(7, tel);
                    presql.setString(8, number);
                    ok=presql.executeUpdate();
                JOptionPane.showMessageDialog(null, "更改成功", "更改数据", JOptionPane.WARNING_MESSAGE);
                String[] data = new String[8];
                data[0] = name;
                data[1] = gender;
                data[2] = id;
                data[3] = birthday;
                data[4] = politicaloutlook;
                data[5] = ad;
                data[6] = tel;
                data[7] = number;
                Maneger.model.addRow(data);
            }
            
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "更改失败", "更改数据", JOptionPane.WARNING_MESSAGE);
        }
    }
    public static void showAllStudent() {
        PreparedStatement presql;
        String sqlstr="select * from stu";
        try {
            presql = con.prepareStatement(sqlstr);
            ResultSet rs = presql.executeQuery();
            LoginEvent.addList(rs);
        }catch(SQLException e) {
            
        }
    }
    public static void showStudent(String id) {
        PreparedStatement presql;
        String sqlstr="select * from stu";
        try {
            presql = con.prepareStatement(sqlstr);
            ResultSet rs = presql.executeQuery();
            while(rs.next()) {
                if(rs.getString(2).equals(id)) {
                    String[] data = new String[8];
                    data[0] = rs.getString(1);
                    data[1] = rs.getString(3);
                    data[2] = rs.getString(2);
                    data[3] = rs.getString(4);
                    data[4] = rs.getString(5);
                    data[5] = rs.getString(6);
                    data[6] = rs.getString(7);
                    data[7] = rs.getString(8);
                    Maneger.model.addRow(data);
                }
                
            }
            
        }catch(SQLException e) {
            
        }
    }

创建GUI界面(以操作界面为例)

    
    public class Maneger extends JFrame{
    FlowLayout flowlayout;//定义一个布局
    JLabel name;
    public static JTextField nametext;
    JLabel id;
    public static JTextField idtext;
    JLabel birthday;
    public static JTextField birthdaytext;
    JLabel politicaloutlook;
    public static JTextField politicaloutlooktext;
    JLabel ad;
    public static JTextField adtext;
    JLabel tel;
    public static JTextField teltext;
    JLabel number;
    public static JTextField numbertext;
    ButtonGroup group=null;
    public static JRadioButton men,women;
    JButton add,delete,change,show,clear;
    ActionListener lintener_1;
    Object columns[] = {"姓名","性别","学号","出生日期","政治面貌","家庭住址","电话","宿舍号"};
    
    JTable tableL=null;
    JScrollPane jscrollpane;
    static Object a[][];
    static Vector rwo;
    static int row;
    public static DefaultTableModel model;
    static TableColumnModel columnModel;
    javax.swing.JPanel jpanel_1;
    javax.swing.JPanel jpanel_2;
    
    final int WIDTH=550;//设置顶层框架宽度
    final int HEIGHT=500;//设置顶层框架高度
    
    public Maneger() {
        init();
        setVisible(true);//设置窗口可显示
        setResizable(false);//窗口大小不可变
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置默认关闭方式
        validate();//让组件生效
        
    }
​
    void init() {
        
        Toolkit kit = java.awt.Toolkit.getDefaultToolkit();//获取对象大小 设置窗口位置
        Dimension screenSize = kit.getScreenSize();
        int width = screenSize.width;
        int height = screenSize.height;
        int x = (width-WIDTH)/2;
        int y = (height-HEIGHT)/2;
        this.setBounds(x, y, WIDTH, HEIGHT);
        this.setTitle("管理员操作");
        
        jpanel_1 = new javax.swing.JPanel();
        jpanel_1.setBorder(BorderFactory.createTitledBorder("基本信息处理"));
        jpanel_1.setBounds(0, 0, WIDTH, 50);
        flowlayout = new FlowLayout(FlowLayout.CENTER);//居中对齐
        jpanel_1.setLayout(flowlayout);
        jpanel_1.setOpaque(false);
        
        jpanel_2 = new javax.swing.JPanel();
        jpanel_2.setBorder(BorderFactory.createTitledBorder("学生数据信息显示"));
        jpanel_2.setBounds(0, 220, WIDTH, 370);
        flowlayout = new FlowLayout(FlowLayout.CENTER);//居中对齐
        jpanel_2.setLayout(flowlayout);
        jpanel_2.setOpaque(false);
        table();
        Font font = new Font("华文bai行楷",Font.BOLD,18);
        
        group = new ButtonGroup();
        name = new JLabel("姓名");
        name.setFont(font);
        nametext = new JTextField(12);
        nametext.setFont(font);
        men = new JRadioButton("男");
        men.setFont(font);
        women = new JRadioButton("女");
        women.setFont(font);
        
        id = new JLabel("学号");
        idtext = new JTextField(12);
        idtext.setFont(font);
        id.setFont(font);
        birthday = new JLabel("生日");
        birthdaytext = new JTextField(12);
        birthday.setFont(font);
        birthdaytext.setFont(font);
        politicaloutlook = new JLabel("              政治面貌");
        politicaloutlooktext = new JTextField(12);
        politicaloutlook.setFont(font);
        politicaloutlooktext.setFont(font);
        ad = new JLabel("地址");
        adtext = new JTextField(12);
        ad.setFont(font);
        adtext.setFont(font);
        tel = new JLabel("电话");
        teltext = new JTextField(12);
        tel.setFont(font);
        teltext.setFont(font);
        number = new JLabel("宿舍");
        numbertext = new JTextField(12);
        numbertext.setFont(font);
        number.setFont(font);
        
        add = new JButton("增加");
        add.setFont(font);
        delete = new JButton("删除");
        delete.setFont(font);
        change = new JButton("修改");
        change.setFont(font);
        show = new JButton("查询");
        show.setFont(font);
        clear = new JButton("清空");
        clear.setFont(font);
        group.add(men);
        group.add(women);
    
        
        
        jpanel_1.add(name);
        jpanel_1.add(nametext);
​
​
        
        jpanel_1.add(id);
        jpanel_1.add(idtext);
        jpanel_1.add(birthday);
        jpanel_1.add(birthdaytext);
​
        jpanel_1.add(ad);
        jpanel_1.add(adtext);
        jpanel_1.add(tel);
        jpanel_1.add(teltext);
        jpanel_1.add(number);
        jpanel_1.add(numbertext);
        jpanel_1.add(men);
        jpanel_1.add(women);
        jpanel_1.add(politicaloutlook);
        jpanel_1.add(politicaloutlooktext);
        
        jpanel_1.add(add);
        jpanel_1.add(delete);
        jpanel_1.add(change);
        jpanel_1.add(show);
        jpanel_1.add(clear);
        
        jpanel_2.add(jscrollpane);
        this.add(jpanel_2);
        this.add(jpanel_1);
        allEvent();
        setAllName();
    }
    void table() {
        tableL = getTable();
        jscrollpane = new JScrollPane(tableL);//添加一个浏览窗格
        jscrollpane.setPreferredSize(new Dimension(530,200));//给窗格设置大小
        tableL.setPreferredSize(new Dimension(200,200));//给表格设置大小
        jscrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);//将滑动组件显示在窗口中
        
    }
    JTable getTable() {
        if(tableL==null) {
            tableL = new JTable();
        }
        int[] columnWidth= {100,100,100,100,100,100,100,100};
        model=new DefaultTableModel() {
            public boolean isCellEditable(int row,int column) {
                return false;
            }
        };
        model.setColumnIdentifiers(columns);
        tableL.setModel(model);
        columnModel = tableL.getColumnModel();
        tableL.getTableHeader().setReorderingAllowed(false);
        tableL.getTableHeader().setResizingAllowed(false);
        int count = columnModel.getColumnCount();
        for (int i = 0; i < count; i++) {
            TableColumn column = columnModel.getColumn(i);
            column.setPreferredWidth(columnWidth[i]);
        }
        rwo = new Vector(8);
        return tableL;
        
    }
    void allEvent() {
        lintener_1 = new LoginEvent();
        add.addActionListener(lintener_1);
        delete.addActionListener(lintener_1);
        change.addActionListener(lintener_1);
        show.addActionListener(lintener_1);
        clear.addActionListener(lintener_1);
    }
    void setAllName() {
        add.setName("add");
        delete.setName("delete");
        change.setName("change");
        show.setName("show");
        clear.setName("clear");
    }
}

监听模块(以登录为例)

    public class LoginEvent implements ActionListener {
    JButton button;
​
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        try {
            button = (JButton) e.getSource();
            if (button.getName().equals("login")) {
                String account = LoginStart.accounttext.getText();
                String password = new String(LoginStart.passwordtxet.getPassword());
                if (Mysqld.LoginAccount(account, password)) {
                    Maneger maneger = new Maneger();
                } else {
                    JOptionPane.showMessageDialog(null, "密码错误", "登录信息", JOptionPane.WARNING_MESSAGE);
                }
​
            }
​
            if (button.getName().equals("add")) {
                String name = Maneger.nametext.getText();
                String id = Maneger.idtext.getText();
                String gender = "";
                String birthday = Maneger.birthdaytext.getText();
                String politicaloutlook = Maneger.politicaloutlooktext.getText();
                String ad = Maneger.adtext.getText();
                String tel = Maneger.teltext.getText();
                String number = Maneger.numbertext.getText();
                if (name.equals("")) {
                    JOptionPane.showMessageDialog(null, "姓名不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                } else if (!Maneger.men.isSelected() && !Maneger.women.isSelected()) {
                    JOptionPane.showMessageDialog(null, "姓别不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                } else if (id.equals("")) {
                    JOptionPane.showMessageDialog(null, "学号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                } else if (birthday.equals("")) {
                    JOptionPane.showMessageDialog(null, "生日不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                } else if (politicaloutlook.equals("")) {
                    JOptionPane.showMessageDialog(null, "政治面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                } else if (ad.equals("")) {
                    JOptionPane.showMessageDialog(null, "地址不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                } else if (tel.equals("")) {
                    JOptionPane.showMessageDialog(null, "电话面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                } else if (number.equals("")) {
                    JOptionPane.showMessageDialog(null, "宿舍号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                }else {
                    if (Maneger.men.isSelected()) {
                        gender = "男";
                    }
                    if (Maneger.women.isSelected()) {
                        gender = "女";
                    }
                    Mysqld.addStudent(name, gender, id,birthday,politicaloutlook,ad,tel,number);
                }
​
            }
            if (button.getName().equals("delete")) {
​
                String id = Maneger.idtext.getText();
                if (id.equals("")) {
                    JOptionPane.showMessageDialog(null, "学号不能为空", "删除信息", JOptionPane.WARNING_MESSAGE);
                } else {
                    Mysqld.delStudent(id);
                }
            }
​
            if (button.getName().equals("change")) {
                String name = Maneger.nametext.getText();
                String gender = "";
                String id = Maneger.idtext.getText();
                String birthday = Maneger.birthdaytext.getText();
                String politicaloutlook = Maneger.politicaloutlooktext.getText();
                String ad = Maneger.adtext.getText();
                String tel = Maneger.teltext.getText();
                String number = Maneger.numbertext.getText();
                if (id.equals("")) {
                    JOptionPane.showMessageDialog(null, "学号不能为空", "删除信息", JOptionPane.WARNING_MESSAGE);
                } else {
​
                    if (name.equals("")) {
                        JOptionPane.showMessageDialog(null, "姓名不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    } else if (!Maneger.men.isSelected() && !Maneger.women.isSelected()) {
                        JOptionPane.showMessageDialog(null, "姓别不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    } else if (id.equals("")) {
                        JOptionPane.showMessageDialog(null, "学号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    } else if (birthday.equals("")) {
                        JOptionPane.showMessageDialog(null, "生日不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    } else if (politicaloutlook.equals("")) {
                        JOptionPane.showMessageDialog(null, "政治面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    } else if (ad.equals("")) {
                        JOptionPane.showMessageDialog(null, "地址不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    } else if (tel.equals("")) {
                        JOptionPane.showMessageDialog(null, "电话面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    } else if (number.equals("")) {
                        JOptionPane.showMessageDialog(null, "宿舍号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE);
                    }else {
                        if (Maneger.men.isSelected()) {
                            gender = "男";
                        }
                        if (Maneger.women.isSelected()) {
                            gender = "女";
                        }
                        Mysqld.changeStudent(name, gender, id,birthday,politicaloutlook,ad,tel,number);
                    }
​
                }
            }
            if(button.getName().equals("show")) {
                
                String id = Maneger.idtext.getText();
                if(!id.equals("")) {
                    Mysqld.showStudent(id);
                }else {
                    Mysqld.showAllStudent();
                }
                
            }
            if(button.getName().equals("clear")) {
                
                Maneger.model.setNumRows(0);
            }
​
        } catch (Exception e2) {
            // TODO: handle exception
        }
    }
​
    public static void addList(ResultSet rs) throws SQLException {
        while(rs.next()) {
            
            String[] data = new String[8];
            data[0] = rs.getString(1);
            data[1] = rs.getString(3);
            data[2] = rs.getString(2);
            data[3] = rs.getString(4);
            data[4] = rs.getString(5);
            data[5] = rs.getString(6);
            data[6] = rs.getString(7);
            data[7] = rs.getString(8);
            Maneger.model.addRow(data);
        }
        
    }
​
}

项目总结

1、界面设置的不够好看,可以进一步学习增加背景等,更可以学习用web设计界面

2、修改功能有点暴力,直接利用删除再添加,可以尝试直接再原有的基础上修改

3、Java基础不够扎实,在做本次课程设计过程中遇到很多困难,比如对数据库的学习不够,总是会出现连接不上的情况。

队长个人博客地址

Java课程设计 - xpeanut - 博客园

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值