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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容OpenClaw),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天,规划一天,数据库方面一天,数据结构方面一天。
在这里插入图片描述

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
关系型数据库 MySQL Java
【MySQL+java+jpa】MySQL数据返回项目的感悟
【MySQL+java+jpa】MySQL数据返回项目的感悟
182 1
|
10月前
|
存储 关系型数据库 MySQL
MySQL数据库索引的数据结构?
MySQL中默认使用B+tree索引,它是一种多路平衡搜索树,具有树高较低、检索速度快的特点。所有数据存储在叶子节点,非叶子节点仅作索引,且叶子节点形成双向链表,便于区间查询。
267 4
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
574 41
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
535 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
827 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
954 26
|
数据管理 数据库 数据安全/隐私保护
Django—同一项目不同app使用不同数据库
在Django项目中实现不同app使用不同数据库的配置,可以通过配置多数据库、创建数据库路由和配置路由来实现。通过这种方法,可以有效地将数据隔离到不同的数据库,提高数据管理的灵活性和系统的可扩展性。希望本文能为开发者在Django项目中使用多数据库提供清晰的指导。
467 4
|
数据库
数据结构中二叉树,哈希表,顺序表,链表的比较补充
二叉搜索树,哈希表,顺序表,链表的特点的比较
数据结构中二叉树,哈希表,顺序表,链表的比较补充
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
386 8
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
388 11

推荐镜像

更多