当前位置: 首页 > news >正文

数据结构大项目

项目:基于链表的通信录管理

意义:对于一个通信录来说,要管理联系人的信息,包括编号,姓名,性别,电话。开发其系统主要为了帮助用户提高通讯录有管理效率,节约资源,提高信息的精确度

模块:

一级菜单内容

        1> 注册模块:完成用户信息的注册用于登录管理系统,将注册信息存入结构体数组

        2> 登录模块:使用输入的登录账号和密码与结构体数组存储信息对比

        3> 退出系统

二级菜单内容:

        1> 创建模块create:创建链表完成对通信录的存储

        2> 添加数据add:添加通信录的信息放入链表中

        3> 查找信息find:可以通过姓名进行查找

        4> 修改信息update:可以修改联系人信息并保存,修改联系人信息有包括了对联系人编号,姓名,性别,电话号码的分别修改,也可以同时对编号,姓名,性别,电话号码修改;

        5> 删除信息delete:可根据输入的姓名进行删除

        6> 插入信息insert:将给定的信息以及插入位置信息完成插入

        7> 展示信息show:将通讯录的所有信息进行展示

        8> 按照姓名将通讯录排序

        9> 返回上一级

辅助功能:

        10> 初始化链表init:将链表进行初始化

        11> 获取链表长度getLength:

        12> 统计性别;

1. 说明文档readme

通讯录管理系统

一、项目简介
本项目是一个基于 C 语言实现的通讯录管理系统,提供了用户注册、登录功能,以及对通讯录联系人信息的创建、添加、查找、修改、删除、插入、展示、排序等操作。系统采用链表数据结构来存储联系人信息,方便对数据进行动态管理。

二、文件结构

通讯录管理系统/
├── adr_book.c
├── adr_book.h
├── main.c
├── menu.c
└── makefile

- adr_book.c:实现了用户注册、登录、通讯录链表操作等核心功能。
- adr_book.h:定义了用户信息、联系人信息结构体,以及相关函数的声明。
- main.c:程序的入口,调用一级菜单函数。
- menu.c:实现了一级菜单(注册、登录、退出)和二级菜单(通讯录操作)。
- makefile:用于编译项目,生成可执行文件。

三、编译和运行
编译
在项目根目录下,使用make命令进行编译:

make

该命令会根据 makefile 中的规则,将所有 .c 文件编译成 .o 文件,然后链接生成可执行文件 “通讯录”。

运行
编译成功后,执行生成的可执行文件:

./通讯录


四、功能说明
一级菜单
- 注册:用户可以输入账户名和密码进行注册。系统会检查账户名是否重复,以及两次输入的密码是否一致。
- 登录:用户输入已注册的账户名和密码进行登录。登录成功后进入二级菜单。
- 退出:退出通讯录管理系统。

二级菜单
- 创建新的通讯录:创建一个存储联系人信息的链表。
- 添加数据:向通讯录中添加新的联系人信息,包括编号、姓名、性别和电话。
- 查找:通过姓名查找联系人信息,并显示该联系人的详细信息。
- 修改:先通过姓名查找联系人,然后可以选择修改该联系人的编号、姓名、性别和电话。
- 删除:通过姓名查找联系人,确认后删除该联系人的信息。
- 插入信息:在指定位置插入新的联系人信息。
- 展示:显示通讯录中所有联系人的信息。
- 姓名排序展示:按姓名对通讯录中的联系人进行排序,然后展示排序后的信息。
- 返回:返回一级菜单。
- 初始化:确认后清空通讯录中的所有联系人信息。
- 联系人个数:显示当前通讯录中的联系人数量。
- 性别统计:统计通讯录中男性、女性和未知性别的联系人数量。

五、注意事项
- 系统默认有一个账户 “admin”,密码为 “123456”。
- 用户注册数量上限为 10 个。
- 在进行通讯录操作前,需要先创建通讯录链表。
- 输入操作时,请按照提示输入有效的信息,否则系统会提示错误。

六、清理编译文件
如果需要清理编译生成的 .o 文件和可执行文件,可以使用以下命令:

make clean

 2. 源代码

百度网盘链接https://pan.baidu.com/s/1I-0Aimf6RSFRaQuh983WLg?pwd=1234部分代码截图

3. 测试视频

http://www.lqws.cn/news/532801.html

相关文章:

  • react - ReactRouter—— 路由传参
  • 【STM32 学习笔记】PWR电源控制
  • Java 大视界 -- 基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(324)
  • 【linux】全志Tina配置swupdate工具进行分区打包
  • 《PT100两线制温度测量系统设计:从电路原理到嵌入式实现》
  • 【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(二)
  • 香港政府发表《香港数字资产发展政策宣言 2.0》,提出「LEAP」框架
  • 星型模式(Star Schema)
  • lua脚本为什么能保证原子性
  • 云效代码仓库导入自建gitlab中
  • Redis核心知识详解:从全局命令到高级数据结构
  • 首款SUV小米YU7、小米AI眼镜等新品重磅发布,玄戒O1超大规模量产
  • 湖北理元理律师事务所:科学债务优化如何守护民生底线
  • MySQL 总是差八个小时,如何破?
  • Linux中部署Jenkins保姆间教程
  • 爬虫005----Selenium框架
  • 9. 回文数
  • MySQL (二):范式设计
  • Linux服务器部署Leantime与cpolar构建低成本团队协作环境
  • LRU缓存C++
  • kubernetes》》k8s》》滚动发布 、金丝雀发布 、
  • 医疗AI专科子模型联邦集成编程分析
  • 第一章-人工智能概述-机器学习基础与应用(1/36)
  • 时序分析未完待续
  • DeepSeek16-open-webui Pipelines开发填坑
  • 什么是财务共享中心?一文讲清财务共享建设方案
  • dlib检测视频中的人脸并裁剪为图片保存
  • centos 7 安装NVIDIA Container Toolkit
  • 鸿蒙原子化服务与元服务:轻量化服务的未来之路
  • Spring Security 安全控制终极指南