【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月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
218 8
|
1月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
168 23
|
1月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
162 11
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
175 10
|
1月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
370 4
|
1月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
281 0
|
2月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
2月前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
173 1
|
2月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
2月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
361 1
下一篇
oss云网关配置