Java数据结构——用顺序表编写一个简易通讯录
Java数据结构——用顺序表编写一个简易通讯录
打开IDEA等java编译器,新建一个软件包后按如下步骤创建类或接口。具体代码如下:
============================================
1、定义线性表的抽象数据类型(接口)
public interface IList {
public void addPerson(); //添加联系人
public void deletePerson(); //删除联系人
public void modifyPerson(); //修改联系人信息
public void findPerson(); //查找联系人
public void showPerson(); //显示所有联系人
public void cleanPerson(); //清空所有联系人
}
2、编写顺序表(类)
public class SqList implements IList {
private Person[] personArray;//线性表存储空间
private int curlen;//用于记录通讯录当前长度
int maxSize = 500;//将通讯录最大人数设置为500
static Scanner sc=new Scanner(System.in);
//顺序表的构造函数
public SqList() {
curlen = 0;
personArray = new Person[maxSize];//为顺序表分配maxSize个存储单元
}
//定义联系人类
class Person {
private String name;
private String phone;
Person(String name, String phone) {
this.name = name;
this.phone = phone;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public void setName(String name) {
this.name = name;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
//添加联系人
public void addPerson() {
//先判断通讯录是否已满
if (curlen >= maxSize){
System.out.println("通讯录已满,无法添加!");
}
else {
System.out.println("请输入您要添加的联系人姓名:");
String name = sc.next();
System.out.println("请输入您要添加的联系人电话:");
String phone = sc.next();
Person person = new Person(name,phone);
this.personArray[curlen] = person;//将实例化对象person放入线性表中
curlen++;
}
}
//判断某个联系人是否存在,并得到其位置
public int isExit(String name){
//存在就返回该联系人的数组下标
for ( int i=0;i<curlen;i++){
if (this.personArray[i].getName().equals(name)){
return i;
}
}
return -1; //不存在则返回-1
}
//删除联系人
public void deletePerson() {
System.out.println("请输入您要删除的联系人姓名:");
String name = sc.next();
int ret = isExit(name);
if (ret != -1){ //存在该联系人
for (int i = ret;i<curlen;i++){
personArray[i] = personArray[i+1];
}
curlen--;
System.out.println("删除成功!");
}
else {
System.out.println("您要删除的联系人不存在!");
}
}
//修改联系人信息
public void modifyPerson() {
System.out.println("请输入您要修改的联系人姓名:");
int ret = isExit(sc.next());//将输入的姓名传入isExit函数,并得到其返回值
if (ret != -1){ //存在该联系人
System.out.println("请输入更改后的姓名:");
personArray[ret].setName(sc.next());
System.out.println("请输入更改后的号码:");
personArray[ret].setPhone(sc.next());
System.out.println("修改成功!");
}
else {
System.out.println("您要修改的联系人不存在!");
}
}
//查找联系人,找到则显示其信息
public void findPerson() {
System.out.println("请输入您要查找的联系人姓名:");
int ret = isExit(sc.next());//将输入的姓名传入isExit函数,并得到其返回值
if (ret != -1){ //存在该联系人
System.out.print("姓名:"+personArray[ret].getName()+"\t");
System.out.println("电话:"+personArray[ret].getPhone());
}
else {
System.out.println("您要查找的联系人不存在!");
}
}
//显示所有联系人
public void showPerson() {
//先判断当前通讯录是否为空
if (curlen == 0){
System.out.println("当前通讯录为空!");
}
else {
for (int i=0;i<curlen;i++){
System.out.print("姓名:"+personArray[i].getName()+"\t");
System.out.println("电话:"+personArray[i].getPhone());
}
}
}
//清空所有联系人
public void cleanPerson() {
System.out.println("请确定是否清空所有联系人?确定请输入’是‘");
if ("是".equals(sc.next())){
curlen = 0; //清空
System.out.println("通讯录已成功清空!");
}
else {
System.out.println("清空操作已取消");
}
}
}
3、编写测试程序(main方法所在的可运行类)
public class text_SqList {
//展示通讯录菜单
public static void showMenu(){
System.out.println("###################");
System.out.println("### 1、添加联系人 ###");
System.out.println("### 2、删除联系人 ###");
System.out.println("### 3、修改联系人 ###");
System.out.println("### 4、查找联系人 ###");
System.out.println("### 5、显示联系人 ###");
System.out.println("### 6、清空通讯录 ###");
System.out.println("### 0、退出通讯录 ###");
System.out.println("###################");
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
SqList seqList = new SqList();//创建顺序表对象
while (true){
showMenu();
int select = sc.nextInt();
switch (select){
case 1: //添加联系人
seqList.addPerson();
break;
case 2: //删除联系人
seqList.deletePerson();
break;
case 3: //修改联系人
seqList.modifyPerson();
break;
case 4: //查找联系人
seqList.findPerson();
break;
case 5: //显示联系人
seqList.showPerson();
break;
case 6: //清空通讯录
seqList.cleanPerson();
break;
case 0: //退出通讯录
System.out.println("退出通讯录成功,欢迎下次使用!");
System.exit(0);
break;
default:
break;
}
}
}
}
以上几个步骤完成后,一个简易的通讯录就创建好了。可以运行下对程序进行测试。
本文通过在IDEA中创建软件包,定义线性表的抽象数据类型接口,编写顺序表类,以及测试程序,详细阐述如何用Java构建一个简易的通讯录。通过运行测试确保程序功能正常。

1725

被折叠的 条评论
为什么被折叠?



