Java實現(xiàn)通訊錄管理系統(tǒng)項目
本文實例為大家分享了Java實現(xiàn)通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一、前言
我們學了這么久的知識了,光學知識不會用是一件很悲傷的事情,所以我們應學完
部分練一些項目或題,來鞏固我們學習的知識,激發(fā)我們持續(xù)學習的動力。
二、創(chuàng)建通訊的功能
- 增加聯(lián)系人信息
- 刪除聯(lián)系人信息
- 修改聯(lián)系人信息
- 查看所有聯(lián)系人信息
- 退出通信錄管理系統(tǒng)
首先定義一個People類,提供相應的get、set方法
(在idea中有快捷鍵Alt+insert生成get、set方法,和構(gòu)造方法)
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類中加上菜單,并在測試類中去調(diào)用。
public void 菜單(){
System.out.println("-------歡迎來到通訊錄管理系統(tǒng)-------");
System.out.println("1.增加聯(lián)系人");
System.out.println("2.刪除聯(lián)系人");
System.out.println("3.修改聯(lián)系人");
System.out.println("4.查看所有聯(lián)系人");
System.out.println("5.退出");
System.out.println("請選擇:");
}
我們?yōu)榱四苤苯油ㄟ^打印對象來得到我們想要得到信息,而不是得到
查看所有輸入的信息,沒有重寫toString時: [controller.Student@6e0be858]
重寫了toString方法就可以得到看得懂。也可以通過Alt+Inset快捷鍵來快速生成toString方法
@Override
public String toString(){//重寫toString方法,使其變成我們看得懂的指定的信息
return "[姓名:"+name+",年齡:"+age+",電話:"+num+",關(guān)系:"+sid+",住址:"+address+"]\n";
}
}
以上都是在People類中。
我們在PeopleManner類下,書寫以下方法。
main方法中:
public static void main(String[] args) {
ArrayList<People> array = new ArrayList();
while (true) {
People s = new People();//創(chuàng)建對象,調(diào)用方法。
s.菜單();
Scanner sc1 = new Scanner(System.in);
int d = sc1.nextInt();
switch (d) {
case 1: {
addPeople(array);
System.out.println("添加聯(lián)系人成功");
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("輸入錯誤,請重新輸入");
}
}
}
在增加聯(lián)系人的方法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("請輸入你們之間的關(guān)系");
String sid=sc.nextLine();
System.out.println("請輸入年齡");
String age=sc.nextLine();
System.out.println("請輸入家庭住址");
String address=sc.nextLine();
People s1=new People();//創(chuàng)建對象,調(diào)用set成員,設(shè)置成員的值
s1.setAddress(address);
s1.setAge(age);
s1.setName(name);
s1.setSid(sid);
s1.setNum(num);
array.add(s1);//將所有設(shè)置的變量加到集合中
}
在查看所有聯(lián)系人的方法checkPeople中
public static void checkPeople(ArrayList<People> array){
if(array.isEmpty()){//isEmpty是用來判斷非空的是collection接口的方法,ArrayList實現(xiàn)了
list接口,list接口繼承了collection接口
System.out.println("沒有聯(lián)系人信息,請先添加聯(lián)系人后查看");
}
else{
System.out.println(array);}//查看所有輸入的信息,沒有重寫toString時:
//[controller.Student@6e0be858]
}
在刪除聯(lián)系人信息方法中
public static void deletePeople(ArrayList<People> array){
if(array.isEmpty()){
System.out.println("沒有聯(lián)系人信息,請先添加聯(lián)系人信息再操作");
}
else{
Scanner sc=new Scanner(System.in);
System.out.println("請輸入你要刪除聯(lián)系人名字");
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包括了一個元素聯(lián)系人的所有信(name,age...)
if(stu.getName().equals(num)) {
array.remove(i);sum++;//定義一個變量用來判斷是否含有該元素
System.out.println("刪除成功");
}
}
if(sum==0){
System.out.println("刪除失敗,該聯(lián)系人信息不存在");
}
}
}
在定義修改聯(lián)系人信息的方法中
public static void revisePeople(ArrayList<People> array) {
if (array.isEmpty()) {
System.out.println("沒有聯(lián)系人信息!請?zhí)砑雍笤谶M行操作");
} else {
Scanner sc1 = new Scanner(System.in);
System.out.println("請輸入你要修改聯(lián)系人的姓名");
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("請輸入你們之間的關(guān)系");
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也是一個包含聯(lián)系人所有信息的元素,所以后續(xù)用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;
}
}
}
}
}
最終效果總覽圖:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中List轉(zhuǎn)Map的幾種具體實現(xiàn)方式和特點
這篇文章主要介紹了幾種常用的List轉(zhuǎn)Map的方式,包括使用for循環(huán)遍歷、Java8StreamAPI、ApacheCommonsCollections和GoogleGuava,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-01-01
java中InputStream轉(zhuǎn)為MultipartFile的解決方案
這篇文章主要介紹了java中InputStream轉(zhuǎn)為MultipartFile的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
使用Springboot根據(jù)配置文件動態(tài)注入接口實現(xiàn)類
這篇文章主要介紹了使用Springboot根據(jù)配置文件動態(tài)注入接口實現(xiàn)類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SSH框架網(wǎng)上商城項目第13戰(zhàn)之Struts2文件上傳功能
這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第13戰(zhàn)之Struts2文件上傳功能的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-06-06
詳解Java數(shù)組擴容縮容與拷貝的實現(xiàn)和原理
這篇文章主要帶大家學習數(shù)組的擴容、縮容及拷貝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05
springboot多數(shù)據(jù)源使用@Qualifier自動注入無效的解決
這篇文章主要介紹了springboot多數(shù)據(jù)源使用@Qualifier自動注入無效的解決,具有很好的參考價值,希望對大家有所幫助。也希望大家多多支持腳本之家2021-11-11
關(guān)于spring.factories的常用配置項說明
這篇文章主要介紹了關(guān)于spring.factories的常用配置項說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07

