永发信息网

学生成绩管理系统的源代码 但是其中缺少了 排序,插入,保存文件和读文件的函数 求大神帮忙补充!!!!

答案:1  悬赏:0  手机版
解决时间 2021-01-26 23:57
  • 提问者网友:凉末
  • 2021-01-26 19:30
#include
#include
#include
#include
#include
#define LEN sizeof(STUDENT)
typedef struct stu
{
char num[6];
char name[20];
int score[3];
int sum;
float average;
int order;
struct stu *next;
}STUDENT;
STUDENT *init();
int menu_select();
STUDENT *create();
void print(STUDENT *head);
void search(STUDENT *head);
STUDENT *Delete(STUDENT *head);
STUDENT *sort(STUDENT *head);
STUDENT *insert(STUDENT *head,STUDENT *New);
STUDENT *xiugai(STUDENT *head);
void save(STUDENT *head);
STUDENT *load();

void main()
{STUDENT *head,New;
head=init();
for(;;)
{switch(menu_select())
{
case 1:head=create();break;
case 2:print(head);break;
case 3:search(head);break;
case 4:head=Delete(head);break;
case 5:head=sort(head);break;
case 6:head=insert(head,&New);break;
case 7:save(head);break;
case 8:head=load(); break;
case 9:xiugai(head);break;
case 10:exit(0);
}
}
}

STUDENT *init()
{ return NULL;
}
函数太多打不下了。。。 愿意帮忙的大神,我会补充给你看~~
最佳答案
  • 五星知识达人网友:煞尾
  • 2021-01-26 20:49
STUDENT *sort(STUDENT *head)
{int i=0;
STUDENT *p1,*p2,*t,*temp;
temp=head->next;
head->next=NULL;
while(temp!=NULL)
{
t=temp;
temp=temp->next;
p1=head;
p2=head;
while(t->averageaverage&&p1!=NULL)
{
p2=p1;
p1=p1->next;
}
if(p1==p2)
{
t->next=p1;
head=t;
}
else
{
t->next=p1;
p2->next=t;
}
}
p1=head;
while(p1!=NULL)
{
i++;
p1->order=i;
p1=p1->next;
}
printf("排序成功 Sorting is sucessful.\n");
return (head);
}


STUDENT *insert(STUDENT *head,STUDENT *mynew)
{STUDENT *p0,*p1,*p2;
int n,sum1,i;
p1=head;
p0=mynew;
printf("\nPlease enter a mynew record.\n");
printf("输入学号Enter the num:");
scanf("%s",mynew->num);
printf("输入名字Enter the name:");
scanf("%s",mynew->name);
printf("Please enter the %d scores.\n",3);
sum1=0;
for(i=0;i<3;i++)
{
do{
printf("成绩score%d:",i+1);
scanf("%d",&mynew->score[i]);
if(mynew->score[i]>100||mynew->score[i]<0)
printf("数据错误Data error,please enter again.\n");
}while(mynew->score[i]>100||mynew->score[i]<0);
sum1=sum1+mynew->score[i];
}
mynew->sum=sum1;
mynew->average=(float)sum1/3;
mynew->order=0;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{while((p0->averageaverage)&&(p1->next!=NULL))
{p2=p1;
p1=p1->next;
}
if(p0->average>=p1->average)
{if(head==p1)head=p0;
else p2->next=p0;
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}
}
n=n+1;
head=sort(head);
printf("\n学生Student %s 已被更新have been inserted.\n",mynew->name);
printf("不要忘了保存Don't forget to save the mynewfile.\n");
return(head);
}


void save(STUDENT *head)
{FILE *fp;
STUDENT *p;
char outfile[10];
printf("输出文件例如:c:\\score Enter outfile name,forexample c:\\score\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"w"))==NULL)
{
printf("打不开文件Cannot open the file\n");
return;
}
printf("\n保存中...Saving the file......\n");
p=head;
while(p!=NULL)
{
fwrite(p,LEN,1,fp);
p=p->next;
}
fclose(fp);
printf("保存成功....Save the filesuccessfully!\n");
}


STUDENT *load()
{STUDENT *p1,*p2,*head=NULL;
FILE *fp;
char infile[10];
printf("倒入文件例如:c:\\score Enter infile name,for examplec:\\score\n");
scanf("%s",infile);
if((fp=fopen(infile,"r"))==NULL)
{
printf("打不开文件Can not open the file.\n");
return(head);
}
printf("\n寻找文件...Loading the file!\n");
p1=(STUDENT *)malloc(LEN);
if(!p1)
{
printf("内存溢出!Out of memory!\n");
return(head);
}
head=p1;
while(!feof(fp))
{
if(fread(p1,LEN,1,fp)!=1) break;
p1->next=(STUDENT *)malloc(LEN);
if(!p1->next)
{
printf("Out of memory!\n");
return (head);
}
p2=p1;
p1=p1->next;
}
p2->next=NULL;
fclose(fp);
printf("\n你成功的从文件中读取了数据!\nYou have success to read data fromthe file!\n");
return (head);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯