嘿,大家好!今天咱们来聊一个挺有意思的项目——用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做图形界面,最常用的是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学习的路上越走越远!
