基于 C 语言的人事管理系统设计与实现链表 文件存储一、前言管理系统的教科书叙事往往从数据库开始但回到 C 语言的世界「管理系统」是这样一种形态struct 描述实体、链表组织数据、fprintf/fscanf 负责持久化一个几百行的单文件程序跑在控制台里却能完整地做完整套增删改查与统计。理解了这种「原始形态」再看今天任何一个带数据库的管理系统都会通透很多——这正是 C 语言课程设计的经典题材。本文拆解的这套人事管理系统以高校教师人事管理为业务背景管理教师的编号、姓名、性别、出生日期、参加工作时间、工资、学院、职称助教到教授、学位学士到博士九项信息提供创建、增加、阅读、删除、修改、五维查找和结构统计七个功能单链表组织数据、纯文本文件持久化全部代码只有一个 400 余行的 C 文件。二、总体结构与数据设计项说明结构单文件 personnel.c约 420 行8 个核心函数数据组织struct teacher 单链表typedef TE含嵌套 struct date持久化number.dat人数 teacher.dat每行一条记录11 字段空格分隔编译任意 C 编译器gcc / VC6 / Dev-C / tcc 均可无第三方依赖运行控制台菜单交互1创建 2增加 3阅读 4删除 5修改 6查找 7统计实现上有三个值得品味的细节链表即数据库。creat/add/del/modify 全部围绕单链表的头插、摘除、遍历展开增改后调用 array() 按编号冒泡排序再 save() 全量回写文本文件——用最朴素的方式演示了「内存数据结构 ↔ 文件持久化」的双向同步。文本协议自描述。teacher.dat 每行一条记录、空格分隔 11 个字段记事本可直接打开核对scanf/fscanf 的格式串就是它的「schema」。查找五维度。find() 支持按编号、姓名、参加工作时间、学院、职称五种条件其中时间和学院条件用「遍历全表多条命中」是链表遍历两种典型模式的对照。三、功能设计档案维护创建教师信息批量录入编号 0 结束增加教师追加记录并按编号排序落盘修改教师按编号定位逐项更新删除教师按编号摘除节点并回写文件。查询与统计阅读全部表格化输出所有教师记录五维查找编号 / 姓名 / 参加工作时间 / 学院 / 职称结构统计80 后教师比例、职称分布助教/讲师/副教授/教授、学位分布学士/硕士/博士、平均工资。四、存储设计number.dat 内容形如3 teacher.dat 内容形如每行一条GBK/ANSI 编码 1001 张伟 男 2001 05 12 20230701 8500 计算机学院 讲师 硕士 1002 李娜 女 2000 08 03 20230701 9000 软件学院 讲师 硕士 2001 王芳 女 1999 03 22 20230701 9500 计算机学院 副教授 博士人数与记录分文件存储read() 先读人数再按行解析避免遍历到文件尾的空行。数据文件与 exe 同目录备份复制两个文本文件迁移零成本。五、系统演示实际运行截图列出全部教师3 条记录、按姓名查找「李娜」、结构统计80 后比例 / 职称 / 学位 / 平均工资原始版本存在两处小缺陷随包源码已修复一是 print 输出工资与参加工作时间时误加了取址符打印的是地址值而非数值二是 printf 格式串中% s的笔误。修复说明已写入源码文件头注释。六、小结这套代码是「用 400 行讲完管理系统全貌」的典型样本链表增删改查、文件读写、排序、多维查找、统计聚合每个知识点都落在真实功能上。作为 C 语言课程设计的参考它体量适中、结构分明想往上加东西也很自然——比如把文本存储换成 SQLite C 接口、给教师加照片路径字段、或者加一个简单的口令登录。完整资源已整理上传含修复版源码、演示数据文件与编译说明人事管理系统源码C 语言链表文件存储版如果在实现类似系统时遇到问题欢迎评论区交流。
