电话薄程序期末大作业

项目:电话薄程序
5个类文件:
App 对应 Application(程序入口方法):主类,创建Menu类的对象,调用Menu类的方法
Menu 对应 Menu (菜单类):定义多个方法,显示各种操作对应的菜单,并调用Operate类中的方法实现菜单中的内容
Operate 对应 Operate(业务处理类):定义每一个具体操作的方法,
Person 对应 Person (实体类):定义属性和方法
TelNoteRegex 对应 TelNoteRegex(用户输入验证类)用于对用户输入的姓名,年龄等属性进行验证。

流程图

在这里插入图片描述

package iponeApp;

public class APP {//程序入口
	public static void main(String[] args) {
		Menu m=new Menu();
		m.mainMenu();
	}
	
}

package iponeApp;


import java.util.Scanner;

public class Menu {//选项类
	Scanner in=new Scanner(System.in);
	Operate o=new Operate();
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();
	String selec=in.nextLine();
	while(true){
		if(selec.equals("1")||selec.equals("2")||selec.equals("3")||selec.equals("4")||selec.equals("5")||selec.equals("6")){
			switch (selec) {
			case "1":
				addmenu();
				break;
			case "2":
				search();		
				break;
			case "3":
				modifyLogicLogic();
				break;
			case "4":
				deleteMenu();
				break;
			case "5":
				orderMenu();
				break;
			case "6":
				System.out.println("再见!");
				System.exit(0);
				break;
			default:
				break;
			}
			break;
		}
		else{
			System.out.println("输入非法,请重新输入");
			selec=in.nextLine();
		}
	}//while循环结束
	
}


//选项1中的二级菜单
public void addmenu() {
	System.out.println("******1:添加新记录******");
	System.out.println("******2:查看全记录******");
	System.out.println("******3:返回上一级******");
	System.out.println("输入你的选择");
	o.addlogic();
}
//选项2中的二级菜单
public void search() {
	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:返回上一级******");
	o.searchlogic();
}
//选项3中的二级菜单
public void modifyLogicLogic() {
	System.out.println("***   1:查看全部记录     ***");
	System.out.println("***   2:修改指定记录     ***");
	System.out.println("***   3:返回上一级     ***");
	subModifyMenu ();
	
	
}
//选项3中的二级菜单的子菜单
private void subModifyMenu() {
	System.out.println("请输入选择");
	int a=in.nextInt();
	switch (a) {
	case 1:
		o.showAll(); 
		break;
	case 2:
			System.out.println("1:修改姓名                   ");
			System.out.println("2:修改性别                   ");
			System.out.println("3:修改年龄                   ");
			System.out.println("4:修改号码                   ");
			System.out.println("5:修改住址                   ");
			System.out.println("6:返回上一级                   ");
			o.xiugai();
		break;
	case 3:
		mainMenu();
		break;
	default:
		break;
	}
}

//选项4中的二级菜单
public void deleteMenu() {
	System.out.println("***   1:查看全部记录     ***");
	System.out.println("***   2:删除指定记录     ***");
	System.out.println("***   3:删除所有记录     ***");
	System.out.println("***   4:返回上一级     ***");
	o.deleteLogic();
}
//选项5中的二级菜单
private void orderMenu() {
	System.out.println("***   1:按姓名排序        ***");
	System.out.println("***   2:按年龄排序        ***");
	System.out.println("***   3:按性别排序        ***");
	System.out.println("***   4:查看全记录        ***");
	System.out.println("***   5:返回上一级        ***");
	o.subModifyMenu();
}
}

package iponeApp;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Operate  {
	int count=0;
	//必须要加静态;
	static ArrayList<Person> list=new ArrayList<Person>();
	Scanner sc=new Scanner(System.in);
	static Menu m=new Menu();
	TelNoteRegex tt=new TelNoteRegex();
	//添加
	public void addlogic() {
		int x=sc.nextInt();
		switch (x) {
		case 1:
			addnew();//添加新用户
			break;
		case 2:
			showAll();//显示全部信息	
			break;
		case 3:
			m.mainMenu();
			break;
		default:
			break;
		}
	}
	//添加的具体实现+++++++++++++++++++++++++++++++++++++++++++
	public void addnew() {
		System.out.println("请输入姓名");
		String name=sc.next();
		name=tt.nameRegex(name);//正则表达式判断
		System.out.println("请输入年龄");
		String age=sc.next();
		age=tt.age(age);
		System.out.println("请输入性别    男m   女f");
		String sex=sc.next();
		sex=tt.sexRegex(sex);
		System.out.println("请输入号码");
		String telNum=sc.next();
		telNum=tt.telRegex(telNum);
		System.out.println("请输入住址");
		String address=sc.next();
		address=tt.addressRegex(address);
		count++;
		Person p=new Person(count, name, age, sex,telNum, address);
		list.add(p);
		System.out.println("添加成功");
		m.addmenu();
	}
//查找的具体实现++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	public void searchlogic() {
		int search=sc.nextInt();
		switch (search) {
		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:
			m.mainMenu();
			break;
		default:
			break;
		}
		
	}
	//按地址查找
	public void searchByAdd() {
		System.out.println("请输入地址");
		String sadd=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(sadd.equals(p1.getAddress())) {
				System.out.println("id: "+p1.getId()+"\t 姓名: "+p1.getName()+"\t 性别:"+p1.getSex()+"\t 年龄:"+p1.getAge()+"\t 手机号:"+p1.getTelNum());
				 flag=0;
			}
			
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.search();//显示菜单
	}
	//按手机号查找
	public void searchByTelNum() {
		System.out.println("请输入手机号");
		String stel=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(stel.equals(p1.getTelNum())) {
				System.out.println("id: "+p1.getId()+"\t 姓名: "+p1.getName()+"\t 性别:"+p1.getSex()+"\t 年龄:"+p1.getAge()+"\t 手机号:"+p1.getTelNum());
				 flag=0;
			}
			
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.search();//显示菜单
	}

	//按性别查找
	public void searchBySex() {
		System.out.println("请输入性别");
		String ssex=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(ssex.equals(p1.getSex())) {
				System.out.println("id: "+p1.getId()+"\t 姓名: "+p1.getName()+"\t 性别:"+p1.getSex()+"\t 年龄:"+p1.getAge()+"\t 手机号:"+p1.getTelNum());
				 flag=0;
			}
			
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.search();//显示菜单
		
	}

	//按年龄查找
	public void searchByAge() {
		System.out.println("请输入年龄");
		String sage=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(sage.equals(p1.getAge())) {
				System.out.println("id: "+p1.getId()+"\t 姓名: "+p1.getName()+"\t 性别:"+p1.getSex()+"\t 年龄:"+p1.getAge()+"\t 手机号:"+p1.getTelNum());
				 flag=0;
			}
			
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.search();//显示菜单
	}
	//按姓名查找
	public void searchByName() {
		System.out.println("请输入查找姓名");
		String sname=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(sname.equals(p1.getName())) {
				System.out.println("id: "+p1.getId()+"\t 姓名: "+p1.getName()+"\t 性别:"+p1.getSex()+"\t 年龄:"+p1.getAge()+"\t 手机号:"+p1.getTelNum());
				 flag=0;
			}
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.search();//显示菜单
	}

//修改中的具体修改步骤+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		public void xiugai() {
			int O_xiugai=sc.nextInt();
			switch (O_xiugai) {
			case 1:
				name_xiugai();
				break;
			case 2:
				sex_xiugai();	
				break;
			case 3:
				age_xiugai();
				break;
			case 4:
				tel_xiugai();
				break;
			case 5:
				add_xiugai();
				break;
			case 6:
				m.modifyLogicLogic();
				break;
			default:
				break;
			}
		}
		//修改住址
	public void add_xiugai() {
			System.out.println("请输入ID");
			int xid=sc.nextInt();
			System.out.println("输入修改后的住址");
			String xsex2=sc.next();
			int flag=1;
			Iterator<Person> it=list.iterator();
			while (it.hasNext()) {
				Person p1 =  it.next();
				if(xid==Integer.valueOf(p1.getId())) {
					p1.setAddress(xsex2);;
					 flag=0;
				}
			}
			if(flag==1) {
				System.out.println("你的输入有误,不存在");
			}
			m.modifyLogicLogic();//显示菜单
		
	}
		//修改手机号
	public void tel_xiugai() {
		System.out.println("请输入ID");
		int xid=sc.nextInt();
		System.out.println("输入修改后的手机号");
		String xsex2=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(xid==Integer.valueOf(p1.getId())) {
				p1.setTelNum(xsex2);;
				 flag=0;
			}
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.modifyLogicLogic();//显示菜单
		
	}
		//按年龄修改
	public void age_xiugai() {
		System.out.println("请输入ID");
		int xid=sc.nextInt();
		System.out.println("输入修改后的年龄");
		String xsex2=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(xid==Integer.valueOf(p1.getId())) {
				p1.setAge(xsex2);
				 flag=0;
			}
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.modifyLogicLogic();//显示菜单
	
	}
		//按性别修改
	public void sex_xiugai() {
		System.out.println("请输入ID");
		int xid=sc.nextInt();
		System.out.println("输入修改后的性别");
		String xsex2=sc.next();
		int flag=1;
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(xid==Integer.valueOf(p1.getId())) {
				p1.setSex(xsex2);;
				 flag=0;
			}
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.modifyLogicLogic();//显示菜单
		
	}
		//按姓名修改
	public void name_xiugai() {
		System.out.println("请输入姓名");
		String xname1=sc.next();
		System.out.println("继续输入修改后的姓名");
		String xname2=sc.next();
		int flag=1;
		tt.nameRegex(xname2);//对用户名再次判断
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(xname1.equals(p1.getName())) {
				p1.setName(xname2);
				 flag=0;
			}
		}
		if(flag==1) {
			System.out.println("你的输入有误,不存在");
		}
		m.modifyLogicLogic();//显示菜单
		
	}
	//删除信息具体实现+++++++++++++++++++++++++++++++++++++++++++++++
	public void deleteLogic() {
		System.out.println("输入你的选择");
		int del=sc.nextInt();
		switch (del) {
		case 1:
			showAll();
			break;
		case 2:
			rm_zhiding();	
			break;
		case 3:
			delAll();
			break;
		case 4:
			m.mainMenu();
			break;
		default:
			break;
		}
		
	}
	public void rm_zhiding() {
		System.out.println("输入需要删除的序号");
		int idd=sc.nextInt();
		Iterator<Person> it=list.iterator();
		while (it.hasNext()) {
			Person p1 =  it.next();
			if(idd==p1.getId()) {
				it.remove();
				System.out.println("删除成功");
			}
		}
		m.deleteMenu();
		
	}
	//删除所有信息
	public void delAll() {
		list.removeAll(list);
		System.out.println("已全部清空");
		m.deleteMenu();
	}
//排序操作++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	public void subModifyMenu() {
		System.out.println("输入你的选择");
		int paixu =sc.nextInt();
		switch (paixu) {
		case 1:
			orderName();
			break;
		case 2:
			orderAge();		
			break;
		case 3:
			orderSex();
			break;
		case 4:
			showAll();
			break;
		case 5:
			m.mainMenu();
			break;
		default:
			break;
		}
		
	}
	//按姓名排序
	public void orderName() {
		Collections.sort(list,new NameComparator());
		System.out.println("排序完成");
		subModifyMenu();
		//用到自定义比较器,传入一个比较器
	}
	//按年龄排序
	public void orderAge() {
		Collections.sort(list,new AgeComparator());
		System.out.println("排序完成");
		subModifyMenu();
		
	}
	//按性别排序
	public void orderSex() {
		Collections.sort(list,new SexComparator());
		System.out.println("排序完成");
		subModifyMenu();
	}
//自定义姓名排序类
class NameComparator implements Comparator<Person>{

	public int compare(Person o1, Person o2) {
		return o1.getName().compareTo(o2.getName());
	}
}
//自定义性别排序类
class SexComparator implements Comparator<Person>{

	public int compare(Person o1, Person o2) {
		
		return o1.getSex().compareTo(o2.getSex());
	}
}
class AgeComparator implements Comparator<Person>{

	public int compare(Person o1, Person o2) {
		return o1.getAge().compareTo(o2.getAge());
	}
	
}

//显示全部信息具体实现+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	public void showAll() {
		Iterator<Person> it=list.iterator();
		int id=1;
		while (it.hasNext()) {
			Person p1 = (Person) it.next();
			p1.setId(id);
			id++;
			System.out.println("id: "+p1.getId()+"\t姓名: "+p1.getName()+"\t性别:"+p1.getSex()+"\t年龄:"+p1.getAge()+"\t手机号:"+p1.getTelNum()+"\t住址"+p1.getAddress());
		}
		m.addmenu();
	}
	

}

package iponeApp;

public class Person {//实体类,数据
	
	private int id; //用户ID 属性
	private String name; //用户姓名属性
	private String age; //用户年龄属性
	private String sex; //用户性别属性
	private String telNum; //用户电话号码属性
	private String address; //用户地址属性
	Person(){};// 无参数构造方法
	//有参构造方法
	public Person(int id, String name, String age, String sex, String telNum, String address) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		if(sex.equals("m")) {
			this.sex = "男";
		}
		else if(sex.equals("f")) {
			this.sex = "女";
		}
		else {
			this.sex = sex;
		}
//		this.sex = sex;
		this.telNum = telNum;
		this.address = address;
	}

	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) {
		if(sex.equals("m")) {
			this.sex = "男";
		}
		else if(sex.equals("f")) {
			this.sex = "女";
		}
		else {
			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;
	}
	public String toString() {
		return "id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", telNum=" + telNum
				+ ", address=" + address;
	}

}


package iponeApp;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TelNoteRegex {
	Scanner sc = new Scanner(System.in);
	//对用户名进行判断
	
	
	
	public String nameRegex(String Name) {
		while(!checkName(Name)) {
			  System.out.println("用户名不合法,请重新输入:");
			  Name=sc.next();
			 }
//		必须是6-10位字母、数字、下划线(这里字母、数字、下划线是指任意组合,没有必须三类均包含)
//		不能以数字开头
		return Name;
		  
	}
	public  boolean checkName(String name) {
//		 String regExp = "^[^0-9][\\w_]{5,9}$";
		 String regExp = "^(([\u4e00-\u9fa5]{2,8})|([a-zA-Z]{2,16}))$";
//		 String reg = /^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,20}$/;
		 if(name.matches(regExp)) {
		  return true;
		 }else {
		  return false;
		 }
		 }
	
	//对用户性别判断
	public String sexRegex(String sex) {
		while(true){
			if(!(sex.equals("m")||sex.equals("f")||sex.equals("男")||sex.equals("女"))){
				System.out.println("输入有误,请重新输入");
				sex=sc.next();
			}
			else{
				break;
			}
		}
		return sex;
		
	}
	public String age(String age) {
		while(true){
			if(Integer.valueOf(age)<1||Integer.valueOf(age)>138){
				System.out.println("输入有误,请重新输入");
				age=sc.next();
			}
			else{
				break;
			}
		}
		return age;
		
	}
	public String telRegex(String telNum) {
		while(true){
			if(isMobile(telNum)){
			      System.out.println(telNum+"是符合的手机号码");
			      break;
			    }else {
				  System.out.println(telNum+"不符合,请重新输入!");
				  telNum=sc.next();
			    }
			  }
		return telNum;
	}

	  
	  public static boolean isMobile(String str) {
		  Pattern p = null;
	      Matcher m = null;
	      boolean isMatch = false;
		  // 制定验证条件,目前有些新卡会出现类似166开头的,需要适当调整
	      String regex1 = "^[1][3,4,5,7,8][0-9]{9}$";
	      String regex2 = "^((13[0-9])|(14[579])|(15([0-3,5-9]))|(16[6])|(17[0135678])|(18[0-9]|19[89]))\\d{8}$";
	     
	      p = Pattern.compile(regex2);
	      m = p.matcher(str);
	      isMatch = m.matches();
	      return isMatch;
	  }
	public String addressRegex(String address) {
		while(true){
			if(address.length()>3&&address.length()<30){
				break;
			}
			else{
				System.out.println("地址有误,请重新输入");
				address=sc.next();
			}
		}
		return address;
		
	}
	  
	  
}
	
发布了32 篇原创文章 · 获赞 8 · 访问量 1954

猜你喜欢

转载自blog.csdn.net/qq_44727672/article/details/103704303