### 成绩管理系统的知识点解析 #### 一、系统概述 本成绩管理系统主要通过文件操作来实现成绩的输入、查询及统计等功能。系统采用C语言编写,面向学生群体提供了一个便捷的成绩管理工具。用户可以通过简单的菜单选择不同的功能进行操作,包括成绩录入、成绩查询以及成绩统计等。 #### 二、系统结构与功能 该系统主要包括三个核心功能模块:成绩录入(`input()`)、成绩查询(`query()`)和成绩统计(`statistic()`)。这些功能均通过文件读写操作来完成数据的存储与处理。 #### 三、关键代码分析 ##### 1. 数据结构定义 - **成绩结构体**:定义了学生的各项成绩。 ```c struct degree { int english; // 英语成绩 int math1; // 数学一成绩 int math2; // 数学二成绩 int Clanguage; // C语言成绩 }; ``` - **学生结构体**:包含姓名和成绩结构体。 ```c struct student { char name[10]; // 学生姓名 struct degree deg; // 成绩 }; ``` ##### 2. 主函数逻辑 - 程序启动后会显示一个欢迎界面,并提示用户输入数字选择不同的功能。 - 使用`while`循环来接收用户的输入,并根据输入调用相应的功能函数。 - 输入功能(`input()`):负责录入学生的成绩数据。 - 查询功能(`query()`):允许用户根据姓名查询成绩。 - 统计功能(`statistic()`):计算并展示所有学生的平均成绩等统计数据。 ##### 3. 文件操作 - **成绩录入**:将学生姓名和成绩写入文件。 ```c void input() { FILE *fp; int n = 0; fp = fopen("d:\\in.txt", "w"); // 打开文件用于写入 do { scanf("%s", stu[n].name); // 读取学生姓名 if (stu[n].name[0] == '!') break; // 退出条件 scanf("%3d%3d%3d%3d", &stu[n].deg.english, &stu[n].deg.math1, &stu[n].deg.math2, &stu[n].deg.Clanguage); // 读取成绩 fprintf(fp, "%3s%3d%3d%3d%3d\n", stu[n].name, stu[n].deg.english, stu[n].deg.math1, stu[n].deg.math2, stu[n].deg.Clanguage); // 写入文件 n++; // 记录学生数量 } while (1); fclose(fp); // 关闭文件 } ``` - **成绩查询**:从文件中读取数据,根据姓名查找成绩。 ```c void query() { FILE *fp1; char name1[8]; int i = 0; bool bFlag = false; fp1 = fopen("d:\\in.txt", "r"); // 打开文件用于读取 while (1) { bFlag = false; scanf("%s", name1); // 读取查询的姓名 if (name1[0] == '!') break; // 退出条件 while (!feof(fp1)) { // 未到达文件末尾 fscanf(fp1, "%s%d%d%d%d\n", S); // 读取一行数据 if (strcmp(stu[i].name, name1) == 0) { // 比较姓名 printf("\t:%s學英文:%d數學一:%d數學二:%dC語言:%d\n", M); // 输出成绩 bFlag = true; } } i++; if (!bFlag) printf("\n\t没有找到该同学的成绩。\n"); } fclose(fp1); // 关闭文件 } ``` - **成绩统计**:读取文件中的所有数据,计算平均分。 ```c void statistic() { int i = 0, n = 0; float sum1 = 0, avr1 = 0, avr, sum; FILE *fp; fp = fopen("d:\\in.txt", "r"); // 打开文件用于读取 while (!feof(fp)) { // 未到达文件末尾 fscanf(fp, "%s%d%d%d%d\n", S); // 读取一行数据 sum1 += stu[i].deg.english + stu[i].deg.math1 + stu[i].deg.math2 + stu[i].deg.Clanguage; // 计算总分 n++; // 记录学生数量 } fclose(fp); // 关闭文件 avr = sum1 / (n * 4); // 计算平均分 printf("平均分:%f\n", avr); // 输出结果 } ``` #### 四、总结 此成绩管理系统通过C语言实现了基本的数据录入、查询和统计功能。程序利用文件读写技术将数据持久化存储,方便了用户对成绩信息的操作和管理。通过对以上代码的分析,我们可以了解到C语言在文件操作方面的一些基础知识,如文件的打开与关闭、读取与写入等。此外,该系统也展示了如何通过结构体来组织和处理复杂的数据类型。
















#include<string.h>
#include<stdio.h>
#define M stu[i].name,stu[i].deg.english,stu[i].deg.math1,stu[i].deg.math2,stu[i].deg.Clanguage
#define S stu[i].name,&stu[i].deg.english,&stu[i].deg.math1,&stu[i].deg.math2,&stu[i].deg.Clanguage
void input();
void query();
void statistic();
struct degree
{
int english;
int math2;
int math1;
int Clanguage;
};
struct student
{
char name[10];
struct degree deg;
};
struct student stu[50];
void main()
{
int p;
while(1)
{
printf("\n\n\n 欢迎使用学生成绩查询系统");
printf("\n\n\n 作者:john2522\n");


- 粉丝: 115
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 互联网监管与网络道德建设5.doc
- 大数据时代高校图书馆新型智能管理服务平台构建探究.docx
- 第1章计算机工具软件基础知识.ppt
- 春秋福师《JAVA程序设计》在线作业一.doc
- GPU计算加速大数据分析.pdf
- 计算机网络谢希仁第六版课后习题答案.doc
- (源码)基于嵌入式系统的SRAM故障检测项目.zip
- 单片机的逆变电源系统设计.doc
- 中小学骨干教师高级研修网络培训学习心得体会.doc
- 天津农产品交易现状及电子商务平台运营概述.doc
- K市政公用工程项目管理施工管理.doc
- 互联网企业全链路解决方案.pdf
- 自考数据库系统原理关系模式设计理论课后习题答案.doc
- 人工智能时代计算机信息安全与防护策略探讨.docx
- PLC控制矿井副井提升系统设计方案.doc
- 刻字机软件安装与设置.doc


