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

📄 commandshell.java

📁 java实现的简单议程管理系统
💻 JAVA
字号:
package agenda.commandparse;

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 agenda.Quit;
import agenda.Register;
import agenda.Clear;
import agenda.Delete;
import agenda.Add;
import agenda.Query;

/**
 * CommandShell 类为本系统的交互类,所有的交互操作都集中放在此类的start方法中。
 * 读取输入,解析命令,执行命令对应的功能类,供主类直接调用
 * @author Xia Wei
 * 
 */
public class CommandShell {
	//
    private static final String PREFIX = "\n $ >";
    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 registerargslist = new ArrayList();
    public static List addargslist = new ArrayList();
    public static List queryargslist = new ArrayList();
    public static List deleteargslist = new ArrayList();
    public static List clearargslist = new ArrayList();
    public static List batchargslist = new ArrayList();
    //public static List quitargslist = new ArrayList();
    //
    private PrintWriter pw = null;
    /**
     * 构造函数初始化
     */
    public CommandShell(){
    	pw = new PrintWriter(System.out);
    }
    
    /**
     * 开始交互。解析系统所有命令。
     *
     */
    public void start() throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer st = null;
    	// 读取输入,解析命令,执行
    	for(;;){
    		pw.print(PREFIX);
    		pw.flush();
    		String input = br.readLine();
    		st = new StringTokenizer(input);
    		String cmd = st.nextToken();
    		if(cmd.equalsIgnoreCase(REGISTER)){  // 解析register命令
    			// get username
    			if(!st.hasMoreTokens()){
    				help();
    				continue;
    			}
    			while(st.hasMoreTokens()){
    				registerargslist.add(st.nextToken());
    			}
    			Register register = new Register();
        		register.doRegister(CommandShell.registerargslist);
        		registerargslist.clear();
        
    		}else if(cmd.equalsIgnoreCase(ADD)){  // 解析add命令
    			if(!st.hasMoreTokens()){
    				help();
    				continue;
    			}
    			while(st.hasMoreTokens()){
    				addargslist.add(st.nextToken());
    			}
    			Add add = new Add();
        		add.doAddAgenda(CommandShell.addargslist);
        		addargslist.clear();
        		
    		}else if(cmd.equalsIgnoreCase(QUERY)){  // 解析QUERY命令
    			if(!st.hasMoreTokens()){
    				help();
    				continue;
    			}
    			while(st.hasMoreTokens()){
    				queryargslist.add(st.nextToken());
    			}
    			/*
    			//测试--打印议程列表中的议程
    			ManageAgenda ma = new ManageAgenda();
    			ma.Text();
    			*/
    			Query query = new Query();
    			query.doQuery(queryargslist);
    			queryargslist.clear();
    			
    		}else if(cmd.equalsIgnoreCase(DELETE)){  // 解析DETELE命令
    			// DELETE
    			if(!st.hasMoreTokens()){
    				help();
    				continue;
    			}
    			while(st.hasMoreTokens()){
    				deleteargslist.add(st.nextToken());
    			}
    			Delete delete = new Delete();
    			delete.doDelete(deleteargslist);
    			deleteargslist.clear();
    			
    		}else if(cmd.equalsIgnoreCase(CLEAR)){  // 解析CLEAR命令
    			// CLEAR
    			if(!st.hasMoreTokens()){
    				help();
    				continue;
    			}
    			while(st.hasMoreTokens()){
    				clearargslist.add(st.nextToken());
    			}
    			Clear delete = new Clear();
    			delete.doClear(clearargslist);
    			clearargslist.clear();
    			//System.out.println("\n");
    			
    		}else if(cmd.equalsIgnoreCase(BATCH)){  // 解析BATCH命令
    			// BATCH
    			BufferedReader in  =  new BufferedReader(new FileReader("batch.txt"));
    			//-----------------------------------------------------------------------
    			for(int i = 0;i < 18;i++){
    				String inputbatch = in.readLine();
    				if(inputbatch == null){
    					break;
    				}
    				int j = i+1;
    				System.out.println("	Command["+j+"]:  "+inputbatch);
    				st = new StringTokenizer(inputbatch);
    				String cmdbatch = st.nextToken();
    				//System.out.println("\n");
    				if(cmdbatch.equalsIgnoreCase(REGISTER)){  // 解析register命令
    	    			//get username
    	    			if(!st.hasMoreTokens()){
    	    				help();
    	    				continue;
    	    			}
    	    			while(st.hasMoreTokens()){
    	    				registerargslist.add(st.nextToken());
    	    			}
    	    			Register register = new Register();
    	        		register.doRegister(CommandShell.registerargslist);
    	        		// 测试部分
    	        		//ManageUser mu = new ManageUser();
    	        		//mu.Text();
    	        		registerargslist.clear();
    	        		System.out.println("\n");
    	        
    	    		}else if(cmdbatch.equalsIgnoreCase(ADD)){  // 解析add命令
    	    			if(!st.hasMoreTokens()){
    	    				help();
    	    				continue;
    	    			}
    	    			while(st.hasMoreTokens()){
    	    				addargslist.add(st.nextToken());
    	    			}
    	    			Add add = new Add();
    	        		add.doAddAgenda(CommandShell.addargslist);
    	        		addargslist.clear();
    	        		System.out.println("\n");
    	        		
    	        		
    	    		}else if(cmdbatch.equalsIgnoreCase(QUERY)){  // 解析QUERY命令
    	    			if(!st.hasMoreTokens()){
    	    				help();
    	    				continue;
    	    			}
    	    			while(st.hasMoreTokens()){
    	    				queryargslist.add(st.nextToken());
    	    			}
    	    			Query query = new Query();
    	    			query.doQuery(queryargslist);
    	    			queryargslist.clear();
    	    			System.out.println("\n");
    	    			
    	    			
    	    		}else if(cmdbatch.equalsIgnoreCase(DELETE)){  // 解析DETELE命令
    	    			// DETELE
    	    			if(!st.hasMoreTokens()){
    	    				help();
    	    				continue;
    	    			}
    	    			while(st.hasMoreTokens()){
    	    				deleteargslist.add(st.nextToken());
    	    			}
    	    			Delete delete = new Delete();
    	    			delete.doDelete(deleteargslist);
    	    			deleteargslist.clear();
    	    			System.out.println("\n");
    	    			
    	    		}else if(cmdbatch.equalsIgnoreCase(CLEAR)){  // 解析CLEAR命令
    	    			// CLEAR
    	    			if(!st.hasMoreTokens()){
    	    				help();
    	    				continue;
    	    			}
    	    			while(st.hasMoreTokens()){
    	    				clearargslist.add(st.nextToken());
    	    			}
    	    			Clear delete = new Clear();
    	    			delete.doClear(clearargslist);
    	    			clearargslist.clear();
    	    			System.out.println("\n");
    	    			
    	    		}else if(cmdbatch.equalsIgnoreCase(QUIT)){  // 解析QUIT命令
    	    			//quitstream();
    	    			Quit quitout = new Quit();
    	    			quitout.doQuit();
    	    			//break;
    	    		}
    			}
    			in.close();
    			//--------------------------------------------------------------
    			
    		}else if(cmd.equalsIgnoreCase(QUIT)){  // 解析QUIT命令
    			//quitstream();
    			//-----------------------------
    			Quit quitout = new Quit();
    			quitout.doQuit();
    			//-----------------------------
    			//break;
    		}else if(cmd.equalsIgnoreCase(HELP)){
    			if(!st.hasMoreTokens()){
    				help();
    				continue;
    			}
    			String s = st.nextToken();
    			if(!assertNotNull(s)){
    	            help();
    	            continue;
    	        }
    			help();

    		}else{
    			//当参数不对时提示命令输入格式
    			System.out.println("	警告-- :");
    			System.out.println("	输入了不存在的命令或者命令格式有误,使用help命令查看系统各命令格式.");
    		}
    	}
    	//br.close();
    }

    /**
     * 用于退出系统的流
     */
    public void quitstream() {
    	//pw.println("	已安全退出系统!感谢使用!");
    	//pw.flush();
    	pw.close();
    	//System.exit(0);
    }

    /**
     * 对系统的使用及命令格式提供说明
     */
    public void help(){
    	pw.println("Notice,Time parameter format:");
    	pw.println("Time parameter must be inputed like 200711161530,which means");
    	pw.println("2007 Nov 16th 15:30.");
    	pw.println("help -- command format:");
    	pw.println("     -- register username password");
    	pw.println("     -- add userName password other startTime endTime title");
    	pw.println("     -- query username password startTime endTime ");
    	pw.println("     -- delete username password meetingID ");
    	pw.println("     -- clear username password");
    	pw.println("     -- batch");
    	pw.println("     -- help");
    	pw.println("     -- quit");
    	pw.flush();
    }
    
    /**
     * 
     * @param obj Object
     * @return boolean
     * 
     */
    public boolean assertNotNull(Object obj){
    	if(obj instanceof String){
    		String s = (String)obj;
    		return s!=null && s.trim().length()>0;
    	}
    	return obj!=null;
    }

}

⌨️ 快捷键说明

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