当前位置: 首页 > 新闻资讯  > 校友管理系统

用Java打造一个校友管理系统:从零开始的实战指南

本文详细讲解如何使用Java开发一个简单的校友管理系统,包含代码实现和开发思路。

嘿,大家好!今天咱们来聊一个挺有意思的项目——用Java写一个校友管理系统。听起来是不是有点高大上?其实吧,这个项目并不复杂,但能让你学到不少东西,比如面向对象、数据库操作、还有基本的GUI设计。如果你是刚学Java的小白,或者想练手,那这篇文章绝对适合你。

 

先说一下,什么是校友管理系统呢?简单来说,就是一个用来管理学校毕业生信息的系统。比如,你可以记录每个校友的姓名、联系方式、毕业年份、专业等等。然后还能查询、添加、修改和删除这些信息。听起来是不是很像我们平时用的通讯录?不过更专业一点,而且有数据库支持。

 

那么,怎么开始呢?首先,我们需要确定技术栈。因为是用Java,那肯定离不开Java SE,也就是标准版Java。然后需要用到JDBC连接数据库,可能还需要一个图形界面,比如用Swing或者JavaFX。当然,如果不想做图形界面,也可以先做个控制台版本,方便调试。

 

我们先来聊聊数据库部分。校友管理系统的核心就是数据存储,所以得先建个数据库。这里我推荐用MySQL,因为它比较常见,而且免费。接下来,我给大家写一个简单的SQL语句,创建一个校友表:

 

    CREATE TABLE alumni (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(100) NOT NULL,
        email VARCHAR(150),
        graduation_year INT,
        major VARCHAR(100)
    );
    

 

这个表里有几个字段:id是主键,用来唯一标识每个校友;name是姓名,email是邮箱,graduation_year是毕业年份,major是专业。这些字段应该能满足基本需求了。

 

接下来,我们用Java来连接这个数据库。Java连接数据库一般用JDBC,也就是Java Database Connectivity。这部分需要导入MySQL的驱动包,也就是mysql-connector-java.jar。你可以去官网下载,或者用Maven引入依赖。

 

然后,我们可以写一个工具类,用来获取数据库连接。下面是一个简单的例子:

 

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;

    public class DBUtil {
        private static final String URL = "jdbc:mysql://localhost:3306/alumni_db?useSSL=false&serverTimezone=UTC";
        private static final String USER = "root";
        private static final String PASSWORD = "your_password";

        public static Connection getConnection() {
            try {
                return DriverManager.getConnection(URL, USER, PASSWORD);
            } catch (SQLException e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    

 

这个DBUtil类的作用就是提供一个获取数据库连接的方法。注意,这里的URL要根据你的数据库名和配置进行修改,用户和密码也要改成你自己的。

 

现在,我们有了数据库连接,接下来就是操作数据库了。比如,添加一个校友的信息。我们可以写一个Alumni类,用来封装校友的数据:

 

    public class Alumni {
        private int id;
        private String name;
        private String email;
        private int graduationYear;
        private String major;

        // 构造方法、getter和setter省略
    }
    

 

然后,写一个DAO(Data Access Object)类,负责与数据库交互。比如,添加一个校友的方法:

 

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    public class AlumniDAO {
        public void addAlumni(Alumni alumni) {
            String sql = "INSERT INTO alumni (name, email, graduation_year, major) VALUES (?, ?, ?, ?)";
            try (Connection conn = DBUtil.getConnection();
                 PreparedStatement pstmt = conn.prepareStatement(sql)) {
                pstmt.setString(1, alumni.getName());
                pstmt.setString(2, alumni.getEmail());
                pstmt.setInt(3, alumni.getGraduationYear());
                pstmt.setString(4, alumni.getMajor());
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

 

这个方法通过PreparedStatement来防止SQL注入,并且使用占位符来传入参数。这样写起来更安全,也更规范。

 

然后,我们可以写一个测试类,来验证一下是否能成功添加数据:

 

    public class TestAlumni {
        public static void main(String[] args) {
            Alumni alumni = new Alumni();
            alumni.setName("张三");
            alumni.setEmail("zhangsan@example.com");
            alumni.setGraduationYear(2020);
            alumni.setMajor("计算机科学");

            AlumniDAO dao = new AlumniDAO();
            dao.addAlumni(alumni);

            System.out.println("校友信息已添加!");
        }
    }
    

 

如果没有报错,说明数据库连接和插入操作都成功了。那接下来可以继续扩展功能,比如查询、更新和删除。

 

查询的话,可以写一个根据ID查询的方法:

 

    public Alumni getAlumniById(int id) {
        String sql = "SELECT * FROM alumni WHERE id = ?";
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setInt(1, id);
            ResultSet rs = pstmt.executeQuery();

            if (rs.next()) {
                Alumni alumni = new Alumni();
                alumni.setId(rs.getInt("id"));
                alumni.setName(rs.getString("name"));
                alumni.setEmail(rs.getString("email"));
                alumni.setGraduationYear(rs.getInt("graduation_year"));
                alumni.setMajor(rs.getString("major"));
                return alumni;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    

 

这样就能根据ID查到对应的校友信息了。当然,还可以根据其他条件查询,比如按姓名、专业等。

 

更新和删除也类似,只需要写对应的SQL语句,然后用PreparedStatement执行即可。比如更新:

 

    public void updateAlumni(Alumni alumni) {
        String sql = "UPDATE alumni SET name = ?, email = ?, graduation_year = ?, major = ? WHERE id = ?";
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setString(1, alumni.getName());
            pstmt.setString(2, alumni.getEmail());
            pstmt.setInt(3, alumni.getGraduationYear());
            pstmt.setString(4, alumni.getMajor());
            pstmt.setInt(5, alumni.getId());
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    

 

删除的话就更简单了:

 

    public void deleteAlumni(int id) {
        String sql = "DELETE FROM alumni WHERE id = ?";
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setInt(1, id);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    

Java

 

看到这里,你是不是觉得已经掌握了基本的增删改查操作?那接下来,我们可以考虑做一个图形界面,让这个系统看起来更友好。

 

用Java做图形界面,最常用的是Swing或者JavaFX。这里我以Swing为例,做一个简单的窗口,让用户能够输入信息并提交。比如,一个添加校友的界面:

 

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class AddAlumniFrame extends JFrame {
        private JTextField nameField, emailField, yearField, majorField;

        public AddAlumniFrame() {
            setTitle("添加校友");
            setSize(400, 300);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLayout(new GridLayout(5, 2));

            add(new JLabel("姓名:"));
            nameField = new JTextField();
            add(nameField);

            add(new JLabel("邮箱:"));
            emailField = new JTextField();
            add(emailField);

            add(new JLabel("毕业年份:"));
            yearField = new JTextField();
            add(yearField);

            add(new JLabel("专业:"));
            majorField = new JTextField();
            add(majorField);

            JButton submitButton = new JButton("提交");
            submitButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String name = nameField.getText();
                    String email = emailField.getText();
                    int year = Integer.parseInt(yearField.getText());
                    String major = majorField.getText();

                    Alumni alumni = new Alumni();
                    alumni.setName(name);
                    alumni.setEmail(email);
                    alumni.setGraduationYear(year);
                    alumni.setMajor(major);

                    AlumniDAO dao = new AlumniDAO();
                    dao.addAlumni(alumni);

                    JOptionPane.showMessageDialog(null, "校友信息已添加!");
                }
            });

            add(submitButton);
        }

        public static void main(String[] args) {
            SwingUtilities.invokeLater(() -> {
                new AddAlumniFrame().setVisible(true);
            });
        }
    }
    

 

这个窗口很简单,就是几个输入框和一个提交按钮。点击提交后,会把输入的信息封装成Alumni对象,然后调用DAO层的方法保存到数据库中。

 

有没有觉得挺直观的?虽然界面简陋,但至少能让人看得懂。如果你还想进一步美化,可以用JavaFX,或者加一些布局优化,比如使用BorderLayout、GridBagLayout等。

 

说到这里,我觉得这个项目还是挺有成就感的。它不仅锻炼了你的Java基础,还涉及到数据库操作、面向对象设计、图形界面开发等多个方面。对于初学者来说,这是一个不错的练习项目。

 

当然,这只是一个基础版本。如果你想让它更强大,可以考虑加入更多功能,比如:

 

- 搜索功能:根据姓名、专业等搜索校友

- 导出功能:将数据导出为Excel或CSV文件

- 分页显示:当数据量大时,分页展示

- 权限管理:不同用户有不同的操作权限

- 日志记录:记录用户的操作行为

 

这些功能都需要进一步学习相关技术,比如Apache POI用于处理Excel,Spring Boot用于构建更复杂的系统,或者使用MyBatis简化数据库操作。

 

总结一下,这次我们用Java写了一个简单的校友管理系统,涉及了数据库连接、增删改查操作、图形界面设计等内容。虽然只是一个小项目,但涵盖的知识点很多,非常适合初学者练手。

 

如果你对这个项目感兴趣,建议自己动手试试看。遇到问题不要怕,多查文档、多看例子,慢慢就能掌握。毕竟,编程就是这样,靠实践才能真正提升。

 

最后,如果你有任何疑问或者想要扩展功能,欢迎留言交流。希望这篇文章对你有所帮助,祝你在Java学习的路上越走越远!

相关资讯

    暂无相关的数据...