@~~~~java语言做出如上图菜单,并能实现其中功能~~~~@:
解题思路:
1.首先打印出如图菜单;
2.想要循环显示菜单,并在无任何操作前都会显示一次菜单,想着使用do{...}while();
3.对应菜单中的每一个功能都会实现相对应的方法,则使用switch(){...}方法;
注:switch方法表达式结果类型必定是byte,short,int,char;
4.所给类名有 主类(public class TestContacts) ,通讯类(Contacts.class),联系人类(封装过的 Person.class);
注:只做出功能,没有验证合法
Person类:
class Person{
//姓名、性别、年龄、电话、地址
private String name;
private boolean sex;
private int age;
private String tel;
private String address;
//无参构造
public Person(){}
//有参数的构造方法
public Person(String name,boolean sex,int age,String tel,String address){
this.name=name;
this.sex=sex;
this.age=age;
this.tel=tel;
this.address=address;
}
//get/set方法
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setSex(boolean sex){
this.sex=sex;
}
public boolean getSex(){
return this.sex;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
public void setTel(String tel){
this.tel=tel;
}
public String getTel(){
return this.tel;
}
public void setAddress(String address){
this.address=address;
}
public String getAddress(){
return this.address;
}
}
Contacts类:
class Contacts{
Person[] ps = new Person[10];
public void creat(){//创建基础的存储对象10个
ps[0]=new Person("张三",true,18,"18722222222","北京");
ps[1]=new Person("李四",true,23,"18722345678","南京");
ps[2]=new Person("王二",true,45,"18762345098","广州");
ps[3]=new Person("麻子",true,24,"13628763489","神州");
ps[4]=new Person("笑笑",false,18,"13526783999","上海");
ps[5]=new Person("宝宝",false,67,"13423456789","深圳");
ps[6]=new Person("贝贝",false,34,"13745678903","杭州");
ps[7]=new Person("小李",true,24,"13456789009","重庆");
ps[8]=new Person("小芳",false,67,"17654444444","西安");
ps[9]=new Person("小王",true,87,"12345567865","武汉");
}
int index=ps.length;//记录数组中联系人个数
//方法:
//0. 界面
public void view(){
int input = 0;//定义探测器
do {
System.out.println("***************欢迎进入通讯录系统*************");
System.out.println("********1. 查询所有联系人 2. 根据id查询联系人");
System.out.println("********3. 根据id修改联系人 4. 根据id删除联系人");
System.out.println("********5. 添加联系人 6. 清空联系人");
System.out.println("********7. 根据性别查询联系人 8. 打印出联系人的数量");
System.out.println("********9. 根据姓名查询联系人 10. 退出系统");
System.out.println();//以上为进入系统后的面板
System.out.println("请输入您要进行的操作(用数字1-10表示):");
Scanner sc = new Scanner(System.in);
input = sc.nextInt();
switch(input){
case 1: queryAll();break;
case 2: queryById();break;
case 3: updateById();break;
case 4: deleteById();break;
case 5: addPerson();break;
case 6: deleteAll();break;
case 7: queryBySex();break;
case 8: count();break;
case 9: serchName();break;
case 10: System.out.println("退出系统");break;
default :System.out.println("请输入正确的执行代码1~10!");
System.out.println();
} while(input!=10);//使用正确的操作代码时候
}
//1. 查询所有联系人
public void queryAll(){
if(index==0){
System.out.println("没有联系人");
return;
}
for(int i=0;i<index;i++){
System.out.println(ps[i].getName()+"\t"+ps[i].getSex()+"\t"+ps[i].getAge()+"\t"+ps[i].getTel()+"\t"+ps[i].getAddress());
}
}
//2. 根据id(下标)查询联系人
public void queryById(){
if(index==0){
System.out.println("没有联系人");
return;
}
System.out.println("请输入您要查询联系人的id(0~"+(index-1)+")的顺序:");
Scanner sc=new Scanner(System.in);
int id=sc.nextInt();
int k=0;
for(int i=0;i<index;i++){
if(id>=0&&id<index&&i==id){
System.out.println(ps[i].getName()+"\t"+ps[i].getSex()+"\t"+ps[i].getAge()+"\t"+ps[i].getTel()+"\t"+ps[i].getAddress());
k++;
}
}
if(k==0){
System.out.println("抱歉,无此联系人!");
return;
}
}
//3. 根据id(下标)修改联系人
public void updateById(){
if(index==0){
System.out.println("请先建立联系人");
return;
}
System.out.println("请输入您要修改联系人的id(0~"+(index-1)+")的顺序:");
Scanner sc=new Scanner(System.in);
int id=sc.nextInt();
int k=0;
for(int i=0;i<ps.length;i++){
if(id>=0&&id<index){
if(i==id){
System.out.println("您要修改联系人的信息是:"+ps[i].getName()+"\t"+ps[i].getSex()+"\t"+ps[i].getAge()+"\t"+ps[i].getTel()+"\t"+ps[i].getAddress());
k++;
}
}
}
if(k==0){
System.out.println("抱歉,无此联系人!");
return;
}
int choose;
do{
System.out.println("请选择要修改的项:1.姓名;2.性别;3.年龄;4.电话;5.住址;0.退出");
choose=sc.nextInt();
switch(choose){
case 1:
System.out.print("修改姓名,请输入姓名:");
String rename=sc.next();
ps[id].setName(rename);
System.out.println("修改成功!!!");
break;
case 2:
System.out.println("修改性别,请输入性别(男-true 女-false):");
boolean resex=sc.nextBoolean();
ps[id].setSex(resex);
System.out.println("修改成功!!!");
break;
case 3:
System.out.println("修改年龄,请输入年龄:");
int reage=sc.nextInt();
ps[id].setAge(reage);
System.out.println("修改成功!!!");
break;
case 4:
System.out.println("修改电话,请输入电话:");
String retel=sc.next();
ps[id].setTel(retel);
System.out.println("修改成功!!!");
break;
case 5:
System.out.println("修改地址,请输入地址:");
String readdress=sc.next();
ps[id].setAddress(readdress);
System.out.println("修改成功!!!");
break;
case 0:
System.out.println("退出修改!");
break;
default :
System.out.println("操作代码输入有误!!!");
}
}while(choose!=0);
}
//4. 根据id(下标)删除联系人
public void deleteById(){
if(index==0){
System.out.println("请先建立联系人");
return;
}
System.out.println("请输入您 要删除联系人的id(0~"+(index-1)+")的顺序:");
Scanner sc=new Scanner(System.in);
int deleteId=sc.nextInt();
int k=0;
if(deleteId>=0&&deleteId<index){
for(int i=deleteId;i<index;i++){
ps[deleteId]=ps[deleteId+1];
k++;
}
System.out.println("删除成功!");
}
if(k==0){
System.out.println("抱歉,无此联系人!");
return;
}
}
//5. 添加联系人(扩容)
public void addPerson(){
Scanner sc=new Scanner(System.in);
Person[] ps1 = new Person[10*2];
for(int i=0;i<index;i++){
ps1[i]=ps[i];
}
ps=ps1;
ps[index]=new Person();
System.out.println("请依次输入要添加的信息:");
System.out.print("请输入姓名:");
String rename=sc.next();
ps[index].setName(rename);
System.out.println("请输入性别(男-true 女-false):");
boolean resex=sc.nextBoolean();
ps[index].setSex(resex);
System.out.println("请输入年龄:");
int reage=sc.nextInt();
ps[index].setAge(reage);
System.out.println("请输入电话:");
String retel=sc.next();
ps[index].setTel(retel);
System.out.println("请输入地址:");
String readdress=sc.next();
ps[index].setAddress(readdress);
index++;
System.out.println("添加完成!");
}
//6. 清空联系人(当进行该操作时需进行确认才会清空,否则不清空)
public void deleteAll(){
if(index==0){
System.out.println("无联系人!");
return;
}
System.out.println("确定要清空联系人吗?1.是;其他输入为否");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
switch(n){
case 1:for(int i=1;i<ps.length;i++){
ps[i]=null; //数组元素置空
}
index=0;
System.out.println("已清空联系人!");
break;
default:
System.out.println("清空取消!!!");
break;
}
}
//7. 输入一个性别,打印出对应性别的所有联系人信息
public void queryBySex(){
if(index==0){
System.out.println("没有联系人");
return;
}
System.out.println("请输入一个性别:");
Scanner sc=new Scanner(System.in);
boolean sex=sc.nextBoolean();
int k=0;
for(int i=0;i<index;i++){
if(ps[i].getSex()==sex){
System.out.println(ps[i].getName()+"\t"+ps[i].getSex()+"\t"+ps[i].getAge()+"\t"+ps[i].getTel()+"\t"+ps[i].getAddress());
k++;
}
}
if(k==0){
System.out.println("输入错误!");
return;
}
}
//8. 打印出联系人的数量
public void count(){
System.out.println("联系人的数量是"+index);
}
//9.根据姓名查询联系人
public void serchName(){
if(index==0){
System.out.println("没有联系人");
return;
}
System.out.println("请输入一个姓名:");
Scanner sc=new Scanner(System.in);
String name=sc.next();
int k=0;
for(int i=0;i<index;i++){
//比较字符串是否相等,用equals方法
if(name.equals(ps[i].getName())){
System.out.println(ps[i].getName()+"\t"+ps[i].getSex()+"\t"+ps[i].getAge()+"\t"+ps[i].getTel()+"\t"+ps[i].getAddress());
k++;
}
}
if(k==0){
System.out.println("输入错误!");
return;
}
}
//10.退出系统
}
主函数main:
import java.util.*;
//测试类
public class TestContacts{
public static void main(String[] args){
Contacts c = new Contacts();
c.creat();//创建存储对象
c.view();//进入操作视图
}
}