创建名为Tel的包
一、创建App类实现菜单对象的创建
package Tel;
public class App {
//创建Menu对象
public static void main(String[] args) {
Menu menu = new Menu();
menu.mainMenu();
}
}二、创建Menu类
package Tel;
import java.util.Scanner;
public class Menu {
Scanner sc1 = new Scanner(System.in);
TelNodeRegex telnoderegex = new TelNodeRegex();
Operate operate = new Operate();
//主菜单
public void mainMenu(){
System.out.println("***********************************");
System.out.println("****************XX的电话簿***********");
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("***********************************");
System.out.println("------------请输入正确的数字,最大是6,最小是1");
int num = sc1.nextInt();
TelNodeRegex.menuRegex(num);//判断输入的数字是否有相对应的操作
switch(num){
case 1:
addMenu();//添加纪录
break;
case 2:
searchMenu();//查找记录
break;
case 3:
modifyMenu();//修改记录
break;
case 4:
deleteMenu();//删除记录
break;
case 5:
orderMenu();//排序记录
break;
case 6:
System.exit(0);//退出系统
break;
default:
System.out.println("输入的数字不正确,请重新输入");
mainMenu();
break;
}
}
//添加主菜单
public void addMenu() {
System.out.println("***********************************");
System.out.println("*** 1.添加新记录 ***");
System.out.println("*** 2.查看全记录 ***");
System.out.println("*** 3.返回上一级 ***");
System.out.println("***********************************");
System.out.println("------------请输入正确的数字,最大是3,最小是1");
operate.addLogic();
}
//查找主菜单
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("***********************************");
System.out.println("------------请输入正确的数字,最大是7,最小是1");
operate.searchLogic();
}
//修改主菜单
public void modifyMenu() {
System.out.println("***********************************");
System.out.println("*** 1.查看全记录 ***");
System.out.println("*** 2.修改指定记录 ***");
System.out.println("*** 3.返回上一级 ***");
System.out.println("***********************************");
System.out.println("------------请输入正确的数字,最大是3,最小是1");
operate.modifyLogic();
}
//删除主菜单
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("***********************************");
System.out.println("------------请输入正确的数字,最大是4,最小是1");
operate.deleteLogic();
}
//排序主菜单
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("***********************************");
System.out.println("------------请输入正确的数字,最大是5,最小是1");
operate.orderLogic();
}
}三、创建进行可以实现每项操作的类,其中包含实现各种功能的方法
package Tel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Scanner;public class Operate {
Scanner reader = new Scanner(System.in);
static ArrayList<Person> list = new ArrayList<Person>();
static Menu menu = new Menu();
//添加记录逻辑控制
public void addLogic() {
int number = reader.nextInt();
switch(number){
case 1:
addOperation();//添加新纪录
break;
case 2:
showAll();//查看全纪录
menu.addMenu();
break;
case 3:
menu.mainMenu();//返回上一级
break;
default:
System.out.println("输入错误,请重新输入!");
addLogic();
break;
}
}
//排序记录逻辑控制
public void orderLogic() {
int number = reader.nextInt();
switch(number) {
case 1 ://按姓名排序
orderName();
break;
case 2 ://按年龄排序
orderAge();
break;
case 3 ://按性别排序
orderSex();
break;
case 4://查看全记录
showAll();
break;
case 5 ://返回上一级
menu.orderMenu();
break;
default:
System.out.println("输入错误,请后重新输入!");
orderLogic();
break;
}
}
//查找记录逻辑控制
public void searchLogic() {
int number = reader.nextInt();
switch(number) {
case 1:
searchByName();//按姓名查找
break;
case 2:
searchByAge();//按年龄查找
break;
case 3:
searchBySex();//按性别查找
break;
case 4:
searchByTelNum();//按号码查找
break;
case 5:
searchByAdd();//按住址查找
break;
case 6:
showAll();//查看全记录
break;
case 7:
menu.mainMenu();//返回上一级
break;
default:
System.out.println("输入错误,请重新输入!");
searchLogic();
break;
}
}
//修改记录逻辑控制
public void modifyLogic() {
int number = reader.nextInt();
switch(number) {
case 1://查看全记录
showAll();
break;
case 2://修改指定记录
modify();
break;
case 3://返回上一级
menu.mainMenu();
break;
default:
System.out.println("输入错误,请重新输入!");
modifyLogic();
}
}
//删除记录逻辑控制
public void deleteLogic() {
int number = reader.nextInt();
switch(number) {
case 1://查看全记录
showAll();
break;
case 2://删除指定记录
delete();
break;
case 3://删除全部
deleteAll();
break;
case 4://返回上一级
menu.mainMenu();
break;
default:
System.out.println("输入错误,请重新输入!");
modifyLogic();
}
}
//增加联系人操作
public void addOperation() {
for(int i = 0; i < 100; i++) {
System.out.println("请输入要添加的联系人信息:");
System.out.println("请输入姓名:(1-20位字母)");
String name = reader.next();
name = TelNodeRegex.nameRegex(name);//对输入的姓名格式进行验证
System.out.println("请输入年龄:(1-130)");
int age = reader.nextInt();
age = TelNodeRegex.ageRegex(age);
System.out.println("请输入性别:(m/M或f/F)");
String sex = reader.next();
sex = TelNodeRegex.sexRegex(sex);
System.out.println("请输入电话号码:(6-11位数字)");
String phone = reader.next();
phone = TelNodeRegex.telNumRegex(phone);
System.out.println("请输入地址;(1-50位字母或数字)");
String address = reader.next();
address = TelNodeRegex.addressRegex(address);
//创建Person对象并初始化
Person p = new Person();
int id = 1;
p.setId(id);
p.setName(name);
p.setAge(age);
p.setSex(sex);
p.setPhone(phone);
p.setAddress(address);
//添加到list中
list.add(p);
System.out.println("录入成功!");
System.out.println("是否继续录入?是请按1,否请按2");
int message = reader.nextInt();
if(message != 1) {
break;
}
id = id++;
}
menu.addMenu();
}
//显示全部联系人信息
public void showAll() {
int id = 1;
Iterator<Person> it = list.iterator();
while(it.hasNext()){
Person p = new Person();
p = it.next();
p.setId(id++);//设置list中联系人的id,并自增,按顺序输出
System.out.println("序号:"+p.getId()+"# "+p);
}
System.out.println("");
menu.mainMenu();
}
//按姓名查找联系人
public void searchByName() {
System.out.println("请输入想要查找的联系人姓名:(3-15)个字母");
String name = reader.next();
name = TelNodeRegex.nameRegex(name);
Iterator<Person> it = list.iterator();//利用迭代器在list中进行遍历
boolean b = false;
while(it.hasNext()) {
/*Person person = new Person
* person = (Person)it.next();
*/
Person person = it.next();
if(person.getName().equals(name)) {
System.out.println("您所要查询的联系人信息如下:");
System.out.println(person);
System.out.println("");
b = true;
}
if(!b) {
System.out.println("查无此人!");
}
}
menu.searchMenu();
}
//根据年龄查找
public void searchByAge() {
System.out.println("请输入想要查找的联系人的年龄:(0-200)");
int age = reader.nextInt();
age = TelNodeRegex.ageRegex(age);
Iterator<Person> it = list.iterator();
boolean b = false;
while(it.hasNext()) {
Person person = it.next();
if(person.getAge() == age) {
System.out.println("您所要查询的联系人信息如下");
System.out.println(person);
System.out.println("");
b = true;
}
if(!b) {
System.out.println("查无此人!");
}
}
menu.searchMenu();
}
//根据性别查找
public void searchBySex() {
System.out.println("请输入要查找联系人的性别:(m/M或f/F)");
String sex =reader.next();
sex = TelNodeRegex.sexRegex(sex);
Iterator<Person> it = list.iterator();
boolean b = false;
while(it.hasNext()) {
Person person = it.next();
if(person.getSex().equals(sex)) {
System.out.println("您所要查询的联系人信息如下:");
System.out.println(person);
System.out.println("");
b = true;
}
if(!b) {
System.out.println("查无此人!");
}
}
menu.searchMenu();
}
//根据电话号码进行查找
public void searchByTelNum() {
System.out.println("请输入要查找联系人的电话号码:(6-11位数字)");
String telNum = reader.next();
telNum = TelNodeRegex.telNumRegex(telNum);
Iterator<Person> it = list.iterator();
boolean b = false;
while(it.hasNext()) {
Person person = it.next();
if(person.getPhone().equals(telNum)) {
System.out.println("您所要查询的联系人信息如下:");
System.out.println(person);
System.out.println("");
b = true;
}
if(!b) {
System.out.println("查无此人!");
}
}
menu.searchMenu();
}
//根据住址进行查找
public void searchByAdd() {
System.out.println("请输入要查找联系人的地址:(1-10位数字或字母)");
String address = reader.next();
address = TelNodeRegex.addressRegex(address);//对输入的地址进行验证
Iterator<Person> it = list.iterator();
boolean b = false;
while(it.hasNext()) {
Person person = it.next();
if(person.getAddress().equals(address)) {
System.out.println("您所要查询的联系人信息如下:");
System.out.println(person);
System.out.println("");
b = true;
}
if(!b) {
System.out.println("查无此人!");
}
}
menu.searchMenu();
}
//修改联系人信息逻辑控制
public void modify() {
for(int i = 0;i< 100;i++) {
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("*************************");
System.out.println("请输入正确的数字,最小是1,最大是6:");
int number = reader.nextInt();
switch(number) {
case 1://修改姓名
modifyName();
break;
case 2://修改年龄
modifyAge();
break;
case 3://修改性别
modifySex();
break;
case 4://修改号码
modifyTelNum();
break;
case 5://修改住址
modifyAddress();
break;
case 6://返回主菜单
menu.mainMenu();
break;
default:
System.out.println("输入错误,请重新输入!");
searchLogic();
break;
}
}
}
//修改姓名
public void modifyName() {
System.out.println("请输入您所要修改的联系人编号:");
int id = 1;
int num = reader.nextInt();
if(num > list.size()) {
System.out.println("对不起,找不到此编号的联系人!");
modify();
}
System.out.println("请输入您所要修改的新的姓名:(3-15)个字母");
String name = reader.next();
name = TelNodeRegex.nameRegex(name);
list.get(id-1).setName(name);//找到id对应的联系人并重新设置他的姓名
System.out.println("修改成功!");
System.out.println("");
modify();
}
//修改联系人的年龄
public void modifyAge() {
System.out.println("请输入您所要修改的联系人编号:");
int id = 1;
int num = reader.nextInt();
if(num > list.size()) {
System.out.println("对不起,找不到此编号的联系人!");
modify();
}
System.out.println("请输入您所要修改的新的年龄:(0-200)");
int age = reader.nextInt();
age = TelNodeRegex.ageRegex(age);
list.get(id-1).setAge(age);
System.out.println("修改成功!");
System.out.println("");
modify();
}
//修改联系人的性别
public void modifySex() {
System.out.println("请输入您所要修改的联系人编号:");
int id = 1;
int num = reader.nextInt();
if(num > list.size()) {
System.out.println("对不起,找不到此编号的联系人!");
modify();
}
System.out.println("请输入您所要修改的新的性别:(m/M或f/F)");
String sex = reader.next();
sex = TelNodeRegex.sexRegex(sex);
list.get(id-1).setSex(sex);
System.out.println("修改成功!");
System.out.println("");
modify();
}
///修改联系人的电话号码
public void modifyTelNum() {
System.out.println("请输入您所要修改的联系人编号:");
int id = 1;
int num = reader.nextInt();
if(num > list.size()) {
System.out.println("对不起,找不到此编号的联系人!");
modify();
}else {
System.out.println("请输入您所要修改的新的电话号码:(6-11位数字)");
String telnum = reader.next();
telnum = TelNodeRegex.telNumRegex(telnum);
list.get(id-1).setPhone(telnum);
System.out.println("修改成功!");
System.out.println("");
modify();
}
}
//修改联系人的住址
public void modifyAddress() {
System.out.println("请输入您所要修改的联系人编号:");
int id = 1;
int num = reader.nextInt();
if(num > list.size()) {
System.out.println("对不起,找不到此编号的联系人!");
modify();
}
System.out.println("请输入您所要修改的新的地址:(1-10位数字或字母)");
String address = reader.next();
address = TelNodeRegex.addressRegex(address);
list.get(id-1).setAddress(address);
System.out.println("修改成功!");
System.out.println("");
modify();
}
//删除指定联系人
public void delete() {
System.out.println("请输入要删除联系人的序号:");
int Id = reader.nextInt();
list.remove(Id - 1);
System.out.println("删除成功!");
/*Iterator<Person> it = list.iterator();
while(it.hasNext()) {
Person person = it.next();
if(person.getId() == Id) {
it.remove();
System.out.println("删除成功!");
break;
}
}*/
deleteLogic();
}
//清空电话簿
public void deleteAll() {
Iterator<Person> it = list.iterator();
while(it.hasNext()){
it.remove();
System.out.println("删除成功!");
}
System.out.println("电话簿已清空!");
deleteLogic();
}
//根据姓名排序
public void orderName() {
Collections.sort(list,new NameComparator());
System.out.println("排序成功!");
orderLogic();
}
//根据年龄排序
public void orderAge() {
Collections.sort(list,new AgeComparator());
System.out.println("排序成功!");
orderLogic();
}
//根据性别排序
public void orderSex() {
Collections.sort(list,new SexComparator());
System.out.println("排序成功!");
orderLogic();
}
//按姓名排序
class NameComparator implements Comparator<Person>{
public int compare(Person p1,Person p2){
return p1.getName().compareTo(p2.getName());
}
}
//按性别排序
class SexComparator implements Comparator<Person>{
public int compare(Person p1,Person p2){
return p1.getSex().compareTo(p2.getSex());
}
}
//按年龄排序
class AgeComparator implements Comparator<Person>{
public int compare(Person p1,Person p2){
return Integer.valueOf(p1.getAge()).compareTo(Integer.valueOf(p2.getAge()));
}
}
}四、Person类包含各种属性的设置和获取
package Tel;
public class Person {
private String name;
private int age;
private String address;
private String sex;
private int Id;
private String phone;
//无参的构造函数
public Person() {
super();
// TODO Auto-generated constructor stub
}
//有参的构造函数
public Person(String name, int age, String address, String sex, String phone) {
super();
this.name = name;
this.age = age;
this.address = address;
this.sex = sex;
this.phone = phone;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + ", sex=" + sex + ", Id=" + Id
+ ", phone=" + phone + "]";
} //获取id
public int getId() {
return Id;
}
//设置id
public void setId(int Id) {
this.Id = Id;
}
//获取姓名
public String getName() {
return name;
}
//设置姓名
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}五、TelNodeRegex类对用户从键盘输入的内容进行格式上的控制
package Tel;
import java.util.*;
public class TelNodeRegex {
static Scanner reader = new Scanner(System.in);
//对主菜单进行验证
public static int menuRegex(int number){
while(true){
if(number > 6 || number < 1){
System.out.println("对不起,没有此操作");
break;
}
else{
break;
}
}
return number;
}
/*对用户输入名字的验证*/
public static String nameRegex(String name) {
while(true) {
if(name.length()<3||name.length()>15) {
System.out.println("对不起,您输入的名字不合法,请重新输入!");
name = reader.nextLine();
nameRegex(name);
}else {
break;
}
}
return name;
}
/*对用户输入年龄的验证*/
public static int ageRegex(int age) {
while(true) {
if(age<0||age>=200) {
System.out.println("对不起,您输入的年龄不合法,请核对后重新输入!");
age = reader.nextInt();
ageRegex(age);
}else {
break;
}
}
return age;
}
/*对用户输入性别的验证*/
public static String sexRegex(String sex) {
while(true) {
if(sex.equals("f")||sex.equals("F")||sex.equals("m")||sex.equals("M")) {
break;
}else {
System.out.println("对不起,您输入的性别不合法,请重新输入!");
sex = reader.nextLine();
sexRegex(sex);
}
}
return sex;
}
/*对用户输入电话号码的验证*/
public static String telNumRegex(String tel) {
while(true) {
if(tel.length() > 11 || tel.length() < 6) {
System.out.println("对不起,您输入的电话号码不合法,请重新输入!");
tel = reader.nextLine();
telNumRegex(tel);
}else {
break;
}
}
return tel;
}
/*对用户输入地址的验证*/
public static String addressRegex(String address) {
while(true) {
if(address.length()<1||address.length()>10) {
System.out.println("对不起,您输入的住址不合法,请重新输入!");
address = reader.nextLine();
addressRegex(address);
}else {
break;
}
}
return address;
}
}欢迎指教!!
java简单电话簿 电话薄程序java
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章