用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` 头文件,并调用其提供的函数来管理学生信息了。注意,以上代码只是一个示例,具体实现根据你的需求可能需要进行修改。