当前位置: 首页 > 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.lryc.cn/news/575342.html

相关文章:

  • 科技与人类贪欲
  • 医疗AI专科子模型联邦集成编程分析
  • 图像质量对比感悟
  • 【RESTful接口设计规范全解析】URL路径设计 + 动词名词区分 + 状态码 + 返回值结构 + 最佳实践 + 新手常见误区汇总
  • 2D 基准情况下贝叶斯优化应用的概率推理
  • centos 7 安装NVIDIA Container Toolkit
  • 云原生 Cloud Native
  • OBCP第三章 OceanBase SQL 引擎高级技术学习笔记
  • Rust 中的 HTTP 请求利器:reqwest
  • 【STM32】端口复用和重映射
  • 一次性登录令牌(Login Ticket)生成机制分析
  • 环境太多?不好管理怎么办?TakMll 工具帮你快速切换和管理多语言、多版本情况下的版本切换。
  • 【Actix Web】Rust Web开发实战:Actix Web框架全面指南
  • 从零到一训练一个 0.6B 的 MoE 大语言模型
  • 百面Bert
  • 《网络攻防技术》《数据分析与挖掘》《网络体系结构与安全防护》这三个研究领域就业如何?
  • ASP.NET Core Web API 实现 JWT 身份验证
  • list类的详细讲解
  • 基于 Python 的批量文件重命名软件设计与实现
  • 二叉树理论基础
  • 【偏微分方程】基本概念
  • 逆向入门(8)汇编篇-rol指令的学习
  • 【kubernetes】--Service
  • 深入理解提示词工程:原理、分类与实战应用
  • 基于 opencv+yolov8+easyocr的车牌追踪识别
  • linux-修改文件命令(补充)
  • Windows 安装 Redis8.0.2
  • 多传感器标定简介
  • day042-负载均衡与web集群搭建
  • python3虚拟机线程切换过程