用C++写一个成绩管理系统,需要的功能有导入成绩,导出成绩,排名等次,查询学生成绩
时间: 2023-05-11 14:03:32 浏览: 49
好的,这个问题可以回答。以下是一个简单的成绩管理系统的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
struct student {
char name[20];
int score;
};
struct student students[MAX_STUDENTS];
int num_students = 0;
void import_scores(char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Error: could not open file %s\n", filename);
return;
}
char line[100];
while (fgets(line, sizeof(line), fp)) {
char *name = strtok(line, ",");
int score = atoi(strtok(NULL, ","));
if (name != NULL) {
strcpy(students[num_students].name, name);
students[num_students].score = score;
num_students++;
}
}
fclose(fp);
}
void export_scores(char *filename) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("Error: could not open file %s\n", filename);
return;
}
for (int i = 0; i < num_students; i++) {
fprintf(fp, "%s,%d\n", students[i].name, students[i].score);
}
fclose(fp);
}
void sort_students() {
for (int i = 0; i < num_students; i++) {
for (int j = i + 1; j < num_students; j++) {
if (students[i].score < students[j].score) {
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
void print_students() {
printf("Name\tScore\n");
for (int i = 0; i < num_students; i++) {
printf("%s\t%d\n", students[i].name, students[i].score);
}
}
int main() {
import_scores("scores.txt");
sort_students();
print_students();
export_scores("sorted_scores.txt");
return 0;
}
```
这个程序可以从一个名为 "scores.txt" 的文件中导入学生的成绩,然后按照成绩从高到低排序,并输出到屏幕上。最后,它还可以将排序后的成绩导出到一个名为 "sorted_scores.txt" 的文件中。