硬核,最通俗的Java通讯录小项目,超详细,几分钟带你好入巩固门知识,推荐刚刚入门不久的小伙伴哦

2021/6/7 22:28:17

本文主要是介绍硬核,最通俗的Java通讯录小项目,超详细,几分钟带你好入巩固门知识,推荐刚刚入门不久的小伙伴哦,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

相信刚刚入门的一两个月的小伙伴,学习java基础都快学习完了,然后感觉做不出什么东西,别急,这里先带你看一个简单的小项目,由于较为基础,推荐刚刚入门java不久的小伙伴哈,如果你是大佬,那么我觉得没什么帮助,哈哈哈,不过欢迎各位大佬指出我的错误(文章后面附上了完整的代码)
废话不多说,进入正题。

这是一个简单的通讯录的逻辑实现,有查询添加,添加,删除,修改功能

首先呢,当然是用户进入的时候,我们必须得拍巴掌欢迎呀,然后就需要列出各个功能,这里选用数字来匹配不同的功能,不急,来看代码

import java.net.IDN;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class User {
    public static void main(String[] args) {
        //进入界面
        System.out.println("欢迎进入通讯录");
        System.out.println("请输入数字:1:查询;2:添加;3:删除;4:修改,5:退出");

很简单把。
我们继续,接下来,我们就得想,我们做的是通讯录,我们要选择什么来保存我们通讯录的人的信息呢,诶,我们不就是学过的存储的不就是数组,和集合吗,有了有了,这里我们选择用集合ArrayList这个容器来装下我们的通讯录的信息,因为我可以用一个Person类来创建不同的对象,然后把不同的对象装进我们的小黑屋里不就可以来吗,好像是这个道理哦(要单独创一个person对象,由于我后面要用,我先把person类代码也一起写出来)

  //用数字a代表不同功能,用ArrayList集合将各个用户搜集
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        List list = new ArrayList();
        
class Person {
    private  String name;
    private String age;
    private String address;
    private int id;

    public Person(String name, String age, String address, int id) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.id = id;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", address='" + address + '\'' +
                ", id=" + id +
                '}';
    }

    //修改

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setId(int id) {
        this.id = id;
    }
}

好了,到了我们的关键部分了**,

功能的实现

。**首先我们考虑的是我们刚刚第一步是进入这个通讯录程序,那么我们每次执行一次就结束吗,这样显然不是我们期待的,我们希望可以完成多个功能然后自己选择要不要退出,显然啦,我就想到来死循环,while(true),只要我不用break,那么我就一直不会退出,然后我们的退出也可以想成一种功能,那样我们就可以自己选择来了

 //while循环设置为进入了这个功能,同时用a代表不同功能,用switch匹配,1代表查询,2代表添加,3,代表删除,4代表修改,5代表退出
        while (true) {

到了我们功能实现的时候了,刚刚我说的是用不同数字匹配我们的不同功能是不是一直没有解释,那我们就来解释一下,因为用户要在不同的功能切换选择呀,选择这个东西,我们就想到条件循环啦,那么我用数字代表不同的功能,那好像会更加方便啊,于是,switch这个东西就突然在的小脑子里闪过。是不是突然发现自己很聪明(偷笑),那么我们就先完成最简单的一个功能吧

第一个功能查询

我们的通讯录,这个简单,直接打印我们的l创建的容器对象,这个是简单,但是我们想想执行完这个功能后,怎么去切换功能。我们想想一吧case都会带break吧,这个大家应该知道,执行完break后,我们就执行完了switch,外面就是我们的while(true)然后又会循环过来执行switch,这个时候因为我们进入的时候就选择了我们的功能,然后我们没有去做改变的话,就一直循环那个功能,那还玩个锤子啊,然后我们是不是就想到了改变那个数字就ok了呗,那你也太聪明了,我们就改变那个控制功能的数字不就完成了功能切换吗。来看看代码更加清除

  switch (a) {
                //查询
                case 1:
                    System.out.println(list);

                    //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                    System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                    a=sc.nextInt();
                    break;

第二个功能 添加

,如果查询没有添加,这个程序岂不是费了,不然我们的查询一直都是空白的,而我们的思路是new 一个person,把它放在集合里就ok,这个简单,不过最后面我们也要加上那个功能切换的键哦

   //添加
                case 2: {
                    System.out.println("请输入添加人的名字");
                    String name = sc.next();
                    System.out.println("请输入添加人的通讯地址");
                    String address = sc.next();
                    System.out.println("请输入添加人的年龄");
                    String age = sc.next();
                    System.out.println("请输入添加人的ID(输入数字)");
                   try{ int id=sc.nextInt();
                    list.add(new Person(name, age, address,id));
                    System.out.println("添加成功");}
                   catch(Exception e){
                       System.out.println("ID输入格式错误,请重新选择2号添加键添加");
                   }finally{
                       //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                       System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                       a=sc.nextInt();
                       break;}
                }

第三个功能,删除,

用list的remove方法就可以啦,
大家可以看一下代码里面标注了i为什么要减1的原因,这里应该是要注意的一个小点哦

 case 3: {
                    System.out.println(list);
                    System.out.println("请输入要删除的对象在此集合里对应的序号");
                    //计算机是从0开始计数的,而人们习惯从1开始计数,需要转换一下
                    int i = sc.nextInt()-1;
                    if (i<list.size()&&i>=0) {list.remove(list.get(i)); System.out.println("删除成功");}
                    else System.out.println("删除失败:可能原因:您删除的用户不在通讯列表,请重新选择3号功能重新删除");
                }
                //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                a=sc.nextInt();
                break;

第四个功能,修改

,这里我们要想想我们集合的对象其实都是Person对象,那么我们修改肯定是要通过我们的Person的方法进行修改,为了让小伙伴们更加清晰,我直接把对象的对象从集合里拿出来,然后,我们通过person的方法修改里面的内容,然后在用集合的方法set替换我们修改的新对象,那么修改就完成啦
看看代码更清晰,嘿嘿

 case 4: {
                    System.out.println(list);
                    System.out.println("请输入要修改对象的序号");
                    int i = sc.nextInt()-1;
                    Person p = (Person) list.get(i);
                    System.out.println("请你输入需要修改的选项:1:姓名,2:年龄;3:通讯地址;4:ID");
                    int j = sc.nextInt();
                    if (j == 1) {
                        System.out.println("请输入您要修改后的姓名");
                        String name = sc.next();
                        p.setName(name);
                    } else if (j == 2) {
                        System.out.println("请输入你要修改后的年龄");
                        String age = sc.next();
                        p.setAge(age);
                    } else if (j == 3) {
                        System.out.println("请输入您要修改后的通讯地址");
                        String address = sc.next();
                        p.setAddress(address);
                    }else if(j==4){
                        System.out.println("请输入您要修改后的ID");
                        int id=sc.nextInt();
                        p.setId(id);
                    }
                    else System.out.println("您输入的数字错误,请重新选择4号修改功能键重新修改");
                    list.set(i, p);
                    System.out.println("修改成功");
                }
                //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                a=sc.nextInt();
                break;

            }

到这里四个功能,查询,添加,删除,修改都完成了,我们的switch也结束了,这时候肯定有小伙伴急了,那退出功能呢,哈哈差点都忘记了是吧,不然我们还在那个死循环里呢,一样道理,改变功能键数字,然后在该数字下break,那么该数字执行的功能就是退出啦,我们的小项目就结束啦,当然,我们读书人讲究的是礼貌啦,别人离开就要表示一下我们悲伤的情绪啦,这个读书人的该装的b还是要装一下的,我们是读书人,文明人,嘿嘿

      if(a==5) {System.out.println("成功退出,欢迎再次使用");break;}
        }
    }
}

最后附上全部代码的原型

import java.net.IDN;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class User {
    public static void main(String[] args) {
        //进入界面
        System.out.println("欢迎进入通讯录");
        System.out.println("请输入数字:1:查询;2:添加;3:删除;4:修改,5:退出");

        //用数字a代表不同功能,用ArrayList集合将各个用户搜集
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        List list = new ArrayList();

        //while循环设置为进入了这个功能,同时用a代表不同功能,用switch匹配,1代表查询,2代表添加,3,代表删除,4代表修改,5代表退出
        while (true) {
            switch (a) {
                //查询
                case 1:
                    System.out.println(list);

                    //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                    System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                    a=sc.nextInt();
                    break;

                    
                    
               //添加
                case 2: {
                    System.out.println("请输入添加人的名字");
                    String name = sc.next();
                    System.out.println("请输入添加人的通讯地址");
                    String address = sc.next();
                    System.out.println("请输入添加人的年龄");
                    String age = sc.next();
                    System.out.println("请输入添加人的ID(输入数字)");
                   try{ int id=sc.nextInt();
                    list.add(new Person(name, age, address,id));
                    System.out.println("添加成功");}
                   catch(Exception e){
                       System.out.println("ID输入格式错误,请重新选择2号添加键添加");
                   }finally{
                       //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                       System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                       a=sc.nextInt();
                       break;}
                }


                
               //删除
                case 3: {
                    System.out.println(list);
                    System.out.println("请输入要删除的对象在此集合里对应的序号");
                    //计算机是从0开始计数的,而人们习惯从1开始计数,需要转换一下
                    int i = sc.nextInt()-1;
                    if (i<list.size()&&i>=0) {list.remove(list.get(i)); System.out.println("删除成功");}
                    else System.out.println("删除失败:可能原因:您删除的用户不在通讯列表,请重新选择3号功能重新删除");
                }
                //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                a=sc.nextInt();
                break;

                

                //修改
                case 4: {
                    System.out.println(list);
                    System.out.println("请输入要修改对象的序号");
                    int i = sc.nextInt()-1;
                    Person p = (Person) list.get(i);
                    System.out.println("请你输入需要修改的选项:1:姓名,2:年龄;3:通讯地址;4:ID");
                    int j = sc.nextInt();
                    if (j == 1) {
                        System.out.println("请输入您要修改后的姓名");
                        String name = sc.next();
                        p.setName(name);
                    } else if (j == 2) {
                        System.out.println("请输入你要修改后的年龄");
                        String age = sc.next();
                        p.setAge(age);
                    } else if (j == 3) {
                        System.out.println("请输入您要修改后的通讯地址");
                        String address = sc.next();
                        p.setAddress(address);
                    }else if(j==4){
                        System.out.println("请输入您要修改后的ID");
                        int id=sc.nextInt();
                        p.setId(id);
                    }
                    else System.out.println("您输入的数字错误,请重新选择4号修改功能键重新修改");
                    list.set(i, p);
                    System.out.println("修改成功");
                }
                //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区
                System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出");
                a=sc.nextInt();
                break;

            }
            if(a==5) {System.out.println("成功退出,欢迎再次使用");break;}
        }
    }
}


 class Person {
    private  String name;
    private String age;
    private String address;
    private int id;

    public Person(String name, String age, String address, int id) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.id = id;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", address='" + address + '\'' +
                ", id=" + id +
                '}';
    }

    //修改

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setId(int id) {
        this.id = id;
    }
}

希望能帮助刚刚入门不久的你哦,如果有一点点帮助,码字不易,记得点个赞哦,第一篇文章,还请各位多多关照呀,嘿嘿



这篇关于硬核,最通俗的Java通讯录小项目,超详细,几分钟带你好入巩固门知识,推荐刚刚入门不久的小伙伴哦的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程