编写一个创建文件、输入班级成绩、保存文件,查询成绩、修改成绩、显示所有的学生成绩,班级成绩复制到另一个文件的功能的C语言完整程序代码
时间: 2024-01-29 13:04:07 浏览: 68
用C语言实现的学生成绩管理程序
5星 · 资源好评率100%
以下是一个在C语言中实现上述功能的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 50
#define MAX_NAME_LENGTH 20
struct student {
char name[MAX_NAME_LENGTH];
int score;
};
void create_file();
void input_scores();
void save_file();
void query_score();
void modify_score();
void display_all_scores();
void copy_scores();
struct student students[MAX_STUDENTS];
int num_students = 0;
int main() {
int choice;
do {
printf("请选择操作:\n");
printf("1. 创建文件\n");
printf("2. 输入成绩\n");
printf("3. 保存文件\n");
printf("4. 查询成绩\n");
printf("5. 修改成绩\n");
printf("6. 显示所有学生成绩\n");
printf("7. 班级成绩复制到另一个文件\n");
printf("0. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
create_file();
break;
case 2:
input_scores();
break;
case 3:
save_file();
break;
case 4:
query_score();
break;
case 5:
modify_score();
break;
case 6:
display_all_scores();
break;
case 7:
copy_scores();
break;
case 0:
break;
default:
printf("无效的选择,请重新输入。\n");
}
} while (choice != 0);
return 0;
}
void create_file() {
FILE *fp;
char filename[MAX_NAME_LENGTH];
printf("请输入文件名:\n");
scanf("%s", filename);
fp = fopen(filename, "w");
if (fp == NULL) {
printf("无法创建文件 %s。\n", filename);
return;
}
printf("文件 %s 创建成功。\n", filename);
fclose(fp);
}
void input_scores() {
if (num_students == MAX_STUDENTS) {
printf("学生数量已达到上限。\n");
return;
}
printf("请输入学生姓名和成绩:\n");
scanf("%s %d", students[num_students].name, &students[num_students].score);
num_students++;
}
void save_file() {
FILE *fp;
char filename[MAX_NAME_LENGTH];
printf("请输入要保存的文件名:\n");
scanf("%s", filename);
fp = fopen(filename, "w");
if (fp == NULL) {
printf("无法打开文件 %s。\n", filename);
return;
}
for (int i = 0; i < num_students; i++) {
fprintf(fp, "%s %d\n", students[i].name, students[i].score);
}
printf("文件 %s 保存成功。\n", filename);
fclose(fp);
}
void query_score() {
char name[MAX_NAME_LENGTH];
printf("请输入要查询成绩的学生姓名:\n");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(name, students[i].name) == 0) {
printf("%s 的成绩是 %d 分。\n", name, students[i].score);
return;
}
}
printf("无法找到 %s 的成绩。\n", name);
}
void modify_score() {
char name[MAX_NAME_LENGTH];
printf("请输入要修改成绩的学生姓名:\n");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(name, students[i].name) == 0) {
printf("请输入 %s 的新成绩:\n", name);
scanf("%d", &students[i].score);
printf("%s 的成绩已修改为 %d 分。\n", name, students[i].score);
return;
}
}
printf("无法找到 %s 的成绩。\n", name);
}
void display_all_scores() {
printf("所有学生的成绩如下:\n");
for (int i = 0; i < num_students; i++) {
printf("%s %d\n", students[i].name, students[i].score);
}
}
void copy_scores() {
FILE *src_fp, *dst_fp;
char src_filename[MAX_NAME_LENGTH], dst_filename[MAX_NAME_LENGTH];
printf("请输入要复制的班级成绩文件名和目标文件名:\n");
scanf("%s %s", src_filename, dst_filename);
src_fp = fopen(src_filename, "r");
if (src_fp == NULL) {
printf("无法打开文件 %s。\n", src_filename);
return;
}
dst_fp = fopen(dst_filename, "w");
if (dst_fp == NULL) {
printf("无法创建文件 %s。\n", dst_filename);
fclose(src_fp);
return;
}
char line[MAX_NAME_LENGTH + 6];
while (fgets(line, sizeof(line), src_fp)) {
fputs(line, dst_fp);
}
printf("班级成绩已复制到文件 %s。\n", dst_filename);
fclose(src_fp);
fclose(dst_fp);
}
```
此程序通过一个简单的菜单界面提供了多种操作,包括创建文件、输入班级成绩、保存文件、查询成绩、修改成绩、显示所有学生成绩和班级成绩复制到另一个文件。您可以根据需要更改文件名和路径,并根据实际情况进行必要的错误检查和数据处理。
阅读全文