首先我们现在这里放一串简单的数组代码
import java.util.Scanner;
class Phonenumber {
private String name;
private char sex;
private int age;
private String phonenumber;
private long qq;
private String address;
private static int row=0;
private String phonenum[][] = new String[100][6];
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex=sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhonenumber() {
return phonenumber;
}
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
public long getQq() {
return qq;
}
public void setQq(long qq) {
this.qq = qq;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void Name(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入姓名:");
String name = sc.next();
setName(name);
System.out.println("请输入性别:");
while(true){
char sex = sc.next().charAt(0);
if(sex == '男'||sex == '女'){
setSex(sex);
break;
}
else{
System.out.println("性别格式错误请重新输入性别:");
}
}
System.out.println("请输入年龄:");
int age=sc.nextInt();
setAge(age);
System.out.println("请输入电话号码:");
String Phonenum=sc.next();
setPhonenumber(Phonenum);
System.out.println("请输入QQ:");
long qq=sc.nextLong();
setQq(qq);
System.out.println("请输入地址:");
String address=sc.next();
setAddress(address);
}
public void add(){
Name();
phonenum[row][0] = getName();
phonenum[row][1] = String.valueOf(getSex());
phonenum[row][2] = String.valueOf(getAge());
phonenum[row][3] = getPhonenumber();
phonenum[row][4] = String.valueOf(getQq());
phonenum[row][5] = getAddress();
row++;
}
public void del(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除联系人的姓名");
String name = scanner.next();
System.out.println("确认要删除该联系人?Y/N?");
String yes_or_no = scanner.next();
if(yes_or_no.equals("Y")){
for(int i=0;phonenum[i][0]!=null;i++){
if(i<100){
if(phonenum[i][0].equals(name)){
for(int j=i;j<99;j++){
for(int k=0;k<6;k++){
phonenum[j][k]=phonenum[j+1][k];
phonenum[99][k]=null;
}
}
}
}
else if(i==99){
for(int j=0;j<6;j++){
phonenum[99][j] = null;
}
}
}
System.out.println("已删除该联系人");
}
else if(yes_or_no.equals("N")){
}
}
public void edit(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要编辑的联系人的姓名");
String name = scanner.next();
for(int i=0;phonenum[i][0]!=null;i++){
if(phonenum[i][0].equals(name)){
System.out.println("请输入修改的内容:1.姓名 2.性别 3.年龄 4.电话号码 5.qq 6.地址");
int edit = scanner.nextInt();
switch(edit){
case 1:{
System.out.println("请重新输入联系人的姓名");
String nameedit=scanner.next();
setName(nameedit);
phonenum[i][0] = getName();
};break;
case 2:{
System.out.println("请重新输入联系人的性别");
while(true){
char sexedit=scanner.next().charAt(0);
if(sexedit=='男'||sexedit=='女'){
setSex(sexedit);
phonenum[i][1] = String.valueOf(getSex());
break;
}
else{
System.out.println("输入格式有误,请重新输入:");
}
}
};break;
case 3:{
System.out.println("请重新输入联系人的年龄");
int ageedit=scanner.nextInt();
setAge(ageedit);
phonenum[i][2] = String.valueOf(getAge());
};break;
case 4:{
System.out.println("请重新输入联系人的电话号码");
String phonenumberedit=scanner.next();
setPhonenumber(phonenumberedit);
phonenum[i][3] = getPhonenumber();
};break;
case 5:{
System.out.println("请重新输入联系的QQ");
long qqedit=scanner.nextLong();
setQq(qqedit);
phonenum[i][4] = String.valueOf(getQq());
};break;
case 6:{
System.out.println("请重新输入联系人的地址");
String addressedit=scanner.next();
setAddress(addressedit);
phonenum[i][5] = getAddress();
};break;
}
}
}
}
public int bool(boolean b){
int b1 = 0;
if(b==true){
b1=1;
}
else if(b==false){
b1=0;
}
return b1;
}
public void findname(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查找的联系人的姓名");
String name = scanner.next();
int b1=0;
int i=0;
for(i=0;phonenum[i][0]!=null;i++){
boolean b = phonenum[i][0].equals(name);
b1=bool(b);
if(b1==1)break;
}
if(b1==1){
for(int j=0;j<6;j++)
System.out.print(phonenum[i][j]+",");
System.out.println();
}
else if(b1==0){
System.out.println("对不起,您所输入的用户不存在");
System.out.println();
}
}
public void findall(){
for(int i=0;phonenum[i][0]!=null;i++){
for(int j=0;j<6;j++){
System.out.print(phonenum[i][j]+",");
}
System.out.println();
}
}
}
class Testphonenum {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
Phonenumber pn = new Phonenumber();
while(true){
System.out.println("--------------电话本管理系统--------------");
System.out.println("1.添加 2.删除 3.修改 4.查询所有 5.根据姓名查询 0.退出");
System.out.println("--------------电话本管理系统--------------");
System.out.println("请选择业务:");
int num=s.nextInt();
if(num==0)break;
else{
switch(num){
case 1:pn.add();break;
case 2:pn.del();break;
case 3:pn.edit();break;
case 4:pn.findall();break;
case 5:pn.findname();break;
}
}
}
}
}
大家看到了代码以后,可能就知道是什么东西了,没错,我们通过数组来存储联系人信息,当然这里的代码是我最初的代码,没有经过优化,所以有很多代码相对是冗余的,浪费了资源,因笔者优化后的代码不在自己电脑上,所以就先发布一个复杂版本分享给大家,代码的优化就交给大家了。
首先我们需要定义一个数组,这里考虑到查询的节省时间,将数组定义为二维数组,定义100行6列,基本上来说是够用的,那么我们来分析一下,如果说我们定义第一列全部都是姓名的话,那么在进行查询操作的时候只需要全部查询第一行就好了。
这样我们来简单的说一下剩下的几个方法的定义吧,首先getXXX()和setXXX()方法,用来设置我们要存放的数据,然后定义了几个方法,包括添加、修改、删除、查询、查询所有,通过创建对象调用不同的方法,即可实现不同的功能,目前优化的只有年龄的输入可以进行格式识别,其他的成员变量没有添加格式的判断。
因本人水平有限,后续还会不断完善,谢谢大家的浏览