【Java】通讯录管理系统小项目

简介: 【Java】通讯录管理系统小项目

一、前言


我们学了这么久的知识了,光学知识不会用是一件很悲伤的事情,所以我们应学完


部分练一些项目或题,来巩固我们学习的知识,激发我们持续学习的动力。


二、创建通讯的功能


  • 增加联系人信息


  • 删除联系人信息


  • 修改联系人信息


  • 查看所有联系人信息


  • 退出通信录管理系统


首先定义一个People类,提供相应的get、set方法


(在idea中有快捷键Alt+insert生成get、set方法,和构造方法)


public class People {
    private String sid;
    private String name;
    private String age;
    private String address;
    private String num;
    public People(){}
    public People(String sid, String name, String age, String address, String num) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.address = address;
        this.num=num;
    }
    public String getSid() {
        return sid;
    }
    public void setSid(String sid) {
        this.sid = sid;
    }
    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 getAddress() {
        return address;
    }
     public void setAddress(String address) {
        this.address = address;
    }
    public String getNum() {
        return num;
    }
     public void setNum(String num) {
        this.num = num;
    }


在People类中加上菜单,并在测试类中去调用。


    public void 菜单(){
            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("请选择:");
    }


我们为了能直接通过打印对象来得到我们想要得到信息,而不是得到


查看所有输入的信息,没有重写toString时:[controller.Student@6e0be858]


重写了toString方法就可以得到看得懂。也可以通过Alt+Inset快捷键来快速生成toString方法

    @Override
    public String toString(){//重写toString方法,使其变成我们看得懂的指定的信息
        return "[姓名:"+name+",年龄:"+age+",电话:"+num+",关系:"+sid+",住址:"+address+"]\n";
    }
 }


以上都是在People类中。


我们在PeopleManner类下,书写以下方法。


main方法中:


 public static void main(String[] args) {
        ArrayList<People> array = new ArrayList();
        while (true) {
            People s = new People();//创建对象,调用方法。
            s.菜单();
            Scanner sc1 = new Scanner(System.in);
            int d = sc1.nextInt();
            switch (d) {
                case 1: {
                    addPeople(array);
                    System.out.println("添加联系人成功");
                    break;
                }
                case 2:{
                    deletePeople(array);
                  break;
                }
                case 3:{
               revisePeople(array);
                break;
                }
                case 4:{
              checkPeople(array);
              break;
                }
                case 5:{
                    System.out.println("退出成功,谢谢使用");
                    System.exit(0);
                   break;
                }
                default:{
                    System.out.println("输入错误,请重新输入");
                }
            }
        }


在增加联系人的方法addPeople中


 public static void addPeople(ArrayList<People> array){
        Scanner sc=new Scanner(System.in);
         System.out.println("请输入姓名");
         String name=sc.nextLine();
         System.out.println("请输入电话号码");
         String num=sc.nextLine();
         System.out.println("请输入你们之间的关系");
        String sid=sc.nextLine();
         System.out.println("请输入年龄");
         String age=sc.nextLine();
         System.out.println("请输入家庭住址");
         String address=sc.nextLine();
         People s1=new People();//创建对象,调用set成员,设置成员的值
         s1.setAddress(address);
         s1.setAge(age);
         s1.setName(name);
         s1.setSid(sid);
         s1.setNum(num);
         array.add(s1);//将所有设置的变量加到集合中
     }


在查看所有联系人的方法checkPeople中


   public static void checkPeople(ArrayList<People> array){
        if(array.isEmpty()){//isEmpty是用来判断非空的是collection接口的方法,ArrayList实现了 
        list接口,list接口继承了collection接口
            System.out.println("没有联系人信息,请先添加联系人后查看");
        }
        else{
            System.out.println(array);}//查看所有输入的信息,没有重写toString时: 
             //[controller.Student@6e0be858]
     }


在删除联系人信息方法中

 public static void deletePeople(ArrayList<People> array){
        if(array.isEmpty()){
            System.out.println("没有联系人信息,请先添加联系人信息再操作");
        }
        else{
           Scanner sc=new Scanner(System.in);
            System.out.println("请输入你要删除联系人名字");
              String num=sc.nextLine();
              int sum=0;
               for(int i=0;i<array.size();i++) {
                 People stu = array.get(i);
                 //  System.out.println(stu);//stu包括了一个元素联系人的所有信(name,age...)
                  if(stu.getName().equals(num)) {
                     array.remove(i);sum++;//定义一个变量用来判断是否含有该元素
                      System.out.println("删除成功");
                  }
               }
               if(sum==0){
                   System.out.println("删除失败,该联系人信息不存在");
               }
        }
     }


在定义修改联系人信息的方法中


   public static void revisePeople(ArrayList<People> array) {
          if (array.isEmpty()) {
              System.out.println("没有联系人信息!请添加后在进行操作");
          } else {
              Scanner sc1 = new Scanner(System.in);
              System.out.println("请输入你要修改联系人的姓名");
              String name1 = sc1.nextLine();
              int sum = 0;
              for (int j = 0; j < array.size(); j++) {
                  People s2 = array.get(j);
                  if (s2.getName().equals(name1)) {
                      sum++;
                  }
              }
              if (sum == 0) {
                  System.out.println("没有匹配的姓名,重新输入");
              }else{
              Scanner sc = new Scanner(System.in);
              System.out.println("请输入新姓名");
              String name = sc.nextLine();
              System.out.println("请输入新电话码");
              String num = sc.nextLine();
              System.out.println("请输入你们之间的关系");
              String sid = sc.nextLine();
              System.out.println("请输入新年龄");
              String age = sc.nextLine();
              System.out.println("请输入新地址");
              String address = sc.nextLine();
              People s1 = new People();
              s1.setAddress(address);
              s1.setAge(age);
              s1.setName(name);
              s1.setSid(sid);
              s1.setNum(num);
              // System.out.println(s1);//s1也是一个包含联系人所有信息的元素,所以后续用array.set(i,s1)等价交换
              for (int i = 0; i < array.size(); i++) {
                  People s = array.get(i);
                  if (s.getName().equals(name1)) {
                      array.set(i, s1);//将他修改
                      System.out.println("修改成功");
                      break;
                  }
              }
              }
          }
      }


最终效果总览图:


微信图片_20220106104857.png


目录
相关文章
|
1月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
185 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
5天前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
55 23
|
4天前
|
数据可视化 JavaScript Java
2K star!三分钟搭建企业级后台系统,这款开源Java框架绝了!
"LikeAdmin Java是基于Spring Boot + Mybatis Plus + Vue 3的快速开发平台,内置RBAC权限管理、工作流引擎、数据可视化、三方登录等核心模块,助力开发者快速构建企业级中后台管理系统"
67 17
|
5天前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
47 17
|
1月前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
131 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
1月前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
86 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
15天前
|
监控 前端开发 Java
构建高效Java后端与前端交互的定时任务调度系统
通过以上步骤,我们构建了一个高效的Java后端与前端交互的定时任务调度系统。该系统使用Spring Boot作为后端框架,Quartz作为任务调度器,并通过前端界面实现用户交互。此系统可以应用于各种需要定时任务调度的业务场景,如数据同步、报告生成和系统监控等。
37 9
|
1月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
72 7
|
1月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
137 5
|
16天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
142 60
【Java并发】【线程池】带你从0-1入门线程池

热门文章

最新文章