#include
#include
#define N 4
struct binode{
char num;
char name;
int score;
struct binode llink,*rlink;
};
struct binode binode;
struct binode *list=0;
struct binode *p=0;
struct binode *r=0;
struct binode *q=0;
struct binode *u=0;
void build()
{
int i;
for(i=0;i<N;i++)
{
p=(struct binode)malloc(sizeof(struct binode));
printf("input the information of %d",i+1);
printf("\n");
printf("请输入学生学号:");
scanf("%s",p->num);
printf("请输入学生姓名:");
scanf("%s",p->name);
printf("请输入学生计算机成绩:");
scanf("%d",&p->score);
if(list==NULL)
{
p=list->rlink;
list=p->llink;
}
else
{
p->llink=r;
r->rlink=p;
}
r=p;
}
}
int delete()
{
int ch;
printf("请输入所删除学生的学号:");
q=list;
scanf("%s",ch);
while(strcmp(ch,q->num)!=0)
{
if(q->rlink==NULL)
{
printf("cannot find the node");
return -1;
}
q=q->rlink;
}
(q->rlink)->llink=q->llink;
(q->llink)->rlink=q->rlink;
free(q);
return 1;
}
void grade()
{
int excellent=0;
int good=0;
int ordinary=0;
int pass=0;
int fail=0;
int ah;
int i;
u=list->rlink;
ah=u->score/10;
while(u->rlink!=NULL)
{
switch(ah)
{
case 10:
case 9:excellent++;break;
case 8:good++;break;
case 7:ordinary++;break;
case 6:pass++;break;
default:fail++;break;
}
q=list->llink;
i=1;
while(q->rlink!=NULL)
{
printf("the score of %d",i);
printf("%d",q->score);
}
printf("计算机基础成绩分数段统计");
printf("优秀(>90):%d\n良好(80-90):%d\n一般(70-80):%d\n及格(60-70):%d\n不及格(<60):%d\n",excellent,good,ordinary,pass,fail);
}
}
int main()
{
void build();
int delete();
void grade();
int l;
while(1)
{
printf("************************欢迎光临!");
printf("\n");
printf("1.输入数据\n2.删除数据\n3.分数段统计\n");
printf("请选择:");
scanf("%d",&l);
switch(l)
{
case 1:build();break;
case 2:delete();break;
case 3:grade();break;
default:printf("wrong!");
}
}
}