C 程序设计2021独立开发者

个人通讯录管理系统

用 C、结构体、链表与本地文件保存,完成一个具备增删改查、查询与年龄排序能力的命令行通讯录管理系统。

CVisual Studio 2019Win32 ConsoleStructsLinked ListLocal File Storage
个人通讯录管理系统主菜单运行截图
ARCHIVE / 2021C PROGRAMMING
PROJECT
个人通讯录管理系统插入联系人运行截图
原始运行界面节选,展示系统主菜单与核心功能入口。

01 / 项目快照

角色

独立开发者

场景

C 语言程序设计基础技能实践

技术栈

C · Visual Studio 2019 · Linked List · Local File Storage

核心范围

CRUD · 查询 · 年龄排序 · 本地持久化

02 / 我实现了什么

从联系人记录到完整操作流程。

我使用 C 语言实现了一个命令行通讯录管理系统,将联系人信息组织为结构体与链表,支持新增、查询、修改、删除与浏览,并将信息保存到文件中,使程序重新打开后仍能够读取已有联系人。同时提供按年龄升序或降序浏览功能。

03 / 系统设计

菜单驱动,链表承接数据。

报告中的总体运行框图将主页面连接到浏览、修改、查找、删除与插入操作;浏览路径进入链表冒泡排序,修改和删除路径复用查询信息。报告列出了 SystemMenu()、printlist()、DeleteAtNumber()、fixNode() 与 CheckAt() 等函数。

2021 个人通讯录管理系统原始报告中的程序总体运行框图
ARCHIVE / 2021 · 原始项目报告中的程序总体运行框图

04 / 关键实现

在链表上按年龄排序。

报告记录,最初曾考虑数组排序,但为了避免预先分配过多空间,最终选择链表,并把冒泡排序的比较与数据交换逻辑应用到节点遍历中。程序提供年龄升序与降序两种选择,再遍历链表输出结果。这不是高性能排序的尝试,而是一次对数据结构、节点遍历、数据交换和排序控制流的早期实践。

if (cp->data.age > tp->next->data.age) {
  struct Student change = tp->next->data;
  tp->next->data = cp->data;
  cp->data = change;
}

05 / 运行证据

保留程序真正运行过的痕迹。

以下均为 2021 年原始课程报告中提取的 Console 运行截图;点击可放大查看。

06 / 实现细节

01

插入

按姓名、年龄、电话、住址顺序采集一条联系人记录,并加入通讯录。

02

浏览与排序

提供按年龄升序或降序排序,再遍历链表输出联系人。

03

查询

以姓名或电话号码定位目标联系人,供后续确认与操作复用。

04

修改

查询到目标记录并确认无误后,更新联系人信息。

05

删除

查询到目标记录并确认无误后,执行删除。

06

本地文件保存

联系人信息写入本地文件;报告记录程序重新进入后仍可查看已保存信息。

Search→Verify→Modify / Delete

07 / 我的工作

01

从题目要求拆分菜单与功能范围

02

设计联系人字段,并以结构体和链表组织记录

03

实现新增、浏览、查询、修改、删除与年龄排序

04

实现本地文件保存,调试完整程序流程,并编写课程设计报告与运行说明

08 / 现在回看

这个项目最大的价值不在技术复杂度,而在于我第一次完整经历了需求拆解、数据结构选择、功能实现、调试、持久化与结果验证的全过程。

报告也诚实记录了局限:代码不够简练,部分功能存在重复代码,当时尚未充分掌握更复杂的数据结构。若今天重新实现,我会进一步拆分数据访问与业务逻辑、减少重复代码,并增加更系统的输入校验——这些是今天对 2021 年工作所做的反思,而非当时已经实现的能力。

下一个案例

模型路由研究

↗