一,电话薄!
主要实现的功能:
1. 增、删、查、改;
2. 添加联系人时,可以根据输入的电话号码,判断该电话是否符合一般的11位号码格式。
3.在显示联系人时,排列的顺序是根据中文名的姓的拼音(a,b,c...)进行排序的。
二、实现效果如下:
三、实现代码如下:
People类:
package com.通讯录;
public class People {
private String pno;
private String pname;
private String phone;
private String qq;
private String emeil;
public People() {
// TODO Auto-generated constructor stub
}
public People(String pno, String pname, String phone, String qq, String emeil) {
super();
this.pno = pno;
this.pname = pname;
this.phone = phone;
this.qq = qq;
this.emeil = emeil;
}
public String getPno() {
return pno;
}
public void setPno(String pno) {
this.pno = pno;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getEmeil() {
return emeil;
}
public void setEmeil(String emeil) {
this.emeil = emeil;
}
@Override
public String toString() {
return pno +"\t"+ pname +"\t"+ phone +"\t"+ qq +"\t"+ emeil ;
}
}
PeopleManager类:
package com.通讯录;
import java.util.ArrayList;
public class PeopleManager {
static ArrayList<People> list = new ArrayList<>();
public void addPeople(People p) {
list.add(p);
}
public People findBypno(String phone) {
for (People p : list) {
if (phone.equals(p.getPhone())) {
return p;
}
}
return null;
}
public ArrayList<People> findAll() {
return list;
}
public boolean deleteByPno(String pno) {
for (People p : list) {
if (pno.equals(p.getPno())) {
return list.remove(p);
}
}
return false;
}
}
TestPeopler类:
package com.通讯录;
import java.util.Scanner;
import net.sourceforge.pinyin4j.PinyinHelper;
public class TestPeople {
People p1 = new People();
PeopleManager p = new PeopleManager();
public void meun() {
msg("通讯录");
msg("1添加联系人");
msg("2联系人查询");
msg("3显示联系人");
msg("4删除联系人");
msg("0退出");
srart();
}
private void srart() {
Scanner sc = new Scanner(System.in);
msg("请输入您的选择:");
int i = sc.nextInt();
switch (i) {
case 1:
add();
break;
case 2:
findPno();
break;
case 3:
findAllPeople();
break;
case 4:
delete();
break;
case 5:
default:
msg("谢谢使用!");
System.exit(0);
break;
}
meun();
}
private void delete() {
Scanner sc = new Scanner(System.in);
msg("请输入需要删除联系人的编号");
String pno = sc.nextLine();
if (p.deleteByPno(pno)) {
msg("删除成功");
} else {
msg("删除失败");
}
}
private void findAllPeople() {
if (p.findAll() == null) {
msg("暂无联系人!");
} else {
msg("编号\t姓名\t手机号\t\tQQ\t邮箱地址");
p.findAll().sort((a, b) -> {
// 分别获取要比较的两个学生的姓名
String name1 = a.getPname();
String name2 = b.getPname();
// 声明变量存储转换之后汉语拼音
String p1 = "";
String p2 = "";
// 将汉字转拼音
for (int i = 0; i < name1.length(); i++) {
p1 += PinyinHelper.toHanyuPinyinStringArray(name1.charAt(i))[0];
}
for (int i = 0; i < name2.length(); i++) {
p2 += PinyinHelper.toHanyuPinyinStringArray(name2.charAt(i))[0];
}
// 比较
return p1.compareTo(p2);
});
for (People pop : p.findAll()) {
msg(pop);
}
}
}
private void findPno() {
Scanner sc = new Scanner(System.in);
msg("请输入要查询的电话号码:");
String phone = sc.nextLine();
People pop = p.findBypno(phone);
if (pop == null) {
msg("该联系人不存在,请重新输入:");
findPno();
return;
} else {
msg("编号\t姓名\t手机号\t\tQQ\t邮箱地址");
msg(pop);
}
}
private void add() {
msg("按此格式输入:编号/姓名/手机号/QQ/邮箱地址");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] info = s.split("/");
String regex = "^1[345678]\\d{9}$";
if (info[2].matches(regex)) {
if (p.findBypno(info[2]) != null) {
msg("该手机号已存在!请重新输入:");
add();
return;
} else {
msg("编号\t姓名\t手机号\t\tQQ\t邮箱地址");
People pop = new People(info[0], info[1], info[2], info[3], info[4]);
p.addPeople(pop);
msg("添加成功!");
}
} else {
msg("请输入正确的手机号!!");
add();
}
}
public void msg(Object obj) {
System.out.println(obj);
}
public static void main(String[] args) {
new TestPeople().meun();
}
}
四、总结
这次的程序是结合了之前所学的一部分知识写出来的,还是按之前的三部曲做,创建类,方法类,在就是控制台输出,
学习过程中最重要就是不要浮躁(虽说我也不是没有浮躁过),要懂得调整心态,学会自我管理,基础学习是枯燥的,但是当你真正的做出一个小程序的时候,那些所谓的枯燥兴许会变成甘露也说不定!