请用c语言代码实现以下内容: 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话等。试设计一学生信息管理系统,使之能提供以下功能:系统以菜单方式工作(用键盘输入1~6之间的数来选择功能) (1)学生信息录入功能(学生信息用文件保存) (2)学生信息浏览功能 (3)查询功能:按学号查询和按姓名查询 (4)学生信息的删除:(按学号进行删除) (5)学生信息的修改:(按学号进行修改某学生的姓名) (6)退出。
时间: 2023-12-19 20:06:52 浏览: 99
以下是一个简单的C语言程序示例,用于实现学生信息管理系统:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生信息结构体
struct student {
char id[10];
char name[20];
int age;
char gender[10];
char birth[20];
char address[50];
char phone[20];
};
// 声明函数
void add_student();
void view_student();
void search_student();
void delete_student();
void modify_student();
// 全局变量,表示学生信息文件的路径
const char* file_path = "students.dat";
int main() {
int choice;
while (1) {
printf("\n===== 学生信息管理系统 =====\n");
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:
add_student();
break;
case 2:
view_student();
break;
case 3:
search_student();
break;
case 4:
delete_student();
break;
case 5:
modify_student();
break;
case 6:
printf("谢谢使用!\n");
exit(0);
default:
printf("无效的选择,请重新输入。\n");
}
}
return 0;
}
// 学生信息录入功能
void add_student() {
struct student s;
printf("\n请输入学生信息:\n");
printf("学号: ");
scanf("%s", s.id);
printf("姓名: ");
scanf("%s", s.name);
printf("年龄: ");
scanf("%d", &s.age);
printf("性别: ");
scanf("%s", s.gender);
printf("出生年月: ");
scanf("%s", s.birth);
printf("地址: ");
scanf("%s", s.address);
printf("电话: ");
scanf("%s", s.phone);
// 打开文件,以追加模式写入学生信息
FILE* fp = fopen(file_path, "ab");
fwrite(&s, sizeof(struct student), 1, fp);
fclose(fp);
printf("学生信息已保存。\n");
}
// 学生信息浏览功能
void view_student() {
struct student s;
// 打开文件,以只读模式读取学生信息
FILE* fp = fopen(file_path, "rb");
printf("\n学生信息列表:\n");
printf("学号\t姓名\t年龄\t性别\t出生年月\t\t地址\t\t电话\n");
while (fread(&s, sizeof(struct student), 1, fp)) {
printf("%s\t%s\t%d\t%s\t%s\t%s\t%s\n", s.id, s.name, s.age, s.gender, s.birth, s.address, s.phone);
}
fclose(fp);
}
// 学生信息查询功能
void search_student() {
struct student s;
char keyword[20];
int found = 0;
int choice;
printf("\n请选择查询方式:\n");
printf("1. 按学号查询\n");
printf("2. 按姓名查询\n");
printf("请选择:");
scanf("%d", &choice);
if (choice == 1) {
printf("请输入学号:");
scanf("%s", keyword);
} else if (choice == 2) {
printf("请输入姓名:");
scanf("%s", keyword);
} else {
printf("无效的选择。\n");
return;
}
// 打开文件,以只读模式读取学生信息
FILE* fp = fopen(file_path, "rb");
while (fread(&s, sizeof(struct student), 1, fp)) {
if ((choice == 1 && strcmp(s.id, keyword) == 0) || (choice == 2 && strcmp(s.name, keyword) == 0)) {
printf("\n查询结果:\n");
printf("学号\t姓名\t年龄\t性别\t出生年月\t\t地址\t\t电话\n");
printf("%s\t%s\t%d\t%s\t%s\t%s\t%s\n", s.id, s.name, s.age, s.gender, s.birth, s.address, s.phone);
found = 1;
break;
}
}
if (!found) {
printf("未找到相关信息。\n");
}
fclose(fp);
}
// 学生信息删除功能
void delete_student() {
struct student s;
char id[10];
int found = 0;
printf("\n请输入要删除的学号:");
scanf("%s", id);
// 打开文件,以读写模式打开
FILE* fp = fopen(file_path, "rb+");
FILE* tmp_fp = fopen("temp.dat", "wb");
while (fread(&s, sizeof(struct student), 1, fp)) {
if (strcmp(s.id, id) == 0) {
found = 1;
continue;
}
fwrite(&s, sizeof(struct student), 1, tmp_fp);
}
fclose(fp);
fclose(tmp_fp);
// 删除原文件,将临时文件重命名为原文件
remove(file_path);
rename("temp.dat", file_path);
if (found) {
printf("学生信息已删除。\n");
} else {
printf("未找到相关信息。\n");
}
}
// 学生信息修改功能
void modify_student() {
struct student s;
char id[10];
int found = 0;
printf("\n请输入要修改的学号:");
scanf("%s", id);
// 打开文件,以读写模式打开
FILE* fp = fopen(file_path, "rb+");
while (fread(&s, sizeof(struct student), 1, fp)) {
if (strcmp(s.id, id) == 0) {
printf("\n请输入修改后的姓名:");
scanf("%s", s.name);
fseek(fp, -sizeof(struct student), SEEK_CUR);
fwrite(&s, sizeof(struct student), 1, fp);
found = 1;
break;
}
}
fclose(fp);
if (found) {
printf("学生信息已修改。\n");
} else {
printf("未找到相关信息。\n");
}
}
```
此程序使用结构体来表示学生信息,包含了学号、姓名、年龄、性别、出生年月、地址和电话七个字段。在主函数中,使用一个while循环来实现菜单选择功能,根据用户输入的选项来调用相应的函数。在每个函数中,使用文件来保存和读取学生信息,并根据需要实现相应的操作,例如添加、删除、修改和查询等。
阅读全文