数据结构练手小项目(AVL树、哈希表、循环链表、MySQL数据库)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

在这里插入图片描述
@[toc]

前言

本月主打数据结构,当然,月初的时候入门了MySQL。
不过吧,一直学一直学,人都学傻了,死读书读死书,==以练代学,学以致用==才是正道。
这不,我找到了一个数据结构的练手小项目,拿来练练,如果有兴趣,可以一起试试啊。

正文(无删减)

1.主题区域“移动运营商的客户服务”的信息系统应在以下位置输入,存储,处理和显示数据:
-顾客
-移动运营商拥有的SIM卡;
-客户发行或退回SIM卡。

2.有关每个客户端的数据应包含:
护照号码-格式为“ NNNN-NNNNNN”的字符串,其中N为数字;
护照的签发地点和日期-字符串;
名称-字符串;
出生年份-整个;
地址是一个字符串;

注意-线的长度(护照号码除外)由学生独立确定。

3.==客户数据应组织为AVL搜索树==,并==按“护照号”排序==。

4.每个SIM卡的数据必须包含:
SIM卡号码-格式为“ NNN-NNNNNNN”的字符串,其中N是数字
资费是一个字符串
发布年份-整体;
可用性的标志是合乎逻辑的。

注意-线路的长度(“ SIM卡号”除外)由学生独立确定。

5.==SIM卡上的数据应以哈希表的形式进行组织==,==哈希表的主键为“ SIM卡号”==,哈希方法由作业选项确定。
6.客户发行或退回SIM卡的数据必须包含
护照号码-一行,其格式对应于客户数据中的相似行;
SIM卡号-格式对应于SIM卡中数据中类似行的行;
发布日期-字符串;
到期日期-字符串。

注意:1.在此数据中存在在“护照号”字段中包含值X的条目,在“ SIM卡号”中包含值Y的条目分别表示向客户发放了护照号码X的SIM卡号Y。 证明没有为护照号码为X的客户发行了编号为Y的SIM卡。2.可以向一个客户发行多张SIM卡。 因此,可能存在在其字段中具有重复值的数据。

7.客户==SIM卡的发行或归还数据应以循环链表的形式进行组织==,并==按主键“ SIM卡号”的顺序进行排列==。 列表视图和排序方法由作业选项确定。

8.信息系统“移动运营商的客户服务”应执行以下操作:
新客户注册;
客户服务提现
查看所有注册客户
清除客户数据;
通过“护照号”搜索客户 搜索结果-有关找到的客户的所有信息以及发给他的SIM卡号;
客户按全名或地址的片段进行搜索。 搜索结果-找到的客户列表指示护照号码,姓名和地址。

添加新的SIM卡;
删除SIM卡信息
查看所有可用的SIM卡
清除SIM卡数据
通过“ SIM卡号”搜索SIM卡。 搜索结果-有关找到的SIM卡的所有信息,以及该SIM卡发给的客户的姓名和护照号码;
按费率搜索SIM卡。 搜索结果-找到的SIM卡列表,指示“ SIM卡号”,资费,制造年份
向客户发行SIM卡的注册
注册客户返回的SIM卡。

9.查看所有注册客户或查看所有SIM卡时发出的客户或SIM卡数据的组成由学生独立确定,但必须包含至少两个字段

10.由学生独立确定以一定速率搜索SIM卡的方法。 必须将所选方法与替代方法进行比较。

11.通过全名或地址的片段搜索客户端应通过==系统遍历AVL搜索树==来进行。 解决方法由作业选项确定。 在按全名或地址的片段搜索客户端时,可以指定全名或地址及其组成部分(例如,仅客户端的姓氏,不包括名字和中间名,仅地址中的街道名)。 要检测全名或地址中的给定片段,应使用在任务变体中指定的文本中搜索单词的算法。

12.仅当移动运营商拥有SIM卡(相应SIM卡的“可用性标志”字段的值为“ True”)时,才应进行向客户的SIM卡发行注册。

13.在注册向客户发行SIM卡或客户返还SIM卡时,必须调整相应SIM卡的“可用性标志”字段的值。

我的想法(删减修改版)

数据导入与数据存储

MySQL数据库。


功能实现

数据库数据写入AVL树与哈希表。

新客户注册;(AVL树中插入数据)
客户服务提现;(AVL树中主键搜索)
查看所有注册客户;(主键遍历AVL树)
清除客户数据;(AVL树中主键删除)
客户按全名或地址的片段进行搜索。 搜索结果-找到的客户列表指示护照号码,姓名和地址。(AVL中非主键搜索)

添加新的SIM卡;(哈希表主键插入)
删除SIM卡信息;(哈希表主键删除)
查看所有可用的SIM卡;(哈希表主键遍历)
按费率搜索SIM卡。 搜索结果-找到的SIM卡列表,指示“ SIM卡号”,资费,制造年份(哈希表中非主键搜索)

通过“ SIM卡号”搜索SIM卡。 搜索结果-有关找到的SIM卡的所有信息,以及该SIM卡发给的客户的姓名和护照号码;(哈希表主键搜索+AVL树主键搜索)
向客户发行SIM卡的注册。(哈希表主键搜索+AVL树主键搜索)
注销客户的SIM卡。(哈希表主键搜索+AVL树主键搜索)

AVL树与哈希表数据写回数据库。


数据结构

2.有关每个客户端的数据应包含:
护照号码-格式为“ NNNN-NNNNNN”的字符串,其中N为数字;
护照的签发地点和日期-字符串;
名称-字符串;
出生年份-整个;
地址是一个字符串;

注意-线的长度(护照号码除外)由学生独立确定。

3.==客户数据应组织为AVL搜索树==,并==按“护照号”排序==。

4.每个SIM卡的数据必须包含:
SIM卡号码-格式为“ NNN-NNNNNNN”的字符串,其中N是数字
资费是一个字符串
发布年份-整体;
可用性的标志是合乎逻辑的。

用户结构

typedef struct User_Message{
    string passport_number;
    string passport_issue_address;
    string passport_issue_time; 
    string user_name;
    string user_birthday;
    string user_hometown;
}UM_t;

SIM卡结构

typedef struct SIM_Message{
    string SIM_number;
    string last_money;
    string SIM_issue_time;
    int issue_flag;
    string owner_number;    //持卡人护照号码
}SIM_t;

AVL树数据结构

struct User_Tree_Node{
    User_Tree_Node* left;
    User_Tree_Node* right;
    User_Message* data;
}

哈希表结构

underored_map<string,SIM_Message*> hash_SIM;

数据表

用户表

create table UM(
    passport_number varchar(12) primary key,
    passport_issue_address varchar(12) not NULL,
    passport_issue_time varchar(12) not NULL,
    user_name varchar(12) not NULL,
    user_birthday varchar(12),
    user_hometown varchar(12)
);

SIM卡表

create table SIM(
    SIM_number varchar(12) primary key,
    last_money varchar(12) not NULL,
    SIM_issue_time varchar(12) not NULL,
    issue_flag int not NULL,
    owner_number varchar(12) 
);

时间安排

预计用时3天,规划一天,数据库方面一天,数据结构方面一天。
在这里插入图片描述

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
11天前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
8天前
|
Java
java数据结构,双向链表的实现
文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
java数据结构,双向链表的实现
|
16天前
|
存储 Java Serverless
【数据结构】哈希表&二叉搜索树详解
本文详细介绍了二叉搜索树和哈希表这两种数据结构。二叉搜索树是一种特殊二叉树,具有左子树节点值小于根节点、右子树节点值大于根节点的特点,并且不允许键值重复。文章给出了插入、删除和搜索等方法的具体实现。哈希表则通过哈希函数将键名映射为数组下标,实现快速查找,其插入、删除和查找操作时间复杂度理想情况下为O(1)。文中还讨论了哈希函数的设计原则、哈希冲突的解决方法及哈希表的实现细节。
23 8
【数据结构】哈希表&二叉搜索树详解
|
2天前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
22 10
|
1天前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
|
1月前
|
存储 Java 索引
【数据结构】链表从实现到应用,保姆级攻略
本文详细介绍了链表这一重要数据结构。链表与数组不同,其元素在内存中非连续分布,通过指针连接。Java中链表常用于需动态添加或删除元素的场景。文章首先解释了单向链表的基本概念,包括节点定义及各种操作如插入、删除等的实现方法。随后介绍了双向链表,说明了其拥有前后两个指针的特点,并展示了相关操作的代码实现。最后,对比了ArrayList与LinkedList的不同之处,包括它们底层实现、时间复杂度以及适用场景等方面。
44 10
【数据结构】链表从实现到应用,保姆级攻略
|
7天前
|
SQL 关系型数据库 MySQL
springboot项目操作mysql出现锁表问题情况
springboot项目操作mysql出现锁表问题情况
19 2
|
2月前
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
42 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
1月前
|
Java 数据库连接 数据库
数据库以及其他项目配置
该项目配置了数据库连接和MyBatis设置,并解决了配置文件加载问题。启动类使用 `@SpringBootApplication` 注解,可通过 `@ComponentScan` 指定扫描包。Lombok 自动生成 getter/setter 等方法,简化代码。Result 实体类用于统一返回格式。用户模块包括注册与登录功能,使用 MD5 加密密码、Spring Validation 参数校验及 JWT 认证。JWT 工具类处理令牌生成与解析,并通过拦截器验证。Redis 优化登录功能,利用 ThreadLocal 存储用户信息。此外,还包括文章模块的相关功能,如文章分类管理、
38 2
下一篇
无影云桌面