import java.io.*;
import java.util.*;
class str14
{
inputstreamreader stdin=new inputstreamreader(system.in);
bufferedreader bufin=new bufferedreader(stdin);
public static void main(string args[]) throws ioexception
{
new str14();//run the application
}
public str14() throws ioexception//constructor
{
hashtable htable=new hashtable(20,0.75f);
database(htable);
}
public str14(hashtable htable) throws ioexception //override the constructor
{
database(htable);
}
public void database(hashtable htable) throws ioexception
{
int count=htable.size();//get the ammount of the data in htable
int value,id,num;
string key,enter,data;
enumeration keys=htable.keys();//get all the key in htable
enumeration elements=htable.elements();//get all the elements in htable
system.out.println("
hashtable 简易数据库程序
");
system.out.println("(1)输入数据");
system.out.println("(2)请除所有数据");
system.out.println("(3)显示单笔数据");
system.out.println("(4)删除单笔数据");
system.out.println("(5)显示所有数据");
system.out.println("(6)结束程序");
system.out.print("请输入您的选择:");
value=select();//call select(),return the function number
switch(value)//the function
{
case 1:
system.out.print("
请输入一笔数据:");//need data input
data=bufin.readline();
count++;
key=string.valueof(count);
htable.put(key,data);//store it to the htable
system.out.print("
输入完成,按任意键继续...");
enter=bufin.readline();
new str14(htable);//reenter
break;
case 2://clear all data from the htable
htable.clear();
system.out.print("
已删除了所有数据... 按任意键继续...");
enter=bufin.readline();
new str14(htable);//reenter
break;
case 3:
system.out.print("
请输入要显示的数据编号:");
id=getid(count);//call getid()
key=string.valueof(id);
object select=htable.get(key);//fetch the data from the htable
data=select.tostring();
system.out.print("
编号"+" "+"内容");
system.out.println("
"+key+" "+data);//display the data
system.out.print("
按任意键继续...");
enter=bufin.readline();
new str14(htable);//reenter
break;
case 4:
system.out.print("请输入要删除的数据编号:");
id=getid(count);
key=string.valueof(id);
htable.remove(key);//remove data
count--;
num=count;
system.out.print("已删除了所选择的数据...按任意见继续...");
hashtable htable1=new hashtable(20,0.75f);//create new htable named htable1
elements=htable.elements();//fetch all the data from htable
while(elements.hasmoreelements())
{
key=string.valueof(num);//a new value
data=(string)elements.nextelement();//fetch content of the data
htable1.put(key,data);//store it to htable1
num--;
}
htable.clear();
enter=bufin.readline();
new str14(htable1);
break;
case 5:
string[] sortkey=new string[count];//create a new sort array
string[] sortdata=new string[count];
num=count;
elements=htable.elements();
keys=htable.keys();
while(elements.hasmoreelements())
{
key=(string)keys.nextelement();//fetch value of key
data=(string)elements.nextelement();//fetch value of data
sortkey[num-1]=key;//store the value of key to sortkey array
sortdata[num-1]=data;//store the value of data to sortdata array
num--;
}
system.out.println("
编号"+" "+"内容");
for(int i=0;i<count;i++)//display all content after sorting
system.out.println(" "+sortkey[i]+" "+sortdata[i]);
system.out.print("
目前共有"+count+"笔数据");
system.out.print("
按任意键继续...");
enter=bufin.readline();
new str14(htable);
break;
default:
}
}
public int select() throws ioexception//method of getting a function selector
{
string input;
int value=0;
input=bufin.readline();//read a input from keyboard
try
{
value=integer.parseint(input);//convert a string to a int value
}catch(numberformatexception e)//can’t vonverted
{
system.out.print("请输入选项1~6:");
value=select();
}
if(value>6||value<1)//if exceed then print a message and reenter
{
system.out.print("请输入选项1~6:");
value=select();
}
return value;//return a value
}
public int getid(int count)throws ioexception//a method of return the number of data
{
string input;
int value=0;
input=bufin.readline();//read a user input string from keyboard
try
{
value=integer.parseint(input);//convert the string to a int
}catch(numberformatexception e)//if can’t convert to a integer then reenter
{
system.out.print("请输入数据编号:");
value=getid(count);
}
if(value>count)//the input value is out of bound
{
system.out.print("无此编号的数据,请重新输入:");
getid(count);
}
return value;//return a value
}
}
闽公网安备 35060202000074号