C语言实现学生成绩管理系统

1 下载量 176 浏览量 更新于2024-06-22 收藏 74KB DOC 举报
"C语言课程设计学生成绩管理系统(2).doc" 这个文件描述的是一个用C语言实现的学生成绩管理系统,其主要目标是管理和操作学生的信息和成绩数据。系统包括了多个功能模块,如数据初始化、文件操作、增删改查、统计分析以及排序等。 1. **数据结构定义**: - 使用`struct student`定义了一个学生结构体,包含了以下字段: - `char no[11]`: 用于存储10位的学号。 - `char name[10]`: 用于存储最多3个汉字的姓名。 - `float score[5]`: 存储5门功课的成绩。 - `float ave`: 储存学生的平均分。 - `int year`: 记录学生入学年份。 2. **全局变量**: - `#define N100` 定义了最大管理的学生人数为100。 - `struct student stu[N]` 创建了一个大小为N的结构体数组,用于存储学生信息。 3. **函数原型**: - `int panduani(int)`: 该函数接收一个参数i,用于判断输入信息在数据中是否存在。 - `void output()`: 输出所有学生成绩的公共函数。 - `void init()`: 初始化系统,可能用于设置初始数据。 - `void newfile()`: 建立新的数据文件,用于存储学生信息。 - `void read1()`: 从数据文件中读取数据到内存中的结构体数组。 - `void weihu()`: 维护界面,提供用户交互的主菜单。 - `void new1()`: 新增一个学生的成绩信息。 - `void xiugai()`: 修改已有学生的成绩。 - `int xgcj(int)`: 用于修改指定位置的成绩。 - `void delete1()`: 删除一个学生的信息。 - `void tongji()`: 统计界面,提供统计功能。 - `void tongji1()`: 计算每个学生的平均分。 - `void tongji2()`: 计算每门课程的平均分。 - `void paixu1()`: 排序功能。 - `void paino()`: 按学号进行排序。 - `void paiave()`: 按平均分进行排序。 - `void paidkcj()`: 按单科成绩进行排序。 - `void change(int, int)`: 交换结构体数组中的两个记录。 - `void outputx(int)`: 输出特定科目成绩的功能。 - `void find1()`: 查找界面,提供用户查找学生信息的入口。 - `int find(char sno[])`: 按学号查找学生。 - `int findname(char cname[])`: 按姓名查找学生。 - `void findyear(int cyear)`: 按入学年份查找学生。 - `void save()`: 保存当前数据到文件。 - `void stop()`: 停顿函数,等待用户按键继续。 4. **功能实现**: - 系统通过这些函数实现了对学生的各种操作,包括添加新学生、修改学生信息、删除学生、查找学生、排序学生列表以及统计分析成绩等功能。 - 文件操作部分包括了从文件中读取数据到内存,以及将内存中的数据保存回文件,确保数据的持久化存储。 - 排序功能提供了多种排序方式,满足不同的查询和展示需求。 - 查找功能则允许用户根据学号、姓名或入学年份来查找特定学生的信息。 5. **用户交互**: - `void weihu()`函数很可能是整个程序的主循环,它会显示一个菜单供用户选择操作,并根据用户的选择调用相应的函数。 6. **文件操作**: - `newfile()`用于创建新文件,而`read1()`和`save()`函数则处理数据的读取和保存,这些都是文件操作的核心部分。 7. **输入/输出处理**: - 通过`printf`和`getch`等函数与用户进行交互,获取用户输入并显示结果。 通过这个系统,用户可以方便地管理大量的学生信息和成绩数据,提高了数据处理的效率和准确性。
2023-05-29 上传
c. 语言课程设计学生成绩管理系 统 德州学院计算机系课程设计报告纸 目录 ——学生成绩管理程序 题目要求 ··················· 2 设计目的 ··················· 2 整体设计 ··················· 3 详尽设计 ··················· 3 调试与测试 ················· 12 源程序 ··················· 14 总结 ··················· 30 第-2- 页 共36 页 德州学院计算机系课程设计报告纸 学生成绩管理程序 一. 题目要求 1. 问题描绘 : 对在校学生几门课程的考试成绩进行一致管理 . 每个学生记录包含学号 , 姓名 , 年纪 , 数学 , 英语 , 物理成绩 , 默认以学号为序寄存 . 2. 要求 : 1) 一个文件按以班为单位储存学生记录 . 2) 将同意的操作分为四种 , 以 A,B ,C,D,E,F 为标记 : A: 插入一个学生记录 ; B: 改正学生记录 ; C:删除一个学生记录 ; D:查找一个学生记录 ; E: 阅读学生成绩 : F: 退出 3. 计算学生的总成绩 . 4. 按学号排序输出全班学生成绩表 . 二. 设计目的 依据题目要求 , 因为学生信息是寄存在文件中 , 因此应供给文件的输入 , 输出等操作 ; 在程序中需要阅读学生的信息 , 应供给显示 , 查找 , 排序等操作 ; 此外还应供给键盘式选择菜单实现功能选择 . 三. 整体设计 依据上边的需求剖析 , 能够将这个系统分为以下模块 : 输入模块 , 改正模块 , 删除模块 , 查找模块 , 显示模块 . 第-3- 页 共36 页 德州学院计算机系课程设计报告纸 学生成绩管 理系统 数据输数据显数据修数据删数据查 入 示 改 除 找 四. 详尽设计 1. 主函数 : 主函数一般设计得比较简单 , 只供给输入 , 办理和输出部分的函数调用 , 此中各功能模块用菜单方式选择 . 流程图 : 显示一系列功能模 块 N 第-4- 页 共36 页 德州学院计算机系课程设计报告纸 输入 n, 判断 n 能否 是 A--F Y 依据 n 的值调用各功 能模块函数 "[ 程序]: " " " " "//#include "head.h" " " " "int menu_select() " " " "{ " " " " "char c; " " " " "printf("\n\n"); " " " "printf(" " 1."增添学生记录 "5. "统计信息 "\n"); " "printf(" " 2."查问学生记录 "6. "翻开文件 "\n"); " "printf(" " 3."改正学生记录 "7. "保留文件 "\n"); " "printf(" " 4."学生纪录排序 "8. "显示记录 "\n"); " "printf(" " 0."退出系统 "\n"); " " " "printf("\n\n"); " " " "printf(" "请选择 (0-8):"); " " " "c=getchar(); " " " "getchar(); " " " " "return (c-'0'); " " " "} " " " " 2. 输入模块 : [剖析]: 独自看各数据信息 , 学号 , 姓名是字符型 , 能够采纳字符型数组 ; 分数为整数 , 采纳整数 ; 数据信息寄存在文件中 , 一条记录对应一个学生 , 既切合习惯又方便信息管理 . 假如要寄存若干学生信息就用构造体数组 : void addrecord(student stud[]) { 第-5- 页 共36 页 德州学院计算机系课程设计报告纸 int i=0,j,num; char str[5]; if(numstus!=0) { printf(" 已有记录存在能否覆盖 ?(y/n)\n"); gets(str); if(str[0]=='Y'""str[0]=='y') i=0; else i=numstus; } printf(" 请输入增添的学生信息条目数 :"); scanf("%d",&num); if(i==0) numstus=num; else numstus+=num; if(numstus>lens) { lens+=50; pointer=(student *)realloc(pointer,lens*LEN); } printf(" 请输入学生信息 :\n"); for(;i<numstus;i++) { getchar(); printf(" 请输入学号 :"); gets(pointer[i].number); printf("