面向对象综合设计课设

本文详细介绍了使用Java编写的简易学生信息管理系统,包括项目结构、主要功能(如增删改查、GUI设计、文件操作)以及关键代码片段。展示了如何通过ArrayList存储和读写文件,以及如何使用Swing库创建用户界面。
摘要由CSDN通过智能技术生成

一、项目简介

学生基本信息管理系统,可以实现对学生的学号、姓名、年龄、地址等信息的录入,并能对其进行增删减改的操作。

二、项目整体架构

三、主要功能

序号

完成功能与任务

描述

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.删除学生

六、项目git地址

猛男仓库的学生基本信息管理系统

七、成员git提交记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值