目录

1.创建项目    1

2.创建类    1

2.1创建入口类    1

2.2创建菜单类    1

2.3创建实体类    5

2.4创建核心业务类    8

2.5创建数据校验类    15

2.6创建比较器类    17

3. 数据校验类    19

3.1 实现菜单项的验证方法    19

3.2实现姓名验证方法    20

3.3实现年龄验证方法    20

3.4 实现性别的验证方法    21

3.5 实现电话号码的验证    21

3.6 实现地址的验证    22

4.实现 App类中的方法    22

4.1 实现Start方法    22

4.2 实现main方法    23

5. 实现Operate类中的方法    23

5.1添加记录菜单方法    23

5.2实现查找记录逻辑方法    23

5.3 实现修改记录业务逻辑方法    24

5.4实现删除记录业务逻辑方法    25

5.5实现排序记录控制    25

5.6实现添加记录的方法    26

5.7实现查看全部记录的方法    26

5.8实现按姓名查找功能    26

5.9实现按年龄查找功能    27

5.10实现按性别查找功能    27

5.10实现按电话号码查找功能    28

5.11 实现按地址查找记录业务    28

5.12 实现修改指定记录业务功能    28

5.13 删除指定记录    29

5.14删除全部记录    30

5.15 实现比较器的排序规则    30

5.16 实现排序记录    31

6.导出项目    31

 

 

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.导出项目

java练习:电话本项目_正则表达式

java练习:电话本项目_ide_02

 

选择main方法所在的类

java练习:电话本项目_比较器_03

 

能够启动项目的类

java练习:电话本项目_i++_04

 

 

点击ok

java练习:电话本项目_数据校验_05

 

选择apply再选择ok

java练习:电话本项目_ide_06

 

java练习:电话本项目_数据校验_07

 

java练习:电话本项目_比较器_08

 

完成后输出到out

java练习:电话本项目_比较器_09

 

右键jar文件找到这个目录

java练习:电话本项目_ide_10

 

java练习:电话本项目_比较器_11

 

复制到桌面我们在桌面运行

输入java –jar 文件名

java练习:电话本项目_数据校验_12

 

可以在桌面创建批处理文件

java练习:电话本项目_ide_13

 

双击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;


}


}