⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 save.c

📁 学生成绩管理系统,C语言开发,图形界面,希望对大家有所帮助
💻 C
字号:
/*以下是链表保存函数。*/ 
#define filename "data.dat" 
void Save(struct student *head){ 
FILE *fp; 
char *ch="完",*End="结束"; 
struct student *p; 
struct stdinfor *q; 
fp=fopen(filename,"wb"); 
p=head; 
q=p->stdhead; 
do 
{ 
fwrite(p,sizeof(struct student),1,fp); 
do 
{ 
fwrite(q,sizeof(struct stdinfor),1,fp); 
q=q->stdp; 
}while(q!=NULL); 
fwrite(ch,2,1,fp); 
p=p->stup; 
q=p->stdhead; 
}while(p!=NULL); 
fwrite(End,5,1,fp); 
fclose(fp); 
} 
/*以下是读取上面所保存的数据,并填写到链表中*/ 
int Feof(FILE *fp){ /*本函数判断DATA文件是否结束,是返回0。*/ 
char ch[5],*ch1="结束"; 
int i; 
fread(ch,5,1,fp); 
i=strcmp(ch,ch1); 
fseek(fp,(long)(-5),SEEK_CUR); 
return(i); 
} 
struct stdinfor *Smakechain1(FILE *fp){ /*本函数完成成绩链表的建立和成绩数据的读取,填充。*/ 
struct stdinfor *head,*fore,*back; 
int i; 
char ch[3],*ch1="完"; 
ch[2]='\0'; 
fore=(struct stdinfor *)malloc(sizeof(struct stdinfor)); 
head=fore; 
back=fore; 
fread(head,sizeof(struct stdinfor),1,fp); 
fread(ch,2,1,fp); 
while(strcmp(ch,ch1)!=0) 
{ 
fseek(fp,(long)(-2),SEEK_CUR); 
fore=(struct stdinfor *)malloc(sizeof(struct stdinfor)); 
fread(fore,sizeof(struct stdinfor),1,fp); 
back->stdp=fore; 
back=fore; 
fread(ch,2,1,fp); 
} 
back->stdp=NULL; 
return(head); 
} 
struct student * Smakechain(FILE *fp){ /*本函数完成成绩链表的建立和成绩数据的读取,填充。*/ 
struct student *head,*fore,*back; 
struct stdinfor *head1; 
int i; 
fore=(struct student *)malloc(sizeof(struct student)); 
head=fore; 
back=fore; 
fread(head,sizeof(struct student),1,fp); 
head->stdhead=Smakechain1(fp); 
while(Feof(fp)!=0) 
{ 
fore=(struct student *)malloc(sizeof(struct student)); 
back->stup=fore; 
fread(fore,sizeof(struct student),1,fp); 
head1=Smakechain1(fp); 
fore->stdhead=head1; 
back=fore; 
} 
back->stup=NULL; 
return(head); 
} 
void Read(void){ 
FILE *fp; 
fp=fopen(filename,"rb"); 
MainHead=Smakechain(fp); 
HManageData();/*学生数据处理函数。*/ 
fclose(fp); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -