#include#include #include #include #define LEN sizeof(struct Chain) struct Chain { int num; char name[8]; float course1; float course2; float course3; struct Chain *next; }; int n; struct Chain *insert(struct Chain *head) { struct Chain *p1,*p2,*pt; n=0; if(head==NULL) { p1=p2=(struct Chain *)malloc(LEN); printf("输入学号 姓名 课程1 课程2 课程3 (输入0 0 0 0 0结束):n"); scanf("%d %s %f %f %f",&p1->num,&p1->name ,&p1->course1 ,&p1->course2 ,&p1->course3 ); while(p1->course1 !=0 ) { n=n+1; if(n==1) head=p1; else p2->next =p1; p2=p1; p1=(struct Chain *)malloc(LEN); printf("输入学号 姓名 课程1 课程2 课程3 (输入0 0 0 0 0结束):n"); scanf("%d %s %f %f %f",&p1->num,&p1->name ,&p1->course1 ,&p1->course2 ,&p1->course3 ); } p2->next =NULL; } else { pt=head; printf("插入一个数据n"); p1=(struct Chain *)malloc(LEN); printf("输入学号 姓名 课程1 课程2 课程3 (输入0 0 0 0 0结束):n"); scanf("%d %s %f %f %f",&p1->num,&p1->name ,&p1->course1 ,&p1->course2 ,&p1->course3 ); while(pt!=NULL) { if(strcmp(pt->name ,p1->name)==0) { printf("重名!!!!!!!!n"); return(head); } pt=pt->next ; } pt=p2=head; if(p1->num !=0) { do { p2=p2->next ; if(p1->num < head->num) { p1->next =pt; head=p1; break; } else if(p2!=NULL&&p1->num num ) { pt->next =p1; break; } else if(pt->next ==NULL) { printf("%dn",pt->num ); pt->next =p1; p1->next =NULL; break; } pt=pt->next ; }while(pt!=NULL); printf("插入完成n"); } else free(p1); } return(head); } struct Chain *cancel(struct Chain *head) { struct Chain *p1,*p2; char name2[8]; p1=p2=head; n=0; if(p1==NULL) printf("n链表为空!!!!!!!!nn"); else { printf("输入要删除的名字n"); scanf("%s",&name2); while(1) { if(strcmp(p1->name ,name2)==0) { if(p2==head) { head=head->next ; free(p1); p1=p2=NULL; printf("删除成功nn"); } else { p2->next =p1->next ; free(p1); p1=p2=NULL; } break; } else if(p1->next ==NULL) { printf("n无该数据!!!!!!!!nn"); break; } p2=p1; p1=p1->next; } return(head); } } void search(struct Chain *head) { struct Chain *pt; char name1[8]; pt=head; n=0; if(pt==NULL) printf("n链表为空!!!!!!!!nn"); else { printf("输入要查询的名字n"); scanf("%s",&name1); while(1) { if(strcmp(pt->name ,name1)==0) { printf("编号 姓名 课程1 课程2 课程3n"); printf("%d%10s%11.2f%11.2f%11.2fnn",pt->num ,pt->name ,pt->course1 ,pt->course2 ,pt->course3 ); break; } else if(pt->next ==NULL) { printf("n无该数据!!!!!!!!nn"); break; } pt=pt->next; } } } void print(struct Chain *head) { struct Chain *pt; system("CLS"); if(head==NULL) printf("n无数据nn"); else { pt=head; printf(" 编号 姓名 课程1 课程2 课程3n"); do { printf("%5d%10s%11.2f%11.2f%11.2fn",pt->num ,pt->name ,pt->course1 ,pt->course2 ,pt->course3 ); pt=pt->next ; }while(pt!=NULL); } printf("n"); } int main() { struct Chain *head; int i; head=NULL; system("color F0"); while(1) { printf("***学生成绩管理系统***n" "1-----输入n" "2-----删除n" "3-----查询n" "4-----显示n" "5-----退出n" ); printf("输入选项:"); scanf("%d",&i); getchar(); switch(i) { case 1:head=insert(head);break; case 2:head=cancel(head);break; case 3:search(head);break; case 4:print(head);break; case 5:return 0; default:printf("错误nn"); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)