请给设计同学录管理系统的c语言代码 功能要求: (1)、程序启动后显示主菜单,包括下面的选项:1.显示班级列表 2.增加班级 3.删除班级 4、班级同学加入 5.班级同学删除 6.同学录显示 7.同学录存盘 8.同学录文件调入 9.退出 (2)按下相应的按键后进入各自的子功能,每个子功能执行完毕后,返团并显示主菜单 功能说明: ①,显示班级列表:在屏幕显示已登记的班级总数,及各班级名称及加入同学人数。② 增加班级:输入班级信息,包括班号,入学年份,毕业年份。③.删除班级:输入要删除的班号,删除该班级信息。 ④班级同学加入:输入同学姓名,性别,班号,学号。 ⑤.班级同学删除:输入班名,学号,删除同学信息,⑥、同学录显示:输入班号,显示该班的同学列表, ⑦.同学录存盘:输入文件名,将同学录信息存入文件。 ⑧.同学录文件调入:输入文件名,读取文件将数据调入,重新生成同学录信息⑨.退出:退出程序,返回 操作系统
时间: 2024-02-12 21:04:36 浏览: 28
以下是同学录管理系统的C语言代码,您可以参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CLASS_NUM 100
#define MAX_STUDENT_NUM 1000
// 班级结构体
typedef struct {
char class_id[10]; // 班级号
int enrollment_year; // 入学年份
int graduation_year; // 毕业年份
int student_num; // 同学数量
} Class;
// 同学结构体
typedef struct {
char name[20]; // 姓名
char gender[5]; // 性别
char class_id[10]; // 班级号
char student_id[20]; // 学号
} Student;
Class class_list[MAX_CLASS_NUM]; // 班级数组
Student student_list[MAX_STUDENT_NUM]; // 同学数组
int class_num = 0; // 班级总数
int student_num = 0; // 同学总数
// 显示主菜单
void show_menu() {
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("9. 退出\n");
}
// 显示班级列表
void show_class_list() {
printf("班级总数:%d\n", class_num);
for (int i = 0; i < class_num; i++) {
printf("班级号:%s 入学年份:%d 毕业年份:%d 同学数量:%d\n",
class_list[i].class_id, class_list[i].enrollment_year,
class_list[i].graduation_year, class_list[i].student_num);
}
}
// 增加班级
void add_class() {
if (class_num >= MAX_CLASS_NUM) {
printf("班级数量已达到上限!\n");
return;
}
Class new_class;
printf("请输入班级号:");
scanf("%s", new_class.class_id);
printf("请输入入学年份:");
scanf("%d", &new_class.enrollment_year);
printf("请输入毕业年份:");
scanf("%d", &new_class.graduation_year);
new_class.student_num = 0;
class_list[class_num] = new_class;
class_num++;
printf("班级添加成功!\n");
}
// 删除班级
void delete_class() {
char class_id[10];
printf("请输入要删除的班级号:");
scanf("%s", class_id);
int index = -1;
for (int i = 0; i < class_num; i++) {
if (strcmp(class_list[i].class_id, class_id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("找不到该班级!\n");
return;
}
for (int i = index; i < class_num - 1; i++) {
class_list[i] = class_list[i + 1];
}
class_num--;
printf("班级删除成功!\n");
}
// 班级同学加入
void add_student() {
if (student_num >= MAX_STUDENT_NUM) {
printf("同学数量已达到上限!\n");
return;
}
Student new_student;
printf("请输入同学姓名:");
scanf("%s", new_student.name);
printf("请输入同学性别:");
scanf("%s", new_student.gender);
printf("请输入班级号:");
scanf("%s", new_student.class_id);
printf("请输入学号:");
scanf("%s", new_student.student_id);
int index = -1;
for (int i = 0; i < class_num; i++) {
if (strcmp(class_list[i].class_id, new_student.class_id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("找不到该班级!\n");
return;
}
student_list[student_num] = new_student;
student_num++;
class_list[index].student_num++;
printf("同学加入成功!\n");
}
// 班级同学删除
void delete_student() {
char class_id[10];
char student_id[20];
printf("请输入班级号:");
scanf("%s", class_id);
printf("请输入学号:");
scanf("%s", student_id);
int class_index = -1;
int student_index = -1;
for (int i = 0; i < class_num; i++) {
if (strcmp(class_list[i].class_id, class_id) == 0) {
class_index = i;
break;
}
}
if (class_index == -1) {
printf("找不到该班级!\n");
return;
}
for (int i = 0; i < student_num; i++) {
if (strcmp(student_list[i].class_id, class_id) == 0 &&
strcmp(student_list[i].student_id, student_id) == 0) {
student_index = i;
break;
}
}
if (student_index == -1) {
printf("找不到该同学!\n");
return;
}
for (int i = student_index; i < student_num - 1; i++) {
student_list[i] = student_list[i + 1];
}
student_num--;
class_list[class_index].student_num--;
printf("同学删除成功!\n");
}
// 同学录显示
void show_student_list() {
char class_id[10];
printf("请输入班级号:");
scanf("%s", class_id);
int index = -1;
for (int i = 0; i < class_num; i++) {
if (strcmp(class_list[i].class_id, class_id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("找不到该班级!\n");
return;
}
printf("班级号:%s 同学数量:%d\n", class_list[index].class_id, class_list[index].student_num);
for (int i = 0; i < student_num; i++) {
if (strcmp(student_list[i].class_id, class_id) == 0) {
printf("姓名:%s 性别:%s 学号:%s\n", student_list[i].name,
student_list[i].gender, student_list[i].student_id);
}
}
}
// 同学录存盘
void save_student_list() {
char filename[50];
printf("请输入文件名:");
scanf("%s", filename);
FILE* fp = fopen(filename, "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fprintf(fp, "%d\n", class_num);
for (int i = 0; i < class_num; i++) {
fprintf(fp, "%s %d %d %d\n", class_list[i].class_id, class_list[i].enrollment_year,
class_list[i].graduation_year, class_list[i].student_num);
}
fprintf(fp, "%d\n", student_num);
for (int i = 0; i < student_num; i++) {
fprintf(fp, "%s %s %s %s\n", student_list[i].name, student_list[i].gender,
student_list[i].class_id, student_list[i].student_id);
}
fclose(fp);
printf("同学录保存成功!\n");
}
// 同学录文件调入
void load_student_list() {
char filename[50];
printf("请输入文件名:");
scanf("%s", filename);
FILE* fp = fopen(filename, "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fscanf(fp, "%d", &class_num);
for (int i = 0; i < class_num; i++) {
fscanf(fp, "%s %d %d %d", class_list[i].class_id, &class_list[i].enrollment_year,
&class_list[i].graduation_year, &class_list[i].student_num);
}
fscanf(fp, "%d", &student_num);
for (int i = 0; i < student_num; i++) {
fscanf(fp, "%s %s %s %s", student_list[i].name, student_list[i].gender,
student_list[i].class_id, student_list[i].student_id);
}
fclose(fp);
printf("同学录调入成功!\n");
}
int main() {
int choice;
while (1) {
show_menu();
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
show_class_list();
break;
case 2:
add_class();
break;
case 3:
delete_class();
break;
case 4:
add_student();
break;
case 5:
delete_student();
break;
case 6:
show_student_list();
break;
case 7:
save_student_list();
break;
case 8:
load_student_list();
break;
case 9:
printf("谢谢使用!\n");
return 0;
default:
printf("无效选项!\n");
break;
}
}
}
```
代码中使用了结构体来表示班级和同学,使用数组来存储所有班级和同学的信息。每个功能都有对应的函数来实现,函数内部根据用户的输入来进行相应的操作。同时,使用文件来保存和读取同学录信息,保证了数据的持久化。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)