含用户界面简单电话簿java.docx

上传人:b****5 文档编号:6639629 上传时间:2023-01-08 格式:DOCX 页数:45 大小:167.82KB
下载 相关 举报
含用户界面简单电话簿java.docx_第1页
第1页 / 共45页
含用户界面简单电话簿java.docx_第2页
第2页 / 共45页
含用户界面简单电话簿java.docx_第3页
第3页 / 共45页
含用户界面简单电话簿java.docx_第4页
第4页 / 共45页
含用户界面简单电话簿java.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

含用户界面简单电话簿java.docx

《含用户界面简单电话簿java.docx》由会员分享,可在线阅读,更多相关《含用户界面简单电话簿java.docx(45页珍藏版)》请在冰豆网上搜索。

含用户界面简单电话簿java.docx

含用户界面简单电话簿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;i

if(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;i

if(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;i

if(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;i

if(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;i

if(hashTable[index].get(i).getNumber()==key){

returnfalse;

}//endif

}//endfor

hashTable[index].add(value);

returntrue;

}//endmethodadd

 

publicSomeOneget(longkey){

intindex=(int)(key%step);

for(inti=0;i

if(hashTable[index].get(i).getNumber()==key){

returnhashTable[index].get(i);

}//endif

}//endfor

returnnull;

}//endmethodgetValue

publicvoidmodify(longkey,SomeOneone){

intindex=(int)(key%step);

for(inti=0;i

if(hashTable[index].get(i).getNumber()==key){

hashTable[index].set(i,one);

}//endif

}//endfor

}//endmethodmodify

publicSomeOnedelete(longkey){

intindex=(int)(key%step);

for(inti=0;i

if(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1