JAVA智能电话本项目|JavaSE中篇项目 第一版本

Posted Eric%258436

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA智能电话本项目|JavaSE中篇项目 第一版本相关的知识,希望对你有一定的参考价值。

** 如有错误,感谢指正**

请根据目录寻找自己需要的段落

导语:本博客为个人整理Java学习记录帖,如有错误,感谢指正。系统学习,欢迎持续关注,后续陆陆续续更新Java后端项目,Java部分我不打算更新基础部分知识,会从JavaWeb开始更新文章。
Java 交流qq群 383245788

项目描述

该项目是用于日常生活中记录联系人信息的一款智能小工具。实现了对联系人的姓名、年龄、性别、电话号码、住址的添加及修改、查找、删除、排序等功能。该项目是以Windows控制台为运行平台,所有的操作都应在控制台上进行。
程序关闭,所有数据消失,下一步优化方向是本地保存,JavaIO相关的使用。后续会在JavaWeb时,再优化一下,实现网络通信。

项目目的

通过该项目可以对以往所学过的知识点进行统- -的复 习,将平时所学的内容综合到一起并运用到实际的项目中。
该项目能够充分的体现出一些简单的业务流程处理,能够使同学们掌握基本的业务流程处理。
进一步理解什么是面相对象设计(OOD: Object Oriented Design)。充分理解面向对象设计的精髓。

项目分析

数据存储结构

id序号
name姓名
age年龄
sex性别
telephoneNumber电话号码
address地址

技术要求

JDK版本1.8以上
键盘输入Scanner类
正则表达式Pattern类
容器ArrayList类
排序方式(比较强排序)Comparator接口,Collections类的sort方法

开发环境

windows操作系统

开发工具

Idea

编码规范

类名

App 对应 Application 程序入口类
Menu 对应Menu 菜单类
Operate 对应 Operate 业务处理类
Person 对应 Person 实体类
TelNoteRegex 对应TelNoteRegex 用户输入验证类
OrderByName 对应 OrderByName 姓名排序比较器
OrderByAge 对应 OrderByAge 年龄排序比较器
OrderBySex 对应 OrderBySex 性别排序比较器

方法名

App类中方法
main()启动程序方法
start()主菜单控制

Operate 类
private List<Person> list容器
addLogic()用户添加记录业务逻辑控制
searchLogic()用户查询记录业务逻辑控制
modifyLogic()修改记录业务逻辑控制
deletelogic()删除记录业务逻辑控制
orderLogic()排序记录业务逻辑控制
addOperation ()添加新记录信息
showAl()查询全部记录
searchByName()按姓名查询记录
searchByAge()按年龄查询记录
searchBySex()按性别查询记录
searchByTelNum()按电话号码查询记录
searchByAdd()按地址查询记录
modifyOperation()修改指定记录
deleteOperation() 删除指定记录
deleteAllOperation() 删除全部记录
orderName()按用户姓名排序记录
orderAge()按用户年龄排序记录
orderSex()按用户性别排序记录

TelNoteRegex 类
menuItemValidate (int min, int max )对菜单输入选项的验证
nameValidate ()对用户输入姓名的验证
ageValidate ()对用户输入年龄的验证
sexValidate ()对用户输入性别的验证
telNumValidate ()对用户输入电话号码的验证
addressValidate ()对用户输入地址的验证

Menu 类
mainMenu()主菜单
addMenu ()添加记录菜单
searchMenu()查找记录菜单
modifyMenu ()修改记录主菜单
subModifyMenu()修改记录子菜单
deleteMenu ()删除记录菜单

Person类
private int id;用户序号属性
private String name;用户姓名属性
private String age;用户年龄属性
private String sex;用户性别属性
private String telNum;用户电话号码属性
private String address;用户地址属性
Person()无参数构造方法
Person(String name, String age, String sex, String telNum, String address)有参数构造方法
getName()读取用户名
setName(String name)设置用户名
getAge()读取用户年龄
setAge(String age)设置用户年龄
getSex()读取用户性别
setSex(String sex)设置用户性别
getTelNum()读取用户电话号码
setTelNum (String telNum)设置用户电话号码
getAddress()读取用户地址
setAddress(String address)设置用户地址
getID ()读取用户ID号.
setID (int ID)设置用户ID号
toString()连接字符串方法

OrderByName 类
compare(Person p1, Person p2)根据姓名排序方法

OrderByAge 类
compare(Person p1, Person p2)根据年龄排序方法

OrderBySex 类
compare(Person p1, Person p2)根据性别排序方法

APP类

public class App {
    // 启动电话本项目
    public static void main(String[] args) {
        App app = new App();
        app.start();
    }

    // 控制主菜单
    public void start() {
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        Operate operate = new Operate();
        while (true) {
            menu.mainMenu();
            int item = telNoteRegex.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);
            }
        }
    }
}

MENU 类

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 类

public class Operate {
    private List<Person> list;

    public Operate() {
        this.list = new ArrayList<>();
    }

    // 用户添加记录业务逻辑控制
    public void addLogic() {
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while (true) {
            menu.addMenu();
            int key = telNoteRegex.menuItemValidate(1, 3);
            switch (key) {
                case 1:
                    this.addOperation();
                    break;
                case 2:
                    this.showAll();
                    break;
                case 3:
                    return;
            }
        }
    }

    // 用户查询记录业务逻辑控制
    public void searchLogic() {
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while (true) {
            menu.searchMenu();
            int key = telNoteRegex.menuItemValidate(1, 7);
            switch (key) {
                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;
            }
        }
    }

    // 修改记录业务逻辑控制
    public void modifyLogic() {
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while (true) {
            menu.modifyMenu();
            int key = telNoteRegex.menuItemValidate(1, 3);
            switch (key) {
                case 1:
                    this.showAll();
                    break;
                case 2:
                    this.modifyOperation();
                    break;
                case 3:
                    return;
            }
        }
    }

    // 删除记录业务逻辑控制
    public void deleteLogic() {
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while (true) {
            menu.deleteMenu();
            int key = telNoteRegex.menuItemValidate(1, 4);
            switch (key) {
                case 1:
                    this.showAll();
                    break;
                case 2:
                    this.deleteOperation();
                    break;
                case 3:
                    this.deleteAllOperation();
                    break;
                case 4:
                    return;
            }
        }
    }

    // 排序记录业务逻辑控制
    public void orderLogic() {
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while (true) {
            menu.orderMenu();
            int key = telNoteRegex.menuItemValidate(1, 5);
            switch (key) {
                case 1:
                    this.orderByName();
                    break;
                case 2:
                    this.orderByAge();
                    break;
                case 3:
                    this.orderBySex();
                    break;
                case 4:
                    this.showAll();
                    break;
                case 5:
                    return;
            }
        }
    }

    // 添加新记录信息
    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("添加成功");
    }

    // 查询全部记录
    public void showAll() {
        if (this.list.size() == 0) {
            System.out.println("没有记录");
            return;
        }
        for (Person p : this.list
        ) {
            System.out.println(p);
        }
    }

    // 按姓名查询记录
    public void searchByName() {
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String name = telNoteRegex.nameValidate();
        boolean flag = true;
        for (Person p : this.list
        ) {
            if (name.equals(p.getName())) {
                System.out.println(p.getId());
                flag = false;
            }
        }
        if (flag) {
            System.out.println("没有找到此人记录");
        }
    }

    // 按年龄查询记录
    public void searchByAge() {
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String age = telNoteRegex.ageValidate();
        boolean flag = true;
        for (Person p : thisday56(2023.4.25)

.NET 开源项目 StreamJsonRpc 介绍[中篇]

使用Java理解编程逻辑-第一章

原生servlet搭建web网页

白手起家Django项目发布中篇_Centos下Python2和3并存环境部署

IDEA使用01 创建java项目创建web项目