。统计,让老师们轻松直观的看到学生成绩的情况。本实验要求用C语言编写一个学生成绩管理系统,利用顺序表实现对成绩信息的添加、查询、修改、统计等功能。二、基本要求 1.采用顺序存储结构建立学生成绩表。 2.设计输入模块,完成对学生成绩的录入。 3.设计函数,实现对成绩信息的查询、修改、统计等功能。 4.设计菜单函数,完成对相关功能模块的调用。 5.运用文件操作将数据保存到存储磁盘文件中。运用文件操作将数据保存到存储磁盘文件中。

时间: 2023-06-15 11:08:34 浏览: 43
三、具体实现 1. 采用结构体存储学生信息和成绩信息: ```c typedef struct { char name[20]; // 学生姓名 int num; // 学生学号 float score; // 学生成绩 } Student; ``` 2. 采用一维数组存储学生成绩信息: ```c #define MAXSIZE 100 // 学生成绩表最大容量 Student stu[MAXSIZE]; // 学生成绩表 int len = 0; // 学生成绩表当前长度 ``` 3. 设计输入模块,完成对学生成绩的录入: ```c void input() { printf("请输入学生姓名:"); scanf("%s", stu[len].name); printf("请输入学生学号:"); scanf("%d", &stu[len].num); printf("请输入学生成绩:"); scanf("%f", &stu[len].score); len++; printf("录入成功!\n"); } ``` 4. 设计查询函数,实现对成绩信息的查询: ```c void search() { int num; printf("请输入要查询的学生学号:"); scanf("%d", &num); for (int i = 0; i < len; i++) { if (stu[i].num == num) { printf("姓名:%s 学号:%d 成绩:%.2f\n", stu[i].name, stu[i].num, stu[i].score); return; } } printf("找不到该学生!\n"); } ``` 5. 设计修改函数,实现对成绩信息的修改: ```c void modify() { int num; printf("请输入要修改信息的学生学号:"); scanf("%d", &num); for (int i = 0; i < len; i++) { if (stu[i].num == num) { printf("请输入修改后的学生姓名:"); scanf("%s", stu[i].name); printf("请输入修改后的学生成绩:"); scanf("%f", &stu[i].score); printf("修改成功!\n"); return; } } printf("找不到该学生!\n"); } ``` 6. 设计统计函数,实现对成绩信息的统计: ```c void statistics() { float sum = 0; for (int i = 0; i < len; i++) { sum += stu[i].score; } printf("学生人数:%d 平均成绩:%.2f\n", len, sum / len); } ``` 7. 设计菜单函数,完成对相关功能模块的调用: ```c void menu() { printf("\n"); printf("**********学生成绩管理系统**********\n"); printf("* *\n"); printf("* 1. 录入成绩 *\n"); printf("* 2. 查询成绩 *\n"); printf("* 3. 修改成绩 *\n"); printf("* 4. 统计成绩 *\n"); printf("* 5. 退出系统 *\n"); printf("* *\n"); printf("************************************\n"); printf("\n"); printf("请输入数字选择功能:"); } ``` 8. 运用文件操作将数据保存到存储磁盘文件中: ```c void save() { FILE *fp; fp = fopen("score.txt", "w"); for (int i = 0; i < len; i++) { fprintf(fp, "%s %d %.2f\n", stu[i].name, stu[i].num, stu[i].score); } fclose(fp); printf("数据已保存到文件!\n"); } void load() { FILE *fp; fp = fopen("score.txt", "r"); while (fscanf(fp, "%s %d %f\n", stu[len].name, &stu[len].num, &stu[len].score) != EOF) { len++; } fclose(fp); printf("数据已从文件中读取!\n"); } ``` 四、完整代码 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char name[20]; // 学生姓名 int num; // 学生学号 float score; // 学生成绩 } Student; #define MAXSIZE 100 // 学生成绩表最大容量 Student stu[MAXSIZE]; // 学生成绩表 int len = 0; // 学生成绩表当前长度 void input() { printf("请输入学生姓名:"); scanf("%s", stu[len].name); printf("请输入学生学号:"); scanf("%d", &stu[len].num); printf("请输入学生成绩:"); scanf("%f", &stu[len].score); len++; printf("录入成功!\n"); } void search() { int num; printf("请输入要查询的学生学号:"); scanf("%d", &num); for (int i = 0; i < len; i++) { if (stu[i].num == num) { printf("姓名:%s 学号:%d 成绩:%.2f\n", stu[i].name, stu[i].num, stu[i].score); return; } } printf("找不到该学生!\n"); } void modify() { int num; printf("请输入要修改信息的学生学号:"); scanf("%d", &num); for (int i = 0; i < len; i++) { if (stu[i].num == num) { printf("请输入修改后的学生姓名:"); scanf("%s", stu[i].name); printf("请输入修改后的学生成绩:"); scanf("%f", &stu[i].score); printf("修改成功!\n"); return; } } printf("找不到该学生!\n"); } void statistics() { float sum = 0; for (int i = 0; i < len; i++) { sum += stu[i].score; } printf("学生人数:%d 平均成绩:%.2f\n", len, sum / len); } void menu() { printf("\n"); printf("**********学生成绩管理系统**********\n"); printf("* *\n"); printf("* 1. 录入成绩 *\n"); printf("* 2. 查询成绩 *\n"); printf("* 3. 修改成绩 *\n"); printf("* 4. 统计成绩 *\n"); printf("* 5. 退出系统 *\n"); printf("* *\n"); printf("************************************\n"); printf("\n"); printf("请输入数字选择功能:"); } void save() { FILE *fp; fp = fopen("score.txt", "w"); for (int i = 0; i < len; i++) { fprintf(fp, "%s %d %.2f\n", stu[i].name, stu[i].num, stu[i].score); } fclose(fp); printf("数据已保存到文件!\n"); } void load() { FILE *fp; fp = fopen("score.txt", "r"); while (fscanf(fp, "%s %d %f\n", stu[len].name, &stu[len].num, &stu[len].score) != EOF) { len++; } fclose(fp); printf("数据已从文件中读取!\n"); } int main() { int choice; load(); while (1) { menu(); scanf("%d", &choice); switch (choice) { case 1: input(); break; case 2: search(); break; case 3: modify(); break; case 4: statistics(); break; case 5: save(); printf("谢谢使用!\n"); exit(0); default: printf("输入有误,请重新输入!\n"); break; } } return 0; } ```

相关推荐

最新推荐

recommend-type

学生成绩管理系统(数据结构)实验报告.docx

期末实践周必备(数据结构)学生成绩管理系统,基于C语言完成的,百分百作者原创,资源保证!
recommend-type

c语言作业——学生成绩统计.docx

(3)统计学生成绩分布情况(每个分数段人数); (4)查找最高分、最低分;计算学生成绩均值和方差;并输出这四个结果; (5)判断成绩是否服从正态分布; (6)统计不同生源地学生的平均成绩,按平均成绩排序,并...
recommend-type

C语言程序设计实现学生成绩记录簿

通过编写c语言《学生成绩记录簿系统》让我知道所学的编程语言是需要多练多编写代码锻炼出来的。 1)C语言课程设计的主要目的是培养学生综合运用C语言程序设计课程所学到的知识,编写C程序解决实际问题的能力,以及...
recommend-type

C语言实现简单学生学籍管理系统

主要为大家详细介绍了C语言实现简单学生学籍管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现简单学生选课管理系统

主要为大家详细介绍了C语言实现简单学生选课管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。