用java实现的简单控制台通讯录

来源:互联网 发布:js jquery name选择器 编辑:程序博客网 时间:2024/06/05 16:38

通过主菜单对各级子菜单进行控制,并实现添加记录,查找记录,删除记录,修改记录,排序记录,以及退出系统功能的实现。一共六部分的功能模块。
这里写图片描述
上面的图就是每个模块具有的功能,而且还用到了正则表达式判断输入的是否符合规则,这个系统体现了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的设计模式,对我而言,这个项目让我受益匪浅。

原创粉丝点击