本篇博客的内容在之前python基础系列案例中有详细讲解,此次我将使用JAVA语言对手机通讯录管理系统进行重新编写。此案例适用于熟练掌握面向对象基础和List集合的基本操作。
需求分析:
- 能够循环接收客户端输入的功能编号,并根据编号选择对应的功能操作
- 用户输入“1”时,执行增加姓名和手机号码的操作
- 用户输入“2”时,执行删除姓名和手机号码的操作,根据用户输入姓名,删除对应手机号码
- 用户输入“3”时,执行修改手机号码的操作,根据用户输入姓名,修改对应手机号码
- 用户输入“4”时,执行显示全部姓名和手机号码的操作
- 用户输入“5”时,执行查询手机号码的操作,根据用户输入姓名,查找对应手机号码
- 用户输入“6”时,感谢用户使用,退出手机通讯录管理系统的程序
使用JAVA代码完成逻辑分析与Python的相同,这里就不再赘述。需要的同学可点击查看。直接贴代码:
首先创建存放对象的Contact类
public class Contact {
private String name;
private String phone;
public Contact(String name, String phone) {
= name;
this.phone = phone;
}
public Contact() {super();}
public String getName() {return name;}
public void setName(String name) { = name;}
public String getPhone() {return phone;}
public void setPhone(String phone) {this.phone = phone;}
@Override
public String toString(){return "姓名:"+name+"\t电话号码:"+phone;}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((phone == null) ? 0 : phone.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Contact other = (Contact) obj;
if (name == null) {
if ( != null)
return false;
} else if (!name.equals())
return false;
if (phone == null) {
if (other.phone != null)
return false;
} else if (!phone.equals(other.phone))
return false;
return true;
}
}然后在通讯录管理类当中对于联系人进行增删改查的工作。创建ContactManager.java类
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 通讯录管理系统
public class ContactManager {
private List<Contact>contactList;
private File srcFile; //存放数据的文件
public ContactManager(File srcFile){
contactList = new ArrayList<Contact>();
this.srcFile = srcFile;
// 传入文件不存在,就创建这个文件
if (!this.srcFile.exists()) {
try {
this.srcFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public List<Contact> getContactList() {
return contactList;
}
// 读取指定文件的方法
public void getListFromFile(){
try {
FileReader fr = new FileReader(this.srcFile);
BufferedReader br = new BufferedReader(fr);
String line = "";
// 循环读取
while (true) {
line = br.readLine(); //读取每一行数据存放到字符串当中
if (line!=null) {
String[] split = line.split("\\|"); //分割每一行数据
// 将数据封装成对象,添加到集合中
Contact contact = new Contact(split[0], split[1]);
this.contactList.add(contact);
}else {
break;
}
}
fr.close();
br.close();
} catch (Exception e) {
System.out.println("此文件没创建!!");
}
}
// 将更新的内容写入到文件当中
public void writeFileFromList(){
try {
FileWriter fw = new FileWriter(this.srcFile);
// 一个列表中,每个对象都是写入文件的一行元素
for (Contact con : this.contactList) {
String line = con.getName()+"|"+con.getPhone()+"\n";
fw.write(line);
}
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 整体工作过程
@SuppressWarnings("resource")
public void work(){
// 读源文件的操作
getListFromFile();
System.out.println("欢迎手机管理系统,功能如下:");
System.out.println("-------------手机通讯录管理系统-------------" +
"\n 输入“1”,可添加联系人到通讯录(同名不可添加)" +
"\n 输入“2”,可根据姓名删除联系人信息" +
"\n 输入“3”,可根据姓名修改联系人信息" +
"\n 输入“4”,可根据姓名查询联系人信息" +
"\n 输入“5”,可显示全部联系人信息" +
"\n 输入“6”,退出当前系统" +
"\n--------------------------------------------");
Scanner sc = new Scanner(System.in);
out:while (true) {
System.out.print("请输入相关功能编号:");
String code = sc.next();
switch (code) {
case "1":
addContactInfo(sc);
break;
case "2":
deleteContactInfo(sc);
break;
case "3":
modifyContactInfo(sc);
break;
case "4":
selectContactInfo(sc);
break;
case "5":
printAllInfo();
break;
case "6":
System.out.println("感谢您的使用,退出当前系统!!");
writeFileFromList();
break out;
default:
break;
}
}
}
/**
* @des 显示全部信息
* */
public void printAllInfo() {
System.out.println("-------联系人信息-------");
// 遍历联系人信息集合
for (int i = 0; i < contactList.size(); i++) {
System.out.println(contactList.get(i));
}
}
/**
* @des 查询联系人信息的方法
* */
public void selectContactInfo(Scanner sc) {
System.out.print("请输入查询联系人姓名:");
String dname = sc.next();
boolean dflag = true;
for (int i = 0; i < contactList.size(); i++) {
Contact contact = contactList.get(i);
if (contact.getName().equals(dname)) {
// 对象存在可以打印对象信息
System.out.println(contact);
dflag = false;
break;
}
}
if (dflag) {
System.out.println("此联系人不存在!");
}
}
/**
* @des 修改联系人信息
* */
public void modifyContactInfo(Scanner sc) {
System.out.print("请输入修改联系人姓名:");
String mname = sc.next();
boolean mflag = true;
for (int i = 0; i < contactList.size(); i++) {
Contact contact = contactList.get(i);
if (contact.getName().equals(mname)) {
// 对象存在可以修改
System.out.print("请输入修改的电话号码:");
String mphone = sc.next();
contact.setPhone(mphone);
System.out.println("修改成功!");
mflag = false;
break;
}
}
if (mflag) {
System.out.println("修改失败!");
}
}
/**
* @des 删除联系人信息的方法
* */
public void deleteContactInfo(Scanner sc) {
System.out.print("请输入删除联系人姓名:");
String dname = sc.next();
boolean dflag = true;
for (int i = 0; i < contactList.size(); i++) {
Contact contact = contactList.get(i);
if (contact.getName().equals(dname)) {
// 对象存在可以删除
contactList.remove(contact);
System.out.println("删除成功!");
dflag = false;
break;
}
}
if (dflag) {
System.out.println("删除失败!");
}
}
/**
* @des 添加联系人信息的方法
* */
public void addContactInfo(Scanner sc) {
System.out.print("请输入联系人姓名:");
String name = sc.next();
boolean flag = true;
for (int i = 0; i < contactList.size(); i++) {
Contact ct = contactList.get(i);
if (ct.getName().equals(name)) {
flag = false;
System.out.print("此联系人已经存在,请重新输入!");
break;
}
}
// 判断标志位是否被改变 标志位没有被改变,说明此人不存在,可输入电话,然后添加到集合
if (flag) {
System.out.print("请输入电话号码:");
String phone = sc.next();
Contact contact = new Contact(name, phone);
contactList.add(contact);
}
}
}最后创建一个测试类,可在主方法当中调用work方法,进行功能测试:
public class Test {
public static void main(String[] args) {
ContactManager manager = new ContactManager(new File("contact.txt"));
// 测试案例使用
// List<Contact> list = manager.getContactList();
// list.add(new Contact("Rose", "14532289011"));
// list.add(new Contact("Jack", "18511289011"));
// list.add(new Contact("Jerry", "17634511021"));
// list.add(new Contact("小明", "14510989925"));
manager.work();
}
}运行效果图如下:

以上就是JAVA版手机通讯录的内容了,感谢您的阅读~
















