Java学生管理系统GUI图形界面V1.0

不细说了,这会要去改进美化界面了,代码中用了很多笨方法,总算是实现了这个程序,源码如下:(温馨提示:左侧应该有导航栏,其实我刚刚发现)

Main:主函数&Filew:文件操作

package student;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

import static student.Main.fe;
import static student.Main.list;

public class Main {
    static List<student> list = new ArrayList<student>();
    static String fe=".\\studentData.txt";//文件名
    static {

        File file;
        file = new File(fe);
        if (!file.exists()) {
            try {
                boolean newFile = file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //到这里已经成功打开了文件,或者是创建了文件
        //将文件中的数据读入程序
        FileReader fr= null;
        BufferedReader br=null;

        try {
            fr = new FileReader(fe);
            br = new BufferedReader(fr);
            String Line = "";
            while ((Line=br.readLine())!=null){
                String[] s = Line.split(" ");
                student stu = new student();
                stu.setID(s[0]);
                stu.setName(s[1]);
                stu.setSex(s[2]);
                stu.setGrade(s[3]);
                list.add(stu);
            }
            fr.close();
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {




      new FileFrame();
    }
}
class Filew{ //导出信息到文件类
    public void writeStu(student stu){ //追加写入指定信息
        try {
            FileWriter fw = new FileWriter(fe, true);
            BufferedWriter bw = new BufferedWriter(fw);
            if (!list.isEmpty()){ //bug补丁 //仅适用于当前方法
                bw.newLine();
            }
            bw.write(stu.getID() + " " +stu.getName() + " " + stu.getSex() + " " +  stu.getGrade());
            bw.close();
            fw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void writeStu(){ //全部覆盖写入集合中当前信息
        boolean first=false;
        try {
            FileWriter fw = new FileWriter(fe);
            BufferedWriter bw = new BufferedWriter(fw);

            if (first){ //bug补丁 -改
                bw.newLine();
            }
            first=true;
            for (int i = 0; i <list.size(); i++) {
                student s = list.get(i);
                bw.write(s.getID()+" "+s.getName()+" "+s.getSex()+" "+s.getGrade());
                if (i!=list.size()-1){//预防针
                    bw.newLine();
                }
            }
            bw.close();
            fw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

FileFrame:主界面

package student;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FileFrame extends JFrame {


        public FileFrame(){
            super();

        setTitle("韩法旭---学生管理系统V1.0");
        setBounds(600,300,340,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);

        Container con = getContentPane();

        JButton b1 = new JButton("添加");
        JButton b2 = new JButton("删除");
        JButton b3 = new JButton("查询");
        JButton b4 = new JButton("修改");
        JButton b5 = new JButton("遍历");
        JButton b6 = new JButton("退出");

        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p3 = new JPanel();
        JPanel p4 = new JPanel();
        JPanel p5 = new JPanel();
        JPanel p6 = new JPanel();
        JPanel p7 = new JPanel();

        p1.add(b1);
        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == b1) {
                    addStu addStu = new addStu();//添加
                    dispose();
                }
            }
        });

        p2.add(b2);
        b2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == b2) {

                    delStu delStu = new delStu();//删除
                    dispose();
                }
            }
        });

        p3.add(b3);
        b3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == b3) {
                    inquStu inquStu = new inquStu();//查询
                    dispose();
                }
            }
        });

        p4.add(b4);
        b4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == b4) {
                    reStu reStu = new reStu();//修改
                    dispose();
                }
            }
        });

        p5.add(b5);
        b5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == b5) {
                     printfStuAll printfStuAll = new printfStuAll();//遍历
                    dispose();
                }
            }
        });

        p6.add(b6);
        b6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == b6) {
                    System.exit(0);  //退出
                    dispose();
                }
            }
        });

        p7.add(p1);
        p7.add(p2);
        p7.add(p3);
        p7.add(p4);
        p7.add(p5);
        p7.add(p6);
        p7.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 60));
        con.add(p7);

    }

}

addStu:添加学生

package student;

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

import static student.Main.list;

public class addStu extends JFrame {
    public addStu() {

        setTitle("添加学生信息");
        setBounds(600, 300, 300, 360);
        setVisible(true);
//        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);

        JTextField t1,t2,t3,t4;
        JLabel l1,l2,l3,l4;
        JButton b1,b2;

        Container con = getContentPane();

        l1 = new JLabel("学号: ");
        l2 = new JLabel("姓名: ");
        l3 = new JLabel("性别: ");
        l4 = new JLabel("成绩: ");

        b1 = new JButton("确认");
        b2 = new JButton("取消");

        t1 = new JTextField(15);
        t2 = new JTextField(15);
        t3 = new JTextField(15);
        t4 = new JTextField(15);

        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p3 = new JPanel();
        JPanel p4 = new JPanel();
        JPanel p5 = new JPanel();
        JPanel p6 = new JPanel();
        JPanel p7 = new JPanel();

        p1.add(l1);
        p1.add(t1);

        p2.add(l2);
        p2.add(t2);

        p3.add(l3);
        p3.add(t3);

        p4.add(l4);
        p4.add(t4);


        p5.add(b1);

        p6.add(b2);

        p7.add(p1);
        p7.add(p2);
        p7.add(p3);
        p7.add(p4);
        p7.add(p5);
        p7.add(p6);
        p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); //居中,水平距30,垂直距15
        con.add(p7);

        b1.addActionListener(new ActionListener() {
                     public void actionPerformed(ActionEvent e) {
                         String s1 = t1.getText();
                         String s2 = t2.getText();
                         String s3 = t3.getText();
                         String s4 = t4.getText();
                         student s = new student(s1, s2, s3, s4);
                         boolean bool=true;
                         for (student st : list) {//判断学号是否存在
                             if (st.getID().equals(s1)) {
                                 JOptionPane.showMessageDialog(null, "你输入的学号已存在", "警告", JOptionPane.ERROR_MESSAGE);
                                 bool=false;
                                 return; 
                             }
                         }

                         if(t1.getText().equals("") || t2.getText().equals("")||t3.getText().equals("")||t4.getText().equals("")){
                             JOptionPane.showMessageDialog(null, "请输入完整的信息", "警告", JOptionPane.ERROR_MESSAGE);
                             bool=false;
                         }

                         if (bool) {
                             JOptionPane.showMessageDialog(b1, "添加成功");  //消息对话框

                             list.add(s);

                             new Filew().writeStu(s);

                             t1.setText("");
                             t2.setText("");
                             t3.setText("");
                             t4.setText("");


                         } else {
                             JOptionPane.showMessageDialog(null, "添加错误", "错误", JOptionPane.ERROR_MESSAGE);
                         }


                     }
                             });
        b2.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                new FileFrame();
                dispose();  


            }
        });
    }

    }

printfStuAll:遍历

package student;

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

import static student.Main.list;

public class printfStuAll extends JFrame{
    public printfStuAll() {

        setTitle("遍历学生信息");
        setBounds(600, 300, 300, 360);
        setVisible(true);
//        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);

        JTextArea jt;
        JButton b1,b2;

        Container con = getContentPane();



        b1 = new JButton("确认");
        b2 = new JButton("取消");
        String s[] = new String[list.size()];
        for (int i = 0; i < list.size(); i++) {
             student student = list.get(i);
             s[i]=student.getID()+"   "+student.getName()+"   "+student.getSex()+"   "+student.getGrade();
        }
        String s1="";
        for (int i = 0; i < list.size(); i++) {
            s1=s1+s[i]+"\n";
        }
        jt=new JTextArea(s1,12,20);
//        setBounds(600,300,340,400);
//        jt.setSize(200,200);
        jt.setLineWrap(true);
         JScrollPane jScrollPane = new JScrollPane(jt);
        jScrollPane.setVerticalScrollBarPolicy(
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        JPanel p1 = new JPanel();
        JPanel p5 = new JPanel();
        JPanel p6 = new JPanel();
        JPanel p7 = new JPanel();

        p1.add(jScrollPane);

        p5.add(b1);
        p6.add(b2);

        p7.add(p1);
        p7.add(p5);
        p7.add(p6);
        p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); //居中,水平距30,垂直距15
        con.add(p7);
        b1.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                new FileFrame();
                dispose();  


            }
        });
        b2.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                new FileFrame();
                dispose();  


            }
        });
    }

}

delStu:删除学生

package student;

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

import static student.Main.list;

public class delStu extends JFrame {
    public delStu() {

        setTitle("删除学生信息");
        setBounds(600, 300, 300, 360);
        setVisible(true);
        setResizable(false);

        JTextField t1;
        JLabel l1,l2;
        JButton b1,b2;

        Container con = getContentPane();

        l1 = new JLabel("学号: ");
        l2=new JLabel("请输入要修改学生的学号");
        l2.setFont(new Font("宋体", Font.PLAIN, 16));

        b1 = new JButton("删除");
        b2 = new JButton("取消");

        t1 = new JTextField(15);

        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p5 = new JPanel();
        JPanel p6 = new JPanel();
        JPanel p7 = new JPanel();

        p1.add(l1);
        p1.add(t1);
        p2.add(l2);

        p5.add(b1);

        p6.add(b2);

        p7.add(l2);
        p7.add(p1);
        p7.add(p5);
        p7.add(p6);
        p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); 
        con.add(p7);

        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
//                System.out.println(list.toString()); // 查看当前集合元素(用于查bug)

                String inID = t1.getText();
                if (list.size()>0){
                    for (int i = 0; i < list.size(); i++) {
                        student stu = list.get(i);
                        if (inID.equals(stu.getID())){
                            list.remove(i);
//                            System.out.println(list.toString());
                            new Filew().writeStu();
                            JOptionPane.showMessageDialog(null, "删除成功", "删除结果", JOptionPane.PLAIN_MESSAGE);

                            return;
                        }
                        if (i==list.size()-1){
                            JOptionPane.showMessageDialog(null, "该学生不存在", "警告", JOptionPane.ERROR_MESSAGE);
                        }
                    }
                }else{
                    JOptionPane.showMessageDialog(null, "没有数据", "警告", JOptionPane.ERROR_MESSAGE);

                }
            }
        });
        b2.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                new FileFrame();
                dispose();  
            }
        });
    }
}

reStu:修改学生 &reStuData:修改具体操作

package student;

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

import static student.Main.list;

public class reStu extends JFrame{
    public reStu() {
        setTitle("修改学生信息");
        setBounds(600, 300, 300, 360);
        setVisible(true);
//        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);

        JTextField  t1;
        JLabel l1,l2;
        JButton b1,b2;

        Container con = getContentPane();

        l1 = new JLabel("学号: ");
        l2=new JLabel("请输入要修改学生的学号");
        l2.setFont(new Font("宋体", Font.PLAIN, 16));
        b1 = new JButton("确认");
        b2 = new JButton("取消");

        t1 = new JTextField(15);

        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p5 = new JPanel();
        JPanel p6 = new JPanel();
        JPanel p7 = new JPanel();

        p1.add(l1);
        p1.add(t1);

        p2.add(l2);

        p5.add(b1);

        p6.add(b2);

        p7.add(p2);
        p7.add(p1);
        p7.add(p5);
        p7.add(p6);
        p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); 
        con.add(p7);

        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s1 = t1.getText();
                for (int i=0;i<list.size();i++) {//判断学号是否存在
                    student student = list.get(i);
                    if (student.getID().equals(s1)) {
                        new reStuData(i);
                        break;
                    }
                    if (i == list.size() - 1){
                        JOptionPane.showMessageDialog(null, "你输入的学号不存在", "警告", JOptionPane.ERROR_MESSAGE);
                        t1.setText("");
                        return;
                    }
                }


                dispose();

            }
        });
        b2.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                new FileFrame();
                dispose();  


            }
        });
    }
}
class reStuData extends JFrame{
    public reStuData(int i) {
        setTitle("修改学生信息");
        setBounds(600, 300, 300, 360);
        setVisible(true);
//        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);

        JTextField t2,t3,t4;
        JLabel l2,l3,l4;
        JButton b1,b2;

        Container con = getContentPane();

        l2 = new JLabel("姓名: ");
        l3 = new JLabel("性别: ");
        l4 = new JLabel("成绩: ");

        b1 = new JButton("确认");
        b2 = new JButton("取消");


        t2 = new JTextField(15);
        t3 = new JTextField(15);
        t4 = new JTextField(15);

        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p3 = new JPanel();
        JPanel p4 = new JPanel();
        JPanel p5 = new JPanel();
        JPanel p6 = new JPanel();
        JPanel p7 = new JPanel();




        p2.add(l2);
        p2.add(t2);

        p3.add(l3);
        p3.add(t3);

        p4.add(l4);
        p4.add(t4);


        p5.add(b1);

        p6.add(b2);

        p7.add(p1);
        p7.add(p2);
        p7.add(p3);
        p7.add(p4);
        p7.add(p5);
        p7.add(p6);
        p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); 
        con.add(p7);

        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                String s2 = t2.getText();
                String s3 = t3.getText();
                String s4 = t4.getText();
                student student = list.get(i);
                student.setName(s2);
                student.setSex(s3);
                student.setGrade(s4);
                list.set(i, student);
                new Filew().writeStu();
                JOptionPane.showMessageDialog(b1, "修改成功");  //消息对话框
                new reStu();
                dispose();

            }
        });
        b2.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                new reStu();
                dispose();  


            }
        });
    }



}

inquStu:查询学生

package student;

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

import static student.Main.list;

public class inquStu extends JFrame {
    public inquStu() {

        setTitle("查询学生信息");
        setBounds(600, 300, 300, 360);
        setVisible(true);
        setResizable(false);

        JTextField t1;
        JLabel l1,l2;
        JButton b1,b2;

        Container con = getContentPane();


        l1 = new JLabel("学号: ");
        l2=new JLabel("请输入要修改学生的学号");
        l2.setFont(new Font("宋体", Font.PLAIN, 16));


        b1 = new JButton("查询");
        b2 = new JButton("取消");

        t1 = new JTextField(15);

        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p5 = new JPanel();
        JPanel p6 = new JPanel();
        JPanel p7 = new JPanel();

        p1.add(l1);
        p1.add(t1);
        p2.add(l2);

        p5.add(b1);

        p6.add(b2);

        p7.add(p2);
        p7.add(p1);
        p7.add(p5);
        p7.add(p6);
        p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); 
        con.add(p7);

        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String inID = t1.getText();
                    if (list.size()>0){
                        for (int i = 0; i < list.size(); i++) {
                            student stu = list.get(i);
                            if (inID.equals(stu.getID())){

                                String string = stu.getID()+"------------"+stu.getName()+"------------"+stu.getSex()+"------------"+stu.getGrade();

                                JOptionPane.showMessageDialog(null, string, "查询结果", JOptionPane.PLAIN_MESSAGE);

                                return;
                            }
                            if (i==list.size()-1){
                                JOptionPane.showMessageDialog(null, "该学生不存在", "警告", JOptionPane.ERROR_MESSAGE);
                            }
                        }
                    }else{
                        JOptionPane.showMessageDialog(null, "没有数据", "警告", JOptionPane.ERROR_MESSAGE);

                    }
            }
        });
        b2.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                new FileFrame();
                dispose();  
            }
        });
    }
}

student:学生类

package student;

import java.util.Objects;

public class student {
    private String ID;
    private String Name;
    private String Sex;
    private String Grade;
    public student() {
    }

    public student( String ID,String name, String sex, String grade) {
        Name = name;
        Sex = sex;
        this.ID = ID;
        Grade = grade;
    }

    @Override
    public String toString() {
        return ID + " "  + Name  + " " + Sex  + " " +Grade ;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getSex() {
        return Sex;
    }

    public void setSex(String sex) {
        Sex = sex;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public String getGrade() {
        return Grade;
    }

    public void setGrade(String grade) {
        Grade = grade;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        student student = (student) o;
        return Objects.equals(ID, student.ID) &&
                Objects.equals(Name, student.Name) &&
                Objects.equals(Sex, student.Sex) &&
                Objects.equals(Grade, student.Grade);
    }

    @Override
    public int hashCode() {
        return Objects.hash(ID, Name, Sex, Grade);
    }
}
  • 16
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值