int readdise()/*读取函数*/ { system("cls"); int i=0; FILE *fp; if((fp=fopen("dise.txt","r"))==NULL) { printf("\n\t\t\t文件读取失败\n\t\t\t请检查是否有dise.txt文件\n"); fclose(fp); return 0; } while(fscanf(fp,"%s %s %s %d",d[i].name,d[i].country,d[i].type,&d[i].flag)!=EOF) i++; fclose(fp); printf("\n\t\t\t书刊数据录入完毕!\n\n"); return i; }
时间: 2023-10-31 11:05:28 浏览: 97
这段代码是什么意思?
这段代码是一个读取函数,它的功能是从一个名为dise.txt的文件中读取数据,并将数据存储在一个结构体数组d中。该函数首先清空屏幕,然后打开文件并检查文件是否存在。如果文件打开失败,则输出错误信息并返回0。如果文件打开成功,函数会使用fscanf()函数逐行读取文件中的数据,并将数据存储在结构体数组d中。最后,函数关闭文件并返回读取到的数据项数。
相关问题
给这段代码添加中文注释:#include<stdio.h> #include<conio.h> #include<windows.h> struct student { char code[10]; float s1,s2,s3; float score; char grade; }temp; void set(int *choice) { printf(" ******* 1、从文件读取数据 *******\n"); printf(" ******* 2、计算并显示成绩 *******\n"); printf(" ******* 3、按等级查询 *******\n"); printf(" ******* 4、按总评成绩排序 *******\n"); printf(" ******* 5、按学号查询 *******\n"); printf(" ******* 6、查询所有等级 *******\n"); printf(" ******* 7、保存到文件 *******\n"); printf(" ******* 0、退出系统 *******\n\n"); printf("请选择您所需要操作的功能:"); *choice=getch(); } void dispinfo() { system("cls"); printf("\n\n"); printf(" *********************** 欢迎成绩核算系统 **********************\n\n"); printf(" *********************** **************** **********************\n\n"); } int duqu(struct student *list) { int n = 0; FILE fp = fopen("C:\Users\dell\Desktop\软件设计-源文件\A3\note.txt", "r"); if (fp == NULL) { printf("无法打开文件"); return n; } char line[100]; fgets(line, 100, fp); sscanf(line, "%d", &n); printf("\n"); // 空一行 printf(" 学号 平时成绩 期中成绩 期末成绩 \n"); // 输出表头 for (int i = 0; i < n; i++) { fgets(line, 100, fp); sscanf(line, "%s %f %f %f", list[i].code, &list[i].s1, &list[i].s2, &list[i].s3); printf("\t %s %5.1lf %5.1lf %5.1lf \n", list[i].code, list[i].s1, list[i].s2, list[i].s3); } printf("\n\n\n ****** 读取文件成功! 按任意键继续! ****** \n"); fclose(fp); while (getchar() != '\n'); // 等待用户按下回车键继续 return n; } void view(struct student list, int amount) { float sum = 0, average = 0; printf("\n 学号 总评 等级 \n"); for (int i = 0; i < amount; i++) { sum += list[i].score; printf("%10s %6.1f %c \n", list[i].code, list[i].score, list[i].grade); } average = sum / amount; printf(" 本班总人数 %d 本班平均成绩 %.1f\n", amount, average); printf("\n\n\n\n\n ***** 摁任意键继续! ****** \n"); getch(); } void paixu(struct student list, int amount) { for (int i = 0; i < amount; i++) { for (int j = i + 1; j < amount; j++) { if (list[j].score > list[i].score) { struct student temp = list[j]; list[j] = list[i]; list[i] = temp; } } } view(list, amount); } void calculate(struct student list[], int amount) { for(int i = 0; i < amount; i++) { float score = list[i].s10.3 + list[i].s20.3 + list[i].s30.4; list[i].score = score; if(score >= 90) { list[i].grade = 'A'; } else if(score >= 80) { list[i].grade = 'B'; } else if(score >= 70) { list[i].grade = 'C'; } else if(score >= 60) { list[i].grade = 'D'; } else { list[i].grade = 'E'; } } dispinfo(); view(list, amount); }
// 引入头文件
#include<stdio.h>
#include<conio.h>
#include<windows.h>
// 定义学生结构体
struct student {
char code[10]; // 学号
float s1,s2,s3; // 平时成绩,期中成绩,期末成绩
float score; // 总评成绩
char grade; // 成绩等级
}temp;
// 设置函数,用于选择功能
void set(int *choice) {
printf(" ******* 1、从文件读取数据 *******\n");
printf(" ******* 2、计算并显示成绩 *******\n");
printf(" ******* 3、按等级查询 *******\n");
printf(" ******* 4、按总评成绩排序 *******\n");
printf(" ******* 5、按学号查询 *******\n");
printf(" ******* 6、查询所有等级 *******\n");
printf(" ******* 7、保存到文件 *******\n");
printf(" ******* 0、退出系统 *******\n\n");
printf("请选择您所需要操作的功能:");
*choice=getch();
}
// 显示信息函数
void dispinfo() {
system("cls"); // 清屏
printf("\n\n");
printf(" *********************** 欢迎成绩核算系统 **********************\n\n");
printf(" *********************** **************** **********************\n\n");
}
// 读取文件函数
int duqu(struct student *list) {
int n = 0;
FILE fp = fopen("C:\Users\dell\Desktop\软件设计-源文件\A3\note.txt", "r"); // 打开文件
if (fp == NULL) { // 判断文件是否能够打开
printf("无法打开文件");
return n;
}
char line[100]; // 定义一个字符数组
fgets(line, 100, fp); // 读取一行
sscanf(line, "%d", &n); // 从字符串中读取一个整数
printf("\n"); // 空一行
printf(" 学号 平时成绩 期中成绩 期末成绩 \n"); // 输出表头
for (int i = 0; i < n; i++) { // 循环读取每个学生的信息
fgets(line, 100, fp); // 读取一行
sscanf(line, "%s %f %f %f", list[i].code, &list[i].s1, &list[i].s2, &list[i].s3); // 从字符串中读取学生的学号和成绩
printf("\t %s %5.1lf %5.1lf %5.1lf \n", list[i].code, list[i].s1, list[i].s2, list[i].s3); // 输出学生的成绩
}
printf("\n\n\n ****** 读取文件成功! 按任意键继续! ****** \n");
fclose(fp); // 关闭文件
while (getchar() != '\n'); // 等待用户按下回车键继续
return n;
}
// 显示学生成绩函数
void view(struct student list, int amount) {
float sum = 0, average = 0;
printf("\n 学号 总评 等级 \n");
for (int i = 0; i < amount; i++) {
sum += list[i].score;
printf("%10s %6.1f %c \n", list[i].code, list[i].score, list[i].grade);
}
average = sum / amount; // 计算平均成绩
printf(" 本班总人数 %d 本班平均成绩 %.1f\n", amount, average);
printf("\n\n\n\n\n ***** 摁任意键继续! ****** \n");
getch();
}
// 按总评成绩排序函数
void paixu(struct student list, int amount) {
for (int i = 0; i < amount; i++) {
for (int j = i + 1; j < amount; j++) {
if (list[j].score > list[i].score) {
struct student temp = list[j];
list[j] = list[i];
list[i] = temp;
}
}
}
view(list, amount); // 显示学生成绩
}
// 计算并显示成绩函数
void calculate(struct student list[], int amount) {
for(int i = 0; i < amount; i++) {
float score = list[i].s10.3 + list[i].s20.3 + list[i].s30.4; // 计算总评成绩
list[i].score = score; // 将总评成绩赋值给结构体中的score变量
if(score >= 90) { // 判断成绩等级
list[i].grade = 'A';
} else if(score >= 80) {
list[i].grade = 'B';
} else if(score >= 70) {
list[i].grade = 'C';
} else if(score >= 60) {
list[i].grade = 'D';
} else {
list[i].grade = 'E';
}
}
dispinfo(); // 显示信息
view(list, amount); // 显示学生成绩
}
给这段代码添加中文注释:#include<stdio.h> #include<conio.h> #include<windows.h> struct student { char code[10]; float s1,s2,s3; float score; char grade; }temp; void set(int *choice) { printf(" ******* 1、从文件读取数据 *******\n"); printf(" ******* 2、计算并显示成绩 *******\n"); printf(" ******* 3、按等级查询 *******\n"); printf(" ******* 4、按总评成绩排序 *******\n"); printf(" ******* 5、按学号查询 *******\n"); printf(" ******* 6、查询所有等级 *******\n"); printf(" ******* 7、保存到文件 *******\n"); printf(" ******* 0、退出系统 *******\n\n"); printf("请选择您所需要操作的功能:"); *choice=getch(); } void dispinfo() { system("cls"); printf("\n\n"); printf(" *********************** 欢迎成绩核算系统 **********************\n\n"); printf(" *********************** **************** **********************\n\n"); } int duqu(struct student *list) { int n; int i=0; FILE *fp; fp=fopen("C:\Users\dell\Desktop\软件设计-源文件\A3-2","r"); fscanf(fp,"%d",&n); for(i=0;i<n;i++) { fscanf(fp,"%s %f %f %f",list[i].code,&list[i].s1,&list[i].s2,&list[i].s3); } printf("学号 平时成绩 期中成绩 期末成绩 \n"); for(i=0;i<n;i++) printf("\t %s %5.1lf %5.1lf %5.1lf \n",list[i].code,list[i].s1,list[i].s2,list[i].s3); printf("\n\n\n ****** 读取文件成功!摁任意键继续! ****** \n"); getch(); fclose(fp); return n; } void view(struct student *list,int amount) { int i=0; float average=0; printf("\n 学号 总评 等级 \n"); for(i=0;i<amount;i++) { average+=list[i].score; printf("%10s %6.1f %c \n",list[i].code,list[i].score,list[i].grade); } average/=amount; printf(" 本班总人数 %d 本班平均成绩 %.1f\n",amount,average); printf("\n\n\n\n\n ***** 摁任意键继续! ****** \n"); getch(); } void paixu(struct student *list,int amount) { float temp; char temp1; char temp2[10]; int i,j; for(i=0;i<amount;i++) for(j=i+1;j<amount;j++) { if(list[j].score>list[i].score) { temp=list[j].score; list[j].score=list[i].score; list[i].score=temp; strcpy(temp2,list[j].code); strcpy(list[j].code,list[i].code); strcpy(list[i].code,temp2); temp=list[j].s1; list[j].s1=list[i].s1; list[i].s1=temp; temp=list[j].s2; list[j].s2=list[i].s2; list[i].s2=temp; temp=list[j].s3; list[j].s3=list[i].s3; list[i].s3=temp; temp1=list[j].grade; list[j].grade=list[i].grade; list[i].grade=temp1; } } view(list,amount); }
/*
* 该程序实现了一个成绩核算系统
* 包含文件读取、成绩计算、按等级查询、按总评成绩排序、按学号查询、查询所有等级、保存到文件等功能
*/
#include<stdio.h>
#include<conio.h>
#include<windows.h>
// 学生结构体,包含学号、平时成绩、期中成绩、期末成绩、总评成绩、等级
struct student {
char code[10];
float s1, s2, s3;
float score;
char grade;
}temp;
// 显示操作菜单的函数
void set(int *choice) {
printf(" ******* 1、从文件读取数据 *******\n");
printf(" ******* 2、计算并显示成绩 *******\n");
printf(" ******* 3、按等级查询 *******\n");
printf(" ******* 4、按总评成绩排序 *******\n");
printf(" ******* 5、按学号查询 *******\n");
printf(" ******* 6、查询所有等级 *******\n");
printf(" ******* 7、保存到文件 *******\n");
printf(" ******* 0、退出系统 *******\n\n");
printf("请选择您所需要操作的功能:");
*choice = getch();
}
// 显示欢迎信息的函数
void dispinfo() {
system("cls");
printf("\n\n");
printf(" *********************** 欢迎成绩核算系统 **********************\n\n");
printf(" *********************** **************** **********************\n\n");
}
// 从文件读取数据并显示的函数
int duqu(struct student *list) {
int n;
int i = 0;
FILE *fp;
fp = fopen("C:\Users\dell\Desktop\软件设计-源文件\A3-2", "r");
fscanf(fp, "%d", &n);
for(i = 0; i < n; i++) {
fscanf(fp, "%s %f %f %f", list[i].code, &list[i].s1, &list[i].s2, &list[i].s3);
}
printf("学号 平时成绩 期中成绩 期末成绩 \n");
for(i = 0; i < n; i++) {
printf("\t %s %5.1lf %5.1lf %5.1lf \n", list[i].code, list[i].s1, list[i].s2, list[i].s3);
}
printf("\n\n\n ****** 读取文件成功!摁任意键继续! ****** \n");
getch();
fclose(fp);
return n;
}
// 计算并显示成绩的函数
void view(struct student *list, int amount) {
int i = 0;
float average = 0;
printf("\n 学号 总评 等级 \n");
for(i = 0; i < amount; i++) {
// 计算总评成绩
list[i].score = list[i].s1 * 0.3 + list[i].s2 * 0.3 + list[i].s3 * 0.4;
// 根据总评成绩计算成绩等级
if(list[i].score >= 90) {
list[i].grade = 'A';
}
else if(list[i].score >= 80) {
list[i].grade = 'B';
}
else if(list[i].score >= 70) {
list[i].grade = 'C';
}
else if(list[i].score >= 60) {
list[i].grade = 'D';
}
else {
list[i].grade = 'E';
}
average += list[i].score;
printf("%10s %6.1f %c \n", list[i].code, list[i].score, list[i].grade);
}
average /= amount;
printf(" 本班总人数 %d 本班平均成绩 %.1f\n", amount, average);
printf("\n\n\n\n\n ***** 摁任意键继续! ****** \n");
getch();
}
// 按总评成绩排序并显示的函数
void paixu(struct student *list, int amount) {
float temp;
char temp1;
char temp2[10];
int i, j;
for(i = 0; i < amount; i++) {
for(j = i + 1; j < amount; j++) {
if(list[j].score > list[i].score) {
temp = list[j].score;
list[j].score = list[i].score;
list[i].score = temp;
strcpy(temp2, list[j].code);
strcpy(list[j].code, list[i].code);
strcpy(list[i].code, temp2);
temp = list[j].s1;
list[j].s1 = list[i].s1;
list[i].s1 = temp;
temp = list[j].s2;
list[j].s2 = list[i].s2;
list[i].s2 = temp;
temp = list[j].s3;
list[j].s3 = list[i].s3;
list[i].s3 = temp;
temp1 = list[j].grade;
list[j].grade = list[i].grade;
list[i].grade = temp1;
}
}
}
view(list, amount);
}
阅读全文