用c语言写一个学生成绩管理系统,分模块写,分别放到main.c文件和stusys.h头文件中

时间: 2024-03-26 19:39:04 浏览: 16
好的,我可以帮你写一个学生成绩管理系统的程序,以下是我根据你的要求所写的代码: ``` // stusys.h 头文件 #ifndef _STUSYS_H_ #define _STUSYS_H_ typedef struct Student { char name[20]; int id; int score; } Student; void addStudent(Student *students, int *numStudents); void delStudent(Student *students, int *numStudents); void modifyStudent(Student *students, int numStudents); void searchStudent(Student *students, int numStudents); void sortStudents(Student *students, int numStudents); #endif // main.c 文件 #include <stdio.h> #include <stdlib.h> #include "stusys.h" #define MAX_STUDENTS 100 int main() { Student students[MAX_STUDENTS]; int numStudents = 0; int choice; do { printf("请选择操作:\n"); printf("1. 添加学生\n"); printf("2. 删除学生\n"); printf("3. 修改学生\n"); printf("4. 查找学生\n"); printf("5. 排序学生\n"); printf("6. 退出程序\n"); printf("请选择:"); scanf("%d", &choice); switch (choice) { case 1: addStudent(students, &numStudents); break; case 2: delStudent(students, &numStudents); break; case 3: modifyStudent(students, numStudents); break; case 4: searchStudent(students, numStudents); break; case 5: sortStudents(students, numStudents); break; case 6: printf("程序已退出\n"); break; default: printf("无效的选项,请重新选择\n"); break; } } while (choice != 6); return 0; } // stusys.c 文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "stusys.h" void addStudent(Student *students, int *numStudents) { if (*numStudents == MAX_STUDENTS) { printf("学生数量已达到上限,无法添加\n"); return; } Student newStudent; printf("请输入学生姓名:"); scanf("%s", newStudent.name); printf("请输入学生学号:"); scanf("%d", &newStudent.id); printf("请输入学生分数:"); scanf("%d", &newStudent.score); students[*numStudents] = newStudent; (*numStudents)++; printf("添加成功\n"); } void delStudent(Student *students, int *numStudents) { int idToDelete; printf("请输入要删除的学生学号:"); scanf("%d", &idToDelete); int indexToDelete = -1; for (int i = 0; i < *numStudents; i++) { if (students[i].id == idToDelete) { indexToDelete = i; break; } } if (indexToDelete == -1) { printf("找不到学号为 %d 的学生\n", idToDelete); return; } for (int i = indexToDelete; i < *numStudents - 1; i++) { students[i] = students[i + 1]; } (*numStudents)--; printf("删除成功\n"); } void modifyStudent(Student *students, int numStudents) { int idToModify; printf("请输入要修改的学生学号:"); scanf("%d", &idToModify); int indexToModify = -1; for (int i = 0; i < numStudents; i++) { if (students[i].id == idToModify) { indexToModify = i; break; } } if (indexToModify == -1) { printf("找不到学号为 %d 的学生\n", idToModify); return; } printf("请输入修改后的学生姓名:"); scanf("%s", students[indexToModify].name); printf("请输入修改后的学生分数:"); scanf("%d", &students[indexToModify].score); printf("修改成功\n"); } void searchStudent(Student *students, int numStudents) { int choice; printf("请选择查找方式:\n"); printf("1. 按姓名查找\n"); printf("2. 按学号查找\n"); printf("请选择:"); scanf("%d", &choice); switch (choice) { case 1: char nameToSearch[20]; printf("请输入要查找的学生姓名:"); scanf("%s", nameToSearch); for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].name, nameToSearch) == 0) { printf("学生姓名:%s,学号:%d,分数:%d\n", students[i].name, students[i].id, students[i].score); } } break; case 2: int idToSearch; printf("请输入要查找的学生学号:"); scanf("%d", &idToSearch); for (int i = 0; i < numStudents; i++) { if (students[i].id == idToSearch) { printf("学生姓名:%s,学号:%d,分数:%d\n", students[i].name, students[i].id, students[i].score); break; } } break; default: printf("无效的选项,请重新选择\n"); break; } } void sortStudents(Student *students, int numStudents) { for (int i = 0; i < numStudents - 1; i++) { for (int j = i + 1; j < numStudents; j++) { if (students[i].score < students[j].score) { Student temp = students[i]; students[i] = students[j]; students[j] = temp; } } } printf("排序成功\n"); } ``` 这样,你就可以把 `stusys.h` 和 `stusys.c` 文件放在同一个目录下,然后在 `main.c` 文件中包含 `stusys.h` 头文件,并调用其提供的函数来管理学生信息了。注意,以上代码只是一个示例,具体实现根据你的需求可能需要进行修改。

相关推荐

最新推荐

recommend-type

Keil 中头文件INTRINS.H的作用

在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便.
recommend-type

单片机中用c编程时头文件reg51.h及reg52.h解析

我们在用c语言编程是往往第一行就是reg51.h或者其他的自定义头文件,我们怎么样来理解呢?
recommend-type

51单片机头文件reg51.h详解

我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的...
recommend-type

C++中头文件和源文件详细介绍

主要介绍了C++中头文件和源文件详细介绍的相关资料,需要的朋友可以参考下
recommend-type

埃森哲制药企业数字化转型项目顶层规划方案glq.pptx

埃森哲制药企业数字化转型项目顶层规划方案glq.pptx
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的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。