学生管理系统(组员部分)

一、人员分工

分工姓名任务
组长黄羽悦GUIEditDelete类,GUIEditForm类,GUIOutnum类,GUISeeknum类,StudentDataGenerator 类,GUIUserLogin类,前期调查和功能设计,博客编写
组员庄雨宸JDBCUtil类,Student类,GUIInput类,编码规范设计
组员孙思雨StudentDAOJDBCImpl类,StudentDAOl类,GUImain类,前期调查和功能设计

二、选题和前期调查

1.选题

2.前期调查

(1)使用gpt进行选题研究。

(2)参考了前辈的已完成系统:

https://blog.csdn.net/weixin_63374437/article/details/128518646
https://blog.csdn.net/qq_61827376/article/details/124470583
https://blog.csdn.net/weixin_43887148/article/details/116887706
 

 三、个人任务

1.GUImain类

1. 程序入口和主界面展示:在main方法中使用SwingUtilities的invokeLater方法调用GUImain的构造函数,创建并展示主界面。
2. 创建主界面:loadMainGUI方法负责创建主界面的各个组件,包括一个大标题和若干按钮。
3. 创建按钮:createButtons方法负责创建主界面的按钮,并绑定按钮的ActionListener为GUImain本身。
4. 设置布局:setupLayout方法使用GridBagLayout来设置主界面的布局,将各个组件放置在合适的位置。
5. 处理按钮点击事件:actionPerformed方法捕获按钮点击事件,根据按钮的标签不同来展示不同的子界面或执行不同的操作。
6. 展示子界面:handleButtonClick方法根据按钮点击的不同,展示相应的子界面,并设置子界面的大小和可见性。
7. 添加组件:addComponent方法将组件按照指定的位置和大小加入主界面的GridBagLayout布局中,以展示在界面上。

2.StudentDAOJDBCImpl类

1. 获取所有学生信息:getAllStudents方法使用SQL查询语句从数据库中获取所有学生的信息,并将每个学生的信息封装为Student对象,然后存储在一个List中返回。
2. 添加学生信息:addStudent方法使用SQL插入语句向数据库中添加新的学生信息,将传入的Student对象的各个属性作为插入的数值。
3. 更新学生信息:updateStudent方法使用SQL更新语句根据学生的id更新数据库中对应学生的信息,将传入的Student对象的各个属性作为更新的数值。
4. 删除学生信息:deleteStudent方法使用SQL删除语句从数据库中删除指定id的学生信息。

3. StudentDAOl类

一个定义了学生信息管理的接口,包括了获取、添加、更新和删除学生信息的方法。

1. 获取所有学生信息:getAllStudents方法声明了一个无参数的方法,用于获取所有学生的信息。
2. 添加学生信息:addStudent方法声明了一个接受Student对象作为参数的方法。
3. 更新学生信息:updateStudent方法声明了一个接受Student对象作为参数的方法。
4. 删除学生信息:deleteStudent方法声明了一个接受int类型id作为参数的方法。

四、所负责三个类的关键代码

1.GUImain类

package gui;

import java.awt.Button;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.SwingUtilities;

public class GUImain extends Frame implements ActionListener {
    private static final long serialVersionUID = 1L;
    private Button[] buttons;
    private Label a1;
    private Label a2;
    private GridBagLayout gb;
    private GridBagConstraints gbc;

    public GUImain() {
        GUIUserLogin userLogin = new GUIUserLogin();
        userLogin.setLocationRelativeTo((Component)null);
        userLogin.setVisible(true);
        userLogin.setLoginListener(new 1(this));
    }

    private void loadMainGUI() {
        this.a1 = new Label("     欢迎使用学生成绩管理系统");
        this.a1.setFont(new Font((String)null, 1, 20));
        this.a2 = new Label("                     ");
        this.gb = new GridBagLayout();
        this.setLayout(this.gb);
        this.gbc = new GridBagConstraints();
        this.createButtons();
        this.setupLayout();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        int screenWidth = screenSize.width;
        int screenHeight = screenSize.height;
        int windowWidth = 400;
        int windowHeight = 300;
        int x = (screenWidth - windowWidth) / 2;
        int y = (screenHeight - windowHeight) / 2;
        this.setLocation(x, y);
        this.setSize(windowWidth, windowHeight);
        this.setVisible(true);
    }

    private void createButtons() {
        this.buttons = new Button[5];
        this.buttons[0] = new Button("输入信息");
        this.buttons[1] = new Button("查询成绩");
        this.buttons[2] = new Button("输出成绩");
        this.buttons[3] = new Button("编辑或删除学生信息");
        this.buttons[4] = new Button("退出系统");
        Button[] var4;
        int var3 = (var4 = this.buttons).length;

        for(int var2 = 0; var2 < var3; ++var2) {
            Button button = var4[var2];
            button.addActionListener(this);
        }

    }

    private void setupLayout() {
        this.gbc.fill = 2;
        this.addComponent(this.a1, 0, 2, 1, 4);
        this.addComponent(this.a2, 4, 2, 1, 2);
        this.addComponent(this.buttons[0], 6, 2, 1, 2);
        this.addComponent(this.buttons[1], 8, 2, 1, 2);
        this.addComponent(this.buttons[2], 10, 2, 1, 2);
        this.addComponent(this.buttons[3], 12, 2, 1, 2);
        this.addComponent(this.buttons[4], 14, 2, 1, 2);
    }

    public void actionPerformed(ActionEvent e) {
        Button[] var5;
        int var4 = (var5 = this.buttons).length;

        for(int var3 = 0; var3 < var4; ++var3) {
            Button button = var5[var3];
            if (e.getActionCommand().equals(button.getLabel())) {
                this.handleButtonClick(button.getLabel());
                break;
            }
        }

    }

    private void handleButtonClick(String buttonLabel) {
        switch (buttonLabel) {
            case "编辑或删除学生信息":
                GUIEditDelete editStudentFrame = new GUIEditDelete();
                this.setupFrame(editStudentFrame, 600, 400);
                break;
            case "查询成绩":
                GUISeeknum seeknumFrame = new GUISeeknum();
                this.setupFrame(seeknumFrame, 600, 400);
                break;
            case "输入信息":
                GUIInput inputFrame = new GUIInput();
                this.setupFrame(inputFrame, 600, 400);
                break;
            case "输出成绩":
                GUIOutnum outnumFrame = new GUIOutnum();
                this.setupFrame(outnumFrame, 700, 500);
                break;
            case "退出系统":
                this.setVisible(false);
                this.dispose();
                System.exit(0);
        }

    }

    private void setupFrame(Frame frame, int width, int height) {
        frame.setSize(width, height);
        frame.setVisible(true);
    }

    public void addComponent(Component c, int row, int col, int nrow, int ncol) {
        this.gbc.gridx = col;
        this.gbc.gridy = row;
        this.gbc.gridheight = ncol;
        this.gbc.gridwidth = nrow;
        this.gb.setConstraints(c, this.gbc);
        this.add(c);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            GUImain mainGUI = new GUImain();
            mainGUI.setVisible(false);
        });
    }
}

2. StudentDAOJDBCImpl类

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.Student;

public class StudentDAOJDBCImpl implements StudentDAO {
    private Connection conn;

    public StudentDAOJDBCImpl(Connection conn) {
        this.conn = conn;
    }

    public List<Student> getAllStudents() {
        List<Student> students = new ArrayList();

        try {
            Throwable var2 = null;
            Object var3 = null;

            try {
                PreparedStatement stmt = this.conn.prepareStatement("SELECT * FROM students");

                try {
                    ResultSet rs = stmt.executeQuery();

                    try {
                        while(rs.next()) {
                            Student student = new Student(rs.getInt("id"), rs.getString("name"), rs.getString("gender").charAt(0), rs.getDate("birthdate"), rs.getDouble("math"), rs.getDouble("English"), rs.getDouble("Java"), rs.getDouble("computer"), rs.getDouble("score"), rs.getDouble("average"));
                            students.add(student);
                        }
                    } finally {
                        if (rs != null) {
                            rs.close();
                        }

                    }
                } catch (Throwable var20) {
                    if (var2 == null) {
                        var2 = var20;
                    } else if (var2 != var20) {
                        var2.addSuppressed(var20);
                    }

                    if (stmt != null) {
                        stmt.close();
                    }

                    throw var2;
                }

                if (stmt != null) {
                    stmt.close();
                }
            } catch (Throwable var21) {
                if (var2 == null) {
                    var2 = var21;
                } else if (var2 != var21) {
                    var2.addSuppressed(var21);
                }

                throw var2;
            }
        } catch (SQLException var22) {
            var22.printStackTrace();
        }

        return students;
    }

    public void addStudent(Student student) {
        try {
            Throwable var2 = null;
            Object var3 = null;

            try {
                PreparedStatement stmt = this.conn.prepareStatement("INSERT INTO students (id, name, gender, birthdate, math, English, Java, computer, score, average) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

                try {
                    stmt.setInt(1, student.getId());
                    stmt.setString(2, student.getName());
                    stmt.setString(3, String.valueOf(student.getGender()));
                    stmt.setDate(4, student.getBirthdate());
                    stmt.setDouble(5, student.getMath());
                    stmt.setDouble(6, student.getEnglish());
                    stmt.setDouble(7, student.getJava());
                    stmt.setDouble(8, student.getComputer());
                    stmt.setDouble(9, student.getScore());
                    stmt.setDouble(10, student.getAverage());
                    stmt.executeUpdate();
                } finally {
                    if (stmt != null) {
                        stmt.close();
                    }

                }
            } catch (Throwable var12) {
                if (var2 == null) {
                    var2 = var12;
                } else if (var2 != var12) {
                    var2.addSuppressed(var12);
                }

                throw var2;
            }
        } catch (SQLException var13) {
            var13.printStackTrace();
        }

    }

    public void updateStudent(Student student) {
        try {
            Throwable var2 = null;
            Object var3 = null;

            try {
                PreparedStatement stmt = this.conn.prepareStatement("UPDATE students SET name = ?, gender = ?, birthdate = ?, math = ?, English = ?, Java = ?, computer = ?, score = ?, average = ? WHERE id = ?");

                try {
                    stmt.setString(1, student.getName());
                    stmt.setString(2, String.valueOf(student.getGender()));
                    stmt.setDate(3, student.getBirthdate());
                    stmt.setDouble(4, student.getMath());
                    stmt.setDouble(5, student.getEnglish());
                    stmt.setDouble(6, student.getJava());
                    stmt.setDouble(7, student.getComputer());
                    stmt.setDouble(8, student.getScore());
                    stmt.setDouble(9, student.getAverage());
                    stmt.setInt(10, student.getId());
                    stmt.executeUpdate();
                } finally {
                    if (stmt != null) {
                        stmt.close();
                    }

                }
            } catch (Throwable var12) {
                if (var2 == null) {
                    var2 = var12;
                } else if (var2 != var12) {
                    var2.addSuppressed(var12);
                }

                throw var2;
            }
        } catch (SQLException var13) {
            var13.printStackTrace();
        }

    }

    public void deleteStudent(int id) {
        try {
            Throwable var2 = null;
            Object var3 = null;

            try {
                PreparedStatement stmt = this.conn.prepareStatement("DELETE FROM students WHERE id = ?");

                try {
                    stmt.setInt(1, id);
                    stmt.executeUpdate();
                } finally {
                    if (stmt != null) {
                        stmt.close();
                    }

                }
            } catch (Throwable var12) {
                if (var2 == null) {
                    var2 = var12;
                } else if (var2 != var12) {
                    var2.addSuppressed(var12);
                }

                throw var2;
            }
        } catch (SQLException var13) {
            var13.printStackTrace();
        }

    }
}

3. StudentDAOl类

package dao;

import java.util.List;
import model.Student;

public interface StudentDAO {
    List<Student> getAllStudents();

    void addStudent(Student var1);

    void updateStudent(Student var1);

    void deleteStudent(int var1);
}

(注:设计中有队长黄羽悦和使用chatgpt帮助解决困难)

为实现用户需求,从需求分析阶段的数据流图出发,根据小组讨论后确定的最佳方案。本系统主要包括两大功能模块:学生信息和成绩信息两个系统。其中学生信息系统划分为七个模块,学生成绩划分为四个模块。然后在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据结构。在测试过程中,先对单个模块进行测试,然后把模块连接起来进行测试。测试完成后书写文档,最后小组成员和用户在一块审查和复审。 1、 课题陈述 一方面,在时下这个飞速发展的信息社会中,直到今天仍然没有一套完善可行的学生信息管理系统出现在学校里。每年,从大专生、本科生到硕士生、博士生,几千人的入学、升学、毕业,全要由教务处和各系老师人工管理。信息量之巨大,工作量之繁重,是难以想象的。因此,学校和各个系都要安排多名教师专门负责学生学籍管理,浪费了大量的人力资源。然而,即使这样,管理仍然谈不上井井有条。举一个最简单的真实例子,一个同学的姓名在花名册里印错了,就一错错了三年,一直没能改正。同学想去改,却不知道是应该找系里,还是去找教务处。还有,当学生的基本信息,比如家庭住址、电话等变更后,无法及时在档案中修改,使得老师与同学无法联系沟通。 另一方面,从社会这方面讲,随着计算机的普及,越来越多的学校利用计算机来处理日常事务。面对众多的数据资料,很多管理者常常感到无从下手。在数字化的今天,我们需要一个学生管理系统,使我们的整体管理水平上一个档次,与如今这个高科技的信息社会接轨。 因此,如何有效的管理学生信息,帮助学校和老师管理和掌握这些情况,这就是学生信息管理系统需要完成的任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值