用C语言代码写一个对学生学籍进行注册,修改,删除,查找,排序,统计,学籍变化等管理操作。学生学籍变化信息包括:入学,转专业,退学,降级,休学,毕业。 功能要求: (1)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级,学籍变化等信息; (2)显示全部学生学籍信息。 (3)增加学生学籍信息。 (4)根据学号修改、删除学生学籍信息。 (5)实现多种方式对学生学籍信息进行查询(不得少于两种,比如根据学号或者专业等) (6)根据系别或者专业对学生学籍信息进行排序
时间: 2024-03-13 08:48:05 浏览: 89
好的,下面是一个简单的用C语言实现学生学籍管理系统的代码。其中包括了以下功能:
1. 注册学生学籍信息
2. 显示全部学生学籍信息
3. 增加学生学籍信息
4. 根据学号修改学生学籍信息
5. 根据学号删除学生学籍信息
6. 根据学号或者专业进行查询
7. 根据系别或者专业进行排序
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char id[10];
char name[20];
char sex[10];
int age;
char birth_place[50];
char department[50];
char major[50];
char class[50];
char status[20];
};
struct student stu[100];
int num = 0;
void menu();
void input();
void print();
void add();
void modify();
void del();
void query();
void sort();
void count();
int main() {
menu();
return 0;
}
void menu() {
int choice;
do {
printf("\n\n");
printf("**********学生信息管理系统**********\n");
printf("1. 录入学籍信息\n");
printf("2. 显示全部学籍信息\n");
printf("3. 增加学籍信息\n");
printf("4. 修改学籍信息\n");
printf("5. 删除学籍信息\n");
printf("6. 查询学籍信息\n");
printf("7. 排序学籍信息\n");
printf("8. 统计学籍信息\n");
printf("0. 退出系统\n");
printf("**************************************\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
input();
break;
case 2:
print();
break;
case 3:
add();
break;
case 4:
modify();
break;
case 5:
del();
break;
case 6:
query();
break;
case 7:
sort();
break;
case 8:
count();
break;
case 0:
printf("谢谢使用!\n");
break;
default:
printf("输入有误,请重新输入!\n");
}
} while (choice != 0);
}
void input() {
printf("请输入学生学号:");
scanf("%s", stu[num].id);
printf("请输入学生姓名:");
scanf("%s", stu[num].name);
printf("请输入学生性别:");
scanf("%s", stu[num].sex);
printf("请输入学生年龄:");
scanf("%d", &stu[num].age);
printf("请输入学生籍贯:");
scanf("%s", stu[num].birth_place);
printf("请输入学生系别:");
scanf("%s", stu[num].department);
printf("请输入学生专业:");
scanf("%s", stu[num].major);
printf("请输入学生班级:");
scanf("%s", stu[num].class);
printf("请输入学生学籍变化:");
scanf("%s", stu[num].status);
num++;
printf("录入成功!\n");
}
void print() {
if (num == 0) {
printf("没有学籍信息!\n");
return;
}
printf("学号\t姓名\t性别\t年龄\t籍贯\t系别\t专业\t班级\t学籍变化\n");
for (int i = 0; i < num; i++) {
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].birth_place, stu[i].department, stu[i].major, stu[i].class, stu[i].status);
}
}
void add() {
printf("请输入需要增加的学生学号:");
scanf("%s", stu[num].id);
printf("请输入需要增加的学生姓名:");
scanf("%s", stu[num].name);
printf("请输入需要增加的学生性别:");
scanf("%s", stu[num].sex);
printf("请输入需要增加的学生年龄:");
scanf("%d", &stu[num].age);
printf("请输入需要增加的学生籍贯:");
scanf("%s", stu[num].birth_place);
printf("请输入需要增加的学生系别:");
scanf("%s", stu[num].department);
printf("请输入需要增加的学生专业:");
scanf("%s", stu[num].major);
printf("请输入需要增加的学生班级:");
scanf("%s", stu[num].class);
printf("请输入需要增加的学生学籍变化:");
scanf("%s", stu[num].status);
num++;
printf("增加成功!\n");
}
void modify() {
char id[10];
printf("请输入需要修改信息的学生学号:");
scanf("%s", id);
int flag = 0;
for (int i = 0; i < num; i++) {
if (strcmp(id, stu[i].id) == 0) {
printf("请输入修改后的学生学号:");
scanf("%s", stu[i].id);
printf("请输入修改后的学生姓名:");
scanf("%s", stu[i].name);
printf("请输入修改后的学生性别:");
scanf("%s", stu[i].sex);
printf("请输入修改后的学生年龄:");
scanf("%d", &stu[i].age);
printf("请输入修改后的学生籍贯:");
scanf("%s", stu[i].birth_place);
printf("请输入修改后的学生系别:");
scanf("%s", stu[i].department);
printf("请输入修改后的学生专业:");
scanf("%s", stu[i].major);
printf("请输入修改后的学生班级:");
scanf("%s", stu[i].class);
printf("请输入修改后的学生学籍变化:");
scanf("%s", stu[i].status);
flag = 1;
printf("修改成功!\n");
break;
}
}
if (flag == 0) {
printf("未找到该学生的学籍信息!\n");
}
}
void del() {
char id[10];
printf("请输入需要删除信息的学生学号:");
scanf("%s", id);
int flag = 0;
for (int i = 0; i < num; i++) {
if (strcmp(id, stu[i].id) == 0) {
for (int j = i; j < num - 1; j++) {
strcpy(stu[j].id, stu[j+1].id);
strcpy(stu[j].name, stu[j+1].name);
strcpy(stu[j].sex, stu[j+1].sex);
stu[j].age = stu[j+1].age;
strcpy(stu[j].birth_place, stu[j+1].birth_place);
strcpy(stu[j].department, stu[j+1].department);
strcpy(stu[j].major, stu[j+1].major);
strcpy(stu[j].class, stu[j+1].class);
strcpy(stu[j].status, stu[j+1].status);
}
num--;
flag = 1;
printf("删除成功!\n");
break;
}
}
if (flag == 0) {
printf("未找到该学生的学籍信息!\n");
}
}
void query() {
int choice;
char id[10];
char major[50];
printf("请选择查询方式:\n");
printf("1. 根据学号查询\n");
printf("2. 根据专业查询\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入需要查询信息的学生学号:");
scanf("%s", id);
for (int i = 0; i < num; i++) {
if (strcmp(id, stu[i].id) == 0) {
printf("学号\t姓名\t性别\t年龄\t籍贯\t系别\t专业\t班级\t学籍变化\n");
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].birth_place, stu[i].department, stu[i].major, stu[i].class, stu[i].status);
return;
}
}
printf("未找到该学生的学籍信息!\n");
break;
case 2:
printf("请输入需要查询信息的学生专业:");
scanf("%s", major);
for (int i = 0; i < num; i++) {
if (strcmp(major, stu[i].major) == 0) {
printf("学号\t姓名\t性别\t年龄\t籍贯\t系别\t专业\t班级\t学籍变化\n");
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].birth_place, stu[i].department, stu[i].major, stu[i].class, stu[i].status);
}
}
break;
default:
printf("输入有误,请重新输入!\n");
}
}
void sort() {
int choice;
printf("请选择排序方式:\n");
printf("1. 根据系别排序\n");
printf("2. 根据专业排序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
for (int i = 0; i < num - 1; i++) {
for (int j = 0; j < num - i - 1; j++) {
if (strcmp(stu[j].department, stu[j+1].department) > 0) {
struct student temp;
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
printf("排序成功!\n");
break;
case 2:
for (int i = 0; i < num - 1; i++) {
for (int j = 0; j < num - i - 1; j++) {
if (strcmp(stu[j].major, stu[j+1].major) > 0) {
struct student temp;
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
printf("排序成功!\n");
break;
default:
printf("输入有误,请重新输入!\n");
}
}
void count() {
int count[6] = {0, 0, 0, 0, 0, 0};
for (int i = 0; i < num; i++) {
if (strcmp(stu[i].status, "入学") == 0) {
count[0]++;
} else if (strcmp(stu[i].status, "转专业") == 0) {
count[1]++;
} else if (strcmp(stu[i].status, "退学") == 0) {
count[2]++;
} else if (strcmp(stu[i].status, "降级") == 0) {
count[3]++;
} else if (strcmp(stu[i].status, "休学") == 0) {
count[4]++;
} else if (strcmp(stu[i].status, "毕业") == 0) {
count[5]++;
}
}
printf("入学人数:%d\n", count[0]);
printf("转专业人数:%d\n", count[1]);
printf("退学人数:%d\n", count[2]);
printf("降级人数:%d\n", count[3]);
printf("休学人数:%d\n", count[4]);
printf("毕业人数:%d\n", count[5]);
}
```
希望这个代码能够帮助你完成题目要求。
阅读全文