📄 command.java
字号:
/*
* Command.java
* Created on 2006年11月8日, 下午10:28
*/
package agenda;
import java.io.*;
import java.text.*;
import java.util.*;
//处理命令的类
public class Command {
public UserManager userManager = new UserManager();
public MeetingManager meetingManager = new MeetingManager();
// 注册用户信息
public void register(String name, String password) throws IOException,
ParseException {
if (!userManager.users.containsKey(name))// 如果用户列表中无此用户则允许注册
{
userManager.register(name, password);
System.out.println("恭喜您!您已经注册成功!用户名为:" + name + ",密码为:" + password);
} else
System.out.println("用户名已存在!请重新输入!");
}
// 添加会议记录
public void add(String name, String password, String other, String start,
String end, String title) throws IOException, ParseException {
if (userManager.users.containsKey(name)
&& userManager.users.containsKey(other)) {
if (authentic(name, password) && timeFunction(start, end)
&& isAdd(name, start, end) && isAdd(other, start, end)) {// 用户验证和时间验证
meetingManager.add(name, password, other, start, end, title);
System.out.println("添加会议成功!会议标识为:" + title);
} else {
System.out.println("某一用户的会议时间上不能重叠!请重新输入!");
}
} else {
System.out.println("添加会议失败!要求参加会议的用户存在没有注册的,请先注册!");
}
}
// 清除用户会议记录
public void clear(String name, String password) {
if (authentic(name, password))
meetingManager.clear(name, password);
System.out.println("清除用户" + name + "的所有会议记录成功!");
}
// 查询用户会议记录
public void query(String name, String password) {
if (userManager.users.containsKey(name) && authentic(name, password))
meetingManager.query(name);
}
// 验证用户名是否与密码相符,符合返回TRUE,否则返回FALSE;
public boolean authentic(String name, String password) {
User find = (User) userManager.users.get(name);//查询用户记录
if (find.getPassword().equals(password))// 检验用户密码
return true;
else {
System.out.println("用户密码错误!");
return false;
}
}// authentic
// 显示帮助信息
public void help() throws IOException, ParseException {
System.out
.println("命令格式如下:\n"
+ "1.注册一个新用户\n"
+ "$ register [userName] [password]\n"
+ "说明:userName是注册名字,password是您选择的密码\n"
+ "2.添加一个新的会议安排\n"
+ "$ add [userName] [password] [other] [start] [end] [title]\n"
+ "说明:userName、password是一注册用户的名字和密码,other是新添加会议所预约的另一已注册用户的名字,start、end是会议的起始和终止时间,title是新添加会议的标签\n"
+ "3.查询某一用户在某一时间段内的会议安排\n"
+ "$ query [userName] [password] [start] [end]\n"
+ "说明:userName、password是一注册用户的名字和密码,start、end 分别是查询时间段的起始时间和终止时间,该时间段内查获的会议安排将被返回\n"
+ "4.删除某一用户的指定会议安排\n"
+ "$ delete [userName] [password] [meetingId]\n"
+ "说明:userName、password是一注册用户的名字和密码,meetingId 指定将被从议程中删除的会议的标识\n"
+ "5.清除某一用户的所有会议安排\n"
+ "$ clear [userName] [password]\n"
+ "说明:userName 是一个已注册的用户名字,password是该用户的密码\n"
+ "6.批处理存储在文本文件中的register、add等命令\n" + "$ batch [fileName]"
+ "说明:在文本文件fileName中的register、add、query、delete、clear等命令,其中每一条命令(包括其参数)单独占一行"
+ "7.退出议程管理系统\n" + "$ quit\n");
}
//退出系统函数
public void quit() {
System.out.println("议程管理系统已成功退出!欢迎再次使用!......");
System.exit(1);
}
// 时间先后顺序的判断函数,返回值是布尔类型
public boolean timeFunction(String start, String end) throws ParseException {
Date startTime = converterTime(start);
Date endTime = converterTime(end);
if (startTime.after(endTime))
return true;
else {
System.out.print("时间的前后关系不正确!\n规定的格式为:MM-DD-HH:mm \n比如\"11-10-15:20\"表示时间为11月10日15时20分\n");
return false;
}
}
// 转化时间格式的函数,返回值是Date数据类型
public Date converterTime(String time) throws ParseException {
DateFormat sf = new SimpleDateFormat("MM-dd-hh:mm");// 定义格式化的形式
Date myTime = (Date) sf.parse(time);//把String类型转化为Date类型
return myTime;
}
// 用于判断用户自己或被预约的用户已有一个会议安排与新会议在时间上是否相互重叠(overlap),是否允许添加会议
public boolean isAdd(String name, String start, String end)
throws ParseException {
Set findMeeting = meetingManager.findMeetingByName(name);//findMeeting是依据用户找到他的所有会议记录集
int test = 0;
if (!findMeeting.isEmpty()) {
Iterator find = findMeeting.iterator();
while (find.hasNext()) {
Meeting temp = (Meeting) find.next();
Date tempEnd = converterTime(temp.getEnd());
Date tempStart = converterTime(temp.getStart());
if ((converterTime(start).after(tempEnd)) || (converterTime(end)).before(tempStart))
test = 0;//符合要求时令test为0
else test = test + 1;//否则test加1
}// while
if (test > 0) return false;//若test大于0,说明会议时间上有重叠,则返回false
else return true;//否则返回true
}//
else return true;//如果用户的会议记录为空,则返回true
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -