请你用C语言写一个学生信息管理的程序,功能包括查询、删除、冒泡排序、添加并注释每一行代码
时间: 2023-05-31 08:03:37 浏览: 92
c语言 班级学生成绩管理
/* 学生信息管理程序 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 定义学生结构体 */
struct student {
char name[20]; /* 姓名 */
int age; /* 年龄 */
int score; /* 分数 */
};
/* 定义全局变量 */
struct student stu[100]; /* 学生数组 */
int count = 0; /* 学生数量 */
/* 函数声明 */
void add_student(); /* 添加学生信息 */
void delete_student(); /* 删除学生信息 */
void search_student(); /* 查询学生信息 */
void sort_student(); /* 按分数升序排序学生信息 */
int main() {
int choice; /* 用户选择 */
/* 无限循环,直到用户选择退出 */
while (1) {
/* 显示菜单 */
printf("\n---------------------------------\n");
printf(" 学生信息管理系统 \n");
printf("---------------------------------\n");
printf(" 1. 添加学生信息\n");
printf(" 2. 删除学生信息\n");
printf(" 3. 查询学生信息\n");
printf(" 4. 排序学生信息\n");
printf(" 5. 退出程序\n");
printf("---------------------------------\n");
printf("请输入您的选择:");
/* 读取用户的选择 */
scanf("%d", &choice);
/* 根据用户的选择调用相应的函数 */
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
search_student();
break;
case 4:
sort_student();
break;
case 5:
printf("谢谢使用,再见!\n");
exit(0);
default:
printf("输入错误,请重新输入!\n");
break;
}
}
return 0;
}
/* 添加学生信息 */
void add_student() {
/* 判断数组是否已满 */
if (count >= 100) {
printf("已经达到数组上限,无法添加!\n");
return;
}
/* 读取学生姓名、年龄、分数 */
printf("请输入学生姓名:");
scanf("%s", stu[count].name);
printf("请输入学生年龄:");
scanf("%d", &stu[count].age);
printf("请输入学生分数:");
scanf("%d", &stu[count].score);
/* 增加学生数量 */
count++;
printf("添加成功!\n");
}
/* 删除学生信息 */
void delete_student() {
char name[20]; /* 要删除的学生姓名 */
int i, j; /* 循环计数器 */
int flag = 0; /* 标记是否找到要删除的学生 */
/* 读取要删除的学生姓名 */
printf("请输入要删除的学生姓名:");
scanf("%s", name);
/* 在数组中查找要删除的学生 */
for (i = 0; i < count; i++) {
/* 如果找到要删除的学生 */
if (strcmp(stu[i].name, name) == 0) {
/* 将后面的学生向前移动 */
for (j = i; j < count - 1; j++) {
strcpy(stu[j].name, stu[j + 1].name);
stu[j].age = stu[j + 1].age;
stu[j].score = stu[j + 1].score;
}
/* 减少学生数量 */
count--;
/* 标记已经找到要删除的学生 */
flag = 1;
printf("删除成功!\n");
break;
}
}
/* 如果没有找到要删除的学生 */
if (flag == 0) {
printf("没有找到要删除的学生!\n");
}
}
/* 查询学生信息 */
void search_student() {
char name[20]; /* 要查询的学生姓名 */
int i; /* 循环计数器 */
int flag = 0; /* 标记是否找到要查询的学生 */
/* 读取要查询的学生姓名 */
printf("请输入要查询的学生姓名:");
scanf("%s", name);
/* 在数组中查找要查询的学生 */
for (i = 0; i < count; i++) {
/* 如果找到要查询的学生 */
if (strcmp(stu[i].name, name) == 0) {
/* 显示学生信息 */
printf("姓名:%s\n", stu[i].name);
printf("年龄:%d\n", stu[i].age);
printf("分数:%d\n", stu[i].score);
/* 标记已经找到要查询的学生 */
flag = 1;
break;
}
}
/* 如果没有找到要查询的学生 */
if (flag == 0) {
printf("没有找到要查询的学生!\n");
}
}
/* 按分数升序排序学生信息 */
void sort_student() {
int i, j; /* 循环计数器 */
struct student temp; /* 临时变量 */
/* 冒泡排序 */
for (i = 0; i < count - 1; i++) {
for (j = 0; j < count - i - 1; j++) {
if (stu[j].score > stu[j + 1].score) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
/* 显示排序后的学生信息 */
printf("排序后的学生信息:\n");
for (i = 0; i < count; i++) {
printf("姓名:%s\n", stu[i].name);
printf("年龄:%d\n", stu[i].age);
printf("分数:%d\n", stu[i].score);
}
}
阅读全文