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

mac2022-06-30  18

电话号码查询系统功能: (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; } }
最新回复(0)