学生成绩管理系统代码(c语言编写)(共9页).doc
精选优质文档-倾情为你奉上C程序 学生管理系统/* Note:Your choice is C IDE */#include "stdio.h"#include"stdlib.h"#include"string.h"typedef struct student/定义学生char name10;int number;char sex2;int math;int eglish;int clanguge;int average;student;typedef struct unit/定义接点student date; struct unit *next;unit;unit* build()/建立链表并返回指针unit *p;if(p=(unit*)malloc(sizeof(unit)=NULL) printf("=>初始化失败!"); return 0; else p->next=NULL; p->date.number=0;/头结点存放学生人数 printf("初始化成功!n"); return p; void add(unit *head)/增加学生unit *p,*q;int m,n=0;q=head->next;p=(unit*)malloc(sizeof(unit);printf("=>请输入新生姓名!n"); gets(p->date.name);fflush(stdin);printf("=>请输入学号!n");while(n=0)scanf("%d",&m);fflush(stdin);if(q=NULL) n=1;while(q)if(q->date.number=m) printf("=>你输入的学号与已有同学的学号相同,请重新输入!n"); q=head->next; break; else q=q->next; if(q=NULL) n=1; p->date.number=m;printf("=>请输入性别!n");gets(p->date.sex);fflush(stdin);printf("=>请输入数学成绩n");scanf("%d",&m);fflush(stdin);p->date.math=m;printf("=>请输入英语成绩n");scanf("%d",&m);fflush(stdin);p->date.eglish=m; printf("=>请输入c语言成绩n");scanf("%d",&m);fflush(stdin);p->date.clanguge=m;p->date.average=(p->date.math+p->date.eglish+p->date.clanguge);q=head->next;head->next=p;p->next=q;head->date.number+;void deletion(unit *head)/删除一名学生unit *p=head->next,*q=head;char N10;printf("=>请输入你想删除的学生姓名!n");gets(N);fflush(stdin);if(p=NULL)printf("=>系统无学生可删除!n");while(p)if(strcmp(p->date.name,N)=0)q->next=p->next;head->date.number-;printf("=>删除%s成功!n",p->date.name);free(p);break;elsep=p->next;q=q->next;if(p=NULL)printf("=>你要删除的学生不存在,删除失败!n");int display(unit *head)/显示学生信息unit *p=head->next;int m,n=0;char N10;if(p=NULL)printf("=>系统无学生!n"); return 0;while(n=0)printf("*n");printf("=>请选择你的操作!n");printf("=>ttt1.显示所有t2.按姓名查找nttt3.按学号查找t4.返回主菜单n");scanf("%d",&m);fflush(stdin);switch(m)case 1:printf("n=>该系统拥有%d名学生!nn",head->date.number); p=head->next; printf("t姓名t学号t性别t数学t英语tc语言t综合nn"); while(p) printf("t%st%dt%st%dt%dt%dt%dn",p->date.name,p->date.number,p->date.sex,p->date.math, p->date.eglish,p->date.clanguge,p->date.average); p=p->next; break;case 2:printf("=>请输入查找姓名!n"); gets(N); fflush(stdin); p=head->next; while(p) if(strcmp(p->date.name,N)=0) printf("t姓名t学号t性别t数学t英语tc语言t综合n"); printf("t%st%dt%st%dt%dt%dt%dn",p->date.name,p->date.number,p->date.sex,p->date.math, p->date.eglish,p->date.clanguge,p->date.average); break; else p=p->next; if(p=NULL) printf("=>你要查的学生不存在!"); break; case 3: printf("=>请输入查找学号!n"); scanf("%d",&m); fflush(stdin); p=head->next; while(p) if(p->date.number=m) printf("t姓名t学号t性别t数学t英语tc语言t综合n"); printf("t%st%dt%st%dt%dt%dt%dn",p->date.name,p->date.number,p->date.sex,p->date.math, p->date.eglish,p->date.clanguge,p->date.average); break; else p=p->next; if(p=NULL) printf("=>你要查的学生不存在!n"); break; case 4:n=1;break;return 1; int range(unit *head)/排序unit *p=head,*q=head->next;int n,i,m=head->date.number;printf("*n");printf("ttt1.按学号t2.按成绩nn");printf("=>请选择操作!n");scanf("%d",&n);fflush(stdin);if(q=NULL) printf("=>无学生可排序!n");return 0;switch(n)case 2:for(i=0;i<m;i+)/按总分排序 p=head;q=head->next; while(q->next) if(q->date.average)<(q->next->date.average) p->next=q->next; p=p->next; q->next=p->next; p->next=q; else p=p->next;q=q->next; break; case 1:for(i=0;i<=m;i+)/按学号排序 p=head;q=head->next; while(q->next) if(q->date.number)>(q->next->date.number) p->next=q->next; p=p->next; q->next=p->next; p->next=q; else p=p->next;q=q->next; break;printf("=>排序成功!n");return 1;void menu()printf("n* 主菜单 *n");printf("ttt1.新建系统t2.添加学生nttt3.删除学生t4.查看信息nttt5.排列顺序t6.读取信息nttt7.保存信息t8.退出系统n");printf("=>请选择你的操作!n");int save(unit *head)/保存FILE *fp;unit *p; p=head;if(fp=fopen("d:学生","wb+")=NULL) printf("=>保存失败!"); return 0; while(p) fwrite(&(p->date),sizeof(student),1,fp); p=p->next; printf("=>保存成功!"); fclose(fp); return 1;unit* read()/读入系统学生信息int i;unit *p,*q,*head;FILE *fp;if(head=(unit*)malloc(sizeof(unit)=NULL) printf("=>开辟空间失败!"); exit(1); else head->next=NULL; head->date.number=0;/头结点存放学生人数 q=head; if(fp=fopen("d:学生","rb")=NULL) printf("=>系统无学生!n"); return 0; fread(&(q->date),sizeof(student),1,fp); for(i=0;i<head->date.number;i+) if(p=(unit*)malloc(sizeof(unit)=NULL) printf("=>读值失败!"); exit(1); fread(&(p->date),sizeof(student),1,fp); p->next=q->next; q->next=p; fclose(fp); return head;void main()int m=0,n, i; unit *head; printf("*nn"); printf("ttt* 欢迎使用学生成绩管理系统 * n"); printf("ntttttttt编译员:岳英明nn"); printf("=>正在读取系统信息.n"); if(head=read()=0) printf("=>是否新建?n"); printf("ttt是(1)tt否(2)n"); scanf("%d",&i); fflush(stdin); if(i=1) head=build(); else if(i=2) exit(1); else printf("=>信息导入成功!"); while(m=0) menu(); scanf("%d",&n); fflush(stdin); switch(n) case 1: head=build();break; case 2:add(head);break; case 3:deletion(head);break; case 4:display(head);break; case 5: range(head);break; case 6:head=read();if(head!=0) printf("=>读取存盘成功!n");break; case 7:save(head);break; case 8:m=1;break; 专心-专注-专业