学生管理系统c语言设计思路
时间: 2023-11-30 13:41:25 浏览: 58
学生管理系统是一个常见的小型项目,通常用于练习C语言的基本语法和数据结构。下面是一个简单的学生管理系统的设计思路:
1. 定义学生结构体
首先需要定义一个学生结构体,包含学号、姓名、性别和年龄等信息。
2. 编写函数实现插入学生信息操作
编写一个函数,实现向学生信息数组中插入一条学生信息的功能。该函数需要调用stu_insert函数,获取用户输入的学生信息,并将其插入到学生信息数组中。
3. 编写函数实现显示所有学生信息
编写一个函数,实现显示所有学生信息的功能。该函数需要遍历学生信息数组,并调用stu_print函数,将每个学生的信息输出到屏幕上。
4. 编写函数实现查找学生信息
编写一个函数,实现根据学号查找学生信息的功能。该函数需要遍历学生信息数组,查找与给定学号相同的学生信息,并调用stu_print函数,将该学生的信息输出到屏幕上。
5. 编写函数实现删除学生信息
编写一个函数,实现根据学号删除学生信息的功能。该函数需要遍历学生信息数组,查找与给定学号相同的学生信息,并将其从学生信息数组中删除。
6. 编写函数实现修改学生信息
编写一个函数,实现根据学号修改学生信息的功能。该函数需要遍历学生信息数组,查找与给定学号相同的学生信息,并调用stu_insert函数,获取用户输入的新学生信息,并将其替换原有的学生信息。
7. 编写主函数
在主函数中,需要定义一个学生信息数组,并循环显示菜单,根据用户的选择调用相应的函数。
下面是一个简单的学生管理系统的C语言代码实现,其中包含了上述所有功能:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
struct student {
int id;
char name[20];
char sex;
int age;
};
int stu_insert(struct student *pstu);
int stu_print(struct student stu);
int stu_find(int id, struct student *pstu);
int stu_delete(int id, struct student *pstu, int *pnum);
int stu_modify(int id, struct student *pstu);
int main() {
struct student stu_list[MAX_STUDENT_NUM];
int stu_num = 0;
int choice, id, ret;
while (1) {
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:
if (stu_num >= MAX_STUDENT_NUM) {
printf("学生信息已满,无法插入!\n");
break;
}
ret = stu_insert(&stu_list[stu_num]);
if (ret == 0) {
printf("学生信息插入成功!\n");
stu_num++;
} else {
printf("学生信息插入失败!\n");
}
break;
case 2:
printf("学号\t姓名\t性别\t年龄\n");
for (int i = 0; i < stu_num; i++) {
stu_print(stu_list[i]);
}
break;
case 3:
printf("请输入要查找的学生学号:");
scanf("%d", &id);
ret = stu_find(id, stu_list);
if (ret == -1) {
printf("未找到该学生信息!\n");
}
break;
case 4:
printf("请输入要删除的学生学号:");
scanf("%d", &id);
ret = stu_delete(id, stu_list, &stu_num);
if (ret == 0) {
printf("学生信息删除成功!\n");
} else {
printf("未找到该学生信息,无法删除!\n");
}
break;
case 5:
printf("请输入要修改的学生学号:");
scanf("%d", &id);
ret = stu_modify(id, stu_list);
if (ret == 0) {
printf("学生信息修改成功!\n");
} else {
printf("未找到该学生信息,无法修改!\n");
}
break;
case 6:
printf("退出学生管理系统!\n");
return 0;
default:
printf("无效的操作!\n");
break;
}
}
return 0;
}
int stu_insert(struct student *pstu) {
printf("学号:");
scanf("%d", &pstu->id);
printf("姓名:");
scanf("%s", pstu->name);
getchar();
printf("性别 (F/M):");
scanf("%c", &pstu->sex);
printf("年龄:");
scanf("%d", &pstu->age);
return 0;
}
int stu_print(struct student stu) {
printf("%d\t%s\t%c\t%d\n", stu.id, stu.name, stu.sex, stu.age);
return 0;
}
int stu_find(int id, struct student *pstu) {
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
if (pstu[i].id == id) {
printf("学号\t姓名\t性别\t年龄\n");
stu_print(pstu[i]);
return 0;
}
}
return -1;
}
int stu_delete(int id, struct student *pstu, int *pnum) {
for (int i = 0; i < *pnum; i++) {
if (pstu[i].id == id) {
for (int j = i; j < *pnum - 1; j++) {
pstu[j] = pstu[j + 1];
}
(*pnum)--;
return 0;
}
}
return -1;
}
int stu_modify(int id, struct student *pstu) {
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
if (pstu[i].id == id) {
printf("请输入新的学生信息:\n");
stu_insert(&pstu[i]);
return 0;
}
}
return -1;
}
```