⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 command.java

📁 采用面向对象方法和Java语言开发一个基于命令行交互方式的议程管理系统(agenda).已注册到系统的用户(user)可添加(add),删除(delete),查询(query)系统中记录的会议(mee
💻 JAVA
字号:
package agenda;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.*;
import java.io.*;

import agenda.Quit;
import agenda.Register;
import agenda.Clear;
import agenda.Delete;
import agenda.Add;
import agenda.Query;
import agenda.Help;

/*
CommandShell 类为本系统的交互类,所有的交互操作都集中放在此类的start方法中。
读取输入,解析命令,执行命令对应的功能类,供主类直接调用 
 */
public class Command {

    private static final String REGISTER = "register";
    private static final String ADD = "add";
    private static final String QUERY = "query";
    private static final String DELETE = "delete";
    private static final String CLEAR = "clear";
    private static final String BATCH = "batch";
    private static final String QUIT = "quit";
    private static final String HELP = "help";
    public static String username = null;
    public static String password = null;
    //用于存储命令参数的容器
    public static List register_list = new ArrayList();
    public static List add_list = new ArrayList();
    public static List query_list = new ArrayList();
    public static List delete_list = new ArrayList();
    public static List clear_list = new ArrayList();
    public static List batch_list = new ArrayList();
    private PrintWriter Cout = null;
    private File Fin = null;
    private boolean batching = false;

    public Command() {
        Cout = new PrintWriter(System.out);
        batching = false;


    }

    public boolean not_NULL(Object obj) {
        if (obj instanceof String) {
            String s = (String) obj;
            return s != null && s.trim().length() > 0;
        }
        return obj != null;
    }
    // 用于退出系统的流

    public void quitstream() {
        Cout.close();
    }

    public void start() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        stmt(br, false);
    }

    public void stmt(BufferedReader br, boolean batching) throws IOException {
        // 读取输入,解析命令,执行
        Cout.print("\n$");
        Cout.flush();
        String input = br.readLine();
        if (batching) {
            Cout.println(input);
            Cout.flush();
        }
        StringTokenizer st = null;
        st = new StringTokenizer(input);
        if (!st.hasMoreTokens()) {
            stmt(br, batching);
            return;
        }
        String cmd = st.nextToken();
        if (cmd.equalsIgnoreCase(REGISTER)) {  // 处理register命令

            // 获取用户名和密码
            if (!st.hasMoreTokens()) {
                Help help = new Help();
                help.helpregister();
            } else {
                while (st.hasMoreTokens()) {
                    register_list.add(st.nextToken());
                }
                // 判断匹配
                if (register_list.size() != 2) {
                    Help help = new Help();
                    help.helpregister();
                } else {
                    Register register = new Register();
                    register.doRegister(Command.register_list);
                }
                register_list.clear();
            }

        } else if (cmd.equalsIgnoreCase(ADD)) {  // 处理add命令

            if (!st.hasMoreTokens()) {
                Help help = new Help();
                help.helpadd();
            } else {
                while (st.hasMoreTokens()) {
                    add_list.add(st.nextToken());
                }
                if (add_list.size() != 6) {
                    Help help = new Help();
                    help.helpadd();
                } else {
                    Add add = new Add();
                    add.doAddAgenda(Command.add_list);
                }
                add_list.clear();
            }
        } else if (cmd.equalsIgnoreCase(QUERY)) {  // 处理query命令

            if (!st.hasMoreTokens()) {
                Help help = new Help();
                help.helpquery();
            } else {
                while (st.hasMoreTokens()) {
                    query_list.add(st.nextToken());
                }
                if (query_list.size() != 4) {
                    Help help = new Help();
                    help.helpquery();

                } else {
                    Query query = new Query();
                    query.doQuery(query_list);
                }
                query_list.clear();
            }
        } else if (cmd.equalsIgnoreCase(DELETE)) {  // 处理delete命令

            if (!st.hasMoreTokens()) {
                Help help = new Help();
                help.helpdelete();
            } else {
                while (st.hasMoreTokens()) {
                    delete_list.add(st.nextToken());
                }
                if (delete_list.size() != 3) {
                    Help help = new Help();
                    help.helpdelete();

                } else {
                    Delete delete = new Delete();
                    delete.doDelete(delete_list);
                }
                delete_list.clear();
            }
        } else if (cmd.equalsIgnoreCase(CLEAR)) {  // 处理clear命令

            if (!st.hasMoreTokens()) {
                Help help = new Help();
                help.doHelp();
            } else {
                while (st.hasMoreTokens()) {
                    clear_list.add(st.nextToken());
                }
                if (clear_list.size() != 2) {
                    Help help = new Help();
                    help.helpclear();
                } else {
                    Clear delete = new Clear();
                    delete.doClear(clear_list);
                }
                clear_list.clear();
            }
        } else if (cmd.equalsIgnoreCase(BATCH)) {  // 处理batch命令 由于涉及到数据,故无法将Batch单独列类

            String str;
            str = st.nextToken();//读入文件名

            File file = new File(str);
            if (file.exists()) {
                BufferedReader in = new BufferedReader(new FileReader(file));
                batching = true;
                stmt(in, true);
                in.close();
                stmt(br, batching);
            } else {
                System.out.println("文件不存在!");
            }
        } else if (cmd.equalsIgnoreCase(QUIT)) {
            if (st.hasMoreTokens()) {
                Help help = new Help();
                help.helpquit();
            } else {
                Quit quitout = new Quit();
                quitout.doQuit();
            }
        } else if (cmd.equalsIgnoreCase(HELP)) {
            if (!st.hasMoreTokens()) {
                Help help = new Help();
                help.doHelp();
            } else {
                Help help = new Help();
                help.helphelp();
            }
        } else {
            System.out.println("输入格式不正确,请重新输入!");
            System.out.println("输入help查看帮助信息:");
        }
        if (batching == false || br.ready()) {
            stmt(br, batching);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -