首页 > 编程 > Java > 正文

java实现简单控制台通讯录

2019-11-26 10:15:24
字体:
来源:转载
供稿:网友

通过主菜单对各级子菜单进行控制,并实现添加记录,查找记录,删除记录,修改记录,排序记录,以及退出系统功能的实现。一共六部分的功能模块。

这里写图片描述

上面的图就是每个模块具有的功能,而且还用到了正则表达式判断输入的是否符合规则,这个系统体现了MVC的设计模式,分工调用很清晰。

主要包含了下面几个类:

这里写图片描述

APP类:程序的主函数类,程序开始的入口
Menu类:里面都是简单页面显示的效果,没有功能的实现。
TelNoteRegex类:正则表达式,判断是否输入合格,都在这个方法中。
Operate类:业务逻辑类,全部功能的实现基本都集中在这个类中。
Person类:封装数据。

这里写图片描述

具体的实现代码:

App类的实现代码:

package com.bjsxt.iphone;public class App { public static void main(String[] args) {  new App().start(); } public void start(){  Menu m=new Menu();  Operate o=new Operate();  TelNoteRegex reg=new TelNoteRegex();  while(true){   m.mainMenu();   int key=reg.menuRegex(1, 6);   switch(key){   case 1:    o.addLogic();    break;   case 2:    o.searchLogic();    break;   case 3:    o.modifyLogicLogic();    break;   case 4:    o.deleteLogic();    break;   case 5:    o.orderLogic();    break;   case 6:    System.exit(0);    break;   }  } }}

Person类具体的实现代码:

package com.bjsxt.iphone;public class Person { private int id;//用户ID属性 private String name;//用户姓名属性 private String age;//用户年龄属性 private String sex;//用户性别属性 private String telNum;//用户电话号码属性 private String address;//用户地址属性 public Person(){} public Person(int id,String name,String age,String sex,String telNum,String address){  this.id=id;  this.name=name;  this.age=age;  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) {  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; }}

TelNoteRegex类具体代码:

package com.bjsxt.iphone;import java.util.Scanner;public class TelNoteRegex { //对菜单项校验 @SuppressWarnings("resource") public int menuRegex(int min,int max){  String regex="[0-9]{1}";  Scanner sc=new Scanner(System.in);  while(true){   String input=sc.nextLine();   //根据合法性的校验   if(input.matches(regex)){    int key=Integer.parseInt(input);    if(key>=min && key<=max){     return key;    }else{     System.out.println("输入的菜单项不符合要求!");    }   }else{    System.out.println("输入内容不正确!");   }  } } //用户输入姓名的验证 @SuppressWarnings("resource") public String nameRegex(String name){  String pattern ="[//u4e00-//u9fa5]+";  String str=name;  Scanner sc=new Scanner(System.in);  while(true){   if(str.matches(pattern)){    return str;   }else{    System.out.println("输入不合法字符,请重新输入中文汉字");    str=sc.nextLine();    continue;   }  } } //用户输入年龄的验证 @SuppressWarnings("resource") public String ageRegex(String age){  String pattern ="^([0-9]|[0-9]{2}|100)$";  String str=age;  Scanner sc=new Scanner(System.in);  while(true){   if(str.matches(pattern)){    return str;   }else{    System.out.println("输入不合法字符,请重新输入数字");    str=sc.nextLine();    continue;   }  } } //用户性别的验证 @SuppressWarnings("resource") public String sexRegex(String sex){  String pattern ="[男女MmFf]";  String str=sex;  Scanner sc=new Scanner(System.in);  while(true){   if(str.matches(pattern)){    return str;   }else{    System.out.println("输入不合法字符,请重新输入男女MmFf");    str=sc.nextLine();    continue;   }  } } //用户输入电话号码的验证 @SuppressWarnings("resource") public String telNumRegex(String telNum){  String pattern ="[0-9]{11}";  String str=telNum;  Scanner sc=new Scanner(System.in);  while(true){   if(str.matches(pattern)){    return str;   }else{    System.out.println("输入不合法字符,请重新输入11位的手机号码");    str=sc.nextLine();    continue;   }  } } //用户输入地址的验证 @SuppressWarnings("resource") public String addressRegex(String address){  String pattern ="[a-zA-Z[0-9]]{1,15}";  String str=address;  Scanner sc=new Scanner(System.in);  while(true){   if(str.matches(pattern)){    return str;   }else{    System.out.println("输入不合法字符,请重新输入1到15个英文大小写或是数字");    str=sc.nextLine();    continue;   }  } }}

Menu类代码的具体实现:

package com.bjsxt.iphone;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("*************************"); }}

Operate类的具体实现:

package com.bjsxt.iphone;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{ private List<Person> list=new ArrayList<Person>(); //用户添加信息业务逻辑控制 public void addLogic(){  Menu m=new Menu();  TelNoteRegex reg=new TelNoteRegex();  while(true){   m.addMenu();   int key=reg.menuRegex(1, 3);   switch(key){   case 1:    addOperation ();    break;   case 2:    showAll();    break;   case 3:    return;   }  } } //用户查询信息业务逻辑控 public void searchLogic(){  Menu m=new Menu();  TelNoteRegex reg=new TelNoteRegex();  while(true){   m.searchMenu();   int key=reg.menuRegex(1, 7);   switch(key){   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:    return;   }  } } //修改信息业务逻辑控制 public void modifyLogicLogic(){  Menu m=new Menu();  TelNoteRegex reg=new TelNoteRegex();  while(true){   m.modifyMenu();   int key=reg.menuRegex(1, 3);   switch(key){   case 1:    showAll();    break;   case 2:    modifyLogicLogic1();    break;   case 3:    return;   }  } } //修改有三层跳转 public void modifyLogicLogic1(){  Menu m=new Menu();  TelNoteRegex reg=new TelNoteRegex();  while(true){   m.subModifyMenu();   int key=reg.menuRegex(1, 6);   switch(key){   case 1:    nameModify();    break;   case 2:    ageModify();    break;   case 3:    sexModify();    break;   case 4:    telNumModify();    break;   case 5:    addressModify();    break;   case 6:    return;   }  } } //删除信息业务逻辑控制 public void deleteLogic(){  Menu m=new Menu();  TelNoteRegex reg=new TelNoteRegex();  while(true){   m.deleteMenu();   int key=reg.menuRegex(1, 4);   switch(key){   case 1:    showAll();    break;   case 2:    delete();    break;   case 3:    deleteAll();    break;   case 4:    return;   }  } } //排序信息业务逻辑控制 public void orderLogic(){  Menu m=new Menu();  TelNoteRegex reg=new TelNoteRegex();  while(true){   m.orderMenu();   int key=reg.menuRegex(1, 5);   switch(key){   case 1:    orderName();    break;   case 2:    orderAge();    break;   case 3:    orderSex();    break;   case 4:    showAll();    break;   case 5:    return;   }  } } //添加新用户信息 @SuppressWarnings("resource") public void addOperation (){   TelNoteRegex reg=new TelNoteRegex();   Scanner sc=new Scanner(System.in);    System.out.println("请输入联系人id:");   String id=sc.nextLine();    System.out.println("请输入要添加的姓名:");   String name=sc.nextLine();   name=reg.nameRegex(name);   System.out.println("请输入要添加的年龄:");   String age=sc.nextLine();   age=reg.ageRegex(age);   System.out.println("请输入要添加的性别:");   String sex=sc.nextLine();   sex=reg.sexRegex(sex);   System.out.println("请输入要添加的手机号码:");   String telNum=sc.nextLine();   telNum=reg.telNumRegex(telNum);   System.out.println("请输入要添加的地址:");   String address=sc.nextLine();   address=reg.addressRegex(address);   int personId=Integer.parseInt(id);   Person p=new Person(personId,name,age,sex,telNum,address);   list.add(p); }// //判断序号是否已经存在插入成功失败//   @SuppressWarnings("resource")//   public String judgeId(String id){//    Scanner sc=new Scanner(System.in);//    Iterator<Person> it=list.iterator();//    String newId=id;//    while(it.hasNext()){//     Person p=(Person)it.next();//     if(newId.equals(p.getId())){//      System.out.println("此序号已经存在,请重新输入序号");//      newId=sc.nextLine();//      continue;//     }else{//      return newId;//     }//    }//    return id;//   } //查询全部用户信息 public void showAll(){  System.out.println("序号/t/t"+"姓名/t/t"+"年龄/t/t"+"性别/t/t"+"手机号/t/t"+"地址");  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());  } } //按姓名查询用户信息 @SuppressWarnings("resource") public void searchByName(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("输入你要查询的姓名:");  Scanner sc=new Scanner(System.in);  String name=sc.nextLine();  name=reg.nameRegex(name);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(name.equals(p.getName())){    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }  } } //按年龄查询用户信息 @SuppressWarnings("resource") public void searchByAge(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("输入你要查询的年龄:");  Scanner sc=new Scanner(System.in);  String age=sc.nextLine();  age=reg.ageRegex(age);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(age.equals(p.getAge())){    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }  } } //按性别查询用户信息 @SuppressWarnings("resource") public void searchBySex(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("输入你要查询的性别:");  Scanner sc=new Scanner(System.in);  String sex=sc.nextLine();  sex=reg.sexRegex(sex);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(sex.equals(p.getSex())){    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }  } } //按电话号码查询用户信息 @SuppressWarnings("resource") public void searchByTelNum(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("输入你要查询的电话号码:");  Scanner sc=new Scanner(System.in);  String telNum=sc.nextLine();  telNum=reg.telNumRegex(telNum);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(telNum.equals(p.getTelNum())){    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }  } } //按地址查询用户信息 @SuppressWarnings("resource") public void searchByAdd(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("输入你要查询的地址:");  Scanner sc=new Scanner(System.in);  String address=sc.nextLine();  address=reg.addressRegex(address);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(address.equals(p.getAddress())){    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }  } }// //修改指定记录信息// public void modify(){//  System.out.println("请输入你要修改的信息:");//  // } //修改姓名信息 @SuppressWarnings("resource") public void nameModify(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("请输入你要修改的序号:");  Scanner sc=new Scanner(System.in);  String num=sc.nextLine();  int id=Integer.parseInt(num);  System.out.println("请输入你要修改的姓名:");  String name=sc.nextLine();  name=reg.nameRegex(name);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(id==p.getId()){    p.setName(name);    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }else{    System.out.println("修改失败,请重试!");   }  } } //修改年龄信息 @SuppressWarnings("resource") public void ageModify(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("请输入你要修改的序号:");  Scanner sc=new Scanner(System.in);  String num=sc.nextLine();  int id=Integer.parseInt(num);  System.out.println("请输入你要修改的年龄:");  String age=sc.nextLine();  age=reg.ageRegex(age);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(id==p.getId()){    p.setAge(age);    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }else{    System.out.println("修改失败,请重试!");   }  } } //修改性别信息 @SuppressWarnings("resource") public void sexModify(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("请输入你要修改的序号:");  Scanner sc=new Scanner(System.in);  String num=sc.nextLine();  int id=Integer.parseInt(num);  System.out.println("请输入你要修改的性别:");  String sex=sc.nextLine();  sex=reg.sexRegex(sex);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(id==p.getId()){    p.setSex(sex);    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }else{    System.out.println("修改失败,请重试!");   }  } } //修改号码信息 @SuppressWarnings("resource") public void telNumModify(){  System.out.println("请输入你要修改的序号:");  Scanner sc=new Scanner(System.in);  String num=sc.nextLine();  int id=Integer.parseInt(num);  System.out.println("请输入你要修改的电话号码:");  String telNum=sc.nextLine();  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(id==p.getId()){    p.setTelNum(telNum);    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }else{    System.out.println("修改失败,请重试!");   }  } } //修改地址信息 @SuppressWarnings("resource") public void addressModify(){  TelNoteRegex reg=new TelNoteRegex();  System.out.println("请输入你要修改的序号:");  Scanner sc=new Scanner(System.in);  String num=sc.nextLine();  int id=Integer.parseInt(num);  System.out.println("请输入你要修改的地址:");  String address=sc.nextLine();  address=reg.addressRegex(address);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();   if(id==p.getId()){    p.setAddress(address);    System.out.println(p.getId()+"#"+"/t/t"+p.getName()+"/t/t"+p.getAge()+"/t/t"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress());   }else{    System.out.println("修改失败,请重试!");   }  } } //删除指定用户信息 @SuppressWarnings("resource") public void delete(){  System.out.println("请输入你要删除的id:");  Scanner sc=new Scanner(System.in);  String num=sc.nextLine();  int id=Integer.parseInt(num);  Iterator<Person> it=list.iterator();  while(it.hasNext()){   Person p=(Person)it.next();    if(id==p.getId()){     list.remove(id);     System.out.println("删除成功");    }else{     System.out.println("删除失败");    }  } } //删除全部用户信息 public void deleteAll(){  list.clear();  System.out.println("删除成功"); } //按用户姓名排序信息 public void orderName(){  Comparator<Person> comparator=new Comparator<Person>(){   @Override   public int compare(Person o1, Person o2) {     return o1.getName().compareTo(o2.getName());   }  };  Collections.sort(list,comparator);  showAll(); } //按用户年龄排序信息 public void orderAge(){  Comparator<Person> comparator=new Comparator<Person>(){   @Override   public int compare(Person o1, Person o2) {     return o1.getAge().compareTo(o2.getAge());   }  };  Collections.sort(list,comparator);  showAll(); } //按用户性别排序信息 public void orderSex(){  Comparator<Person> comparator=new Comparator<Person>(){   @Override   public int compare(Person o1, Person o2) {     return o1.getSex().compareTo(o2.getSex());   }  };  Collections.sort(list,comparator);  showAll(); }}

总结:这个项目让我很清晰可以明白什么是面向对象,为什么说是java是面向对象的编程语言,程序的代码都是对象在调用,也明白一个项目应该如何分工明确进行书写,功能和视图要分开,每个类都有自己特定的功能,各个类的功能不要相互卸载一起,这样的代码基本是复用不高的,如果分开明确,以后再添加功能模块的时候,只需要增加功能,无需修改之前的代码,很好的体现了开闭原则,对功能开发,对修改内容关闭,这个项目也体现了MVC的设计模式,对我而言,这个项目让我受益匪浅。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表