当前位置:文档之家› 学生成绩管理系统

学生成绩管理系统


void inputs(char *prompt,char *s,int count); STUDENT *load(); main() { int i; STUDENT *head; head=init(); for(;;) { switch(menu_select()) { case 0:head=init();break; case 1:head=create();break; case 2:head=insert(head);break; case 3:save(head);break; case 4:print(head);break; case 5:search1(head);break; case 6:head=del(head);break; case 7:sort(head);break; case 8:tongji(head);break; case 9:search2(head);break; case 10:exit(0); } } } int menu_select() { char *menu[]={"************菜单************", "0. 初始化链表", "1. 输入学生成绩", "2. 插入学生成绩", "3. 保存学生记录", "4. 显示学生记录", "5. 按学号查找学生信息", "6. 删除指定学号的学生信息", "7. 按某一门课对学生成绩排序", "8. 统计某门课程的学生成绩",
{ do{ printf("分数%d",i+1); scanf("%d",&info->score[i]); if(info->score[i]>100||info->score[i]<0) printf("输入数据有误,请重新输入\n"); }while(info->score[i]>100||info->score[i]<0); s1=s1+info->score[i]; } info->sum=s1; info->average=(float)s1/N; info->order=0; info->next=NULL; p=h; q=h; while(strcmp(p->no,s)&&p!=NULL) {q=p;p=p->next;} if(p==NULL) if(p==h) h=info; else q->next=info; else if(p==h) { info->next=p; h=info; } else { info->next=p; q->next=info; } printf("\n已经插入了%s这个学生\n",info->name); printf("----不要忘了存盘啊--\n"); return(h); } void save(STUDENT *h)
if(p==h) h=p->next; else q->next=p->next; free(p); printf("\n已经删除学号为%s的学生\n",s); } return h; } void search1(STUDENT *h) { STUDENT *p; char s[11]; printf("请输入你要查找的同学的学号\n"); scanf("%s",s); p=h; while(strcmp(p->no,s)&&p!=NULL) p=p->next; if(p==NULL) printf("'n没有学号为%s的学生\n",s); else { printf("\n\n\n***********************找到了 ***********************\n"); printf("|学号 | 姓名 | 数学 | 英语 | 计算机 | 总分 | 平均分 | 名 次 |\n"); printf("|----------|-----------|----|----|----|------|------|---|\n"); printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p>name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order); printf("***********************end***********************\n"); } } void search2(STUDENT *h) { STUDENT *p; char s[11]; printf("请输入你要查找的第%d门分数:",i+1); scanf("%d",&info->score[i]); if(info->score[i]>100||info->score[i]<0) printf("输入成绩错误,请重新输入:\n"); }while(info->score[i]>100||info->score[i]<0); s=s+info->score[i]; } info->sum=s; info->average=(float)s/N; info->order=0; info->next=h; h=info; } return h; } void inputs(char *prompt,char *s,int count) { char p[255]; do { printf(prompt); scanf("%s",p); if(strlen(p)>count) printf("\n太长了!\n"); }while(strlen(p)>count); strcpy(s,p); } void print(STUDENT *h) { int i=0; STUDENT *p; p=h; printf("\n\n\n***********************学生 ***********************\n"); printf("|序号|学号 | 姓名 | 数学 | 英语 |计算机 | 总分 |平均分 |名次 |\n");
"9. 按姓名查找学生信息", "10. 退出系统"}; char s[3]; int c,i; for(i=0;i<=11;i++) printf(" %s\n",menu[i]); do { printf("\n请选择0~10中的某一个选项\n"); scanf("%s",s); c=atoi(s); }while(c<0||c>10); return c; } STUDENT *init() { return NULL; } STUDENT *create() { int i;int s; STUDENT *h=NULL,*info; for(;;) { info=(STUDENT *)malloc(sizeof(STUDENT)); if(!info) { printf("\n内存不足"); return NULL; } inputs("输入学号:",info->no,11); if(info->no[0]=='@')break; inputs("输入姓名:",info->name,15); printf("开始输入%d门课的成绩\n",N); s=0; for(i=0;i<N;i++) {
printf("|---|-------|--------|----|----|----|------|------|---|\n"); while(p!=NULL) { i++; printf("|%3d |%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",i,p>no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p>order); p=p->next; } printf("***********************end***********************\n"); } STUDENT *del(STUDENT *h) { STUDENT *p,*q; char s[11]; printf("请输入要删除的学生的学号\n"); scanf("%s",s); q=p=h; while(strcmp(p->no,s)&&p!=NULL) { q=p; p=p->next; } if(p==NULL) printf("\n链表中没有学号为%s的学生\n",s); else { printf("\n\n\n***********************找到了 ***********************\n"); printf("|学号 | 姓名 | 数学 | 英语 | 计算机 | 总分 | 平均分 | 名次 |\n"); printf("|----------|----------|----|----|----|------|------|---|\n"); printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p>name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order); printf("***********************end***********************\n"); printf("请按任意键删除\n"); getchar();
相关主题