用Java做个简易通讯录
三、前言
这是一个简易的Java通讯录系统。在文中有完整的demo可供大家学习参考。
二、 题目要求
使用Java的数组和字符串,完成一个简易通讯录系统。通讯录由多条记录构成。每条记录包含一个联系人的编号、姓名、性别、电话和通信地址。系统应具有显示、查询、增加、修改、删除等功能。
编号 | 姓名 | 性别 | 电话 | 通信地址 |
1 | 小明 | 男 | 123456 | 北京 |
2 | 小丽 | 女 | 123457 | 天津 |
可考虑用数组分别存储姓名,性别,电话,通信地址,那么显示、查询,增加、修改、删除操作就可转换为对数组元素的操作。通讯录中的所有记录的每一个字段可以采用一维或二维或其它类型数组来存放。 请发挥自己的思考能力,用自己熟悉的或者觉得更合理的方式来设计程序解决问题,完成该实验。
三、需求分析
(不是重要内容,可会略不看)
在信息网路时代,几乎每个人都有自己的手机,手机通讯录我们都有接触过。所以通讯录的大概样子我们已经知道,各种功能的具体实现我们也大致清楚。因此,我们知道添加联系人的时候只需一条一条的添加,没必要批量添加。修改删除也是必不可少的功能,很多情况下,信息是会随着时间的推移发生变更的,这导致原有信息产生错误,这时候就需要我们修改和删除相关信息,以达到更新系统信息。另外,有一个有好的界面也是编程的一部分,所以我们需要考虑用户使用时的系统提示。
四、代码实现
1.主类
用于实现首页功能目录的创建。
package addrlist;
import java.util.Scanner;
public class mainsystem {
static {
System.out.println("欢迎使用通讯录!");
}
public static void main(String[] args) {
int i;
int a;
int k=1;
Scanner input=new Scanner(System.in);
System.out.println('\t'+" "+"功能列表");
System.out.println("1.显示通讯录列表"+'\t'+"2.新建联系人"+'\n'+"3.查询联系人信息"+'\t'+"4.修改联系人信息"+'\n'+"5.删除联系人");
list arr[]=new list[100];
for(i=0;i<arr.length;i++) {
arr[i]=new list();
}
i=0;
while(true) {
System.out.print('\n'+"请输入操作编号(输入0推出系统):");
a=input.nextInt();
if(a==0) {
System.out.println("欢迎下次使用!");
break;
}
else {
arr b=new arr();
switch(a) {
case 1:
b.show(arr,i);
break;
case 2:
System.out.println("请分别输入联系人的姓名、性别、电话和通信地址");
arr[i].num=k;
k++;
arr[i].name=input.next();
arr[i].sex=input.next();
arr[i].phnum=input.next();
arr[i].add=input.next();
i++;
b.show(arr,i);
break;
case 3:
b.search(arr,i);
break;
case 4:
b.change(arr,i);
b.show(arr,i);
break;
case 5:
b.dele(arr,i);
i--;
b.show(arr,i);
break;
}
}
}
}
}
2.子类
用来封装属性,以方便创建数组对象。(和C语言中的结构体差不多,大家可以这么理解)
package addrlist;
public class list {
int num;
String name;
String sex;
String phnum;
String add;
public list(){
num=1;
name="xx";
sex="x";
phnum="123456";
add="xx";
}
}
3.子类
主要用来封装方法,即系统的各项功能,方便主程序调用。
package addrlist;
import java.util.Scanner;
public class arr {
int i=0;
int j;
int count=0;
String name,ms;
int h;
Scanner input=new Scanner(System.in);
public void show(list arr[],int i) {
System.out.println("编号"+'\t'+"姓名"+'\t'+"性别"+'\t'+"电话"+'\t'+"通信地址");
for(j=0;j<i;j++) {
System.out.print(arr[j].num);
System.out.println('\t'+arr[j].name+'\t'+arr[j].sex+'\t'+arr[j].phnum+'\t'+arr[j].add);
}
}
public void search(list arr[],int y) {
System.out.print("请输入您要查询的学生姓名:");
name=input.next();
for(i=0;i<y;i++) {
if(name.equals(arr[i].name)) {
System.out.println("编号"+'\t'+"姓名"+'\t'+"性别"+'\t'+"电话"+'\t'+"通信地址");
System.out.print(arr[i].num);
System.out.println('\t'+arr[i].name+'\t'+arr[i].sex+'\t'+arr[i].phnum+'\t'+arr[i].add);
break;
}
}
}
public void change(list arr[],int y) {
System.out.print("请输入你想修改的联系人姓名:");
name=input.next();
for(i=0;i<y;i++) {
if(name.equals(arr[i].name)) {
System.out.println("你要修改联系人的什么信息:1、姓名;2、性别;3、电话;4、通信地址");
System.out.print("请输入您需要操作的信息编号:");
h=input.nextInt();
switch(h) {
case 1:
System.out.print("请输入新的姓名:");
ms=input.next();
arr[i].name=ms;
break;
case 2:
System.out.print("请输入新的性别:");
ms=input.next();
arr[i].sex=ms;
break;
case 3:
System.out.print("请输入新的电话:");
ms=input.next();
arr[i].phnum=ms;
break;
case 4:
System.out.print("请输入新的通信地址:");
ms=input.next();
arr[i].add=ms;
break;
}
System.out.print(arr[j].num);
System.out.println('\t'+arr[i].name+'\t'+arr[i].sex+'\t'+arr[i].phnum+'\t'+arr[i].add);
break;
}
}
}
public void dele(list arr[],int y) {
System.out.print("请输入你想删除的联系人姓名:");
name=input.next();
for(i=0;i<y;i++) {
if(name.equals(arr[i].name)) {
for(j=i;j<y;j++) {
arr[j].name=arr[j+1].name;
arr[j].sex=arr[j+1].sex;
arr[j].phnum=arr[j+1].phnum;
arr[j].add=arr[j+1].add;
}
}
}
}
}
测试截图: