【数据结构课程设计报告】电话号码查询系统(Java实现)

本数据结构课程设计报告介绍了如何使用Java语言构建一个电话号码查询系统。系统包括电话信息的添加、查看、查询和删除功能,采用散列表存储结构,散列函数采用除留取余法,并使用开放定址法的线性探测法处理冲突。用户通过菜单进行交互,系统具备良好的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构课程设计报告



一、需求分析

问题描述:路径规划系统的业务活动包括:电话号码查询系统的业务活动包括:电话信息的添加、查看电话信息、按电话号查询电话信息和删除电话信息等,需对指定内容进行分析设计利用计算机加以实现。

所涉及的信息有:顶点数即地点数、边数即路径数、所有顶点信息、每条路径的两个端点信息和每条路径的权值。

系统能够实现的功能与操作如下:
1.插入信息:根据用户依次输入的内容(姓名,电话号),运用散列函数(这里以电话号为主键)对所需添加的路径进行相应存储。
2.查看信息:根据用户插入的信息显示相应内容。
3.查询电话号:根据用户输入的电话号,再通过散列函数计算下标查询相应信息。
4.删除电话号:根据用户输入的电话号,再通过散列函数计算下标删除相应信息。
5.退出系统:退出当前界面

输出界面:有主菜单、分菜单可对上述所说2的内容进行用户的相应选择和呈现,以达到系统的交互性。
编译环境:win10;eclipse;
所使用的编译语言:Java语言

二、系统功能划分及设计

1.存储结构设计

散列表存储结构示意图

系统存储结构设计采用散列表存储结构。运用两个一维数组,分别存储键与值。散列函数的构建采用除留取余法将电话号每一位依次相加再模一个指定数P(P小于等于表长的最小素数或不包含小于20的质因数的合数)。处理冲突运用的是开放定址法的线性探测法 。

2.系统的功能架构设计

系统功能流程图

系统功能架构流程设计如图所示,主函数调用菜单函数进行菜单选择(1-4)。

  1. 当用户选择1时,调用插入信息,待用户依次输入姓名,电话号,若输入信息类型格式无误则可添加成功。
  2. 当用户选择2时,调用查看信息,无需其他操作界面会直接显示相应内容。
  3. 当用户选择3时,调用查询电话号,待用户输入电话号后,在系统中进行查询,若存在号码则可以得到相应信息,若不存在则会得到相应提示。
  4. 当用户选择4时,调用删除电话号,待用户输入电话号后,会进行相应删除功能。
  5. 当用户选择5时,退出系统。

3.模块设计

在这里插入图片描述

如上图所示为系统所涉及到各类的属性、方法及各类之间的关系图。

3.代码实现

public class HashTable<K, V> {
   
	private final int SIZE = 5;// 散列表大小
	private final int P = 3;
	private K[] keys;// 散列表的键
	private V[] values;// 散列表的值
 
	/**
	 * 构造函数
	 */
	public HashTable() {
   
		keys = (K[]) new Object[SIZE];
		values = (V[]) new Object[SIZE];
	}
 
	/**
	 * 散列函数
	 * 
	 * @param key
	 * @return
	 */
	public int Hash(K key) {
   
		String str = Long.toString((long) key);
		int addr = 0;
		for (int i = 0; i < str.toCharArray().length; i++) {
   
			addr += (int) str.charAt(i);
		}
		return addr % P;
	}
 
	/**
	 * 将信息插入散列表中
	 * 
	 * @param key
	 * @param v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王力士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值