一、项目简介
学生基本信息管理系统,可以实现对学生的学号、姓名、年龄、地址等信息的录入,并能对其进行增删减改的操作。
二、项目整体架构
三、主要功能
序号 | 完成功能与任务 | 描述 |
1 | 学生信息增删改查 | 要求用户输入学生的基本信息,如姓名、学号等,并把数据存入文件。通过弹出窗口按照提示,可在文件中修改、删除学生信息。可以调出文件中的内容,查看学生信息。 |
2 | 退出 | 通过弹窗选择是否退出程序。 |
3 | ArrayList数组数据存入文件 | 创建一个用于保存学生信息的ArrayList对象,向ArrayList中添加学生对象信息,创建一个文件对象来指定保存学生信息的文件路径,将学生信息写入文件 |
4 | GUI界面 | 通过使用Swing库,创建了一个窗口,其中包含了文本框、标签、按钮和文本区域等组件,方便用户输入学生信息、执行操作并查看结果。 |
5 | 将java程序转为.jar格式文件 | 通过eclips中的导出来导出文件,并转化为.jar格式,并确保能运行。 |
四、主要代码
1.学生类
package Student;
public class Student{
private String sid;
private String name;
private String age;
private String address;
public Student(String sid, String name, String age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
public Student() {
// TODO Auto-generated constructor stub
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String adress) {
this.address = adress;
}
}
2.方法类
package Student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
public class StudentManagerGUI extends JFrame {
private ArrayList<Student> array;
private JTextField sidField;
private JTextField nameField;
private JTextField ageField;
private JTextField addressField;
private JTextArea resultArea;
public StudentManagerGUI() {
array = new ArrayList<>();
setTitle("学生管理系统");
setSize(500, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(8, 4, 15, 15));
JLabel sidLabel = new JLabel("学号:");
sidField = new JTextField();
JLabel nameLabel = new JLabel("姓名:");
nameField = new JTextField();
JLabel ageLabel = new JLabel("年龄:");
ageField = new JTextField();
JLabel addressLabel = new JLabel("地址:");
addressField = new JTextField();
JButton addButton = new JButton("添加学生");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addStudent();
}
});
JButton findButton = new JButton("查看学生");
findButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
findStudent();
}
});
JButton deleteButton = new JButton("删除学生");
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
deleteStudent();
}
});
JButton updateButton = new JButton("修改学生");
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateStudent();
}
});
JButton exitButton = new JButton("退出");
exitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exit();
}
});
panel.add(sidLabel);
panel.add(sidField);
panel.add(nameLabel);
panel.add(nameField);
panel.add(ageLabel);
panel.add(ageField);
panel.add(addressLabel);
panel.add(addressField);
panel.add(addButton);
panel.add(findButton);
panel.add(deleteButton);
panel.add(updateButton);
panel.add(exitButton);
resultArea = new JTextArea();
resultArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(resultArea);
getContentPane().add(panel, BorderLayout.NORTH);
getContentPane().add(scrollPane, BorderLayout.CENTER);
}
private void addStudent() {
String sid = sidField.getText();
String name = nameField.getText();
String age = ageField.getText();
String address = addressField.getText();
if (sid.isEmpty() || name.isEmpty() || age.isEmpty() || address.isEmpty()) {
JOptionPane.showMessageDialog(this, "请输入完整信息", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
boolean flag = isUsed(sid);
if (flag) {
JOptionPane.showMessageDialog(this, "该学号已被使用,请重新输入", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
Student student = new Student(sid, name, age, address);
array.add(student);
ArraylistToFile(array);
sidField.setText("");
nameField.setText("");
ageField.setText("");
addressField.setText("");
JOptionPane.showMessageDialog(this, "添加成功", "提示", JOptionPane.INFORMATION_MESSAGE);
}
private void findStudent() {
resultArea.setText("");
if (array.size() == 0) {
JOptionPane.showMessageDialog(this, "无学生信息", "提示", JOptionPane.INFORMATION_MESSAGE);
return;
}
StringBuilder sb = new StringBuilder();
sb.append("学号\t姓名\t年龄\t地址\n");
for (Student student : array) {
sb.append(student.getSid()).append("\t").append(student.getName()).append("\t")
.append(student.getAge()).append("\t").append(student.getAddress()).append("\n");
}
resultArea.setText(sb.toString());
}
private void deleteStudent() {
String sid = JOptionPane.showInputDialog(this, "请输入要删除的学生学号:", "删除学生", JOptionPane.PLAIN_MESSAGE);
if (sid.isEmpty()) {
return;
}
boolean flag = false;
for (Student student : array) {
if (student.getSid().equals(sid)) {
array.remove(student);
flag = true;
break;
}
}
if (flag) {
ArraylistToFile(array);
JOptionPane.showMessageDialog(this, "删除成功", "提示", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(this, "找不到该学生", "错误", JOptionPane.ERROR_MESSAGE);
}
}
private void updateStudent() {
String sid = JOptionPane.showInputDialog(this, "请输入要修改的学生学号:", "修改学生", JOptionPane.PLAIN_MESSAGE);
if (sid.isEmpty()) {
return;
}
boolean flag = false;
for (Student student : array) {
if (student.getSid().equals(sid)) {
String newName = JOptionPane.showInputDialog(this, "请输入新姓名:", "修改学生", JOptionPane.PLAIN_MESSAGE);
String newAge = JOptionPane.showInputDialog(this, "请输入新年龄:", "修改学生", JOptionPane.PLAIN_MESSAGE);
String newAddress = JOptionPane.showInputDialog(this, "请输入新地址:", "修改学生", JOptionPane.PLAIN_MESSAGE);
if (!newName.isEmpty()) {
student.setName(newName);
}
if (!newAge.isEmpty()) {
student.setAge(newAge);
}
if (!newAddress.isEmpty()) {
student.setAddress(newAddress);
}
flag = true;
break;
}
}
if (flag) {
ArraylistToFile(array);
JOptionPane.showMessageDialog(this, "修改成功", "提示", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(this, "找不到该学生", "错误", JOptionPane.ERROR_MESSAGE);
}
}
private void exit() {
int choice = JOptionPane.showConfirmDialog(this, "确定退出学生管理系统吗?", "退出", JOptionPane.YES_NO_OPTION);
if (choice == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
private boolean isUsed(String sid) {
for (Student student : array) {
if (student.getSid().equals(sid)) {
return true;
}
}
return false;
}
private void ArraylistToFile(ArrayList<Student> array) {
try {
File file = new File("D:\\eclipsecode\\myStudentManager\\src\\Student\\list.txt");
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fout = new FileOutputStream(file);
OutputStreamWriter out = new OutputStreamWriter(fout);
BufferedWriter bffout = new BufferedWriter(out);
for (Student student : array) {
bffout.write(student.getSid() + "," + student.getName() + "," + student.getAge() + ","
+ student.getAddress() + "\n");
bffout.flush();
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
StudentManagerGUI gui = new StudentManagerGUI();
gui.setVisible(true);
}
});
}
}
五、运行界面
1.运行界面
2.添加学生
3.修改学生
3.删除学生