在这次Java课设领到的题目是做一个通讯录,基于控制台输入输出。实现录入,查询,删除,展示等功能。我自己添加了一个类型输出。
期间本来还想做一个排序功能,由于时间有限,做了一部分,懒得调试,就把剩下的代码注释掉了。有心人也可以自己写一下。主代码里面,我建立一个connect类用于存放方法函数。在主函数中对其进行调用,将功能传进去,即可实现功能。用switch…case…和scanner类的调用来进行选项判别。期间遇到的最大的问题就是数组起始是从0开始而实际调用人数的话是从一开始。这样判别的时候数组第1个元素即a[0]为空。所以每次明明存进去了,条用的时候就会判别其为空。后来加了个判别式,判别数组是否为空。为空即跳过。即可实现功能。在排序方法中利用率toCharArray实现中文首字母的转换。不过没能合理的把字符串改为数字。所以功能未能实现。有时间可以试试接着做完。做一个完善出来。其实通讯录功能不适合用数组方式来实现。更适合使用列表等功能来实现。学了列表之后可以用列表来试试能否做出来。
package 课设;
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;
import java.util.Scanner;
class Person
{
String name;
String number;
String type;
}
class connect
{
public int t;
Person a[];
public static int no;
public connect()
{
a=new Person[100];
connect.no=0;
}
public String add(String name,String number,String type)
{
if(connect.no == 0)
System.out.println("请先添加联系人!");
if(connect.no>99)
return "添加失败";
a[connect.no]=new Person();
a[connect.no].name=name;
a[connect.no].number=number;
a[connect.no].type=type;
connect.no++;
return "添加成功";
}
public Person seek(String name)
{
if(connect.no == 0)
System.out.println("请先添加联系人!");
for(int i=0;i<connect.no;i++)
{
if(a[i] != null)
if((a[i].name).equals(name))
{
System.out.println("联系人: "+a[i].name+" 电话:"+a[i].number + "分类:"+a[i].type);
return a[i];
}
}
return null;
}
public void look()
{
if(connect.no == 0)
System.out.println("请先添加联系人!");
t=connect.no/2;
System.out.println("总存入人数为:"+t);
for(int i=0;i<connect.no;i++)
{
if(a[i] != null)
System.out.println("联系人: "+a[i].name+" 电话: "+a[i].number+ "分类:"+a[i].type);
}
}
public String delete(String name)
{
if(connect.no == 0)
System.out.println("请先添加联系人:");
for(int i=0;i<connect.no;i++)
{
if(a[i] != null)
if((a[i].name).equals(name))
{
a[i]=a[connect.no-1];
connect.no=connect.no-1;
System.out.println("删除成功");
return "删除成功";
}
}
return "删除失败";
}
public String typeout(String type) {
if(connect.no==0)
System.out.println("请先添加联系人");
for(int i=0;i<connect.no;i++)
{
if(a[i]!=null)
if((a[i].type).equals(type)) {
System.out.println("联系人: "+a[i].name+" 电话: "+a[i].number);
}
}
return type;
}
//@SuppressWarnings("unchecked")
/*public String paixu(String[] args ) {
String[] scores=new String[2];
for(int i=0;i<connect.no;i++) {
if(a[i]!=null)
for(int t=0;t<connect.no-1;t++) {
a[i].name=scores[t];
}
}
char ss[] = str.toCharArray();//利用toCharArray方法转换
for (int i = 0; i < ss.length; i++) {
System.out.println(ss[i]);
}
//String[] strs = scores[t];
// 定义一个中文排序器
Comparator t = Collator.getInstance(Locale.CHINA);
// 升序排序
Arrays.sort(scores, t);
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
return null;*/
}
public class 通讯录
{
public static void main(String[]args)
{
int num3=2;
Scanner sc=new Scanner(System.in);
Scanner input = new Scanner(System.in);
System.out.println("\t\t\t欢迎使用通讯录系统\n");
System.out.println("\t\t\t1.用户端进入\n\n\t\t\t2.退出\n");
System.out.println("____________________________________________________________________\n\n");
System.out.print("请选择相应选项:");
int num2 = sc.nextInt();
connect c = new connect();
do {
switch (num2)
{
case 1:
{
//connect c = new connect();
System.out.println("\t\t\t1.浏览\n");System.out.println("\t\t\t2.查找\n");
System.out.println("\t\t\t3.添加\n");System.out.println("\t\t\t4.删除\n");
System.out.println("\t\t\t5.按类型输出\n");System.out.println("\t\t\t6.退出\n");
System.out.println("输入指令:");
int num1 = input.nextInt();
switch (num1)
{
case 1:c.look();break;
case 2:
{
System.out.println("输入查找的名字:");
String n1 = sc.next();c.seek(n1);
}break;
case 3:
{
System.out.println("输入要添加的人数:");
int s=sc.nextInt();
connect.no=s;
for(int i=0;i<s;i++)
{
System.out.println("请输入第"+(i+1)+"个人的姓名:");
String name=sc.next();
System.out.println("请输入第"+(i+1)+"个人的电话号码:");
String number=sc.next();
System.out.println("请输入第"+(i+1)+"个人的所属类别:");
String type=sc.next();
c.add(name,number,type);
}
}break;
case 4:
{
System.out.println("输入删除的姓名:");
String n3 = sc.next();c.delete(n3);
}break;
case 5:{
System.out.println("请输入想查询的类型");
String n1 = sc.next();c.typeout(n1);
}break;
default:
{
System.out.println("\t\t\t谢谢您的使用\n");
// System.exit(0);
}
}
}break;
case 2:System.out.println("\t\t\t谢谢您的使用\n");break;
default:System.out.println("输入有误!");
num2=2;
}
System.out.println("如果继续使用输入1,退出请输入2");
Scanner pd=new Scanner(System.in);
num3 = pd.nextInt();
}while(num3==1);
System.out.println("谢谢使用!");
}
}