学生成绩管理系统(数据的读写)



下面是数据读写的代码:
























#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include"qtsm.h"
extern int j;
extern int read_dir, write_dir,insure;
int read_account()
{

FILE *acin;
acin=fopen("账户信息.txt", "r");
while (fscanf(acin,"%s", list[j].name) != EOF)
{
fscanf(acin,"%s", list[j++].code);
}
fclose(acin);
return 0;
}
int write_account()
{
FILE *acout;
acout=fopen("账户信息.txt", "w+");
int is = 0;
while (is<=j)
{
fprintf(acout,"%s        %s\n", list[is].name, list[is].code);
is++;
}
fclose(acout);

return 0;
}
int read_grade()
{ FILE *grain;
//-----------------------------------------------------------  
   if(read_dir==3)grain=fopen("学生成绩.txt", "r");
   else if(read_dir == 1) grain = fopen("Text1.txt", "r");
   else if (read_dir == 2&& insure==1) grain = fopen("Text2.txt", "r");
   else { printf("找不到输入文件!\n"); return 0; }
//----------------------------------------------------------- 
    p1 = p2 = head=NULL;
char index[30];
int n = 0;
p1 = p2 = head=malloc(sizeof(infor));
if (fscanf(grain,"%s", index) == EOF) { return 0; }
else { 
strcpy(p1->name, index); 
}
fscanf(grain, "%s", p1->number);
fscanf(grain, "%s", p1->gender);
fscanf(grain, "%d", &p1->math);
fscanf(grain, "%d", &p1->chi);
fscanf(grain, "%d", &p1->Eng);
fscanf(grain, "%d", &p1->phy);
fscanf(grain, "%d", &p1->chem); 
while (fscanf(grain,"%s", index)!=EOF)
{
n++;
if(n!=1) { p2->next = p1; }
p2 = p1;
p1 = malloc(sizeof(infor));
strcpy(p1->name, index);
fscanf(grain, "%s", p1->number); 
fscanf(grain, "%s", p1->gender);
fscanf(grain, "%d", &p1->math);
fscanf(grain, "%d", &p1->chi);
fscanf(grain, "%d", &p1->Eng);
fscanf(grain, "%d", &p1->phy);
fscanf(grain, "%d", &p1->chem); 
}
    p2->next=p1;
p1->next = NULL;
fclose(grain);
read_dir = 0;
//insure = 0;
return 0;
}
int write_grade()
{
FILE *graout;
if (write_dir == 3) { graout = fopen("学生成绩.txt", "w+"); }
else if (write_dir == 1) { graout = fopen("Text1.txt", "w+"); }
else if (write_dir == 2) { graout = fopen("Text2.txt", "w+"); insure = 1; }
else { printf("找不到输出对象或未进输入!\n"); return 0; }

for (infor *list1 = head; list1 != NULL; list1 = list1->next)
{
fprintf(graout,"%s   %s   %s   %d   %d   %d   %d   %d\n", list1->name, list1->number, list1->gender, list1->math, list1->chi, list1->Eng, list1->phy, list1->chem);
}
fclose(graout);
write_dir = 0;
return 0;
}
void read_infor()
{
FILE *grain;
grain = fopen("综合成绩.txt", "r");
p1 = p2 = head = NULL;
char index[30];
int n = 0;
p1 = p2 = head = malloc(sizeof(infor));
if (fscanf(grain, "%s", index) == EOF) { return 0; }
else {
strcpy(p1->name, index);
}
fscanf(grain, "%s", p1->number);
fscanf(grain, "%s", p1->gender);
fscanf(grain, "%d", &p1->math);
fscanf(grain, "%d", &p1->chi);
fscanf(grain, "%d", &p1->Eng);
fscanf(grain, "%d", &p1->phy);
fscanf(grain, "%d", &p1->chem);
fscanf(grain, "%d", &p1->sum);
fscanf(grain, "%lf", &p1->average);
fscanf(grain, "%d", &p1->rank);
while (fscanf(grain, "%s", index) != EOF)
{
n++;
if (n != 1) { p2->next = p1; }
p2 = p1;
p1 = malloc(sizeof(infor));
strcpy(p1->name, index);
fscanf(grain, "%s", p1->number);
fscanf(grain, "%s", p1->gender);
fscanf(grain, "%d", &p1->math);
fscanf(grain, "%d", &p1->chi);
fscanf(grain, "%d", &p1->Eng);
fscanf(grain, "%d", &p1->phy);
fscanf(grain, "%d", &p1->chem);
fscanf(grain, "%d", &p1->sum);
fscanf(grain, "%lf", &p1->average);
fscanf(grain, "%d", &p1->rank);
}
p2->next = p1;
p1->next = NULL;
fclose(grain);
return 0;
}
void write_infor()
{
FILE *graout; graout=fopen("综合成绩.txt", "w");
for (infor *list1 = head; list1 != NULL; list1 = list1->next)
{
fprintf(graout, "%s   %s   %s   %d   %d   %d   %d   %d   %d   %lf   %d   \n", list1->name, list1->number, list1->gender, list1->math, list1->chi, list1->Eng, list1->phy, list1->chem, list1->sum, list1->average, list1->rank);
}
fprintf(graout,"\n//----------------------------------------------------------------------------------------------------\n\n" );
fclose(graout);
return 0;
}

猜你喜欢

转载自blog.csdn.net/lannister_awalys_pay/article/details/80142596