Skip to content

yejin-cs/Student-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

小型教务管理系统

基于 C 语言的教务管理系统,采用链表数据结构实现学生信息的增删改查、成绩统计与多算法排序。

功能概览

信息维护

  • 增加学生信息(学号查重校验)
  • 按姓名 / 学号删除学生
  • 按姓名 / 学号修改学生信息(支持修改学号、姓名、各科成绩)
  • 显示全部学生信息(Unicode 表格输出)

信息查询

  • 按姓名精确查询,输出学生详情卡片
  • 按学号精确查询,输出学生详情卡片

成绩统计

  • 输入任意课程名和分数区间,筛选并展示符合条件的学生
  • 自动计算区间内的总分、平均分、最高分、最低分

排序

  • 升序排序 — 冒泡排序(链表节点交换,非值交换)
  • 降序排序 — 归并排序(递归分治)
  • 支持按任意课程名排序,排序后即时展示结果

技术实现

模块 实现方式
数据结构 带头节点的单链表(全局头尾指针)
数据持久化 文本文件读写(students.txt
升序排序 冒泡排序(链表节点交换)
降序排序 归并排序(递归,快慢指针分割)
终端表格 Unicode Box Drawing 字符绘制
中文对齐 UTF-8 字节序列解析,按显示宽度填充
输入安全 scanf 宽度限定 + 缓冲区清理

项目结构

小型教务管理系统/
├── 小型教务系统.c      # 完整源代码(单文件实现)
├── students.txt        # 学生数据文件(空格分隔)
└── README.md

数据格式

students.txt 每行存储一条学生记录,字段以空格分隔:

学号 姓名 课程1 成绩1 课程2 成绩2 课程3 成绩3

示例:

2021001 张伟 语文 85.000000 数学 92.000000 英语 78.000000
2021002 李娜 语文 76.000000 数学 88.000000 英语 91.000000

构建与运行

环境要求

  • Windows 操作系统
  • GCC 编译器(MinGW / MSYS2)或 MSVC
  • 终端需支持 UTF-8 编码(程序已通过 SetConsoleOutputCP(65001) 设置)

编译

gcc -o 小型教务系统.exe 小型教务系统.c -Wall

运行

./小型教务系统.exe

首次运行时,若目录下不存在 students.txt,系统将从空数据启动;退出时自动保存。

核心算法说明

冒泡排序(升序)

对链表执行冒泡排序,通过交换节点指针(而非节点值)实现排序,设置 swapped 标记进行提前终止优化。

归并排序(降序)

采用快慢指针定位链表中点,递归拆分后按降序合并。时间复杂度 O(n log n),适合链表结构的高效排序。

About

C语言课程设计——教务管理系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages