【JAVA_RMI】(6)制作命令行导航菜单
由于在eclipse运行配置里添加运行参数并不方便,建议将调试好的java工程导出为可以运行的jar包,然后在命令行打开jar所在文件夹,使用”java -jar <包名> <main函数参数1 参数2 ……>“,下图的help命令就是main函数执行时的参数数组arg[]的第一个元素arg[0]。参数以空格为分隔符,后面分别是arg[1]、arg[2]。 知道这点,制作java命令行的导航菜单就很简单。为了方便操作,极客人为这次试验还制作了GUI,支持GUI、命令行双界面模式运行应用。命令行的好处可能只有程序员才知道,它最大的好处、个人认为是可以批处理,这是习惯GUI的用户无法理解的。
效果预览:
MeetingClient.java
下述代码通过匹配用户输入的main函数参数,分别执行在上一篇文章中定义的方法。其中输入GUI和不输入参数将启动GUI模式。 java命令行导航菜单2
package cn.wangbaiyuan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.sql.SQLException;
/**
* RMI会议客户端
* @author 王柏元
*
*{@linkplain http://baiyuan.wang}
*/
public class MeetingClient {
public static void main(String args[]) throws IOException{
int cmdLength=args.length;
MeetingInterface meeting;
if(cmdLength==0){
LoginGUI.show(null);
}else {
String note=”RMI会议客户端©王柏元—命令行版:\n”
+ “1.帮助信息:\n\thelp\n”
+ “2.用户注册:\n\tregister [用户名] [密码]\n”
+ “ 3.添加会议:\n\tadd [你的用户名] [你的密码] [邀请谁?他的用户名] [开始时间] [结束时间] [会议标题]\n”
+ “\t 时间格式:2015-06-05 22:29:19\n”
+ “4. 查询会议:\n\tquery [你的用户名] [你的密码][开始时间] [结束时间]\n”
+ “5.删除会议:\n\tdelete [你的用户名] [你的密码] [会议ID]\n”
+ “6.清除会议:\n\tclear [username] [password]\n”
+ “7.关于本程序:\n\tabout\n”
+ “8.退出:\n quit\n\t”
+ “9.GUI模式:\n GUI\n\t”
+ “请输入命令:”;
String about=”RMI会议客户端©王柏元—命令行行版:\n”
+ “作者:王柏元\n”
+ “个人网站:http://baiyuan.wang\\n“
+ “运行模式:GUI和命令行双环境\n”
+ “程序介绍:使用Java RMI创建一个分布式议程共享服务。”
+ “不同的用户可以使用这个共享议程服务执行查询、添加和删除”
+ “会议的操作。服务器支持会议的登记和清除等功能;”;
try {
meeting=(MeetingInterface) Naming.lookup(LoginGUI.getRmiURL());
switch(args[0]){
case "register":
if(cmdLength==3){
meeting.addMeetingUsers(args\[1\], args\[2\]);
}else{
System.out.println("命令参数错误\\n"
\+ "用户注册:\\n\\tregister \[用户名\] \[密码\]\\n");
}
break;
case "add":
if(cmdLength==9){
meeting.addMeetings(args\[1\], args\[2\],args\[3\] ,args\[4\],args\[5\]+" "
+args\[6\], args\[7\]+" "+args\[8\]);
}else{
System.out.println("命令参数错误\\n"
\+ "添加会议:\\n\\tadd \[你的用户名\] \[你的密码\] \[邀请谁?他的用户名\]\[会议标题\] \[开始时间\] \[结束时间\] \\n");
}
break;
case "query":
if(cmdLength==7){
if(meeting.LoginMeetings(args\[1\], args\[2\]))
meeting.searchrMeetings(args\[3\]+" "+ args\[4\],args\[5\]+" "+ args\[6\]);
}else{
System.out.println("命令参数错误\\n"
\+ "查询会议:\\n\\tquery \[用户名\] \[密码\]\[开始时间\] \[结束时间\]\\n");
}
break;
case "delete":
if(cmdLength==4){
if(meeting.LoginMeetings(args\[1\], args\[2\]))
meeting.deleteMeetings(args\[1\], args\[3\]);
}else{
System.out.println("命令参数错误\\n"
\+ "删除会议:\\n\\tdelete \[你的用户名\] \[你的密码\] \[会议ID\]\\n");
}
break;
case "clear":
if(cmdLength==3){
if(meeting.LoginMeetings(args\[1\], args\[2\]))
meeting.clearMeetings(args\[1\]);
}else{
System.out.println("命令参数错误\\n"
\+ "清除会议:\\n\\tclear \[username\] \[password\]\\n");
}
break;
case "about":
System.out.println(about);break;
case "GUI":
LoginGUI.show(null);break;
case "help":
System.out.println(note);break;
case "quit":
LoginGUI.show(null);break;
}
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BYException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
系列文章链接:
SSD8_Ex3【JAVA_RMI服务】(1)概述RMI和网络API
学姐啊?XJ原来是这个意思!
哈哈,看到你的作业了。。不错不错 :wink:
说了是GUI和命令行双模式呢
GUI不是图形效果吗?你这个不还是dos命令行吧!
还没有学到这里,以后学到这里,希望博主多多指导。