java算法——哈希表 电话号码查询系统

电话号码查询系统功能:
(1)存储联系人(姓名 电话 地址)
(2)删除联系人
(3)根据姓名或者号码查找联系人

import java.util.Scanner;
public class HashTest {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		Hashtable ht=new Hashtable();
		String num,name,add;
		String s;
		char n;
		System.out.println("欢迎使用电话号码查询系统! ");
		System.out.println("输入 “1”:录入 ");
		System.out.println("输入 “2”:查找 ");
		System.out.println("输入 “3”:删除 ");
		System.out.println("输入 “4”:退出系统 ");
		do {
			
			s=in.next();
			n=s.charAt(0);
			if(n!='1'&&n!='2'&&n!='3'&&n!='4') {
				System.out.println("错误!!!请重新输入!");
			}
			switch(n) {
			case '1':ht.in();break;
			case '2':ht.find();break;
			case '3':ht.delete();break;
			}
		}while(n!='4');
		System.out.println("欢迎使用本系统,再见!!! ");
	}
}

class Hashtable extends hash{
	Scanner in=new Scanner(System.in);
	int i;
	String num,name,add,jud;
	hash[] table=new hash[7];
	public Hashtable(){
		for(i=0;i<7;i++) {
			table[i]=new hash();
		}
	}
	
	public void in() {
		System.out.print("姓名 ");
		name=in.next();
		System.out.print("电话号码 ");
		num=in.next();
		System.out.print("地址 ");
		add=in.next();
		table[mod(num)].inhash(name,num,add);
		System.out.println("录入成功!");
	}
	
	public void find() {
		System.out.println("通过姓名查找:1");
		System.out.println("通过电话查找:2");
		jud=in.next();
		if(jud.equals("1")) {
			System.out.print("查找人姓名 ");
			name=in.next();
			for(i=0;i<7;i++) {
				if(table[i].findname(name)!=null) {
					System.out.println("姓名:"+table[i].t.name+" 电话号码:"+table[i].t.num+" 地址:"+table[i].t.add);
					jud="";
				}
			}
			if(jud.equals("1")) {
				System.out.println("查无此人!");
			}
		}else if(jud.equals("2")) {
			System.out.print("查找电话 ");
			num=in.next();
			i=mod(num);
			if(table[i].findnum(num)!=null) {				
				System.out.println("姓名:"+table[i].t.name+" 电话号码:"+table[i].t.num+" 地址:"+table[i].t.add);
				jud="";
			}
			if(jud.equals("2")) {
				System.out.println("查无此人!");
			}
		}else {
			System.out.println("查无此人!");
		}
		
	}
	
	public void delete() {
		System.out.print("删除联系人姓名 ");
		name=in.next();
		for(i=0;i<7;i++) {
			if(table[i].deletehash(name)) {
				System.out.println("删除成功!");
			}				
		}
		if(i==7) {
			System.out.println("查无此人!");
		}
	}
	
	public int mod(String num) {
		int a=0;
		for(int i=0;i<num.length();i++) {
			a=Integer.parseInt(num.charAt(i)+"");
		}
		return a%7;
	}
	
}
class hash{
	int n;
	node head=new node(null,null,null);
	node t;
	
	public hash() {
		n=0;
		head.next=null;
	}
	
	class node{
		String num,name,add;
		node next;
		public node(String name,String num,String add) {
			this.num=num;
			this.name=name;
			this.add=add;
			next=null;
		}
	}
	
	public void inhash(String name,String num,String add) {
		n++;
		node no=new node(name,num,add);
		no.next=head.next;
		head.next=no;
	}
	
	public node findname(String name) {
		t=head.next;
		while(t!=null) {
			if(t.name.equals(name)) {
				return t;
			}else {
				t=t.next;
			}
		}
		return null;
	}
	
	public node findnum(String num) {
		t=head.next;
		while(t!=null) {
			if(t.num.equals(num)) {
				return t;
			}else {
				t=t.next;
			}
		}
		return null;
	}
	
	public boolean deletehash(String name) {
		node tde=findname(name);
		if(tde!=null) {
			t=head;
			while(t.next!=tde) {
				t=t.next;
			}
			t.next=tde.next;
			return true;
		}
		return false;
	}
}
发布了11 篇原创文章 · 获赞 7 · 访问量 1192

猜你喜欢

转载自blog.csdn.net/leangx86/article/details/101937615