用C语言编写可以实现学生成绩简单管理系统。本系统主要实现以下功能: (1)录入学生信息。 (2)按学号查询学生信息。 (3)按姓名查询学生信息。 (4)添加一个学生信息。 (5)按学号删除学生信息 (6)按学号修改学生信息 (7)显示所有学生信息 (8)按课程排序(有高到底)输出显示学生信息 (9)按分数段统计学生信息 (10)退出系统

时间: 2023-12-01 16:02:46 浏览: 55
以下是一个简单的学生成绩管理系统的实现代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STU_NUM 100 #define MAX_NAME_LEN 20 #define MAX_COURSE_NUM 5 typedef struct { int id; // 学号 char name[MAX_NAME_LEN]; // 姓名 int scores[MAX_COURSE_NUM]; // 课程成绩 int total_score; // 总成绩 } Student; Student stu_list[MAX_STU_NUM]; int stu_num = 0; void clear_input_buffer() { char c; while ((c = getchar()) != '\n' && c != EOF); } void add_student() { if (stu_num >= MAX_STU_NUM) { printf("学生数量已达到上限,无法添加\n"); return; } Student new_stu; printf("请输入学号:"); scanf("%d", &new_stu.id); clear_input_buffer(); for (int i = 0; i < stu_num; i++) { if (stu_list[i].id == new_stu.id) { printf("学号已存在,请重新输入\n"); return; } } printf("请输入姓名:"); fgets(new_stu.name, MAX_NAME_LEN, stdin); for (int i = 0; i < MAX_COURSE_NUM; i++) { printf("请输入第%d门课程成绩:", i + 1); scanf("%d", &new_stu.scores[i]); new_stu.total_score += new_stu.scores[i]; } stu_list[stu_num] = new_stu; stu_num++; printf("添加成功\n"); } void print_student(Student stu) { printf("学号:%d,姓名:%s,", stu.id, stu.name); printf("课程成绩:%d", stu.scores[0]); for (int i = 1; i < MAX_COURSE_NUM; i++) { printf(", %d", stu.scores[i]); } printf(",总成绩:%d\n", stu.total_score); } void query_student_by_id() { int id; printf("请输入要查询的学号:"); scanf("%d", &id); clear_input_buffer(); for (int i = 0; i < stu_num; i++) { if (stu_list[i].id == id) { print_student(stu_list[i]); return; } } printf("未找到该学生\n"); } void query_student_by_name() { char name[MAX_NAME_LEN]; printf("请输入要查询的姓名:"); fgets(name, MAX_NAME_LEN, stdin); for (int i = 0; i < stu_num; i++) { if (strcmp(stu_list[i].name, name) == 0) { print_student(stu_list[i]); return; } } printf("未找到该学生\n"); } void delete_student_by_id() { int id; printf("请输入要删除的学号:"); scanf("%d", &id); clear_input_buffer(); for (int i = 0; i < stu_num; i++) { if (stu_list[i].id == id) { for (int j = i; j < stu_num - 1; j++) { stu_list[j] = stu_list[j + 1]; } stu_num--; printf("删除成功\n"); return; } } printf("未找到该学生\n"); } void modify_student_by_id() { int id; printf("请输入要修改的学号:"); scanf("%d", &id); clear_input_buffer(); for (int i = 0; i < stu_num; i++) { if (stu_list[i].id == id) { printf("请输入新的姓名:"); fgets(stu_list[i].name, MAX_NAME_LEN, stdin); for (int j = 0; j < MAX_COURSE_NUM; j++) { printf("请输入第%d门课程成绩:", j + 1); scanf("%d", &stu_list[i].scores[j]); stu_list[i].total_score += stu_list[i].scores[j]; } printf("修改成功\n"); return; } } printf("未找到该学生\n"); } void sort_students_by_score() { for (int i = 0; i < stu_num - 1; i++) { for (int j = i + 1; j < stu_num; j++) { if (stu_list[i].total_score < stu_list[j].total_score) { Student tmp = stu_list[i]; stu_list[i] = stu_list[j]; stu_list[j] = tmp; } } } printf("排序成功\n"); } void count_students_by_score() { int score_min, score_max; printf("请输入统计分数段的最小值和最大值:"); scanf("%d %d", &score_min, &score_max); clear_input_buffer(); int count = 0; for (int i = 0; i < stu_num; i++) { if (stu_list[i].total_score >= score_min && stu_list[i].total_score <= score_max) { count++; } } printf("分数段%d-%d的学生人数为%d\n", score_min, score_max, count); } void print_menu() { printf("\n"); printf("请选择操作:\n"); printf("1. 录入学生信息\n"); printf("2. 按学号查询学生信息\n"); printf("3. 按姓名查询学生信息\n"); printf("4. 添加一个学生信息\n"); printf("5. 按学号删除学生信息\n"); printf("6. 按学号修改学生信息\n"); printf("7. 显示所有学生信息\n"); printf("8. 按课程排序输出所有学生信息\n"); printf("9. 按分数段统计学生信息\n"); printf("10. 退出系统\n"); } int main() { int choice; while (1) { print_menu(); scanf("%d", &choice); clear_input_buffer(); switch (choice) { case 1: add_student(); break; case 2: query_student_by_id(); break; case 3: query_student_by_name(); break; case 4: add_student(); break; case 5: delete_student_by_id(); break; case 6: modify_student_by_id(); break; case 7: for (int i = 0; i < stu_num; i++) { print_student(stu_list[i]); } break; case 8: sort_students_by_score(); for (int i = 0; i < stu_num; i++) { print_student(stu_list[i]); } break; case 9: count_students_by_score(); break; case 10: exit(0); default: printf("请输入正确的选项\n"); break; } } return 0; } ``` 该程序使用结构体存储学生信息,通过数组来管理多个学生的信息。程序提供了一系列操作,如录入学生信息、查询学生信息、添加学生信息、删除学生信息、修改学生信息、显示所有学生信息、按课程排序输出所有学生信息和按分数段统计学生信息等。用户可以根据自己的需要进行选择。

相关推荐

最新推荐

recommend-type

基于SpringBoot框架的中小企业完全开源的ERP.zip

基于springboot的java毕业&课程设计
recommend-type

基于Springboot的健身信息系统.zip

基于springboot的java毕业&课程设计
recommend-type

基于vue + springboot的学生成绩管理系统.zip

基于springboot的java毕业&课程设计
recommend-type

基于卷积神经网络的语义分割

基于卷积神经网络的语义分割卷积神经网络(Convolutional Neural Networks, CNNs 或 ConvNets)是一类深度神经网络,特别擅长处理图像相关的机器学习和深度学习任务。它们的名称来源于网络中使用了一种叫做卷积的数学运算。以下是卷积神经网络的一些关键组件和特性: 卷积层(Convolutional Layer): 卷积层是CNN的核心组件。它们通过一组可学习的滤波器(或称为卷积核、卷积器)在输入图像(或上一层的输出特征图)上滑动来工作。 滤波器和图像之间的卷积操作生成输出特征图,该特征图反映了滤波器所捕捉的局部图像特性(如边缘、角点等)。 通过使用多个滤波器,卷积层可以提取输入图像中的多种特征。 激活函数(Activation Function): 在卷积操作之后,通常会应用一个激活函数(如ReLU、Sigmoid或tanh)来增加网络的非线性。 池化层(Pooling Layer): 池化层通常位于卷积层之后,用于降低特征图的维度(空间尺寸),减少计算量和参数数量,同时保持特征的空间层次结构。 常见的池化操作包括最大池化(Max Pooling)和平均
recommend-type

track-map_android-master.zip

track-map_android-master
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

SQL怎么实现 数据透视表

SQL可以通过使用聚合函数和GROUP BY子句来实现数据透视表。 例如,假设有一个销售记录表,其中包含产品名称、销售日期、销售数量和销售额等信息。要创建一个按照产品名称、销售日期和销售额进行汇总的数据透视表,可以使用以下SQL语句: ``` SELECT ProductName, SaleDate, SUM(SaleQuantity) AS TotalQuantity, SUM(SaleAmount) AS TotalAmount FROM Sales GROUP BY ProductName, SaleDate; ``` 该语句将Sales表按照ProductName和SaleDat
recommend-type

JSBSim Reference Manual

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