含用户界面简单电话簿java.docx
《含用户界面简单电话簿java.docx》由会员分享,可在线阅读,更多相关《含用户界面简单电话簿java.docx(45页珍藏版)》请在冰豆网上搜索。
含用户界面简单电话簿java
哈希表的设计与实现
届学院
专业
学号
学生姓名
指导教师
完成日期年月日
摘要
该系统的功能是以按钮方式工作,用户通过打开exe文件来打开该系统:
通讯录的增加功能——输入通讯录基本信息并保存到文件中;
通讯录浏览功能——输出通讯录的基本信息;
通讯录查询功能——按编号查询通讯录信息,按姓名查询通讯录信息;
通讯录删除功能——按编号删除通讯录信息,按姓名删除通讯录信息;
通讯录修改功能——根据编号修改通讯录信息。
从而实现用户的想法。
在各项基本功能之下我们可以看到各种小的模块来满足用户的各种需求,达到快速方便的效果。
程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,通讯录系统和文档不免出现一些不期待的错误,望文档读者谅解,并欢迎及时提醒和改正,在此表示谢意。
关键词:
数据结构;通讯录系统;哈希表
目录
目录....................................................................................................................................
第1章引言.....................................................................................................................1
第2章系统功能需求分析.............................................................................................1
2.1问题描述................................................................................................................1
2.2需求分析................................................................................................................1
第3章概要设计.............................................................................................................2
3.1抽象数据类型(ADT)........................................................................................2
3.2系统流程图............................................................................................................3
第4章详细设计.............................................................................................................4
4.1姓名哈希表设计程序段........................................................................................4
4.2号码哈希表设计程序段........................................................................................14
4.3联系人类程序段....................................................................................................24
4.4联系人显示模式程序段........................................................................................28
4.5联系人主界面设计程序段....................................................................................31
第5章调试分析.............................................................................................................53
第六章运行结果.............................................................................................................54
第1章引言
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率的算法。
数据结构往往同高效的检索算法和索引技术有关。
本次课程设计,我们是利用线性哈希表来实现通讯录的添加、查找等功能。
本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。
第二章系统功能需求分析
2.1问题描述:
利用姓名哈希表和号码哈希表,实现下面的功能:
1)设计一个通讯录用户界面并安置各个功能按钮;
2)根据用户点击的按钮触发功能;
3)添加联系人信息;
4)查询功能:
a、能够根据号码精确查询联系人信息
b、能够根据姓名查询联系人信息
5)浏览以存在联系人信息;
6)删除和修改联系人信息。
2.2需求分析
1)用哈希表实现本地通讯录管理系统的基本功能,可以实现学生联系人的建立,联系人的查看,通过姓名查找联系人,通过号码查找联系人,删除联系人,修改联系人信息。
2)哈希表表使程序设计的数据查询更加快速。
3)通过哈希表表实现的通讯录添加联系人,删除联系人方便。
第3章概要设计
3.1抽象数据类型(ADT)
联系人对象:
publicclassSomeOneimplementsSerializable{
privateStringname;
privatelongnumber;
privateStringaddress;
publicSomeOne(Stringname,longnumber,Stringaddress){
this.name=name;
this.number=number;
this.address=address;
}
}
姓名哈希表:
publicclassNameHashTable{
privatefinalStringfilePath="data\\nameHash.dat";
privateintstep;
List[]hashTable;
publicNameHashTable(){
step=997;
hashTable=newArrayList[997];
for(inti=0;i<997;i++){
hashTable[i]=newArrayList();
}
}
}
号码哈希表:
publicclassNumberHashTable{
privatefinalStringfilePath="data\\numberHash.dat";
privateintstep;
List[]hashTable;
publicNumberHashTable(){
step=997;
hashTable=newArrayList[997];
for(inti=0;i<997;i++){
hashTable[i]=newArrayList();
}
}
}
3.2系统流程图
主界面
通讯录管理系统
修改
信息
模块
删除
信息
模块
保存信息
模块
查询信息
模块
更新
信息
模块
删除联系人信息
根
据
姓名
查
询
信
息
输
入
信
息
根
据
编号
查
询
信
息
修改联系人信息
保存信息到存储文件
第4章详细设计
该电话簿程序的用户界面,鼠标监听功能实现等都是同java语言实现,程序的数据保存在姓名哈希表文件namehash.dat和号码哈希表文件numberhash.dat文件中。
4.1姓名哈希表(NameHashTable.java)设计程序代码
/*
*Tochangethistemplate,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
packagephoneNumberSeek;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
//importjava.io.File;
//importjava.io.Serializable;
importjava.util.ArrayList;
importjava.util.List;
/**
*
*@authorLiming
*/
publicclassNameHashTable{
privatefinalStringfilePath="data\\nameHash.dat";
privateintstep;
List[]hashTable;
publicNameHashTable(){
step=997;
hashTable=newArrayList[997];
for(inti=0;i<997;i++){
hashTable[i]=newArrayList();
}
}//endmethodNameHashTable
publicbooleanadd(Stringkey,SomeOnevalue){
intindex=Math.abs(key.hashCode())%step;
for(inti=0;iif(hashTable[index].get(i).getName().equals(key)){
returnfalse;
}//endif
}//endfor
hashTable[index].add(value);
returntrue;
}//endmethodadd
publicSomeOneget(Stringkey){
intindex=Math.abs(key.hashCode())%step;
for(inti=0;iif(hashTable[index].get(i).getName().equals(key)){
returnhashTable[index].get(i);
}//endif
}//endfor
returnnull;
}//endmethodgetValue
publicvoidmodify(Stringkey,SomeOneone){
intindex=Math.abs(key.hashCode())%step;
for(inti=0;iif(hashTable[index].get(i).getName().equals(key)){
hashTable[index].set(i,one);
}//endif
}//endfor
}//endmethodmodify
publicSomeOnedelete(Stringkey){
intindex=Math.abs(key.hashCode())%step;
for(inti=0;iif(hashTable[index].get(i).getName().equals(key)){
SomeOnetemp=hashTable[index].get(i);
hashTable[index].remove(i);
returntemp;
}//endif
}//endfor
returnnull;
}//endmethoddelete
publicvoidload(){
try{
//if(newFile(filePath).exists())
//System.out.println("存在");
//else
//System.out.println("不存在");
//fileinputstream
FileInputStreamfis=newFileInputStream(filePath);
System.out.println("NameHashTableFileInput");
//objectinputstream
ObjectInputStreamois=newObjectInputStream(fis);
System.out.println("NameHashTableObjectInput");
//readbookList
hashTable=(ArrayList[])ois.readObject();
System.out.println("NameHashTablereadObject");
ois.close();
}catch(Exceptione){
System.out.println("读取数据失败");
}//endtry
}//endmethodread
publicvoidsave(){
try{
//fileoutputstream
FileOutputStreamfos=newFileOutputStream(filePath);
//objectoutputstream
ObjectOutputStreamoos=newObjectOutputStream(fos);
//savebooks.dat
oos.writeObject(hashTable);
oos.close();
}catch(Exceptione){
System.out.println("保存数据失败");
}//endtry
}//endmethodwrite
/*publicstaticvoidmain(String[]args){
NameHashTablename=newNameHashTable();
name.load();
name.save();
}*/
}//endclassNameHashTable
4.2号码哈希表(NumberHashTable.java)设计程序代码
/*
*Tochangethistemplate,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
packagephoneNumberSeek;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.util.ArrayList;
importjava.util.List;
//importjava.io.File;
/**
*
*@authorLiming
*/
publicclassNumberHashTable{
privatefinalStringfilePath="data\\numberHash.dat";
privateintstep;
List[]hashTable;
publicNumberHashTable(){
step=997;
hashTable=newArrayList[997];
for(inti=0;i<997;i++){
hashTable[i]=newArrayList();
}
}//endmethodNameHashTable
publicbooleanadd(longkey,SomeOnevalue){
intindex=(int)(key%step);
for(inti=0;iif(hashTable[index].get(i).getNumber()==key){
returnfalse;
}//endif
}//endfor
hashTable[index].add(value);
returntrue;
}//endmethodadd
publicSomeOneget(longkey){
intindex=(int)(key%step);
for(inti=0;iif(hashTable[index].get(i).getNumber()==key){
returnhashTable[index].get(i);
}//endif
}//endfor
returnnull;
}//endmethodgetValue
publicvoidmodify(longkey,SomeOneone){
intindex=(int)(key%step);
for(inti=0;iif(hashTable[index].get(i).getNumber()==key){
hashTable[index].set(i,one);
}//endif
}//endfor
}//endmethodmodify
publicSomeOnedelete(longkey){
intindex=(int)(key%step);
for(inti=0;iif(hashTable[index].get(i).getNumber()==key){
SomeOnetemp=hashTable[index].get(i);
hashTable[index].remove(i);
returntemp;
}//endif
}//endfor
returnnull;
}//endmethoddelete
publicvoidload(){
try{
//if(newFile(filePath).exists())
//System.out.println("存在");
//else
//System.out.println("不存在");
//fileinputstream
FileInputStreamfis=newFileInputStream(filePath);
System.out.println("NumberHashTableFileInput");
//objectinputstream
ObjectInputStreamois=newObjectInputStream(fis);
System.out.println("NumberHashTableObjectInput");
//readbookList
hashTable=(ArrayList[])ois.readObject();
System.out.println("NumberHashTablereadObject");
ois.close();
}catch(Exceptione){
System.out.println("读取数据失败");
}//endtry
}//endmethodread
publicvoidsave(){
try{
//fileoutputstream
FileOutputStreamfos=newFileOutputStream(filePath);
//objectoutputstream
ObjectOutputStreamoos=newObjectOutputStream(fos);
//savebooks.dat
oo