面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)

这篇具有很好参考价值的文章主要介绍了面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、团队成员及任务

组长:宗庆亮  计科(智能)22-1  202203200021

负责模块:静态登录界面实现以及学生信息系统管理界面的创建

组员:郑金洲  计科(智能)22-1  202203200022

负责模块:增加,删除,修改以及查询功能的实现

团队博客:面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)小组汇报_WayneZ16的博客-CSDN博客

二、项目简介

本项目由我们二人共同合作完成,该系统可实现学生信息的增加,删除,修改,查询,筛选的功能。并将学生信息存储在文件txt 中,不会覆盖原数据。该系统没有利用数据库,是使用文件来存储学生数据,有基本的 UI 界面,操作友好,项目运行没有问题。

三、运行结果

1.登录界面

java面向对象程序设计课程设计,数学建模

2.管理系统界面

java面向对象程序设计课程设计,数学建模

3.录入信息

java面向对象程序设计课程设计,数学建模

4.查看全部信息

 java面向对象程序设计课程设计,数学建模

5.查询信息(输入学号后,点击查询信息)

 java面向对象程序设计课程设计,数学建模

6.删除信息(输入存在的学号后,点击删除信息)

 java面向对象程序设计课程设计,数学建模

java面向对象程序设计课程设计,数学建模

7.修改信息(输入学号后,点击修改信息)

 java面向对象程序设计课程设计,数学建模

 java面向对象程序设计课程设计,数学建模

四、源代码

面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)小组汇报_WayneZ16的博客-CSDN博客

五、个人部分实现过程

1.用户登录界面代码

创建组件,包括一个JFrame窗体、三个JPanel面板、一个JLabel标签、一个JButton按钮。构造方法中初始化组件,并将它们加入到JFrame窗体中。设置布局管理,使用GridLayout网格式布局,将窗体分为3行1列。将标签和按钮加入到对应的面板中,并将面板加入到JFrame中。设置窗体的标题、大小、位置、关闭方式和是否可见。给按钮添加监听器,当用户点击登录按钮时,关闭当前窗口,并打开一个新的窗口,进入学生信息管理系统。

public class Login extends JFrame implements ActionListener {

    //定义组件
    JFrame frame=new JFrame();
    JPanel jp1,jp2,jp3;//面板
    JLabel jlb1;//标签
    JButton jb1;//按钮
    
    //构造函数
    public Login(){
        //创建面板
        jp1=new JPanel();
        jp2=new JPanel();
        jp3=new JPanel();

        //创建标签
        jlb1=new JLabel("学生信息管理系统");

        //创建按钮
        jb1=new JButton("登录");

        //设置布局管理
        frame.setLayout(new GridLayout(3, 1));//网格式布局

        //加入各个组件
        jp1.add(jlb1);
        jp3.add(jb1);
        
        //加入到JFrame
        frame.add(jp2);
        frame.add(jp1);
        frame.add(jp3);

        //设置窗体
        frame.setTitle("用户登录界面");//窗体标签
        frame.setSize(450, 350);//窗体大小
        frame.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
        frame.setVisible(true);//显示窗体

        //锁定窗体
        //this.setResizable(false);

        jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                frame.setVisible(false);
                new ManagerLogin();
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    }
}

2.学生信息管理系统界面代码

进入学生信息管理系统后,同刚开始静态登录界面,首先对窗体进行设计,定义各种组件,有Jlabel,JTextField,JRadioButton,ButtonGroup,JButton,Jpanel类,并创建了2个标签。在构造方法中,创建文本框,按钮(增删改查等按钮)以及面板(p0-p7,pv,pb,ph),其中一个标签为标题,把他放入到pb面板,把另一个标签放到了p0面板,然后在p1-p7面板中加入学生信息标签,并添加前面所创建的文本框,最后将p0-p7放入到pv(8行1列网格布局)面板,在ph面板中加入增删改查等按钮,后续创建容器对象,取得容器面板,并把各种组件加入其中,JPanel的默认布局为Flowout布局,此处将其布局设置为BorderLayout布局,使用该布局,容器空间被分为东西南北中5个区域,然后将pv,pb,ph面板放入到容器中,pv在中,pb在北,ph在南,并设置容器标题、大小、位置、关闭方式和是否可见。

public class ManagerLogin extends JFrame implements ActionListener {
    function fun = new function();

    //定义组件
    JLabel lb1 = new JLabel("学生信息管理系统");//JLabel 对象显示文本
    JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息");

    JTextField 学号, 姓名, 年龄, 电话, 宿舍号,家庭住址;//输入学生基本信息文本
    JRadioButton 男, 女;//声明单选项对象,性别选择
    ButtonGroup group = null;//声明按钮组
    JButton 录入, 查询, 删除, 修改, 显示, 返回;//声明相应的操作的按钮
    JPanel p0, p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;//调节布局的通道

    public ManagerLogin() {       //负责管理员登录的主窗口
        super("学生信息管理系统");

        //创建文本框
        学号 = new JTextField(10);
        姓名 = new JTextField(10);
        电话 = new JTextField(15);
        年龄 = new JTextField(8);
        宿舍号 = new JTextField(15);
        家庭住址 = new JTextField(15);
        
        //按钮
        group = new ButtonGroup();
        男 = new JRadioButton("男");
        女 = new JRadioButton("女");
        group.add(男);//把按钮添加到按钮组
        group.add(女);
        录入 = new JButton("录入信息");//创建按钮对象
        查询 = new JButton("查询信息");
        删除 = new JButton("删除信息");
        修改 = new JButton("修改信息");
        显示 = new JButton("显示全部");
        返回 = new JButton("返回登录");
        
        pb = new JPanel();
        pb.add(lb1, JLabel.CENTER);

        p0 = new JPanel();
        p0.add(lb2, JLabel.CENTER);

        p1 = new JPanel();//创建一个面板
        p1.add(new JLabel("学  号:", JLabel.CENTER));//JLabel.CENTER是指JLabel的中心点。CENTER是中心点的坐标
        p1.add(学号);

        p2 = new JPanel();
        p2.add(new JLabel("姓  名:", JLabel.CENTER));
        p2.add(姓名);

        p3 = new JPanel();
        p3.add(new JLabel("性  别:", JLabel.CENTER));
        p3.add(男);
        p3.add(女);

        p4 = new JPanel();
        p4.add(new JLabel("年    龄:", JLabel.CENTER));
        p4.add(年龄);

        p5 = new JPanel();
        p5.add(new JLabel("电      话:", JLabel.CENTER));
        p5.add(电话);

        p6 = new JPanel();
        p6.add(new JLabel("宿 舍 号 :", JLabel.CENTER));
        p6.add(宿舍号);

        p7 = new JPanel();
        p7.add(new JLabel("家庭住址:", JLabel.CENTER));
        p7.add(家庭住址);

        pv = new JPanel();//面板
        pv.setLayout(new GridLayout(8, 1));   //把pv组件设置成8行1列的网格布局

        pv.add(p0);//把面板放到容器中,add()代表容器
        pv.add(p1);
        pv.add(p2);
        pv.add(p3);
        pv.add(p4);
        pv.add(p5);
        pv.add(p6);
        pv.add(p7);

        ph = new JPanel();
        ph.add(录入);
        ph.add(查询);
        ph.add(修改);
        ph.add(删除);
        ph.add(显示);
        ph.add(返回);

        Container con = getContentPane();//建立容器对象con,取得容器面板
        con.setLayout(new BorderLayout());//设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。
        //若没有指定方位,将添加到中间,上下左右都可以扩展
        con.add(pb, BorderLayout.NORTH);//pb在北边
        con.add(pv, BorderLayout.CENTER);//pv在中间
        con.add(ph, BorderLayout.SOUTH);//ph在南边
        setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭操作
        setBounds(100, 100, 900, 450);//setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的高度
        setVisible(true);//目的是使控件可以显示出来,如果该控件已经被显示出来

后面对增删改查等功能按钮添加监视器,点击后按钮后,触发ActionEvent事件,监视器调用接口中的方法actionPerformed(ActionEvent e),在其方法体中添加相应的方法实现对应的功能。

录入信息:添加监听器,将文本框中的学生信息保存到一个Stu对象中,并将其添加到集合中。获取学号、姓名、年龄、电话、宿舍号和家庭住址这些文本框中的信息,将它们保存到Stu对象中。

过程为:判断该学号对应的学生是否已经存在,如果已经存在则弹出提示框并直接退出。如果学号和姓名为空则弹出提示框并直接退出。判断选择的性别是男还是女,并将其保存到Stu对象中。将Stu对象添加到集合中,并使用writeFile()方法将列表保存到文件中。弹出录入成功的提示框并关闭当前窗口,进入“学生信息管理系统”页面。

录入.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String sID = 学号.getText();    //获取文本框中内容
        if (fun.find(sID) != -1) {
            JOptionPane.showMessageDialog(null, "该学号对应的学生已经存在!!!\n\n请重新输入或者修改已经录入的学生");
            //清空文本框
            学号.setText("");
            姓名.setText("");
            年龄.setText("");
            电话.setText("");
            宿舍号.setText("");
            家庭住址.setText("");
            return;
        }
        String sName = 姓名.getText();
        //先判断学号和姓名是否为空,如果为空,直接退出
        if (sID.equals("") || sName.equals("")) {
            JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!\n\n请重新输入");
            return;
        }
        String sAge = 年龄.getText();
        if (sAge.equals(""))//年龄为空,没有输入
            sAge = "--";
        String sPhone = 电话.getText();
        if (sPhone.equals(""))
            sPhone = "--";
        String sRoom = 宿舍号.getText();
        if (sRoom.equals(""))
            sRoom = "--";
        String sHome = 家庭住址.getText();
        if (sHome.equals(""))
            sHome = "--";

        String sSex = null;
        if (男.isSelected()) {//选择男女
            sSex = 男.getText();
        } else {
            sSex = 女.getText();
        }
        stu.setStuID(sID);
        stu.setAge(sAge);
        stu.setName(sName);
        stu.setSex(sSex);
        stu.setPhoneNumber(sPhone);
        stu.setHome_place(sHome);
        stu.setRoomNumber(sRoom);

        System.out.println("学生管理系统");
        System.out.println(stu.fileString());

        fun.add(stu);
        fun.writeFile();
        JOptionPane.showMessageDialog(null, "录入成功!!!");
        setVisible(false);
        new ManagerLogin();
    }
});

显示全部信息:添加监视器,在点击 显示 按钮时打开一个show_stuall的新窗口来显示所有学生的信息

显示.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        new show_stuall();
    }
});

查询信息:添加监视器,在点击查询后,将符合条件的信息写入到一个文件中,并打开showones窗口来显示查询结果

过程为:获取学号、姓名、年龄、电话、宿舍号和家庭住址这些文本框中的信息,将它们保存到相应的变量中。判断各个信息是否为空,如果为空则将其赋值为"–",表示在此条件下该信息不作为查询条件。将要查询的符合条件的信息写入到文件中,每次覆盖写入,无需全部保存。并关闭文件流。创建一个showones对象,在构造函数中实现了显示查询结果的操作。打开一个新窗口并显示showones对象。清空当前窗口中的文本框和单选框。

查询.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String sID = 学号.getText();    //获取文本框中内容
        if (sID.equals(""))
            sID = "--";
        String sName = 姓名.getText();
        if (sName.equals(""))
            sName = "--";
        String sAge = 年龄.getText();
        if (sAge.equals(""))             //年龄为空,没有输入
            sAge = "--";
        String sPhone = 电话.getText();
        if (sPhone.equals(""))
            sPhone = "--";
        String sRoom = 宿舍号.getText();
        if (sRoom.equals(""))
            sRoom = "--";
        String sHome = 家庭住址.getText();
        if (sHome.equals(""))
            sHome = "--";

        String sSex = null;
        if (男.isSelected()) {//选择男女
            sSex = 男.getText();
        } else {
            if (女.isSelected())
                sSex = 女.getText();
            else {
                sSex = "--";
            }
        }
        //将要查询的符合条件的写入文件
        FileWriter fw = null;
        BufferedWriter out = null;//学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };
        try {
            fw = new FileWriter("查询时暂时存放的文件.txt");
            out = new BufferedWriter(fw);
            //姓名学号等中间隔一个空格
            out.write(sID + "  ");
            out.write(sName + "  ");
            out.write(sSex + "  ");
            out.write(sAge + "  ");
            out.write(sPhone + "  ");
            out.write(sRoom + "  "); //每次覆盖写入,无需全部保存
            out.write(sHome + "  ");
            out.close();
            fw.close();

        } catch (IOException e1) {
            e1.printStackTrace();
        }
        //开始查询
        new showones();

        //清空文本框
        学号.setText("");
        姓名.setText("");
        年龄.setText("");
        电话.setText("");
        宿舍号.setText("");
        家庭住址.setText("");
        group.clearSelection();
    }
});

删除信息:添加一个监视器,在点击 删除 按钮时将指定学号的学生信息删除,并将更新后的列表重新保存到文件中

过程为:获取学号文本框中的内容,将其用作查找指定学生的依据。调用find()方法查找该学号对应的学生在数组列表中的位置,如果为-1则表示没有找到该学生,弹出提示框并直接退出。如果找到了该学生,则调用delete()方法将其在数组列表中删除,并使用writeFile()方法将更新后的列表重新保存到文件中。弹出删除成功的提示框。清空当前窗口中的文本框和单选框。

删除.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String sID = 学号.getText();    //获取文本框中内容
        int flag = fun.find(sID);
        if (flag == -1) {
            JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
        } else {
            fun.delete(sID);
            fun.writeFile();
            JOptionPane.showMessageDialog(null, "删除成功!!!\n");
        }

        //清空文本框
        学号.setText("");
        姓名.setText("");
        年龄.setText("");
        电话.setText("");
        宿舍号.setText("");
        家庭住址.setText("");
        group.clearSelection();

    }
});

修改信息:添加一个监视器,在点击 修改 按钮时将指定学好的学生信息更新为文本框中新输入的信息。

过程为:获取学号文本框中的内容,将其用作查找指定学生的依据。调用find()方法查找该学号对应的学生在数组列表中的位置,如果为-1则表示没有找到该学生,弹出提示框并直接退出。如果找到了该学生,则弹出提示框要求输入需要修改后的数据。获取年龄、电话、宿舍号、家庭住址、性别、姓名等文本框中的新信息,将其保存到Stu对象中。调用update()方法将Stu对象的信息更新到数组列表中,并调用writeFile()方法保存更新后的列表到文件中。弹出修改成功的提示框。清空当前窗口中的文本框和单选框。

修改.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String sID = 学号.getText();    //获取文本框中内容
        int flag = fun.find(sID);    //查找是否存在
        if (flag == -1) {
            JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
            return;
        } else
            JOptionPane.showMessageDialog(null, "该系统中存在该学生数据\n\n,确认返回后请输入需要修改后的数据");
        String sAge = 年龄.getText();
        if (sAge.equals(""))//年龄为空,没有输入
            sAge = "--";
        String sPhone = 电话.getText();
        if (sPhone.equals(""))
            sPhone = "--";
        String sRoom = 宿舍号.getText();
        if (sRoom.equals(""))
            sRoom = "--";
        String sHome = 家庭住址.getText();
        if (sHome.equals(""))
            sHome = "--";
        String sSex = null;
        if (男.isSelected()) {//选择男女
            sSex = 男.getText();
        } else {
            sSex = 女.getText();
        }
        String sName = 姓名.getText();
        //先判断学号和姓名是否为空,如果为空,直接退出
        if (sName.equals("")) {
            JOptionPane.showMessageDialog(null, "录入的学生姓名为空!!!\n\n请重新输入");
            return;
        }
        // student_information stu=new student_information();
        stu.setStuID(sID);
        stu.setAge(sAge);
        stu.setName(sName);
        stu.setSex(sSex);
        stu.setPhoneNumber(sPhone);
        stu.setHome_place(sHome);
        stu.setRoomNumber(sRoom);

        fun.update(stu);       //修改
        fun.writeFile();
        JOptionPane.showMessageDialog(null, "修改成功!!!");
        //清空文本框
        学号.setText("");
        姓名.setText("");
        年龄.setText("");
        电话.setText("");
        宿舍号.setText("");
        家庭住址.setText("");
        group.clearSelection();
    }
});

返回:添加监视器,在点击 返回 时关闭当前窗口,并打开一个新的登录窗口

过程为:在点击“返回”按钮时触发ActionListener。调用setVisible(false)方法将当前窗口设置为不可见,即关闭当前窗口。创建一个新的Login对象,在构造函数中实现了登录窗口的初始化操作。打开一个新窗口并显示Login对象。

返回.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        setVisible(false);      //目的是使控件不可以显示出来
        new Login();
    }
});

源码: 

public class ManagerLogin extends JFrame implements ActionListener {
    function fun = new function();

    //定义组件
    JLabel lb1 = new JLabel("学生信息管理系统");//JLabel 对象显示文本
    JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息");

    JTextField 学号, 姓名, 年龄, 电话, 宿舍号,家庭住址;//输入学生基本信息文本
    JRadioButton 男, 女;//声明单选项对象,性别选择
    ButtonGroup group = null;//声明按钮组
    JButton 录入, 查询, 删除, 修改, 显示, 返回;//声明相应的操作的按钮
    JPanel p0, p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;//调节布局的通道

    public ManagerLogin() {       //负责管理员登录的主窗口
        super("学生信息管理系统");
        学号 = new JTextField(10);//创建文本框
        姓名 = new JTextField(10);
        电话 = new JTextField(15);
        年龄 = new JTextField(8);
        宿舍号 = new JTextField(15);
        家庭住址 = new JTextField(15);

        group = new ButtonGroup();
        男 = new JRadioButton("男");
        女 = new JRadioButton("女");
        group.add(男);//把按钮添加到按钮组
        group.add(女);
        录入 = new JButton("录入信息");//创建按钮对象
        查询 = new JButton("查询信息");
        删除 = new JButton("删除信息");
        修改 = new JButton("修改信息");
        显示 = new JButton("显示全部");
        返回 = new JButton("返回登录");

        pb = new JPanel();
        pb.add(lb1, JLabel.CENTER);

        p0 = new JPanel();
        p0.add(lb2, JLabel.CENTER);

        p1 = new JPanel();//创建一个面板
        p1.add(new JLabel("学  号:", JLabel.CENTER));//JLabel.CENTER是指JLabel的中心点。CENTER是中心点的坐标
        p1.add(学号);

        p2 = new JPanel();
        p2.add(new JLabel("姓  名:", JLabel.CENTER));
        p2.add(姓名);

        p3 = new JPanel();
        p3.add(new JLabel("性  别:", JLabel.CENTER));
        p3.add(男);
        p3.add(女);

        p4 = new JPanel();
        p4.add(new JLabel("年    龄:", JLabel.CENTER));
        p4.add(年龄);

        p5 = new JPanel();
        p5.add(new JLabel("电      话:", JLabel.CENTER));
        p5.add(电话);

        p6 = new JPanel();
        p6.add(new JLabel("宿 舍 号 :", JLabel.CENTER));
        p6.add(宿舍号);

        p7 = new JPanel();
        p7.add(new JLabel("家庭住址:", JLabel.CENTER));
        p7.add(家庭住址);

        pv = new JPanel();//面板
        pv.setLayout(new GridLayout(8, 1));   //把pv组件设置成第七行1列的网格布局

        pv.add(p0);//把面板放到容器中,add()代表容器
        pv.add(p1);
        pv.add(p2);
        pv.add(p3);
        pv.add(p4);
        pv.add(p5);
        pv.add(p6);
        pv.add(p7);

        ph = new JPanel();
        ph.add(录入);
        ph.add(查询);
        ph.add(修改);
        ph.add(删除);
        ph.add(显示);
        ph.add(返回);

        Container con = getContentPane();//建立容器对象con,取得容器面板
        con.setLayout(new BorderLayout());//设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。
        //若没有指定方位,将添加到中间,上下左右都可以扩展
        con.add(pb, BorderLayout.NORTH);//pb在北边
        con.add(pv, BorderLayout.CENTER);//pv在中间
        con.add(ph, BorderLayout.SOUTH);//ph在南边
        setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭操作
        setBounds(100, 100, 900, 450);//setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的高度
        setVisible(true);//目的是使控件可以显示出来,如果该控件已经被显示出来

        student_information stu = new student_information();
        ArrayList<student_information> arry = new ArrayList<student_information>();
        //添加监听
        //点击录入按钮  学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码"
        录入.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String sID = 学号.getText();    //获取文本框中内容
                if (fun.find(sID) != -1) {
                    JOptionPane.showMessageDialog(null, "该学号对应的学生已经存在!!!\n\n请重新输入或者修改已经录入的学生");
                    //清空文本框
                    学号.setText("");
                    姓名.setText("");
                    年龄.setText("");
                    电话.setText("");
                    宿舍号.setText("");
                    家庭住址.setText("");

                    return;
                }
                String sName = 姓名.getText();
                //先判断学号和姓名是否为空,如果为空,直接退出
                if (sID.equals("") || sName.equals("")) {
                    JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!\n\n请重新输入");
                    return;
                }
                String sAge = 年龄.getText();
                if (sAge.equals(""))//年龄为空,没有输入
                    sAge = "--";
                String sPhone = 电话.getText();
                if (sPhone.equals(""))
                    sPhone = "--";
                String sRoom = 宿舍号.getText();
                if (sRoom.equals(""))
                    sRoom = "--";
                String sHome = 家庭住址.getText();
                if (sHome.equals(""))
                    sHome = "--";

                String sSex = null;
                if (男.isSelected()) {//选择男女
                    sSex = 男.getText();
                } else {
                    sSex = 女.getText();
                }

                stu.setStuID(sID);
                stu.setAge(sAge);
                stu.setName(sName);
                stu.setSex(sSex);
                stu.setPhoneNumber(sPhone);
                stu.setHome_place(sHome);
                stu.setRoomNumber(sRoom);

                //arry.clear();//	清除原数组列表中的数据
                // Input input=new Input(stu);

                System.out.println("信息管理员");
                System.out.println(stu.fileString());

                fun.add(stu);
                fun.writeFile();

                JOptionPane.showMessageDialog(null, "录入成功!!!");
                //dispose();
                setVisible(false);
                new ManagerLogin();


            }
        });


        //显示全部学生信息
        显示.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //show_stuall all=new show_stuall();
                new show_stuall();
            }
        });

        //查询某个学生信息
        查询.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String sID = 学号.getText();    //获取文本框中内容
                if (sID.equals(""))
                    sID = "--";
                String sName = 姓名.getText();
                if (sName.equals(""))
                    sName = "--";
                String sAge = 年龄.getText();
                if (sAge.equals(""))             //年龄为空,没有输入
                    sAge = "--";
                String sPhone = 电话.getText();
                if (sPhone.equals(""))
                    sPhone = "--";
                String sRoom = 宿舍号.getText();
                if (sRoom.equals(""))
                    sRoom = "--";
                String sHome = 家庭住址.getText();
                if (sHome.equals(""))
                    sHome = "--";

                String sSex = null;
                if (男.isSelected()) {//选择男女
                    sSex = 男.getText();
                } else {
                    if (女.isSelected())
                        sSex = 女.getText();
                    else {
                        sSex = "--";
                    }
                }
                //将要查询的符合条件的写入文件
                FileWriter fw = null;
                BufferedWriter out = null;//学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };
                try {
                    fw = new FileWriter("查询时暂时存放的文件.txt");
                    out = new BufferedWriter(fw);
                    //姓名学号等中间隔一个空格
                    out.write(sID + "  ");
                    out.write(sName + "  ");
                    out.write(sSex + "  ");
                    out.write(sAge + "  ");
                    out.write(sPhone + "  ");
                    out.write(sRoom + "  "); //每次覆盖写入,无需全部保存
                    out.write(sHome + "  ");

                    out.close();
                    fw.close();

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

                }
                //开始查询
                new showones();

                //清空文本框
                学号.setText("");
                姓名.setText("");
                年龄.setText("");
                电话.setText("");
                宿舍号.setText("");
                家庭住址.setText("");
                group.clearSelection();

            }
        });


        //删除学生信息,按学号删除
        删除.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String sID = 学号.getText();    //获取文本框中内容
                int flag = fun.find(sID);
                if (flag == -1) {
                    JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
                } else {
                    fun.delete(sID);
                    fun.writeFile();
                    JOptionPane.showMessageDialog(null, "删除成功!!!\n");
                }

                //清空文本框
                学号.setText("");
                姓名.setText("");
                年龄.setText("");
                电话.setText("");
                宿舍号.setText("");
                家庭住址.setText("");

                group.clearSelection();

            }
        });

        //修改学生信息
        修改.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String sID = 学号.getText();    //获取文本框中内容
                int flag = fun.find(sID);    //查找是否存在
                if (flag == -1) {
                    JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
                    return;
                } else
                    JOptionPane.showMessageDialog(null, "该系统中存在该学生数据\n\n,确认返回后请输入需要修改后的数据");

                String sAge = 年龄.getText();
                if (sAge.equals(""))//年龄为空,没有输入
                    sAge = "--";
                String sPhone = 电话.getText();
                if (sPhone.equals(""))
                    sPhone = "--";
                String sRoom = 宿舍号.getText();
                if (sRoom.equals(""))
                    sRoom = "--";
                String sHome = 家庭住址.getText();
                if (sHome.equals(""))
                    sHome = "--";
                String sSex = null;
                if (男.isSelected()) {//选择男女
                    sSex = 男.getText();
                } else {
                    sSex = 女.getText();
                }
                String sName = 姓名.getText();
                //先判断学号和姓名是否为空,如果为空,直接退出
                if (sName.equals("")) {
                    JOptionPane.showMessageDialog(null, "录入的学生姓名为空!!!\n\n请重新输入");
                    return;
                }
                // student_information stu=new student_information();
                stu.setStuID(sID);
                stu.setAge(sAge);
                stu.setName(sName);
                stu.setSex(sSex);
                stu.setPhoneNumber(sPhone);
                stu.setHome_place(sHome);
                stu.setRoomNumber(sRoom);

                fun.update(stu);       //修改
                fun.writeFile();
                JOptionPane.showMessageDialog(null, "修改成功!!!");
                //清空文本框
                学号.setText("");
                姓名.setText("");
                年龄.setText("");
                电话.setText("");
                宿舍号.setText("");
                家庭住址.setText("");
                group.clearSelection();
            }
        });

        返回.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                setVisible(false);      //目的是使控件不可以显示出来
                new Login();
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }

}

3.学生类基本信息

首先是根据学生基本信息,声明变量,给出无参构造器以及有参构造器,随之给出相应的set,get方法,并创建fileString方法,返回基本信息。

public class student_information {
    private String stuID;    /*  学生学号  */
    private String name;     /* 学生姓名 */
    private String sex;     /* 学生性别  */
    private String age;        /*  学生年龄  */
    private String phoneNumber;   /* 学生电话号码   */
    private String home_place;   /* 学生家庭住址,籍贯 */
    private String roomNumber;   /* 宿舍号 */

    /*无参构造方法*/
    public student_information() {

    }

    /*有参构造方法 */
    public student_information(String stuID, String name, String sex, String age, String phoneNumber, String roomNumber, String home_place) {
        super();
        this.stuID = stuID;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.phoneNumber = phoneNumber;
        this.home_place = home_place;
        this.roomNumber = roomNumber;
    }

    public String getStuID() {
        return this.stuID;
    }

    public void setStuID(String stuID) {
        this.stuID = stuID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return this.sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAge() {
        return this.age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getPhoneNumber() {
        return this.phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getHome_place() {
        return this.home_place;
    }

    public void setHome_place(String home_place) {
        this.home_place = home_place;
    }

    public String getRoomNumber() {
        return this.roomNumber;
    }

    public void setRoomNumber(String roomNumber) {
        this.roomNumber = roomNumber;
    }


    //从文件中录入的数据格式    "学号  姓名  性别  年龄  电话  宿舍号  政治面貌  家庭住址"
    public String fileString() {
        return stuID + " " + name + " " + sex + " " + age + "  " + phoneNumber + "  " + roomNumber + "  " + home_place;
    }

}

 4.主函数

在主函数中创建一个Login对象,实现登录界面。文章来源地址https://www.toymoban.com/news/detail-768567.html


public class Main {
    public static void main(String[] args) {
        new Login();
    }
}

到了这里,关于面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java面向对象程序设计实验报告(实验二 面向对象基础练习)

     ✨ 作者: 命运之光  ✨  专栏:Java面向对象程序设计实验报告 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录:源程序代码(带注释) 测试类demo2 Address类 Employee类 实验二 面向对象基础练习 实验环境: Eclipse+JDK 实验目的:

    2024年02月06日
    浏览(75)
  • 一、课程设计目的与任务《数据结构》课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以

    一、课程设计目的与任务 《数据结构》课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相应

    2024年02月21日
    浏览(71)
  • Java面向对象程序设计 - 清览云题库

    目录 清览题库1 清览题库2 清览题库3 清览题库4 清览题库5 1.   给出下列【代码】注释标注的代码的输出结果。 public class Example {    public static void main(String args[])  {       System.out.println(\\\"hello\\\"); //【代码】            } } 答案 hello 2.   给出下列【代码】注释标注的代码

    2024年02月08日
    浏览(51)
  • 【面向对象程序设计】账户类(Java、JavaFX)

    目录 版本1: 设计Account1类,包含: 设计测试类ATMMachine1: 版本2: 扩展Account1类为Account2类:   设计测试类ATMMachine2,其主菜单如下: 版本3: uml啥的找不到了,太久远了,有什么不懂得评论或者私聊问我吧。 ■ 一个名为id 的int 类型的私有数据域(默认值为0),长度为6位

    2024年02月08日
    浏览(43)
  • Java学习手册——第二篇面向对象程序设计

    第一章我们已经介绍了Java语言的基础知识,也知道他能干什么了, 那我们就从他的设计思想开始入手吧。 接触一个语言之前首先要知道他的大方向,设计思想是什么样的, 这样接触起来就知道基本原理,才能事半功倍。 迪克斯特拉(E.W.dijkstra)在 1965 年 提出结构化编程,

    2024年02月12日
    浏览(63)
  • [面向对象程序设计] 汽车租赁系统(Java实现)

    通过Java简单实现汽车租赁系统。 1)系统分为管理员和用户角色登录,不同的角色有不同的权限操作; 2)管理员功能:查看、添加、修改和删除车辆信息,查看营业额; 3)用户功能:登录后,可以查看车辆、租车、换车,模拟付款等; 查看车辆:查看可租/已租车辆;特定

    2023年04月21日
    浏览(47)
  • Java面向对象程序设计实验报告(实验五 接口的练习)

    ✨ 作者:命运之光  ✨ 专栏: Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录:源程序代码(带注释) demo5类 Instrument类 Piano类 play类 Student类 Teacher类 Violin类 work类  实验五 接口的练习 实验

    2024年02月06日
    浏览(45)
  • 《Java面向对象程序设计》学习笔记——CSV文件的读写与处理

    ​笔记汇总: 《Java面向对象程序设计》学习笔记 笔记记录的不是非常详实,如果有补充的建议或纠错,请踊跃评论留言!!! CSV 是英文 comma-separated values 的缩写,翻译为 “逗号分隔值“。 CSV 文件可以理解为以带逗号分隔(也可以是其他简单字符分割)的纯文本形式存储

    2024年02月10日
    浏览(52)
  • [ XJTUSE ]JAVA语言基础知识——第一章 面向对象程序设计思想

    类描述了一组有相同 特性 (属性)和相同 行为 (方法)的对象,类和对象是面向对象思想的两个核心概念 · 人类是一种类,每一个具体的人则是这个类的对象 用面向对象程序来模拟真实世界 发现并创建类 发现类的特征 发现类的行为 在面向对象程序中,对象的特征由各种

    2023年04月13日
    浏览(93)
  • 《Java面向对象程序设计》学习笔记——第 12 章 输入流与输出流

    ​笔记汇总: 《Java面向对象程序设计》学习笔记 File 对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度和文件的读/写权限等,不涉及对文件的读/写操作。 创建 File 对象的构造方法有以下 3 个: 其中, filename 是文件名字 ,directoryPath 是文件的路径,

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包