📄 stusco.c
字号:
printf("\n\n @The students' information are completely input!@ \n");
p2->next=NULL;
return(head);
}
struct student * modify(struct student *head)
{ long modify_num,old_num;
struct student *p;
char modify_name[20];
float modify_s1,modify_s2,modify_s3;
loop2:
{
p=head;
printf("\n\n Please input the old student's number which you want to modify : ");
scanf("%lu", &old_num);
}
while(p->num!=old_num && p->next!=NULL) p=p->next;
if (p->num==old_num)
{ printf("\n\n Please input the new number : ");
scanf("%lu",&modify_num);
p->num=modify_num;
printf("\n Please input the new name : ");
scanf("%s",modify_name);
strcpy(p->name,modify_name);
printf("\n Please input the new Chinese Scroe (0~100): ");
scanf("%f",&modify_s1);
if(modify_s1<0||modify_s1>100)
{
printf("Input the wrong mark,please input again:");
scanf("%f",&modify_s1);
}
p->score[0]=modify_s1;
printf("\n Please input the new English Score(0~100) : ");
scanf("%f",&modify_s2);
if(modify_s2<0||modify_s2>100)
{
printf("Input the wrong mark,please input again:");
scanf("%f",&modify_s2);
}
p->score[1]=modify_s2;
printf("\n Please input the new Maths Score (0~100): ");
scanf("%f",&modify_s3);
if(modify_s3<0||modify_s3>100)
{
printf("Input the wrong mark,please input again:");
scanf("%f",&modify_s3);
}
p->score[2]=modify_s3;
p->aver=(modify_s1+modify_s2+modify_s3)/3;
}
else
{ printf("\n\n The number %lu has not exist.Please input number again.\n\n",old_num);
goto loop2;
}
return(head);
}
void print(struct student *head)
{ struct student *p;
printf("\n* ========================================================================== *\n");
printf(" now these %d records are:\n\n",n);
p=head;
printf("*******************************************************************************\n");
printf(" NUMBER @@ NAME @@ CHINESE @@ ENGLISH @@ MATHS @@ AVERAGE \n");
printf("*******************************************************************************\n");
if(head!=NULL)
do
{ printf(" %7lu%13s%14.2f%14.2f%14.2f%13.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->aver);
p=p->next;
}while(p!=NULL);
printf("\n\n* ========================================================================== *\n\n");
}
struct student *del(struct student *head,long del_num)
{ struct student*p1,*p2;
p1=p2=head;
if(head==NULL){printf("\n list null!\n");goto end;}
while((del_num!=p1->num)&&(p1->next!=NULL))
{p2=p1;p1=p1->next;}
if(del_num==p1->num)
{if(p1==head)head=p1->next;
else p2->next=p1->next;
printf("\n\n delete : %lu\n",del_num);
n=n-1;
}
else printf("\n\n Sorry! %lu has not been found!Please input again!\n",del_num);
free(p1);
end:
return(head);
}
struct student * insert(struct student *head,struct student *stud)
{ struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL){head=p0;p0->next=NULL;}
else
{ while((p0->num>p1->num)&&(p1->next!=NULL))
{ p2=p1;p1=p1->next;}
if(p0->num<=p1->num)
{ if(p1==head)head=p0;
else p2->next=p0;
p0->next=p1;}
else
{ p1->next=p0;p0->next=NULL;}}
n=n+1;
return(head);
}
void save(struct student *head)
{ struct student *p;
FILE *fp;
p=head;
if((fp=fopen("student.dat","wb"))==NULL)
{ printf("\n Sorry the file has bot been found!\n");
return;
}
while(p!=NULL)
{
if(fwrite(p,LEN,1,fp)!=1)
{ printf("\n file write error\n");getch();
return;
}
p=p->next;
}
printf(" \n\n\n Congratulations! Save sussccfully ...");
fclose(fp);
}
struct student * load(void)
{ struct student *p1,*p2,*p0;
FILE *fp;
n=0;
p1=p2=p0=(struct student * )malloc(LEN);
if((fp=fopen("student.dat","rb"))==NULL)
{ printf("\n\n\n Try to open file which has failed.\n\n");
return(NULL);
}
printf("\n Reading the file that you save before... \n\n");
printf("*******************************************************************************\n");
printf(" NUMBER @@ NAME @@ CHINESE @@ ENGLISH @@ MATHS @@ AVERAGE \n");
printf("*******************************************************************************\n");
while(!feof(fp))
{
if(fread(p1,LEN,1,fp)!=1)
{ fclose(fp);
goto loop;
}
printf(" %7lu%13s%14.2f%14.2f%14.2f%13.2f\n",p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->aver);
n=n+1;
p2->next=p1;
p2=p1;
p1=(struct student *) malloc(LEN);
}
fclose(fp);
p2->next=NULL;
loop:if(n==0){p0=NULL;clrscr();}
if(n==1)p0->next=NULL;
return(p0);
}
void sea_name(struct student * head)
{ struct student *p;
int flag=0;
long s_num;
p=head;
printf("\n Please input searched number:");
scanf("%lu",&s_num);
while(p!=NULL)
{ if(s_num==p->num)
{ printf("\n\n Has found %lu\n\n",s_num);
printf("*******************************************************************************\n");
printf(" NUMBER @@ NAME @@ CHINESE @@ ENGLISH @@ MATHS @@ AVERAGE \n");
printf("*******************************************************************************\n");
printf(" %7lu%13s%14.2f%14.2f%14.2f%13.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->aver);
flag=1;
}
p=p->next;
}
if(flag!=1) printf("\n\n Has not found this num %lu . It's not exist.\n",s_num);
}
void sort_num(struct student *head )
{ struct student *p1,*p2;
long m;
float s[4];
char n[20];
p1=head;
p2=p1->next;
while(p1->next!=NULL)
{
while(p2!=NULL)
{ if(p1->num>p2->num)
{ m=p1->num;p1->num=p2->num;p2->num=m;
strcpy(n,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,n);
s[0]=p1->score[0];p1->score[0]=p2->score[0];p2->score[0]=s[0];
s[1]=p1->score[1];p1->score[1]=p2->score[1];p2->score[1]=s[1];
s[2]=p1->score[2];p1->score[2]=p2->score[2];p2->score[2]=s[2];
s[3]=p1->aver;p1->aver=p2->aver;p2->aver=s[3];
}
p2=p2->next;
}
p1=p1->next;
p2=p1->next;
}
}
void sort_aver(struct student * head)
{ struct student *p1,*p2;
long m;
float s[4];
char n[20];
p1=head;
p2=p1->next;
while(p1->next!=NULL)
{
while(p2!=NULL)
{ if(p1->aver>p2->aver)
{ m=p1->num;p1->num=p2->num;p2->num=m;
strcpy(n,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,n);
s[0]=p1->score[0];p1->score[0]=p2->score[0];p2->score[0]=s[0];
s[1]=p1->score[1];p1->score[1]=p2->score[1];p2->score[1]=s[1];
s[2]=p1->score[2];p1->score[2]=p2->score[2];p2->score[2]=s[2];
s[3]=p1->aver;p1->aver=p2->aver;p2->aver=s[3];
}
p2=p2->next;
}
p1=p1->next;
p2=p1->next;
}
}
void sort_name(struct student * head)
{ struct student *p1,*p2;
long m;
float s[4];
char n[20];
p1=head;
p2=p1->next;
while(p1->next!=NULL)
{
while(p2!=NULL)
{ if(strcmp(p1->name,p2->name)>0)
{ m=p1->num;p1->num=p2->num;p2->num=m;
strcpy(n,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,n);
s[0]=p1->score[0];p1->score[0]=p2->score[0];p2->score[0]=s[0];
s[1]=p1->score[1];p1->score[1]=p2->score[1];p2->score[1]=s[1];
s[2]=p1->score[2];p1->score[2]=p2->score[2];p2->score[2]=s[2];
s[3]=p1->aver;p1->aver=p2->aver;p2->aver=s[3];
}
p2=p2->next;
}
p1=p1->next;
p2=p1->next;
}
}
void exit()
{
printf("\n\n\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("@ @\n");
printf("@ * Thank you for your using! * @\n");
printf("@ * * @\n");
printf("@ * * @\n");
printf("@ * GOOD BYE * @\n");
printf("@ * * @\n");
printf("@ * Made by qiuyan @\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
}
void mainmenu(void)
{
printf("\n**************** Hello, welcome to the Student Score System **************\n\n\n");
printf("********************************* Main Menu ********************************\n\n");
printf("@ ========================================================================== @\n\n");
printf("@ 1.Add Records 2.Require Records @\n\n");
printf("@ 3.Delete Records 4.Modify Records @\n\n");
printf("@ 5.Sort Records 6.Save Record @\n\n");
printf("@ 7.Load Records 8.Exit @\n\n");
printf("@ ========================================================================== @\n");
printf("\n Please input which you want to choose(1-8): ");}
void menu2(void)
{
printf("\n***************************** Require Records ****************************\n\n");
printf("@ ========================================================================== @\n\n");
printf("@ 2.1 Require Certain Record By Num @\n\n");
printf("@ 2.2 Require All The Records @\n\n");
printf("@ 2.3 Back To Mainmenu @\n\n");
printf("@ ========================================================================== @\n\n");
printf("\n\n Please input which you want to choose(1-3): ");}
void menu5(void)
{
printf("\n************************* Sort Records ************************\n\n");
printf("@ ========================================================================== @\n\n");
printf("@ 5.1 Sort Records By Num @\n\n");
printf("@ 5.2 Sort Records By Name @\n\n");
printf("@ 5.3 Sort Records By Average Score @\n\n");
printf("@ 5.4 Back To Mainmenu @\n\n");
printf("@ ========================================================================== @\n\n");
printf("\n\n Please input which you want to choose(1-4): ");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -