数据结构练手小项目(AVL树、哈希表、循环链表、MySQL数据库)
文章目录
- 前言
- 正文(无删减)
- 我的想法(删减修改版)
- 数据导入与数据存储
- 功能实现
- 数据结构
- 用户结构
- SIM卡结构
- AVL树数据结构
- 哈希表结构
- 数据表
- 用户表
- SIM卡表
- 时间安排
- 数据导入与数据存储
- 功能实现
- 数据结构
- 用户结构
- SIM卡结构
- AVL树数据结构
- 哈希表结构
- 数据表
- 用户表
- SIM卡表
- 时间安排
前言
本月主打数据结构,当然,月初的时候入门了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天,规划一天,数据库方面一天,数据结构方面一天。
- im4java包处理图片
- centOS7 mini配置linux服务器(五) 安装和配置tomcat和mysql
- RedisPool操作Redis,工具类实例
- centOS7 mini配置linux服务器(四) 配置jdk
- 老司机教你“飙”EventBus3
- Android listView异步下载和convertView复用产生的错位问题
- 实用Android 屏幕适配方案分享
- java-FFmpeg(一) 实现视频的转码和截图功能
- websocket(二) websocket的简单实现,识别用户属性的群聊
- websocket教程(一) 非常有趣的理解websocket
- 前端插件——头像截图上传插件的使用(带后台)
- 如何减轻ajax定时触发对服务器造成的压力和带宽的压力?ajax-长轮训
- Spark源码之Standalone模式下master持久化引擎讲解
- spring整合quartz
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flutter基础widgets教程-FlutterLogo篇
- 配置压缩版mysql 5.7以上版本
- nutz 自定义sql的使用
- nutz 中 子模块 参数的使用。
- java向mysql插入数据乱码问题解决
- java向数据库中插入中文出现乱码
- Flutter基础widgets教程-FractionallySizedBox篇
- 关于myeclipse控制台输出中文乱码的问题
- nutz 自定义查询 分页 取值
- jquery-uploadifyv3.2.1 文件上传插件 学习
- Flutter基础widgets教程-Icon篇
- Redis:持久化
- Flutter基础widgets教程-IconButton篇
- Flutter基础widgets教程-Image篇
- Go - 学习 grpc.Dial(target string, opts …DialOption) 的写法