java课程设计《艺术学校招生信息管理系统》(附源代码)

该资源源代码文件夹资源链接:https://download.csdn.net/download/haxyin/85801845

一、设计内容及要求        

        该项目基于java swing,通过MVC结构模型,完成了一个基于图形界面的图形交互程序。整体结构如下:

1.1MVC结构图

         该程序实现的功能有:1.  管理员/负责人登录2. 培训项目信息录入。 3. 培训项目信息的查询。 4. 培训项目信息的删除。 5.用户预约报班信息的录入、修改、查询、删除。

二、设计思路

1.主要技术

        Java Swing,Java 对象流、文件(File)和IO,Java 异常处理

2、设计思路:

        整体设计思路图如下:

图2整体设计思路图

(1)、登录界面

        在该界面中,设置了登录和取消按钮,点击登录时,监视器会判断登录的用户名或密码是否为空, 则会提示对话框“用户名或密码为空”,输入完后,点击登录即可进入服务选择页面。

                                                               图2.1登录界面设计思路

(2)、服务选择页面:

        该界面中,设置了七个按钮,分别对应了按钮的七个功能,左侧三个按钮点击完后可以进入培训项目信息页面窗口,右侧四个按钮点击完后可以进入用户预约信息录入页面窗口。

                                                            图2.2服务选择页面设计思路 

(3)、培训项目信息页面:

        选择完服务后跳转至培训项目信息界面,及可对培训项目信息进行录入、查询、删除、保存、读取操作。

        项目录入部分,管理员可在此添加培训项目信息,并储存至对象数组中。

        项目查询部分,管理员可在此查询项目信息,输入培训项目的名称在数组中进行遍历查询,之后返回该项目信息。

        项目删除部分,管理员可在此删除项目信息,通过管理员所输入的课程名称在数组中查找并删除。

        项目保存部分,管理员可以在此将数组保存到文件中,实现保存。

        项目读取部分,管理员在此可以将文件中的数组读取出来,返回到程序中,实现读取操作。

        以上操作均通过服务类操作数组对象。

                                                        图2.3培训项目信息页面设计思路 

(4)、用户预约报班信息页面:

        选择完服务后跳转至用户预约报班信息页面,及可对用户预约报班信息进行录入、查询、删除、修改、保存、读取操作。

        用户录入部分,管理员可在此添加用户预约报班信息,并储存至对象数组中。

        用户查询部分,管理员可在此查询用户信息,输入用户的名称在数组中进行遍历查询,之后返回该用户信息。

        用户删除部分,管理员可在此删除用户信息,通过管理员所输入的用户名称在数组中查找并删除。

        用户修改部分,管理员可以在此修改用户信息,通过管理员输入的用户名称在数组中查找,如果查询到结果则会返回该用户的全部信息,在此基础上可以进行修改操作,修改完成后可以将修改对象添加到数组中。

        用户保存部分,管理员可以在此将数组保存到文件中,实现保存。

        用户读取部分,管理员在此可以将文件中的数组读取出来,返回到程序中,实现读取操作。

        以上操作均通过服务类操作数组对象。

                                                        图2.4 用户预约报班信息页面

三、详细设计过程与分析  

1.登录页面

        首先先写登录页面,窗口采用盒式布局,给登录和退出增加监视器,可以简单判断用户名或密码输入是否为空,点击登录时即可打开主服务页面,点击退出即可关闭该程序。

                

图3.1登录界面 

登录页面会判断用户名或密码是否为空,如果为空,则会提示:

图3.2提示

2.主窗口页面

主窗口页面在窗口设计方面首先将页面划分为上中两个个部分,上方加入一行醒目的字体,增强用户的体验感,中间部分则是功能选择区,采用盒式布局,由七个按钮组成,七个按钮也表示了程序的七个功能,

七个按钮分别加入了监视器。左边三个按钮表示要对培训项目信息进行相关操作,无论点击其中哪个按钮,都会进入到培训项目信息管理界面。

右边四个按钮表示要对用户预约信息进行相关操作,无论点击其中哪个按钮,都会进入用户预约信息管理界面。

图3.3主窗口页面

3.培训项目信息页面

       窗口设计方面将整个窗体划分为三部分,上部分为搜索框用于查询和刷新操作,中间部分为表格布局,设置表格不可编辑,仅用于显示相关信息,为表格写三个方法,第一个方法为给表格添加新的一行,该行可以返回类成员的私有属性,显示在表格中;第二个方法为删除表格内容,定义一个整形数据记录返回的表格行数,再循环删除表格显示内容;第三个方法为删除特定名称的表格行,配合后续的删除方法使用。下部分为按钮排列,有增加,删除,读取,保存操作。分别为其加入监视器。当点击增加按钮时,会弹出新的对话框面板,将面板文本行中的内容设置为空。

图3.4 增加信息窗口

当输入完成后点击添加按钮时,监视器会调用服务类中的增加操作,将新的类成员对象存入数组中。

图3.5监视器添加代码

图3.6录入

当点击删除按钮时,会弹出输入对话框获取要删除信息的名称,监视器会调用服务类中的删除操作,将之前的类成员挨个遍历比较,找到后进行删除操作。

图3.7 删除

输入后会进行一次查询,若查询到该项目,则:

图3.8 提示

否则:

图3.9提示

删除成功后会提示:

图3.10 提示

当点击查询按钮时,监视器会读取顶端文本框中的内容,传入服务类的查询函数,判断传入字符串内容,决定进行查询还是刷新操作,无论是查询还是刷新操作,都会调用服务类查找方法返回information_item对象,首先将表格全部删除,定义一个row返回该表格的行数,之后循环删除每一行,代码如下:之后采用表格的添加方法添加方法可以循环将添加的information_item对象显示在表格中刷新时会全部显示,查找时会过滤只留下符合查找名称的。

图3.11刷新

图3.12查询

当点击保存按钮时,监视器会调用服务类中的保存函数,通过对象流将实体化的information_items对象遍历到item.txt中,之后弹出对话框提醒保存成功,否则则会报错。

图3.13保存

图3.14保存文件

当点击读取按钮时,监视器会调用服务类中的读取函数,通过对象流将文件item.txt挨个遍历读取到数据模型inforation_items对象当中。之后弹出对话框提醒写入成功,否则则会报错。

图3.15读取成功

4.培训项目信息类

       该类为数据模型,有着四项私有属性,实现了serializable接口通过get方法显示属性内容,通过set方法可以进行设置,同时还拥有删除的方法,删除时将私有属性name变为“kong”其他变为Null,为调用删除时做准备。

5.培训项目信息的服务类

       该类通过监视器调用,拥有增加,删除,查询,保存,读取方法。该类首先先新建了information_item对象数组items[],item.txt文件用于存储。当监视器调用增加方法时,会传入一个information_item类对象用整形数据i循环遍历items[]数组,当数组内元素为空时,将items[i]实体化,将items[i]替换为传过来的类对象完成增加操作。

         当监视器调用删除方法时,整形数据i会遍历information_item对象,当对象为空时,弹出对话框提醒使用者“项目为空”因为是从头遍历到尾,所以如果没有将信息全部录入的话,删除完需要的以后会一直弹出,所以加上“break”,删除完需要的以后会提醒“项目为空”,当遍历到需要删除的信息后到以后会弹出是否要删除,如果选择取消删除,因为会继续遍历的缘故,所以会继续弹出对话框,所以将对话框弹出内容改为“项目为空或取消删除”,当选择删除时,服务类会调用information_item类自带的删除方法,将内容清空,此时类成员的名称变成了“kong”所以如果继续删除的话 ,不会因为前面项目为Null而停止遍历。

         当监视器调用查找方法时,该方法会根据监视器传来的字符串进行遍历查询,如果查询到则会返回information_item对象。

       当监视器调用保存方法时,服务类会根据item.txt文件,先创建文件字节输出流FileOutputStream对象fileout流向文件,紧接着创建对象输出流对象objectout并实体化,之后循环遍历调用对象输出流的writeObject方法将information_item对象写入文件,实现保存操作。

         当监视器调用读取方法时,服务类会根据服务类会根据item.txt文件,先创建文件字节输入流FileinputStream对象filein流向文件,紧接着创建对象输入流对象objectin将文件里的内容遍历读取出来,将information_item对象赋值,实现读取操作。

6.用户预约信息窗口

       用户预约信息类窗口设计与之前提到的培训项目信息类相同,增加,删除,查询方法也相同,区别在于新添加了修改按钮与修改方法。

       当点击窗口中的修改按钮时,监视器会首先弹出输入对话框,提醒用户输入要修改的用户名称,之后将读取到的内容传入用户预约信息服务类的修改方法。

图3.16用户预约信息界面

当点击“修改”时,会出现输入对话框提醒输入需要修改的名称,之后会进行查询:

图3.17 用户修改操作

如果查询到相应结果,则会返还该用户的相关信息:

图3.15用户修改界面

在此基础上进行修改,因为修改时建立在添加的基础上的,所以修改完后会出现

图3.16用户修改后

7.用户预约信息类(information_user)

       用户预约信息类与前文的培训项目信息类方法相同,具有get,set方法与删除(qingkong)方法,不同点在于属性不同,用户预约信息类所具有的属性分别为:"用户名称","用户年龄","用户性别","用户家庭住址","用户预约项目","用户预约时间"。

8.用户预约信息服务类

       该服务类的方法大致与上文提到的培训项目信息服务类用法相同,实体化了information_user[]数组对象与 uers.txt文件。在此不冗余介绍,该类新增了修改(user_change)方法,当监视器调用修改方法时,服务类会根据监视器传过来的字符串挨个遍历查询,若项目为空,则会在控制台输出项目为空语句,

找到与传入字符串名称相同的项目,则会弹出之前的添加对话框,将对话框中的信息显示全显示为修改的项目信息,再次基础上进行修改操作,修改完后会将修改完的对象添加到information_user[]中,因此界面会同时显示修改前的与修改后的信息,修改前的信息性别会隐藏,可以对照其他属性。

四、源代码

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

4.1主函数代码

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

public class window_first extends JFrame{
    public JLabel user;
    public JLabel password;
    public JTextField j1;
    public JPasswordField j2;
    public JButton enter;
    public JButton quit;
    Box box1,box2,basebox;
    first_listener listener;
    window_first(){
        setTitle("艺术学校招生信息管理系统");
        setVisible(true);
        setBounds(500,500,500,300);
        setLayout(new FlowLayout());
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        init();
    }
    void init(){
        user = new JLabel("管理员/负责人用户名:");
        user.setFont(new Font("宋体",Font.BOLD,18));
        password = new JLabel("管理员/负责人密码:");
        password.setFont(new Font("宋体" ,Font.BOLD,18));
        j1 = new JTextField(10);
        j2 = new JPasswordField(10);
        enter = new JButton("登录");
        quit = new JButton("退出");
        enter.setFont(new Font("宋体",Font.BOLD,15));
        quit.setFont(new Font("宋体",Font.BOLD,15));

        box1 = Box.createVerticalBox();
        box1.add(Box.createVerticalStrut(30));
        box1.add(user);
        box1.add(Box.createVerticalStrut(9));
        box1.add(password);
        box1.add(Box.createVerticalStrut(15));
        box1.add(quit);
        box2 = Box.createVerticalBox();
        box2.add(Box.createVerticalStrut(30));
        box2.add(j1);
        box2.add(Box.createVerticalStrut(9));
        box2.add(j2);
        box2.add(Box.createVerticalStrut(9));
        box2.add(enter);
        basebox = Box.createHorizontalBox();
        basebox.add(box1);
        basebox.add(Box.createHorizontalStrut(10));
        basebox.add(box2);
        add(basebox);
        listener = new first_listener();
        listener.setview(this);
        quit.addActionListener(listener);
        enter.addActionListener(listener);


    }
    }
    class first_listener implements ActionListener {
        window_first view;
//        window_main view2;

        public void setview(window_first view) {
            this.view = view;
        }

//        public void setView2(window_main view2) {
//            this.view2 = view2;
//        }

        public void actionPerformed(ActionEvent e) {
            String userId=view.j1.getText();
            String password=String.valueOf(view.j2.getPassword());
            if (e.getSource() == view.quit) {
                view.dispose();
            } else if (e.getSource() == view.enter) {
                if (userId == null || userId.trim().equals("")||password == null||password.trim().equals("")) {
                    JOptionPane.showMessageDialog(view,"用户名或密码不能为空!","提示",JOptionPane.WARNING_MESSAGE);
                } else {
                    new window_main();
                    view.dispose();

                }
            }
        }
    }

4.2登录页面代码

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

public class window_main extends JFrame {
        public JLabel weclome;
        public JPanel Northp;
        public JPanel centerp;
        public JButton item_enter;
        public JButton item_find;
        public JButton item_delete;
        public JButton user_enter;
        public JButton user_xiugai;
        public JButton user_find;
        public JButton user_delete;
        Box box1,box2,basebox;
        main_listener listener;

        window_main(){
            setTitle("艺术学校招生信息管理系统");
            setBounds(700,300,600,600);
            setLayout(new BorderLayout());
            setVisible(true);
            init();
        }
        void init(){
            Northp = new JPanel();
            weclome = new JLabel("欢迎使用艺术学校招生信息管理系统");
            weclome.setFont(new Font("黑体",Font.BOLD,20));
            weclome.setForeground(Color.RED);
            Northp.setSize(400,300);
            Northp.add(weclome);
            getContentPane().add(Northp,BorderLayout.NORTH);
            centerp = new JPanel();
            centerp.setSize(600,400);
            centerp.setLayout(new FlowLayout());
            item_enter = new JButton("培训项目信息录入");
            item_find = new JButton("培训项目信息查询");
            item_delete = new JButton("培训项目信息删除");
            box1 = Box.createVerticalBox();
            box1.add(new JLabel("请选择要进行的服务:"));
            box1.add(Box.createVerticalStrut(20));
            box1.add(item_enter);
            box1.add(Box.createVerticalStrut(20));
            box1.add(item_find);
            box1.add(Box.createVerticalStrut(20));
            box1.add(item_delete);
            box1.add(Box.createVerticalStrut(20));
            basebox = Box.createHorizontalBox();
            basebox.add(box1);
            user_enter = new JButton("用户预约信息录入");
            user_xiugai = new JButton("用户预约信息修改");
            user_find = new JButton("用户预约信息查找");
            user_delete = new JButton("用户预约信息删除");
            box2 = Box.createVerticalBox();
            box2.add(Box.createVerticalStrut(62));
            box2.add(new JLabel(""));
            box2.add(Box.createVerticalStrut(20));
            box2.add(user_enter);
            box2.add(Box.createVerticalStrut(20));
            box2.add(user_xiugai);
            box2.add(Box.createVerticalStrut(20));
            box2.add(user_find);
            box2.add(Box.createVerticalStrut(20));
            box2.add(user_delete);
            box2.add(Box.createVerticalStrut(20));
            basebox.add(Box.createHorizontalStrut(10));
            basebox.add(box2);
            centerp.add(basebox);
            getContentPane().add(centerp,BorderLayout.CENTER);
            listener = new main_listener();
            listener.setView(this);
            item_find.addActionListener(listener);
            item_enter.addActionListener(listener);
            item_delete.addActionListener(listener);
            user_find.addActionListener(listener);
            user_xiugai.addActionListener(listener);
            user_delete.addActionListener(listener);
            user_enter.addActionListener(listener);

        }
}
    class main_listener implements ActionListener{
        window_main view;

        public void setView(window_main view) {
            this.view = view;
        }

        public void actionPerformed(ActionEvent e){
            if (e.getSource() == view.item_find){
                window_second w2 = new window_second();
                w2.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            }
           else if (e.getSource() == view.item_enter){
                window_second w2 = new window_second();
                w2.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            }
            else if (e.getSource() == view.item_delete){
                window_second w2 = new window_second();
                w2.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            }
            else if (e.getSource() == view.user_find){
                window_third w3 = new window_third();
                w3.setVisible(true);
            }
            else if (e.getSource() == view.user_enter){
                window_third w3 = new window_third();

                w3.setVisible(true);
            }
            else if (e.getSource() == view.user_xiugai){
                window_third w3 = new window_third();
                w3.setVisible(true);
            }
            else if (e.getSource() == view.user_delete){
                window_third w3 = new window_third();
                w3.setVisible(true);
            }

        }
    }

4.3服务选择页面代码

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class window_second extends JFrame {
 //   JTextArea area;
    MyJTable table;
    DefaultTableModel tableModel;
    JScrollPane tableScrollPane;
    Object[] tableTitle={"培训项目编号","培训项目名称","培训时长","培训费用"};
    Object[][]tableData={new Object[]{""}};
    JDialog dialog = new JDialog(this,"培训项目信息管理");
    JLabel jnote;
    JLabel jname;
    JLabel jhour;
    JLabel jmoney;
    JTextField j1;
    JTextField j2;
    JTextField j3;
    JTextField j4;
    Box box1,box2,basebox;
    JTextField top;
    JButton find;
    JButton delete;
    JButton luru;
    JPanel toppanel;
    JPanel centerpanel;
    JPanel bottompanel;
    JPanel dbottompanel;
    JButton dtianjia;
    JButton dtuichu;
    JButton save;
    JButton duqu;

//    JDialog dialog2;
//    JLabel delete_label;
//    JTextField delete_name;
//    JButton ddelte;
//    JButton ddquxiao;
    second_listener listener = new second_listener();
    itemService service = new itemService();
   // information_item information = new information_item();

    window_second(){
        setTitle("培训项目信息");
        setBounds(700,300,600,600);
        setVisible(true);
        init();
    }
    void init(){
  //      area = new JTextArea(50,100);

        top = new JTextField(20);
        find = new JButton("查询/刷新");
        toppanel = new JPanel();
        toppanel.setLayout(new FlowLayout());
        toppanel.setSize(500,200);
        toppanel.add(top);
        toppanel.add(find);
        getContentPane().add(toppanel,BorderLayout.NORTH);
        centerpanel = new JPanel();
        centerpanel.setLayout(new FlowLayout());
        bottompanel = new JPanel();
    //    centerpanel.add(area);
    //    getContentPane().add(area,BorderLayout.CENTER);
        delete = new JButton("删除");
        luru = new JButton("录入");
        save = new JButton("保存");
        duqu = new JButton("读取");
        bottompanel.setSize(500,200);
        bottompanel.setLayout(new FlowLayout());
        bottompanel.add(delete);
        bottompanel.add(save);
        bottompanel.add(duqu);
        bottompanel.add(luru);
        getContentPane().add(bottompanel,BorderLayout.SOUTH);
        tableModel=new DefaultTableModel(tableData,tableTitle);
        table=new MyJTable(tableModel);
        tableScrollPane=new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED  );//表格设计
        centerpanel.add(tableScrollPane);
        getContentPane().add(centerpanel,BorderLayout.CENTER);
        dialog.setLayout(new FlowLayout());
        jnote = new JLabel("培训项目编号:");
        jname = new JLabel("培训项目名称:");
        jhour = new JLabel("培训项目时长:");
        jmoney = new JLabel("培训项目费用:");
        j1 = new JTextField(10);
        j2 = new JTextField(10);
        j3 = new JTextField(10);
        j4 = new JTextField(10);
        box1 = Box.createVerticalBox();
        box1.add(jnote);
        box1.add(Box.createVerticalStrut(8));
        box1.add(jname);
        box1.add(Box.createVerticalStrut(8));
        box1.add(jhour);
        box1.add(Box.createVerticalStrut(8));
        box1.add(jmoney);
        box2 = Box.createVerticalBox();
        box2.add(j1);
        box2.add(Box.createVerticalStrut(8));
        box2.add(j2);
        box2.add(Box.createVerticalStrut(8));
        box2.add(j3);
        box2.add(Box.createVerticalStrut(8));
        box2.add(j4);
        box2.add(Box.createVerticalStrut(8));
        basebox = Box.createHorizontalBox();
        basebox.add(box1);
        basebox.add(Box.createHorizontalStrut(10));
        basebox.add(box2);
        dialog.setBounds(700,300,400,400);
        dialog.add(basebox);
        listener.setview(this);
        luru.addActionListener(listener);
        find.addActionListener(listener);
        j1.addActionListener(listener);
        j2.addActionListener(listener);
        j3.addActionListener(listener);
        j4.addActionListener(listener);
        dtianjia = new JButton("添加");
        dtuichu = new JButton("退出");
        dbottompanel = new JPanel();
        dbottompanel.setLayout(new FlowLayout());
        dbottompanel.setSize(300,200);
        dbottompanel.add(dtianjia);
        dbottompanel.add(dtuichu);
        dialog.getContentPane().add(dbottompanel,BorderLayout.SOUTH);
        dtianjia.addActionListener(listener);
        dtuichu.addActionListener(listener);
        service.setView(this);
        delete.addActionListener(listener);
        save.addActionListener(listener);
        duqu.addActionListener(listener);
    }
    public void insertTable(information_item item){
        if (item != null){
            String newkong[] = new String[4];
            newkong[0] = item.getNote();
            newkong[1] = item.getName();
            newkong[2] = item.getMoney();
            newkong[3] = item.getHour();
            tableModel.addRow(newkong);
        }
    }
    public void clearTable(){
        int row = tableModel.getRowCount();
            for (int i = row - 1; i >= 0; i--) {
                tableModel.removeRow(i);
            }
    }
    public void clearnullTable(){
        int row = tableModel.getRowCount();
        for (int i =row-1;i>=0;i--){
            if (service.items[i].getName().trim().equals("kong")==true){
                tableModel.removeRow(i);
            }
        }
    }

    public void findout(){
            JOptionPane.showMessageDialog(this,"不存在该项目!","提示",JOptionPane.WARNING_MESSAGE);
    }
}

class MyJTable extends JTable{
    public MyJTable(TableModel dm){
        super(dm);
    }
    //设置表格不可编辑
    public boolean isCellEditable(int rowIndex,int columnIndex){
        return false;
    }
}

class itemService{
    window_second view;

    public void setView(window_second view) {
        this.view = view;
    }
    File file = new File("item.txt");
    information_item [] items = new information_item[30];
//    public void shitihua(){
//       for (int i =0;i<items.length;i++){
//           items[i] = new information_item();
//       }
//    }
    public void save(){
        try {
          //  file.createNewFile();
            FileOutputStream fileout = new FileOutputStream(file);
            ObjectOutputStream objectout = new ObjectOutputStream(fileout);
            for (int i=0;i<items.length;i++){
            objectout.writeObject(items[i]);
            }
            objectout.close();

        }
        catch (IOException event){}
    }
    public void write(){
        try {
            FileInputStream filein = new FileInputStream(file);
            ObjectInputStream objectin = new ObjectInputStream(filein);
            for (int i =0;i<items.length;i++){
                items[i] = (information_item) objectin.readObject();
            }
            objectin.close();
        }
        catch (ClassNotFoundException event){
            System.out.println("无法读取");
        }
        catch (IOException e){}
    }
        public void item_luru(information_item item){
         for (int i = 0;i<items.length;i++){
             if (items[i] == null){
                    items[i] = new information_item();
                    items[i] = item;
                    JOptionPane.showMessageDialog(view,"添加成功!","提示",JOptionPane.PLAIN_MESSAGE);
                    System.out.println("添加成功!");
                    System.out.println("项目信息:");
                    System.out.println("项目编号:"+items[i].getNote()+"项目名称:"+items[i].getName()+"项目费用:"+items[i].getMoney()+"项目时长:"+items[i].getHour());
                    break;
            }
        }
    }
    public information_item item_find(String name){
            for (information_item item : items){
                if(item != null){
                    if (item.getName().trim().equals(name)){
                        return item;
                    }
                }
            }
            return null;
        }

    public void item_delete(String id){
            for (int i=0;i<items.length;i++){
           //     try {
                    if(items[i] == null){
                        JOptionPane.showMessageDialog(view, "项目为空或取消删除!", "警告", JOptionPane.WARNING_MESSAGE);
                        break;
                    }
                   else if (items[i] != null) {
                        if (items[i].getName().trim().equals(id) == true) {
                            int choose = JOptionPane.showConfirmDialog(view, "存在该项目,是否删除该项目?", "确认", JOptionPane.YES_NO_CANCEL_OPTION);
                            if (choose == JOptionPane.YES_OPTION) {
                                items[i].qingkong();
                                JOptionPane.showMessageDialog(view, "删除成功!", "提示", JOptionPane.WARNING_MESSAGE);
                            }
//                        if (choose == JOptionPane.NO_OPTION){
//                            JOptionPane.showMessageDialog(view,"取消删除!","提示",JOptionPane.WARNING_MESSAGE);
//                        }
                        }
//                        else {
//                            JOptionPane.showMessageDialog(view, "不存在该名称的项目", "警告", JOptionPane.WARNING_MESSAGE);
//                        }
                    }
            }
             //   catch (Exception exception){}

        }


        public information_item[] allinformatijon(){
            return items;
        }

}
class second_listener implements ActionListener{
//    String lnote;
//    String lname;
//    int lhour;
//    int lmoney;
    window_second view;
    public void setview(window_second view){
        this.view = view;
    }
    public void actionPerformed(ActionEvent e){
        if (e.getSource() == view.luru){
            view.dialog.setVisible(true);
            view.j1.setText("");
            view.j2.setText("");
            view.j3.setText("");
            view.j4.setText("");
        }
        else if (e.getSource() == view.dtianjia){
            information_item item = new information_item();
            item.setNote(view.j1.getText());
            item.setName(view.j2.getText());
            item.setMoney(view.j3.getText());
            item.setHour(view.j4.getText());
            view.service.item_luru(item);
            view.dialog.dispose();
        }
        else if (e.getSource() == view.dtuichu){
            view.dialog.dispose();
        }
        else if (e.getSource() == view.find){
            String findid = view.top.getText().trim();
            if (findid.equals("")){
                information_item item[] = view.service.allinformatijon();
                 view.clearTable();
                for (int i=0;i<item.length;i++){
                    view.insertTable(item[i]);
                }//刷新
                view.clearnullTable();
            }
            else{
               information_item item = view.service.item_find(findid);
                if (item != null){
                    view.clearTable();
                    view.insertTable(item);
                }
                else{
                    view.findout();
                }
            }

        }
        else if (e.getSource() == view.delete){
            String id = JOptionPane.showInputDialog(view,"请输入要删除的项目名称","提示",JOptionPane.PLAIN_MESSAGE);
            view.service.item_delete(id);
        }
        else if (e.getSource() == view.save){
        //    view.service.shitihua();
            view.service.save();
            JOptionPane.showMessageDialog(view,"数据保存成功!","提示",JOptionPane.PLAIN_MESSAGE);
        }
        else if (e.getSource() == view.duqu){
           // view.service.shitihua();
            view.service.write();
            JOptionPane.showMessageDialog(view,"数据读取成功!","提示",JOptionPane.PLAIN_MESSAGE);
        }
    }
}

4.4培训项目信息操作代码

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class window_third extends JFrame {

    public JTextField find_field;
    public JButton find;
    public JPanel top;
    public JPanel center;
    public JPanel bottom;
    public JButton add;
    public JButton xiugai;
    public JButton delete;
    public JButton save;
    public JButton write;
    MyJTable table;
    DefaultTableModel tableModel;
    JScrollPane tablescrollpane;
    Object[] titletable = {"用户名称","用户年龄","用户性别","用户家庭住址","用户预约项目","用户预约时间"};
    Object[][]tableDate = {new Object[]{""}};
    JDialog dialog;
    JDialog dialog2;
    JLabel jname;
    JLabel jage;
    JLabel jsex;
    JLabel jaddress;
    JLabel jitem;
    JLabel jtime;
    ButtonGroup group;
    JTextField tname;
    JTextField tage;
    JRadioButton sex1;
    JRadioButton sex2;
    JTextField taddress;
    JTextField titem;
    JTextField ttime;
    JPanel sex = new JPanel();
    JButton dtianjia;
    JButton dtuichu;
    JPanel dbottom;
    JPanel dcenter;
    Box box1,box2,basebox;
    third_listener listener = new third_listener();
    userService service = new userService();

    window_third(){
        setTitle("用户预约报班信息");
        setBounds(700,300,600,600);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        init();
    }
    void init(){
        find_field = new JTextField(20);
        find = new JButton("查询/刷新");
        top = new JPanel();
        center = new JPanel();
        bottom = new JPanel();
        bottom.setLayout(new FlowLayout());
        bottom.setSize(500,200);
        add = new JButton("添加");
        xiugai = new JButton("修改");
        delete = new JButton("删除");
        save = new JButton("保存");
        write = new JButton("读取");
        dialog = new JDialog();
        dialog2 = new JDialog();
      //  dialog.setLayout(new FlowLayout());
        dialog.setTitle("用户预约信息添加");
        dialog.setBounds(700,300,500,500);
        dialog2.setTitle("用户预约信息修改");
        dialog2.setBounds(700,300,500,500);
        jname = new JLabel("用户名称");//"用户名称","用户年龄","用户性别","用户家庭住址","用户预约项目","用户预约时间
        jage = new JLabel("用户年龄");
        jsex = new JLabel("用户性别");
        jaddress = new JLabel("用户家庭住址");
        jitem = new JLabel("用户预约项目");
        jtime = new JLabel("用户预约时间");
        tname = new JTextField(4);
        tage = new JTextField(2);
        group = new ButtonGroup();
        sex1 = new JRadioButton("男",false);
        sex2 = new JRadioButton("女",false);
        group.add(sex1);
        group.add(sex2);
        taddress = new JTextField(20);
        titem = new JTextField(20);
        ttime = new JTextField(20);
        box1 = Box.createVerticalBox();
        box1.add(Box.createVerticalStrut(18));
        box1.add(jname);
        box1.add(Box.createVerticalStrut(10));
        box1.add(jage);
        box1.add(Box.createVerticalStrut(29));
        box1.add(jsex);
        box1.add(Box.createVerticalStrut(35));
        box1.add(jaddress);
        box1.add(Box.createVerticalStrut(10));
        box1.add(jitem);
        box1.add(Box.createVerticalStrut(10));
        box1.add(jtime);
        box1.add(Box.createVerticalStrut(10));
        box2 = Box.createVerticalBox();
        box2.add(Box.createVerticalStrut(20));
        box2.add(tname);
        box2.add(Box.createVerticalStrut(10));
        box2.add(tage);
        box2.add(Box.createVerticalStrut(10));
        sex.add(sex1);
        sex.add(sex2);
        box2.add(sex);
        box2.add(Box.createVerticalStrut(10));
        box2.add(taddress);
        box2.add(Box.createVerticalStrut(10));
        box2.add(titem);
        box2.add(Box.createVerticalStrut(10));
        box2.add(ttime);
        box2.add(Box.createVerticalStrut(10));
        basebox =Box.createHorizontalBox();
        basebox.add(box1);
        basebox.add(Box.createHorizontalStrut(8));
        basebox.add(box2);
        dcenter = new JPanel();
        dcenter.setLayout(new FlowLayout());
        dcenter.add(basebox);
        dialog.getContentPane().add(dcenter,BorderLayout.CENTER);
        dtianjia = new JButton("添加");
        dtuichu = new JButton("退出");
        dbottom = new JPanel();
        dbottom.add(dtianjia);
        dbottom.add(dtuichu);
        dialog.getContentPane().add(dbottom,BorderLayout.SOUTH);
        bottom.add(add);
        bottom.add(xiugai);
        bottom.add(delete);
        bottom.add(save);
        bottom.add(write);
        getContentPane().add(bottom,BorderLayout.SOUTH);
        top.add(find_field);
        top.add(find);
        getContentPane().add(top,BorderLayout.NORTH);
        tableModel = new DefaultTableModel(tableDate,titletable);
        table = new MyJTable(tableModel);
        tablescrollpane = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        center = new JPanel();
        center.setLayout(new FlowLayout());
        center.add(tablescrollpane);
        getContentPane().add(center,BorderLayout.CENTER);
        service.setView(this);
        listener.setView(this);
        add.addActionListener(listener);
        dtianjia.addActionListener(listener);
        dtuichu.addActionListener(listener);
        find.addActionListener(listener);
        delete.addActionListener(listener);
        save.addActionListener(listener);
        write.addActionListener(listener);
        xiugai.addActionListener(listener);

    }
    public void insertTable(information_user user){
        if (user != null){
            String newkong[] = new String[6];
            newkong[0] = user.getName();
            newkong[1] = user.getAge();
            newkong[2] = user.getSex();
            newkong[3] = user.getAddress();
            newkong[4] = user.getReserve_item();
            newkong[5] = user.getReserve_time();
            tableModel.addRow(newkong);
        }
    }
    public void clearnullTable(){
        int row = tableModel.getRowCount();
        for (int i =row-1;i>=0;i--){
            if (service.users[i].getName().trim().equals("kong")==true){
                tableModel.removeRow(i);
            }
        }
    }
    public void clearTable(){
        int row = tableModel.getRowCount();
        for (int i = row-1;i>=0;i--){
            tableModel.removeRow(i);
        }
    }

}

class userService{
    File file2 = new File("user.txt");
    window_third view;
    information_user []users = new information_user[30];
    public void setView(window_third view){
        this.view = view;
    }
    public void save(){
        try {
            file2.createNewFile();
            FileOutputStream fileout2 = new FileOutputStream(file2);
            ObjectOutputStream objectout2 = new ObjectOutputStream(fileout2);
            for (int i = 0;i<users.length;i++){
                objectout2.writeObject(users[i]);
            }
            // objectout2.flush();
            objectout2.close();
        }
        catch (IOException event){}
    }
    public void write(){
        try {
            FileInputStream filein2 = new FileInputStream(file2);
            ObjectInputStream objectin2 = new ObjectInputStream(filein2);
            for (int i =0;i<users.length;i++){
                users[i] = (information_user) objectin2.readObject();
            }
            objectin2.close();
        }
        catch (ClassNotFoundException event){
            System.out.println("无法读取");
        }
        catch (IOException e){};
    }

    public void luru(information_user user){
        for (int i=0;i<users.length;i++){
            if (users[i] == null){
                users[i] = new information_user();
                users[i] = user;
                JOptionPane.showMessageDialog(view,"添加成功!","提示",JOptionPane.PLAIN_MESSAGE);
                System.out.println(users[i].getName());
                break;
            }
        }
    }

    public information_user find(String name) {
        for (int i = 0; i < users.length; i++) {
            if (users[i] != null) {
                if (users[i].getName().trim().equals(name)) {
                    return users[i];
                }
            }
        }
        return null;
    }
    public void information_user_delete(String s){
        for (int i=0;i<users.length;i++){
            if(users[i] == null){
                JOptionPane.showMessageDialog(view, "项目为空或取消删除!", "警告", JOptionPane.WARNING_MESSAGE);
                break;
            }
            else if (users[i] != null) {
                if (users[i].getName().trim().equals(s) == true) {
                    int choose = JOptionPane.showConfirmDialog(view, "存在该项目,是否删除该项目?", "确认", JOptionPane.YES_NO_CANCEL_OPTION);
                    if (choose == JOptionPane.YES_OPTION) {
                        users[i].qingkong();
                        JOptionPane.showMessageDialog(view, "删除成功!", "提示", JOptionPane.WARNING_MESSAGE);
                    }
                }
            }
        }
    }
    public void user_change(String s){
        for (int i = 0;i<users.length;i++){
            if (users[i] == null){
                System.out.printf("第%d个项目为空\n",i);
            }
            else {
                if (users[i].getName().trim().equals(s) == true){
                    int j = i;
                    view.dialog.setVisible(true);
                    view.tname.setText(users[j].getName());
                    view.tage.setText(users[j].getAge());
                    view.taddress.setText(users[j].getAddress());
                    view.titem.setText(users[j].getReserve_item());
                    view.ttime.setText(users[j].getReserve_time());
                    users[j].setName(view.tname.getText());
                    users[j].setAge(view.tage.getText());
                    String sex = null;
                    if (view.sex1.isSelected()){
                        sex = "男";
                    }
                    if (view.sex2.isSelected()){
                        sex = "女";
                    }
                    users[j].setSex(sex);
                    users[j].setAddress(view.taddress.getText());
                    users[j].setReserve_item(view.titem.getText());
                    users[j].setReserve_time(view.ttime.getText());
                    users[i] = users[j];
                }
                else {
                }
            }
        }
    }




    public information_user[] alluserinformation(){
        return users;
    }

}
class third_listener implements ActionListener{
    window_third view;
    public void setView(window_third view){
        this.view = view;
    }
    public void actionPerformed(ActionEvent e){
        if (e.getSource() == view.add){
            view.dialog.setVisible(true);
            view.tname.setText("");
            view.tage.setText("");
            view.ttime.setText("");
            view.taddress.setText("");
            view.titem.setText("");
        }
        else if(e.getSource() == view.dtianjia){
            information_user user = new information_user();
            String sex = "s";
            user.setName(view.tname.getText());
            user.setAge(view.tage.getText());
            if (view.sex1.isSelected()){
                sex = "男";
            }
            if (view.sex2.isSelected()){
                sex = "女";
            }
            user.setSex(sex);
            user.setAddress(view.taddress.getText());
            user.setReserve_item(view.titem.getText());
            user.setReserve_time(view.ttime.getText());
            view.service.luru(user);
            view.dialog.dispose();
        }
        else if (e.getSource() == view.dtuichu){
            view.dialog.dispose();
        }
        else if (e.getSource() == view.find){
            String findid = view.find_field.getText().trim();
            if (findid.equals("")){
                information_user user[] = view.service.alluserinformation();
                view.clearTable();
                for (int i = 0;i<user.length;i++){
                    view.insertTable(user[i]);
                }
                view.clearnullTable();
            }
            else {
                information_user user = view.service.find(findid);
                if (user!=null){
                    view.clearTable();
                    view.insertTable(user);
                }
                else {
                    JOptionPane.showMessageDialog(view,"不存在该项目!","警告",JOptionPane.WARNING_MESSAGE);
                }
            }
        }
        else if (e.getSource() == view.delete){
            String s = JOptionPane.showInputDialog(view,"请输入要删除用户的姓名:");
            view.service.information_user_delete(s);
        }
        else if (e.getSource() == view.save){
            view.service.save();
            JOptionPane.showMessageDialog(view,"数据保存成功!","提示",JOptionPane.PLAIN_MESSAGE);
        }
        else if (e.getSource() == view.write){
            view.service.write();
            JOptionPane.showMessageDialog(view,"数据读取成功!","提示",JOptionPane.PLAIN_MESSAGE);
        }
        else if (e.getSource() == view.xiugai){
            String s = JOptionPane.showInputDialog(view,"请输入要修改用户的姓名:");
            view.service.user_change(s);
        }

    }
}

4.5用户预约信息相关操作代码

import java.io.Serializable;

public class information_user implements Serializable {
    private String name;
    private String age;
    private String sex;
    private String address;
    private String reserve_item;
    private String reserve_time;
    information_user(){}
    information_user(String name,String age,String sex,String address,String reserve_item,String reserve_time){
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.address = address;
        this.reserve_item = reserve_item;
        this.reserve_time = reserve_time;
    }
    public void setName(String name){
        this.name = name;
    }
    public void setAge(String age){
        this.age = age;
    }
    public void setSex(String sex){
        this.sex = sex;
    }
    public void setAddress(String address){
        this.address = address;
    }
    public void setReserve_item(String reserve_item){
        this.reserve_item = reserve_item;
    }
    public void setReserve_time(String reserve_time){
        this.reserve_time = reserve_time;
    }
    public String getName(){
        return name;
    }
    public String getAge(){
        return age;
    }
    public String getSex(){
        return sex;
    }
    public String getAddress(){
        return address;
    }
    public String getReserve_item(){
        return reserve_item;
    }
    public String getReserve_time(){
        return reserve_time;
    }
    public  void qingkong(){
        this.name = "kong";
        this.age = null;
        this.sex = null;
        this.address = null;
        this.reserve_item = null;
        this.reserve_time = null;
    }


}

4.6用户信息模型

import java.io.Serializable;

public class information_item implements Serializable {
    private String note;
    private String name;
    private String hour;
    private String money;
    information_item(){}
    information_item(String  note,String name,String hour,String money){
        this.note = note;
        this.name = name;
        this.hour = hour;
        this.money = money;
    }
    public String getNote(){
        return note;
    }
    public String getName(){
        return  name;
    }
    public String getHour(){
        return hour;
    }
    public String getMoney(){
        return money;
    }
    public void setNote(String note){
        this.note = note;
    }
    public void setName(String name){
        this.name = name;
    }
    public void setHour(String hour){
        this.hour = hour;
    }
    public void setMoney(String money){
        this.money = money;
    }
    public  void qingkong(){
        this.name = "kong";
        this.note = null;
        this.hour = null;
        this.money = null;
    }

}

4.7培训项目信息模型

五、总结   

        该项目的不足之处在于开辟的空间没有充分利用,删除操作没有做到将空间腾出来供后续数据插入利用,而是删除之后所占据的空间也相应报废,无法再次利用。修改操作修改完并没有自动替换,而是同时出现修改后与修改前,还需用户自行决定是否删除,因为反复修改,注释,所以难免也积累了一些冗余代码,好在总体大致实现了其功能。

        通过该项目的设计,我对类的方法调用,接口的实现,窗口布局,监视器调用,对象流输入,输出等知识点理解更加的深入,这不仅是一次项目的完成,同时也是一次深度学习。该项目一共7个java文件,两个txt文件,14个类,总共1057行代码,设计期间也是遇到了不少问题,一次次修改,一次次注释,一次次查询,培养了我的耐心,提升了对于一些bug的经验。积累的不仅仅是代码量,更是我对Java的热情,这份热情也将运用于以后的其他语言学习中。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haxyin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值