用C语言编写程序,实现一个传统的小型学生信息管理系统,具体实现学生基本信息的录入,学生基本信息的输出,学生相关信息的查询,信息查询可以按照姓名查询和学号查询,学生信息的修改,相关信息的统计等功能。
时间: 2024-05-10 18:17:59 浏览: 21
好的,这是一个比较复杂的程序,需要分多个模块实现。我将简单介绍一下程序的实现步骤:
1. 定义学生信息结构体
学生信息包括学号、姓名、性别、年龄、出生日期、专业、班级等,我们可以定义一个结构体来存储这些信息:
```
struct Student {
char id[10];
char name[20];
char sex[5];
int age;
char birthdate[20];
char major[20];
char classname[20];
};
```
2. 实现信息录入功能
我们可以定义一个函数来实现学生信息的录入,具体实现如下:
```
void add_student() {
struct Student stu;
printf("请输入学生学号:");
scanf("%s", stu.id);
printf("请输入学生姓名:");
scanf("%s", stu.name);
printf("请输入学生性别:");
scanf("%s", stu.sex);
printf("请输入学生年龄:");
scanf("%d", &stu.age);
printf("请输入学生出生日期:");
scanf("%s", stu.birthdate);
printf("请输入学生专业:");
scanf("%s", stu.major);
printf("请输入学生班级:");
scanf("%s", stu.classname);
// 将学生信息添加到文件中
FILE *fp;
fp = fopen("student.txt", "a+");
fprintf(fp, "%s %s %s %d %s %s %s\n", stu.id, stu.name, stu.sex, stu.age, stu.birthdate, stu.major, stu.classname);
fclose(fp);
printf("添加成功!\n");
}
```
该函数会提示用户输入学生信息,并将学生信息添加到一个名为“student.txt”的文件中。
3. 实现信息输出功能
我们可以定义一个函数来实现学生信息的输出,具体实现如下:
```
void show_student() {
struct Student stu;
// 从文件中读取学生信息,并输出
FILE *fp;
fp = fopen("student.txt", "r");
printf("学号\t姓名\t性别\t年龄\t出生日期\t专业\t班级\n");
while (fscanf(fp, "%s %s %s %d %s %s %s", stu.id, stu.name, stu.sex, &stu.age, stu.birthdate, stu.major, stu.classname) != EOF) {
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\n", stu.id, stu.name, stu.sex, stu.age, stu.birthdate, stu.major, stu.classname);
}
fclose(fp);
}
```
该函数会从“student.txt”文件中读取学生信息,并输出到控制台上。
4. 实现信息查询功能
我们可以定义一个函数来实现学生信息的查询,具体实现如下:
```
void search_student() {
char id[10];
char name[20];
printf("请输入要查询的方式:1.按学号查询 2.按姓名查询\n");
int option;
scanf("%d", &option);
if (option == 1) {
printf("请输入学生学号:");
scanf("%s", id);
// 从文件中查找学生信息,并输出
struct Student stu;
FILE *fp;
fp = fopen("student.txt", "r");
while (fscanf(fp, "%s %s %s %d %s %s %s", stu.id, stu.name, stu.sex, &stu.age, stu.birthdate, stu.major, stu.classname) != EOF) {
if (strcmp(stu.id, id) == 0) {
printf("学号\t姓名\t性别\t年龄\t出生日期\t专业\t班级\n");
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\n", stu.id, stu.name, stu.sex, stu.age, stu.birthdate, stu.major, stu.classname);
fclose(fp);
return;
}
}
printf("未找到该学号对应的学生!\n");
fclose(fp);
} else if (option == 2) {
printf("请输入学生姓名:");
scanf("%s", name);
// 从文件中查找学生信息,并输出
struct Student stu;
FILE *fp;
fp = fopen("student.txt", "r");
while (fscanf(fp, "%s %s %s %d %s %s %s", stu.id, stu.name, stu.sex, &stu.age, stu.birthdate, stu.major, stu.classname) != EOF) {
if (strcmp(stu.name, name) == 0) {
printf("学号\t姓名\t性别\t年龄\t出生日期\t专业\t班级\n");
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\n", stu.id, stu.name, stu.sex, stu.age, stu.birthdate, stu.major, stu.classname);
fclose(fp);
return;
}
}
printf("未找到该姓名对应的学生!\n");
fclose(fp);
} else {
printf("无效的选项!\n");
}
}
```
该函数会提示用户选择查询方式(按学号或者按姓名),并根据用户输入的信息从“student.txt”文件中查找学生信息,并输出到控制台上。
5. 实现信息修改功能
我们可以定义一个函数来实现学生信息的修改,具体实现如下:
```
void modify_student() {
char id[10];
printf("请输入要修改的学生学号:");
scanf("%s", id);
// 从文件中查找学生信息,并修改
struct Student stu;
FILE *fp;
fp = fopen("student.txt", "r+");
while (fscanf(fp, "%s %s %s %d %s %s %s", stu.id, stu.name, stu.sex, &stu.age, stu.birthdate, stu.major, stu.classname) != EOF) {
if (strcmp(stu.id, id) == 0) {
printf("请重新输入学生姓名:");
scanf("%s", stu.name);
printf("请重新输入学生性别:");
scanf("%s", stu.sex);
printf("请重新输入学生年龄:");
scanf("%d", &stu.age);
printf("请重新输入学生出生日期:");
scanf("%s", stu.birthdate);
printf("请重新输入学生专业:");
scanf("%s", stu.major);
printf("请重新输入学生班级:");
scanf("%s", stu.classname);
// 将修改后的学生信息写入文件中
fseek(fp, -strlen(stu.name)-strlen(stu.sex)-sizeof(int)-strlen(stu.birthdate)-strlen(stu.major)-strlen(stu.classname)-1, SEEK_CUR);
fprintf(fp, "%s %s %s %d %s %s %s\n", stu.id, stu.name, stu.sex, stu.age, stu.birthdate, stu.major, stu.classname);
fclose(fp);
printf("修改成功!\n");
return;
}
}
printf("未找到该学号对应的学生!\n");
fclose(fp);
}
```
该函数会提示用户输入要修改的学生学号,并根据学号从“student.txt”文件中查找学生信息,并修改。修改后的学生信息会重新写入到文件中。
6. 实现信息统计功能
我们可以定义一个函数来实现学生信息的统计,具体实现如下:
```
void count_student() {
int count = 0;
struct Student stu;
FILE *fp;
fp = fopen("student.txt", "r");
while (fscanf(fp, "%s %s %s %d %s %s %s", stu.id, stu.name, stu.sex, &stu.age, stu.birthdate, stu.major, stu.classname) != EOF) {
count++;
}
printf("学生总人数为:%d\n", count);
fclose(fp);
}
```
该函数会从“student.txt”文件中读取学生信息,并统计学生总人数。
以上就是一个基本的小型学生信息管理系统的实现步骤。完整的代码如下:
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)
![](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)