硬核,最通俗的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通讯录小项目,超详细,几分钟带你好入巩固门知识,推荐刚刚入门不久的小伙伴哦的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南