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

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

