目录
1.创建项目
2.创建类
2.1创建入口类
package com.rome.www; /** * 电话本项目入口类 */ public class App { /** * 启动电话本项目 * @param args */ public static void main(String[] args) { } /** * 控制主菜单 */ public void start(){ } }
2.2创建菜单类
package com.rome.www; /** * 生成项目中的所有菜单 */ 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("****************************************"); } }
2.3创建实体类
public int getId(){ return id; } public void setId(int id){ this.id=id; } public String getName(){ return name; } public void setName(String name){ this.name=name; } public String getAge(){ return age; } public void setAge(String age){ this.age=age; } public String getSex(){ return sex; } public void setSex(String sex){ this.sex=sex; } public String getTelNum(){ return telNum; } public void setTelNum(String telNum){ this.telNum=telNum; } public String getAddress(){ return address; } public void setAddress(String address){ this.address=address; } @Override public String toString(){ StringBuffer sb=new StringBuffer(); sb.append("序号").append(this.id).append("#").append("\t"); sb.append("姓名").append(this.name).append("\t\t"); sb.append("年龄").append(this.age).append("\t\t"); sb.append("性别").append(this.sex).append("\t\t"); sb.append("电话号码").append(this.telNum).append("\t\t"); sb.append("地址").append(this.address); return sb.toString(); } }
2.4创建核心业务类
package com.rome.www; import java.util.ArrayList; import java.util.List; /** * 核心业务类 */ public class Operate { private List<Person> list; public Operate() { this.list = new ArrayList<>(); } /** * 用户添加记录的逻辑控制 */ public void addLogic() { } /** * 用户查询记录 */ public void searchLogic() { } /** * 修改记录的逻辑 */ public void modifyLogic() { } /** * 删除记录逻辑 */ public void deleteLogic() { } /** * 控制排序二级子菜单 */ public void orderLogic() { } /** * 添加新纪录信息 */ public void addOperation() { } /** * 查询全部记录 */ public void showAll() { } /** * 按姓名查询记录 */ public void searchByName() { } /** * 按年龄查询记录 */ public void searchByAge() { } /** * 按性别查询记录 */ public void searchBySex() { } /** * 按电话查询记录 */ public void searchByTelNum() { } /** * 按地址查询记录 */ public void searchByAdd() { } /** * 修改指定记录 */ public void modifyOpeartion() { } /** * 删除指定记录 */ public void deleteOpeartion() { } /** * 删除全部记录 */ public void deleteAllOpeartion() { } /** * 按姓名排序 */ public void orderName() { } /** * 按年龄排序 */ public void orderAge() { } /** * 按性别排序 */ public void orderSex() { } }
2.5创建数据校验类
package com.rome.www; /** * 数据校验类 */ public class TelNoteRegex { /** * 对菜单输入选项的验证 */ public int menuItemValidate(int min, int max) { return 0; } /** * 对输入姓名的验证 * * @return */ public String nameValidate() { return null; } /** * 对年龄验证 * * @return */ public String ageValidate() { return null; } /** * 对性别进行验证 * * @return */ public String sexValidate() { return null; } /** * 对电话号码验证 * * @return */ public String telNumValidate() { return null; } /** * 对地址进行验证 * * @return */ public String addressValidate() { return null; } }
2.6创建比较器类
排序器只能对电话本中存储的记录进行排序,不具备通用性,所以定义成Operate的内部类
/** * 按姓名排序的比较器类 */ class OrderByName implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return 0; } } /** * 按年龄排序的比较器 */ class OrderByAge implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return 0; } } /** * 按性别排序的比较器 */ class OrderBySex implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return 0; } }
3. 数据校验类
3.1 实现菜单项的验证方法
public int menuItemValidate(int min, int max){ //定义验证菜单的正则表达式 String regex = "[1-9]{1}"; //创建键盘输入对象 Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入正确的数字,最小"+min+"\t"+"最大为"+max); String input = scanner.nextLine(); if(input.matches(regex)){ int inputNum = Integer.parseInt(input); if(inputNum >= min && inputNum <=max){ return inputNum; } else{ System.out.println("输入的菜单项不符合范围"); } } else{ System.out.println("输入数字错误!"); } } }
3.2实现姓名验证方法
public String nameValidate(){ //验证姓名的正则表达式 String regex = "[a-zA-Z]{1,10}"; //创建Scanner对象 Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入姓名,格式为1-10之间的大写或小写字母"); String input = scanner.nextLine(); if (input.matches(regex)){ return input; }else{ System.out.println("输入的姓名有误,请重新输入"); } } }
3.3实现年龄验证方法
public String ageValidate(){ //对年龄校验的正则表达式 String regex = "[1-9]{1}[0-9]{1}"; //创建Scanner对象 Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入年龄,格式为10-99之间"); String input = scanner.nextLine(); if(input.matches(regex)){ return input; } else{ System.out.println("您输入的年龄格式有误,请重新输入"); } } }
3.4 实现性别的验证方法
public String sexValidate(){ //对性别验证的正则表达式 String regex = "[m|M|f|F]{1}"; //创建Scanner对象 Scanner scanner = new Scanner(System.in); while(true){ System.out.println("输入性别:m or M,f or F"); String input = scanner.nextLine(); if(input.matches(regex)){ return input; } else{ System.out.println("输入的性别格式有误,重新输入"); } } }
3.5 实现电话号码的验证
public String telNumValidate(){ //对电话号码有验证的正则表达式 String regex = "(\\d{3,4}-\\d{7,8})|([1]{1}\\d{10})"; //创建键盘输入对象 Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入电话号码,可以是座机号或者手机号"); String input = scanner.nextLine(); if(input.matches(regex)){ return input; } else{ System.out.println("输入的电话号码有误"); } } }
3.6 实现地址的验证
public String addressValidate(){ //对地址验证的正则表达式 String regex = "\\W{1,50}"; //可以是汉字 //创建Scanner对象 Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入地址可以长度为1-50"); String input = scanner.nextLine(); if(input.matches(regex)){ return input; } else{ System.out.println("输入格式有误,请重新输入"); } } }
4.实现 App类中的方法
4.1 实现Start方法
public void start(){ Menu menu = new Menu(); TelNoteRegex regex = new TelNoteRegex(); Operate operate = new Operate(); while(true){ menu.mainMenu(); int item = regex.menuItemValidate(1,6); switch(item){ case 1: operate.addLogic(); break; case 2: operate.searchLogic(); break; case 3: operate.modifyLogic(); break; case 4: operate.deleteLogic(); break; case 5: operate.orderLogic(); break; case 6: System.exit(0);//结束当前虚拟机 } } }
4.2 实现main方法
public static void main(String[] args) { App app = new App(); app.start(); }
5. 实现Operate类中的方法
5.1添加记录菜单方法
public void addLogic(){ Menu menu = new Menu(); TelNoteRegex telNoteRegex = new TelNoteRegex(); while(true){ menu.addMenu(); int item = telNoteRegex.menuItemValidate(1,3); switch (item){ case 1:this.addOperation();//添加新纪录 break; case 2:this.showAll(); //查看全记录 break; case 3: return; //return可以当前方法 } } }
5.2实现查找记录逻辑方法
public void searchLogic(){ Menu menu = new Menu(); TelNoteRegex telNoteRegex = new TelNoteRegex(); while(true){ menu.searchMenu(); int item = telNoteRegex.menuItemValidate(1,7); switch (item){ case 1: this.searchByName(); break; case 2: this.searchByAge(); break; case 3: this.searchBySex(); break; case 4: this.searchByTelNum(); break; case 5: this.searchByAdd(); break; case 6: this.showAll(); break; case 7: return; } } }
5.3 实现修改记录业务逻辑方法
public void modifyLogic(){ Menu menu = new Menu(); TelNoteRegex telNoteRegex = new TelNoteRegex(); while(true){ menu.modifyMenu(); int item = telNoteRegex.menuItemValidate(1,3); switch (item){ case 1: this.showAll(); break; case 2: this.modifyOpeartion(); break; case 3: return; } } }
5.4实现删除记录业务逻辑方法
public void deleteLogic(){ Menu menu = new Menu(); TelNoteRegex telNoteRegex = new TelNoteRegex(); while(true){ menu.deleteMenu(); int item = telNoteRegex.menuItemValidate(1,4); switch (item){ case 1: this.showAll(); break; case 2: this.deleteOpeartion(); break; case 3: this.deleteAllOpeartion(); case 4: return; } } }
5.5实现排序记录控制
public void orderLogic(){ Menu menu = new Menu(); TelNoteRegex telNoteRegex = new TelNoteRegex(); while(true){ menu.orderMenu(); int item = telNoteRegex.menuItemValidate(1,5); switch (item){ case 1: this.orderName(); break; case 2: this.orderAge(); break; case 3: this.orderSex(); case 4: this.showAll(); case 5: return; } } }
5.6实现添加记录的方法
public void addOperation(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); String name = telNoteRegex.nameValidate(); String age = telNoteRegex.ageValidate(); String sex = telNoteRegex.sexValidate(); String telNum = telNoteRegex.telNumValidate(); String address = telNoteRegex.addressValidate(); Person person = new Person(name,age,sex,telNum,address); this.list.add(person); person.setId(this.list.size()); System.out.println("添加成功"); }
5.7实现查看全部记录的方法
public void showAll(){ if(this.list.size() == 0) { System.out.println("没有任何记录"); return; } for(int i = 0; i < this.list.size(); i++) { System.out.println(this.list.get(i)); } }
5.8实现按姓名查找功能
public void searchByName(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); String name = telNoteRegex.nameValidate(); boolean flag = true;//默认没有找到 for(int i = 0;i < this.list.size(); i++){ if(name.equals(list.get(i).getName())){ System.out.println(this.list.get(i)); flag = false; } } if(flag){ System.out.println("没有此人记录里"); } }
5.9实现按年龄查找功能
public void searchByAge(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); String age = telNoteRegex.ageValidate(); boolean flag = true;//默认没有找到 for(int i = 0;i < this.list.size(); i++){ if(age.equals(list.get(i).getAge())){ System.out.println(this.list.get(i)); flag = false; } } if(flag){ System.out.println("没有此人记录里"); } }
5.10实现按性别查找功能
public void searchBySex(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); String sex = telNoteRegex.sexValidate(); boolean flag = true;//默认没有找到 for(int i = 0;i < this.list.size(); i++){ if(sex.equalsIgnoreCase(list.get(i).getSex())){ System.out.println(this.list.get(i)); flag = false; } } if(flag){ System.out.println("没有此人记录里"); } }
5.10实现按电话号码查找功能
public void searchByTelNum(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); String telNum = telNoteRegex.telNumValidate(); boolean flag = true;//默认没有找到 for(int i = 0;i < this.list.size(); i++){ if(telNum.equals(list.get(i).getTelNum())){ System.out.println(this.list.get(i)); flag = false; } } if(flag){ System.out.println("没有此人记录里"); } }
5.11 实现按地址查找记录业务
public void searchByAdd(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); String address = telNoteRegex.addressValidate(); boolean flag = true;//默认没有找到 for(int i = 0;i < this.list.size(); i++){ if(address.equals(list.get(i).getAddress())){ System.out.println(this.list.get(i)); flag = false; } } if(flag){ System.out.println("没有此人记录里"); } }
5.12 实现修改指定记录业务功能
public void modifyOpeartion(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); Menu menu = new Menu(); //对被修改的记录的序号进行验证,可以使用对菜单项验证的方法来完成 System.out.println("请输入记录的序号"); int itemNum = telNoteRegex.menuItemValidate(1,this.list.size()); menu.subModifyMenu(); int menuItem = telNoteRegex.menuItemValidate(1,6); switch (menuItem){ case 1: String name = telNoteRegex.nameValidate(); this.list.get(itemNum-1).setName(name); break; case 2: String age = telNoteRegex.ageValidate(); this.list.get(itemNum-1).setAge(age); break; case 3: String sex = telNoteRegex.sexValidate(); this.list.get(itemNum-1).setSex(sex); break; case 4: String telNum = telNoteRegex.telNumValidate(); this.list.get(itemNum-1).setTelNum(telNum); break; case 5: String address = telNoteRegex.addressValidate(); this.list.get(itemNum-1).setAddress(address); break; case 6: return; } }
5.13 删除指定记录
public void deleteOpeartion(){ TelNoteRegex telNoteRegex = new TelNoteRegex(); System.out.println("请输入要删除的记录序号"); int itemNum = telNoteRegex.menuItemValidate(1,this.list.size()); this.list.remove(itemNum-1); //重新为记录设置新的序号 for(int i = 0; i < this.list.size(); i++){ this.list.get(i).setId(i+1); } System.out.println("删除成功,请继续操作"); }
5.14删除全部记录
public void deleteAllOpeartion(){ this.list.clear(); System.out.println("删除成功"); }
5.15 实现比较器的排序规则
/** * 按姓名排序的比较器类 */ class OrderByName implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return o1.getName().compareTo(o2.getName()); } } /** * 按年龄排序的比较器 */ class OrderByAge implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return o1.getAge().compareTo(o2.getAge()); } } /** * 按性别排序的比较器 */ class OrderBySex implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return o1.getSex().compareTo(o2.getSex()); } }
5.16 实现排序记录
/** * 按姓名排序 */ public void orderName(){ Collections.sort(this.list,new OrderByName()); for(int i = 0; i < this.list.size();i++){ this.list.get(i).setId(i+1); } } /** * 按年龄排序 */ public void orderAge(){ Collections.sort(this.list,new OrderByAge()); for(int i = 0; i < this.list.size();i++){ this.list.get(i).setId(i+1); } } /** * 按性别排序 */ public void orderSex(){ Collections.sort(this.list,new OrderBySex()); for(int i = 0; i < this.list.size();i++){ this.list.get(i).setId(i+1); } }
6.导出项目
选择main方法所在的类
能够启动项目的类
点击ok
选择apply再选择ok
完成后输出到out
右键jar文件找到这个目录
复制到桌面我们在桌面运行
输入java –jar 文件名
可以在桌面创建批处理文件
双击start文件即可运行
/**
* 按姓名排序的比较器类
*/
class OrderByName implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
/**
* 按年龄排序的比较器
*/
class OrderByAge implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
/**
* 按性别排序的比较器
*/
class OrderBySex implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
年少轻狂,总以为天下事竭力有为。人事尽时,终感力不能及。