利用C语言当中的结构体知识,建立学生结构体Stu,对应的属性有id(学号),name(姓名),score(分数)。请输入要执行的操作,包括添加学生信息,添加成功是否要继续添加学生,如继续添加按是,不添加按否;删除学生学号是问是否认真考虑要删除,如需要删除按是,不删除按否;修改学生信息,遍历学生信息,完成以上操作按0推出整个系统。请为这些属性分配好合适的数据类型,并定义一个能容纳50个的Stu结构体数组
时间: 2023-08-08 15:06:52 浏览: 110
C语言利用结构体数组实现学生成绩管理系统.doc
5星 · 资源好评率100%
好的,我来为您编写这段代码。
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
char name[20];
int score;
} Stu;
int main() {
Stu students[50]; // 学生结构体数组
int count = 0; // 学生数量
int choice; // 用户操作选项
do {
printf("\n请选择要执行的操作:\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 遍历学生信息\n");
printf("0. 推出系统\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1: { // 添加学生信息
while (count < 50) { // 数组未满
Stu newStu;
printf("请输入学生学号:");
scanf("%d", &newStu.id);
printf("请输入学生姓名:");
scanf("%s", newStu.name);
printf("请输入学生分数:");
scanf("%d", &newStu.score);
students[count++] = newStu;
char continueAdd;
printf("添加成功,是否继续添加学生?(y/n) ");
scanf(" %c", &continueAdd);
if (continueAdd != 'y' && continueAdd != 'Y') {
break;
}
}
if (count == 50) {
printf("学生信息已满,无法继续添加!\n");
}
break;
}
case 2: { // 删除学生信息
int delId;
printf("请输入要删除的学生学号:");
scanf("%d", &delId);
int delIndex = -1;
for (int i = 0; i < count; i++) {
if (students[i].id == delId) {
delIndex = i;
break;
}
}
if (delIndex == -1) {
printf("未找到该学生!\n");
} else {
char confirm;
printf("是否确认删除该学生信息?(y/n) ");
scanf(" %c", &confirm);
if (confirm == 'y' || confirm == 'Y') {
for (int i = delIndex; i < count - 1; i++) {
students[i] = students[i + 1];
}
count--;
printf("删除成功!\n");
} else {
printf("已取消删除!\n");
}
}
break;
}
case 3: { // 修改学生信息
int modifyId;
printf("请输入要修改的学生学号:");
scanf("%d", &modifyId);
int modifyIndex = -1;
for (int i = 0; i < count; i++) {
if (students[i].id == modifyId) {
modifyIndex = i;
break;
}
}
if (modifyIndex == -1) {
printf("未找到该学生!\n");
} else {
Stu newStu;
printf("请输入新的学号:");
scanf("%d", &newStu.id);
printf("请输入新的姓名:");
scanf("%s", newStu.name);
printf("请输入新的分数:");
scanf("%d", &newStu.score);
students[modifyIndex] = newStu;
printf("修改成功!\n");
}
break;
}
case 4: { // 遍历学生信息
printf("学号\t姓名\t分数\n");
for (int i = 0; i < count; i++) {
printf("%d\t%s\t%d\n", students[i].id, students[i].name, students[i].score);
}
break;
}
case 0: { // 推出系统
printf("感谢使用本系统,再见!\n");
break;
}
default: {
printf("输入错误,请重新输入!\n");
break;
}
}
} while (choice != 0);
return 0;
}
```
以上就是一个简单的学生信息管理系统的代码,可以进行添加、删除、修改、遍历操作。需要注意的是,由于学生信息是在数组中存储的,因此添加时需要判断数组是否已满,删除和修改时需要先根据学号查找到该学生在数组中的下标。
阅读全文