简单电话本实现

1,电话本主应用程序。注意:该程序为控制台应用程序,所有操作均在控制台进行。

package com.peak.telbook;

import java.util.Scanner;

/**
 * 电话本应用程序的主要控制逻辑类,包含程序的主入口main方法。
 * 
 * @author PeifengYan
 * @version 1.0 12/10/2008
 */
public class Application {
	/**创建一个操作实体类Operate的对象*/
	Operate op = new Operate();
	/**创建一个输入格式检查类TelNoteRegex的对象*/
	TelNoteRegex tnr = new TelNoteRegex();
	/** 创建一个菜单显示类Menu的对象*/
	Menu mu = new Menu();
	/** 创建一个使用标准输入流输入的对象*/
	Scanner sc = new Scanner(System.in);

	/** 
	 * 创建一个应用程序的启动方法,通过该方法把应用程序启动起来。
	 */
	public void start() {
		while (true) {
			mu.mainMenu();
			System.out.println("请做出选择(1-6):");
			String input = sc.next();

			if (tnr.menuRegex(1, 6, input)){
				int choose = Integer.parseInt(input);
				switch (choose) {
				case 1: //添加记录
					op.addLogic();
					break;
				case 2: //查找记录
					op.searchLogic();
					break;
				case 3: //修改记录
					op.modifyLogic();
					break;
				case 4: //删除记录
					op.deleteLogic();
					break;
				case 5: //排序记录
					op.orderLogic();
					break;
				case 6: //退出系统
					op.exitLogic();
					break;
				}
			}else{
				System.out.println("选择错误,请重新输入!");
				continue;
			}
		}
	}

	/**
	 * 程序运行的入口main方法
	 */
	public static void main(String[] args) {
		/**
		 * 创建一个电话本应用程序的实例
		 */
		new Application().start();
	}
}

 

2,电话本逻辑控制类。

package com.peak.telbook;

import java.util.Scanner;
import java.util.Vector;
import java.util.Collections;

/**
 * 该类主要用来对Vector中的对象进行操作,包括添加新记录,查看全部信息,修改信息,删除信息等操作。
 * 
 * @author PeifengYan
 * @version 1.0 12/10/2008
 */
public class Operate {
	/** 创建存放Person类型的Vector的对象 */
	private Vector<Person> v = new Vector<Person>();
	/** 创建一个Person类型的数组 */
	Person[] exist = {
			new Person(1, "zhangsan", "23", "M", "13243275849", "shanghai"),
			new Person(2, "wangyan", "22", "F", "01043275819", "beijing"),
			new Person(3, "zhangke", "21", "M", "01324327584", "dalian"),
			new Person(4, "liusan", "23", "F", "01354455825", "shanghai"),
			new Person(5, "chuilan", "20", "F", "13948888888", "tangshan") };
	/** 创建Menu类的对象 */
	private Menu mu = new Menu();
	/** 创建TelNoteRegex类的对象 */
	TelNoteRegex tnr = new TelNoteRegex();
	/** 创建一个Scanner的实例用来输入 */
	Scanner sc = new Scanner(System.in);

	/**
	 * Operate的构造方法,并初始化Person类型的数组exist中的元素到Vector里面.
	 */
	public Operate() {
		for (int i = 0; i < exist.length; i++) {
			v.add(exist[i]);
		}
	}

	/**
	 * 通过输入键盘获得一个ID号并对其进行验证的方法
	 * 
	 * @return int类型的ID号
	 */
	public int addID() {
		while (true) {
			System.out.println("请输入记录中的ID号:");
			String id = sc.next();
			if (tnr.idRegex(id)) {
				int ID = Integer.parseInt(id);
				return ID;
			} else {
				System.out.println("ID号输入错误!");
				continue;
			}
		}
	}

	/**
	 * 通过键盘输入获得姓名并对其进行验证的方法
	 * 
	 * @return String类型的name(姓名)
	 */
	public String addName() {
		while (true) {
			System.out.println("---->请输入姓名(2-10汉字或英文字母):");
			String name = sc.next().trim();
			if (tnr.nameRegex(name))
				return name;
			else {
				System.out.println("姓名输入错误!");
				continue;
			}
		}
	}

	/**
	 * 通过键盘输入获得年龄并对其进行验证的方法
	 * 
	 * @return String类型的age(年龄)
	 */
	public String addAge() {
		while (true) {
			System.out.println("---->请输入年龄(1--120):");
			String age = sc.next().trim();
			if (tnr.ageRegex(age))
				return age;
			else {
				System.out.println("年龄输入错误!");
				continue;
			}
		}
	}

	/**
	 * 通过键盘输入获得性别并对其进行验证的方法
	 * 
	 * @return String类型的sex(性别)
	 */
	public String addSex() {
		while (true) {
			System.out.println("---->请输入性别(只能为男(m,M),女(f,F):");
			String sex = sc.next().trim();
			if (tnr.sexRegex(sex))
				return sex;
			else {
				System.out.println("性别输入错误!");
				continue;
			}
		}
	}

	/**
	 * 通过键盘输入获得电话号码并对其进行验证的确方法
	 * 
	 * @return String类型的telNum(电话号码)
	 */
	public String addTelNum() {
		while (true) {
			System.out
					.println("---->请输入电话(如:010-12345678 (0376)1234567 13146666666):");
			String telNum = sc.next().trim();
			if (tnr.telNumRegex(telNum))
				return telNum;
			else {
				System.out.println("电话输入错误!");
				continue;
			}
		}
	}

	/**
	 * 通过键盘输入获得住址并对其进行验证的确方法
	 * 
	 * @return String类型的address(住址)
	 */
	public String addAdd() {
		while (true) {
			System.out.println("---->请输入住址(3-30汉字或英文字母):");
			String address = sc.next().trim();
			if (tnr.addressRegex(address))
				return address;
			else {
				System.out.println("住址输入错误!");
				continue;
			}
		}
	}

	/**
	 * 用户添加信息业务逻辑控制
	 */
	public void addLogic() {
		while (true) {
			mu.addMenu();
			System.out.println("请做出选择(1-3):");
			String input = sc.next();
			if (tnr.menuRegex(1, 3, input)){
				int choose = Integer.parseInt(input);
				switch (choose) {
				case 1: // 添加新记录
					addOperation();
					break;
				case 2: // 查看全记录
					showAll();
					break;
				case 3: // 返回上一级
					return;
				}
			}else {
				System.out.println("选择错误,请重新输入!");
				continue;
			}
		}
	}

	/**
	 * 用户查询信息业务逻辑控制
	 */
	public void searchLogic() {
		while (true) {
			mu.searchMenu();
			System.out.println("请做出选择(1-7):");
			String input = sc.next();
			if (tnr.menuRegex(1, 7, input)){
				int choose = Integer.parseInt(input);
				switch (choose) {
				case 1: // 按姓名查找
					String name = addName();
					System.out.println("--------------------->按姓名查找的结果为:");
					searchByName(name);
					break;
				case 2: // 按年龄查找
					String age = addAge();
					System.out.println("--------------------->按年龄查找的结果为:");
					searchByAge(age);
					break;
				case 3: // 按性别查找
					String sex = addSex();
					System.out.println("--------------------->按性别查找的结果为:");
					searchBySex(sex);
					break;
				case 4: // 按号码查找
					String telNum = addTelNum();
					System.out.println("--------------------->按号码查找的结果为:");
					searchByTelNum(telNum);
					break;
				case 5: // 按住址查找
					String address = addAdd();
					System.out.println("--------------------->按住址查找的结果为:");
					searchByAdd(address);
					break;
				case 6: // 查看全记录
					showAll();
					break;
				case 7: // 返回上一级
					return;
				}
			}else {
				System.out.println("选择错误,请重新输入!");
				continue;
			}
		}
	}

	/**
	 * 修改信息业务逻辑控制
	 */
	public void modifyLogic() {
		while (true) {
			mu.modifyMenu();
			System.out.println("请做出选择(1-3):");
			String input = sc.next();
			if (tnr.menuRegex(1, 3, input)){
				int choose = Integer.parseInt(input);
				switch (choose) {
				case 1: // 查看全记录
					showAll();
					break;
				case 2: // 获得要修改记录的ID号并算出在其在Vector中的位置
					int id = addID();
					int index = modify(id); // 判断电话本中是否这条记录
					if (index != -1) {
						subModifyLogic(index); // 进入修改指定记录逻辑控制
					} else
						System.out.println("对不起,电话本中没有这个ID号!");
					break;
				case 3: // 返回上一级
					return;
				}
			}else {
				System.out.println("选择错误,请重新输入!");
				continue;
			}
		}
	}

	/**
	 * 子修改信息业务逻辑控制
	 */
	public void subModifyLogic(int index) {
		Person p = v.get(index);
		System.out.println("你选择的记录信息是:" + p);
		while (true) {
			mu.subModifyMenu();
			System.out.println("请做出选择(1-6):");
			String input = sc.next();
			if (tnr.menuRegex(1, 6, input)){
				int choose = Integer.parseInt(input);
				switch (choose) {
				case 1: // 修改姓名
					String name = addName();
					p.setName(name);
					v.set(index, p);
					System.out.println("姓名修改成功!结果如下:");
					System.out.println(v.get(index));
					break;
				case 2: // 修改年龄
					String age = addAge();
					p.setAge(age);
					v.set(index, p);
					System.out.println("年龄修改成功!结果如下:");
					System.out.println(v.get(index));
					break;
				case 3: // 修改性别
					String sex = addSex();
					p.setSex(sex);
					v.set(index, p);
					System.out.println("性别修改成功!结果如下:");
					System.out.println(v.get(index));
					break;
				case 4: // 修改号码
					String telNum = addTelNum();
					p.setTelNum(telNum);
					v.set(index, p);
					System.out.println("号码修改成功!结果如下:");
					System.out.println(v.get(index));
					break;
				case 5: // 修改住址
					String address = addAdd();
					p.setAddress(address);
					v.set(index, p);
					System.out.println("住址修改成功!结果如下:");
					System.out.println(v.get(index));
					break;
				case 6: // 返回上一级
					return;
				}
			}else {
				System.out.println("选择错误,请重新输入!");
				continue;
			}
		}
	}

	/**
	 * 删除信息业务逻辑控制
	 */
	public void deleteLogic() {
		while (true) {
			mu.deleteMenu();
			System.out.println("请做出选择(1-4):");
			String input = sc.next();
			if (tnr.menuRegex(1, 4, input)){
				int choose = Integer.parseInt(input);
				switch (choose) {
				case 1: // 查看全记录
					showAll();
					break;
				case 2: // 删除指定记录
					System.out.println("请输入你要删除记录的ID");
					int id = addID();
					delete(id);
					break;
				case 3: // 删除全部记录
					deleteAll();
					break;
				case 4: // 返回上一级
					return;
				}
			}else {
				System.out.println("选择错误,请重新输入!");
				continue;
			}
		}
	}

	/**
	 * 排序信息业务逻辑控制
	 */
	public void orderLogic() {
		while (true) {
			mu.orderMenu();
			System.out.println("请做出选择(1-5):");
			String input = sc.next();
			if (tnr.menuRegex(1, 5, input)){
				int choose = Integer.parseInt(input);
				switch (choose) {
				case 1: // 按姓名排序
					orderName();
					break;
				case 2: // 按年龄排序
					orderAge();
					break;
				case 3: // 按性别排序
					orderSex();
					break;
				case 4: // 查看全部记录
					showAll();
					break;
				case 5: // 返回上一级
					return;
				}
			}else {
				System.out.println("选择错误,请重新输入!");
				continue;
			}
		}
	}

	/**
	 * 退出系统逻辑控制
	 */
	public void exitLogic() {
		while (true) {
			System.out.println("你确定要退出系统吗?Y/N:");
			String exit = sc.next();
			int cmd = tnr.cmdRegex(exit);
			switch (cmd) {
			case 1: // 确认要退出系统
				System.out.println("已经安全退出系统,欢迎下次使用!");
				System.exit(0);
				break;
			case -1: // 命令输入错误
				System.out.println("对不起,你输入的命令错误!");
				continue;
			case 0: // 取消退出系统
				return;
			}

		}

	}

	/**
	 * 添加新用户信息方法,通过键盘输入获得姓名、年龄、性别、电话、住址.
	 * 并把刚添加进去的记录显示出来.
	 * 
	 */
	public void addOperation() {
		System.out.println("请按照:姓名、年龄、性别、电话、住址依次输入!");
		String name = addName();
		String age = addAge();
		String sex = addSex();
		String telNum = addTelNum();
		String address = addAdd();

		int id = v.size();
		v.add(new Person(++id, name, age, sex.toUpperCase(), telNum, address));
		System.out.println("添加成功!添加的记录为:");
		System.out.println(v.get(modify(id)));//调用modify方法找到id号对应的索引号
	}

	/**
	 * 查询全部用户信息
	 */
	public void showAll() {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			System.out.println("---------------------->电话本中所有人的信息如下:");
			for (Person i : v) {
				System.out.println(i);
			}
		}
	}

	/**
	 * 按姓名查询用户信息
	 * 
	 * @param name
	 *            用户要查找的姓名
	 */
	public void searchByName(String name) {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			for (int i = 0; i < v.size(); i++) {
				if (v.get(i).getName().equals(name)) {
					System.out.println(v.get(i));
				}
			}
		}
	}

	/**
	 * 按年龄查询用户信息
	 * 
	 * @param age
	 *            用户要查找的年龄
	 */
	public void searchByAge(String age) {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			for (int i = 0; i < v.size(); i++) {
				if (v.get(i).getAge().equals(age)) {
					System.out.println(v.get(i));
				}
			}
		}
	}

	/**
	 * 按性别查询用户信息
	 * 
	 * @param sex
	 *            用户要查找的性别
	 */
	public void searchBySex(String sex) {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			for (int i = 0; i < v.size(); i++) {
				if (v.get(i).getSex().equals(sex)) {
					System.out.println(v.get(i));
				}
			}
		}
	}

	/**
	 * 按电话号码查询用户信息
	 * 
	 * @param telNum
	 *            用户要查找的电话
	 */
	public void searchByTelNum(String telNum) {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			for (int i = 0; i < v.size(); i++) {
				if (v.get(i).getTelNum().equals(telNum)) {
					System.out.println(v.get(i));
				}
			}
		}
	}

	/**
	 * 按地址查询用户信息
	 * 
	 * @param address
	 *            用户要查找的住址
	 */
	public void searchByAdd(String address) {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			for (int i = 0; i < v.size(); i++) {
				if (v.get(i).getAddress().equals(address)) {
					System.out.println(v.get(i));
				}
			}
		}
	}

	/**
	 * 修改指定记录信息
	 * 
	 * @param id
	 *            用户输入的ID号
	 * @return 对ID号进行验证的返回值,如果存在返回其在Vector对象的中的索引号,否则返回-1
	 */
	public int modify(int id) {
		for (int i = 0; i < v.size(); i++) {
			if (v.get(i).getID() == id) {
				return i;
			}
		}
		return -1;
	}

	/**
	 * 删除指定用户信息,并让用户作出确认动作,以免造成误操作.
	 * 
	 * @param id
	 *            用户指定要删除的ID号
	 */
	public void delete(int id) {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			for (int i = 0; i < v.size(); i++) {
				if (v.get(i).getID() == id) {
					System.out.println("你要删除的信息是:\n" + v.get(i));
					while (true) {
						System.out.println("确定要删除吗?Y/N");
						String exit = sc.next();
						int cmd = tnr.cmdRegex(exit);
						switch (cmd) {
						case 1: // 确认要删除记录
							System.out.println("指定记录已被删除!");
							v.remove(i);
							return;
						case -1: // 命令输入错误
							System.out.println("对不起,你输入的命令错误!");
							continue;
						case 0: // 取消删除
							return;
						}
					}
				}
			}
		}
	}

	/**
	 * 删除全部用户信息,并让用户作出确认动作,以免造成误操作.
	 */
	public void deleteAll() {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			while (true) {
				System.out.println("确定要删除全部记录吗?Y/N");
				String exit = sc.next();
				int cmd = tnr.cmdRegex(exit);
				switch (cmd) {
				case 1: // 确认要删除全部记录
					v.removeAllElements();
					System.out.println("全部信息已被删除!");
					return;
				case -1: // 命令输入错误
					System.out.println("对不起,你输入的命令错误!");
					continue;
				case 0: // 取消删除
					return;
				}
			}
		}
	}

	/**
	 * 按用户姓名排序信息
	 */
	public void orderName() {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			Collections.sort(v, new OrderByName());
			System.out.println("------------------------>按姓名排序的结果是:");
			for (Person i : v) {
				System.out.println(i);
			}
	    }
	}

	/**
	 * 按用户年龄排序信息
	 */
	public void orderAge() {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			Collections.sort(v, new OrderByAge());
			System.out.println("------------------------>按年龄排序的结果是:");
			for (Person i : v) {
				System.out.println(i);
			}
		}
	}

	/**
	 * 按用户性别排序信息
	 */
	public void orderSex() {
		if (v.size() == 0) {
			System.out.println("电话本中已经没有任何信息,请添加记录后再做其他操作!");
		} else {
			Collections.sort(v, new OrderBySex());
			System.out.println("------------------------>按性别排序的结果是:");
			for (Person i : v) {
				System.out.println(i);
			}
		}
	}

}

 

 3,显示菜单类

package com.peak.telbook;

/**
 * 该类主要用来在屏幕上输出菜单选项。
 * 
 * @author PeifengYan
 * @version 1.0 12/10/2008
 */
public class Menu {

	/**
	 * 显示主菜单界面的方法
	 */
	public void mainMenu() {
		System.out.println("*************************");
		System.out.println("**      1 添加记录       **");
		System.out.println("**      2 查找记录       **");
		System.out.println("**      3 修改记录       **");
		System.out.println("**      4 删除记录       **");
		System.out.println("**      5 排序记录       **");
		System.out.println("**      6 退出系统       **");
		System.out.println("*************************");
	}

	/**
	 * 显示添加菜单界面的方法
	 */
	public void addMenu() {
		System.out.println("*************************");
		System.out.println("**      1 添加新记录      **");
		System.out.println("**      2 查看全记录      **");
		System.out.println("**      3 返回上一级      **");
		System.out.println("*************************");
	}

	/**
	 * 显示查找菜单界面的方法
	 */
	public void searchMenu() {
		System.out.println("*************************");
		System.out.println("**      1 按姓名查找      **");
		System.out.println("**      2 按年龄查找      **");
		System.out.println("**      3 按性别查找      **");
		System.out.println("**      4 按号码查找      **");
		System.out.println("**      5 按住址查找      **");
		System.out.println("**      6 查看全记录      **");
		System.out.println("**      7 返回上一级      **");
		System.out.println("*************************");
	}

	/**
	 * 显示修改菜单界面的方法
	 */
	public void modifyMenu() {
		System.out.println("*************************");
		System.out.println("**      1 查看全记录      **");
		System.out.println("**      2 修改指定记录    **");
		System.out.println("**      3 返回上一级      **");
		System.out.println("*************************");
	}

	/**
	 * 显示修改子菜单界面的方法
	 */
	public void subModifyMenu() {
		System.out.println("*************************");
		System.out.println("**      1 修改姓名       **");
		System.out.println("**      2 修改年龄       **");
		System.out.println("**      3 修改性别       **");
		System.out.println("**      4 修改号码       **");
		System.out.println("**      5 修改住址       **");
		System.out.println("**      6 返回上一级     **");
		System.out.println("*************************");
	}

	/**
	 * 显示删除菜单界面的方法
	 */
	public void deleteMenu() {
		System.out.println("*************************");
		System.out.println("**      1 查看全记录      **");
		System.out.println("**      2 删除指定记录    **");
		System.out.println("**      3 删除全部记录    **");
		System.out.println("**      4 返回上一级      **");
		System.out.println("*************************");
	}

	/**
	 * 显示排序菜单界面的方法
	 */
	public void orderMenu() {
		System.out.println("*************************");
		System.out.println("**      1 按姓名排序      **");
		System.out.println("**      2 按年龄排序      **");
		System.out.println("**      3 按性别排序      **");
		System.out.println("**      4 查看全部记录    **");
		System.out.println("**      5 返回上一级      **");
		System.out.println("*************************");
	}
}

 

 4,个人信息对象

package com.peak.telbook;

/**
 * 这个类用来把电话本中的信息,按照每个人的信息进行分条整理。
 * <p>然后再把每个人的信息分成多个属性,包括他的姓名、年龄、性别、电话、住址。</p>
 * <p>改写该类的toString()方法,为方便以后对个人信息的查找输出。</p>
 * <p>给每个人分配一个唯一的ID属性,以便在电话本中进行区别,ID的添加是自动进行的。</p>
 * 
 * @author PeifengYan
 * @version 1.0 12/10/2008
 */
public class Person {
	/**
	 * 成员变量m_id用户ID 属性
	 */
	private int m_id;
	/**
	 * 成员变量m_name用户姓名属性
	 */
	private String m_name;
	/**
	 * 成员变量m_age用户年龄属性
	 */
	private String m_age;
	/**
	 * 成员变量m_sex用户性别属性
	 */
	private String m_sex;
	/**
	 * 成员变量m_telNum用户电话号码属性
	 */
	private String m_telNum;
	/**
	 * 成员变量m_address用户地址属性
	 */
	private String m_address;

	/**
	 * 无参数构造方法,创建Person对象。
	 */
	Person() {
	}

	/**
	 * 有参数构造方法,把传进来的各种属性值赋值给要创建的对象。
	 * 
	 * @param id
	 *            自动添加进去的ID属性
	 * @param name
	 *            传进来的姓名
	 * @param age
	 *            传进来的年龄
	 * @param sex
	 *            传进来的性别
	 * @param telNum
	 *            传进来的电话
	 * @param address
	 *            传进来的住址
	 */
	public Person(int id, String name, String age, String sex, String telNum,
			String address) {
		this.m_id = id;
		this.m_name = name;
		this.m_age = age;
		this.m_sex = sex;
		this.m_telNum = telNum;
		this.m_address = address;
	}

	/**
	 * 读取用户ID号
	 * 
	 * @return int类型的ID属性
	 */
	public int getID() {
		return m_id;
	}

	/**
	 * 读取用户名
	 * 
	 * @return String类型的m_name属性
	 */
	public String getName() {
		return m_name;
	}

	/**
	 * 设置用户名
	 */
	public void setName(String name) {
		this.m_name = name;
	}

	/**
	 * 读取用户年龄
	 * 
	 * @return String类型的m_age属性
	 */
	public String getAge() {
		return m_age;
	}

	/**
	 * 设置用户年龄
	 */
	public void setAge(String age) {
		this.m_age = age;
	}

	/**
	 * 读取用户性别
	 * 
	 * @return String类型的m_sex属性
	 */
	public String getSex() {
		return m_sex;
	}

	/**
	 * 设置用户性别
	 */
	public void setSex(String sex) {
		this.m_sex = sex;
	}

	/**
	 * 读取用户电话号码
	 * 
	 * @return String类型的m_telNum属性
	 */
	public String getTelNum() {
		return m_telNum;
	}

	/**
	 * 设置用户电话号码
	 */
	public void setTelNum(String telNum) {
		this.m_telNum = telNum;
	}

	/**
	 * 读取用户地址
	 * 
	 * @return String类型的m_address属性
	 */
	public String getAddress() {
		return m_address;
	}

	/**
	 * 设置用户地址
	 */
	public void setAddress(String address) {
		this.m_address = address;
	}

	/**
	 * 重写toString()方法,方便以后对象的输出显示。
	 */
	@Override
	public String toString() {
		return "序号:" + this.m_id+"#" + "\t姓名:" + this.m_name + "\t年龄:" + this.m_age
				+ "\t性别:" + this.m_sex + "\t电话:" + this.m_telNum + "\t住址:"
				+ this.m_address;
	}

}

 

 5,用来验证用户输入数据合法性的正则式类

 

package com.peak.telbook;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 这个类的功能是利用正则表达式对输入的内容进行验证.
 * 
 * @author PeifengYan
 * @version 1.0 12/10/2008
 */
public class TelNoteRegex {

	/**
	 * 无参数的构造方法
	 */
	public TelNoteRegex() {
	}
	/**
	 * 对菜单的输入选项,根据预先设定的范围进行验证,
	 * 验证时首先判断输入的是不是数字,再进行范围判断。
	 * 
	 * @param min 菜单选项的最小值.
	 * @param max 菜单选项的最大值.
	 * @param input 用户输入的菜单选项.
	 * @return 一个布尔类型值,验证成功返回为真,否则为假。
	 */
	public boolean menuRegex(int min, int max, String input) {
		Pattern p = Pattern.compile("\\d");
		Matcher m = p.matcher(input);
		if (m.matches()) {
			int choose = Integer.parseInt(input);
			if (choose >= min && choose <= max)
				return true;
			else
				return false;
		} else
			return false;
	}
	/**
	 * 对从键盘输入的ID进行验证.
	 * 
	 * @param id 用户输入的ID号码.
	 * @return 一个布尔类型值,验证成功返回为真,否则为假。
	 */
	public boolean idRegex(String id) {
		Pattern p = Pattern.compile("\\d");
		Matcher m = p.matcher(id);
		if (m.matches()) {
			return true;
		} else
			return false;
	}
	/**
	 * 对用户从键盘输入的姓名进行验证。
	 * 
	 * @param name 用户输入的姓名.
	 * @return 一个布尔类型值,验证成功返回为真,否则为假。
	 */
	public boolean nameRegex(String name) {
		Pattern p = Pattern.compile("[\u4e00-\u9fa5a-zA-Z]{2,10}");
		Matcher m = p.matcher(name);
		return m.matches();
	}
	/**
	 * 对用户从键盘输入的年龄进行验证,
	 * 首先判断是不是数字再进行范围判定。
	 * 
	 * @param age 用户输入的年龄.
	 * @return 一个布尔类型值,验证成功返回为真,否则为假.
	 */
	public boolean ageRegex(String age) {
		Pattern p = Pattern.compile("\\d{1,3}");
		Matcher m = p.matcher(age);
		int a = 0;
		if (m.matches()) {
			a = Integer.parseInt(age);
		}
		return (a <= 120 && a > 0);
	}
	/**
	 * 对用户从键盘输入的性别进行范围验证,
	 * 只接受用户输入四个字符m,M,f,F。
	 * <p>男用(m,M)表示,女用(f,F)表示。</p>
	 * 
	 * @param sex 用户输入的性别.
	 * @return 一个布尔类型值,验证成功返回为真,否则为假。
	 */
	public boolean sexRegex(String sex) {
		if (sex.equals("m") || sex.equals("M") || sex.equals("f")
				|| sex.equals("F"))
			return true;
		else
			return false;
	}
	/**
	 * 对用户从键盘输入的电话号码进行验证.电话号码可以有多种表示方法,如:
	 * <p>1,(010)12345678</p>
	 * <p>2,010-12345678</p>
	 * <p>3,13213313333</p>
	 * 如果是手机号码,判断是不是以13开头,如果不是,返回值为假。
	 * 
	 * @param telNum 用户输入的电话号码.
	 * @return 一个布尔类型值,验证成功返回为真,否则为假。
	 */
	public boolean telNumRegex(String telNum) {
		Pattern p = Pattern
				.compile("\\(0\\d{2,3}\\)[- ]?\\d{7,8}|0\\d{2,3}[- ]?\\d{7,8}|13\\d{9}");
		Matcher m = p.matcher(telNum);
		return m.matches();
	}
	/**
	 * 对用户从键盘输入的住址进行验证,
	 * 把住址的字符范围限定在(3-30)个字符之间.
	 * 
	 * @param address 用户输入的住址.
	 * @return 一个布尔类型值,验证成功返回为真,否则为假。
	 */
	public boolean addressRegex(String address) {
		Pattern p = Pattern.compile("[\u4e00-\u9fa5a-zA-Z0-9_]{3,30}");
		Matcher m = p.matcher(address);
		return m.matches();
	}
	/**
	 * 对用户从键盘输入的系统命令进行验证.
	 * <p>退出系统只接受y/Y,不退出只接受n/N,其他命令不予接受.</p>
	 * 
	 * @param cmd 用户输入的命令.
	 * @return 返回1时:确认;返回0时:取消;返回-1时:输入的命令不满足要求。
	 */
	public int cmdRegex(String cmd) {
		if (cmd.equals("y") || cmd.equals("Y") || cmd.equals("n")
				|| cmd.equals("N")) {
			if (cmd.equals("y") || cmd.equals("Y"))
				return 1; /*  输入的是y/Y */
			else
				return 0; /*  输入的是n/N */
		} else
			return -1; /*输入的不是要求的命令*/
	}
}

 

 6,按年龄进行排序的实现类 

package com.peak.telbook;

import java.util.Comparator;

/**
 * 这个类实现了Comparator接口,
 * 用来对Person类按照里面的成员变量Age进行排序。
 * 
 * @author PeifengYan
 * @version 1.0 12/10/08
 */
public class OrderByAge implements Comparator<Person> {
	/**
	 * 对compare方法进行重写,用来比较Person对象里面的age属性,
	 * 按照数字的自然顺序进行比较。
	 */
	@Override
	public int compare(Person p1, Person p2) {
		return p1.getAge().compareTo(p2.getAge());
	}
}

 

7,按姓名进行排序的实现类 

package com.peak.telbook;

import java.util.Comparator;
/**
 * 这个类实现了Comparator接口,
 * 用来对Person类按照里面的成员变量name进行排序。
 * 
 * @author PeifengYan
 * @version 1.0 12/10/08
 */
public class OrderByName implements Comparator<Person>{
	/**
	 * 对compare方法进行重写,用来比较Person对象里面的name属性,
	 * 按照字符的自然排序进行比较。
	 */
	@Override
	public int compare(Person p1, Person p2) {	
		return p1.getName().compareTo(p2.getName());
	}
}

   8,按性别进行排序的实现类 

package com.peak.telbook;

import java.util.Comparator;
/**
 * 这个类实现了Comparator接口,
 * 用来对Person类按照里面的成员变量sex进行排序。
 * 
 * @author PeifengYan
 * @version 1.0 12/10/08
 */
public class OrderBySex implements Comparator<Person>{
	/**
	 * 对compare方法进行重写,用来比较Person对象里面的sex属性,
	 * 按照字母的自然排序进行比较。
	 */
	@Override
	public int compare(Person p1, Person p2) {	
		return p1.getSex().compareTo(p2.getSex());
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值