#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/********定义学生结构体********/
typedef struct stu
{
int ID;
char name[20];
char sex[10];
char cla[20];
int Cyuyan;
int English;
int Math;
int sum;
float ave;
struct stu *next;
}Student;
/***********初始化学生表*************/
Student *initStu()
{
Student *q;
q=(Student*)malloc(sizeof(Student));
if(q!=NULL)
{
q->next=NULL;
return q;
}
else
return NULL;
}
/**************创建学生数据表*********************/
int creat(Student *q)
{
int flag,n;
Student *pb;
n=0;
do
{
pb=(Student*)malloc(sizeof(Student));
if(pb==NULL)
{
printf("创建失败!");
return 0;
}
printf("Enter ID:");
scanf("%d",&pb->ID);
if(n==pb->ID)
{
printf("该学号已存在!\n");
goto Again;
}
printf("Enter name:");
scanf("%s",pb->name);
printf("Enter sex:");
scanf("%s",pb->sex);
printf("Enter cla:");
scanf("%s",pb->cla);
printf("Please enter the scores of corse!\n");
printf("Enter Cyuyan:");
scanf("%d",&pb->Cyuyan);
while(pb->Cyuyan>100||pb->Cyuyan<0)
{
getchar();
printf("Please enter again:");
scanf("%d",&pb->Cyuyan);
}
printf("Enter English:");
scanf("%d",&pb->English);
while(pb->English>100||pb->English<0)
{
getchar();
printf("Please enter again:");
scanf("%d",&pb->English);
}
printf("Enter Math:");
scanf("%d",&pb->Math);
while(pb->Math>100||pb->Math<0)
{
getchar();
printf("Please enter again:");
scanf("%d",&pb->Math);
}
pb->sum=pb->Cyuyan+pb->English+pb->Math;
pb->ave=(float)(pb->Cyuyan+pb->English+pb->Math)/3;
n=pb->ID;
pb->next=q->next;
q->next=pb;
Again:
printf("Want to continue??(1/0)\n");
scanf("%d",&flag);
}while(flag);
return 1;
}
/******************************************/
/*********************按学号查询学生信息****************/
Student *search(Student *q,int m)
{
Student *s;
s=q->next;
while(s!=NULL&&s->ID!=m)
s=s->next;
if(s!=NULL)
return s;
else
return NULL;
}
/****************************************************************/
/**************************修改学生数据**************************/
int modify(Student *q,int m)
{
int flag,n;
Student *t;
t=q->next;
while(t!=NULL&&t->ID!=m)
t=t->next;
if(t!=NULL)
{
while(n)
{
printf("\n修改成绩科目:1.Cyuyan 2.English 3.Math:[ ]\b\b");
scanf("%d",&flag);
if(flag==1)
{
getchar();
printf("\nEnter Cyuyan:");
scanf("%d",&t->Cyuyan);
while(t->Cyuyan>100||t->Cyuyan<0)
{
getchar();
printf("\nEnter Cyuyan again:");
scanf("%d",&t->Cyuyan);
}
}
else if(flag==2)
{
getchar();
printf("\nEnter English:");
scanf("%d",&t->English);