1、成绩管理系统代码程序设计中用到的结构体类型:学生信息结构体类型:# include # include # include # include # include void menu();void main();void alter(linklist L);void delnode(linklist L);void insert(linklist L,listnode *p);void outputlist(linklist L);listnode * listfind(linklist L);void sort(linklist L);struct student int number;/学
2、号 float score;/成绩 char name10;/姓名int english; int wuli; int huaxue; int sum;void main()/主函数 int i; L=(listnode *)malloc(sizeof(listnode); L-next=NULL; /通过malloc申请sizeof(listnode) 大小的一段连续内存空间,并将该空间地址首地址(指针)强制转换成listnode* 类型,并赋值给lnode变量 for( ; ; ) menu(); scanf(%d,&i); switch( i) case 1: printf( *学生成绩
3、管理系统的建立*n); L=createlist(); break; case 2: printf( *n); printf( * 插入一条新记录 *n); printf( *n); printf( * 学号 班级 姓名 语文 数学 英语 物理 化学 *n); printf( *n); p=(listnode *)malloc(sizeof(listnode); scanf(%d,%d,%d,%d,%d,%d,%d,%d,p-data.num,p-data.clas,p-data.name,p-data.yuwen,p-data.math,p-data.english,p-data.wuli,
4、p-data.huaxue); insert(L,p); break; case 3: printf( *n); printf( * 查询记录 *n); printf( *n); p=listfind(L); if(p!=NULL) printf( * 学号 班级 姓名 语文 数学 英语 物理 化学 *n); printf( -n); printf( %s %s %s %d %d %d %d %d,p-data.num,p-data.clas,p-data.name,p-data.yuwen,p-data.math,p-data.english,p-data.wuli,p-data.huaxu
5、e); printf( -n); else printf(没有你要找的人 ! n); break;case 4: printf( *n); printf( * 修改记录 *n); printf( *n); alter(L);break; case 5: printf( *n); printf( * 删除记录 *n); printf( *n); delnode(L); break; case 6: printf( *n); printf( * 列出所有记录 *n); printf( *n); outputlist(L); break; case 7: scort(L,p); printf(t 谢
6、谢使用! n); break ; void menu()/主界面 printf( -Start Menu-n); printf( = n); printf( | 学生成绩管理系统 |n); printf( |*|n); printf( |* 1.写入学生信息 *|n); printf( |-|n); printf( |* 2.添加学生信息 *|n); printf( |-|n); printf( |* 3.查找学生信息 *|n); printf( |-|n); printf( |* 4.修改学生信息 *|n); printf( |-|n); printf( |* 5.删除学生信息 *|n);
7、printf( |-|n); printf( |* 6.查看全部学生 *|n); printf( |-|n); printf( |* 7.按照成绩排序 *|n); printf( |-|n); printf( |* 0.退出管理系统 *|n); printf( |-|n); printf( = n); printf(n请选择数字 0-7.nn);/函数功能:实现按成绩排序linklist scort(linklist L)linklist p,q,small; int temp;for(p = L-next; p-next != NULL; p = p-next) small = p; for
8、(q = p-next; q; q = q-next) if(q-data.sum data.sum) small = q; printf(循环后,获得最小值为:%d, 此时链表为:, small-data.sum); if(small != p) temp = p-data.sum; p-data.sum = small-data.sum; small-data.sum = temp; listTraverse(L); printf(输出排序后的数字:n); L=scort(L); linklist listTraverse(linklist L) p=L-next; while(p) pr
9、intf(按总成绩排序为%d ,p-data.sum); p=p-next; printf(n); /函数功能:打印信息void outputlist(linklist L) listnode * p; p=L-next; printf( 学号 班级 姓名 语文 数学 英语 物理 化学n); printf( -n); while(p!=NULL) printf(%s%s%s%d%d%d%d%d%d,p-data.num,p-data.clas,p-data.name,p-data.yuwen,p-data.math,p-data.english,p-data.wuli,p-data.huaxu
10、e,p-data.sum); printf( -n); p=p-next; /函数功能:输入数据void insert(linklist L,listnode *p) /*向单链表中插入一个完整的信息*/ listnode *p1,*p2; p1=L; p2=p1-next; printf(学号 班级 姓名 语文 数学 英语 物理 化学 n); printf( -n); scanf(%s%s%s%d%d%d%d%d,p-data.num,p-data.clas,p-data.name,&p-data.yuwen,&p-data.math,&p-data.english,&p-data.wuli
11、,&p-data.huaxue); p-data.sum=p-data.yuwen+p-data.math+p-data.english+p-data.wuli+p-data.huaxue; while(p2!=NULL & strcmp(p2-data.num,p-data.num)next; p1-next=p; p-next=p2; printf(添加成功!n);/*函数功能:按学号找学生信息*/listnode * listfind(linklist L) listnode * p; char num11; char name9; int xz; printf(-n); printf(
12、 1.按学号查询n); printf( 2.按姓名查询n); printf(-n); printf(请选择: ); p=L-next; scanf(%d,&xz); if (xz=1) printf( 请输入要查找的学号: ); scanf(%s,num); while(p & strcmp(p-data.num,num)!=0) p=p-next; else if(xz=2) printf(请输入要查询者的姓名: ); scanf(%s,name); while(p & strcmp(p-data.name,name)!=0) p=p-next; return p;void menu(str
13、uct student *parr,int len) printf(tt|=|n); printf(tt|-|n); printf(tt|- welcome! -|n); printf(tt|- 学生成绩管理系统 -|n); printf(tt|-|n); printf(tt|=|n); getchar(); getchar(); system(cls); return;/*函数功能:结束整个程序*/void exit(struct student *parr,int len)/ getchar(); char ch = 0; do printf(您确定要退出!(y/n):); scanf(
14、%c,&ch); while(ch != Y) & (ch != y) & (ch != N) & (ch != n); if(ch = Y) | (ch = y) exit(0); return;/*函数功能:修改学生信息*/void alter(linklist L)/成绩管理系统链表上的结点修改 char ch; listnode *p,*q; p=listfind(L); if(p=NULL) printf(没有查到要修改的学生!n); else printf(真的要修改该结点吗? (y/n); scanf(%s,&ch); if(ch=y|ch=Y) q=L; printf(输入新的
15、学号:n); scanf(%s,p-data.num); printf(输入新班级:n); scanf(%s,p-data.clas); printf(输入新的姓名:n); scanf(%s,p-data.name); printf(输入语文:n); scanf(%d,&p-data.yuwen); printf(输入英语:n); scanf(%d,&p-data.math); printf(输入地址:n); scanf(%d,&p-data.english); printf(输入物理:n); scanf(%d,&p-data.wuli); printf(输入化学:n); scanf(%d,&
16、p-data.huaxue); printf(修改成功!n); if(ch=n|ch=N) printf(无需修改n); /*函数功能:添加学生*/void insert(struct student *parr,int *len) int number = 0;/添加学生的个数 int i; printf(请输入您要添加几个学生信息:); scanf(%d,&number); parr = (struct student *)malloc(sizeof(struct student) * (*len+number); for(i=*len; i*len+number;i+) printf(请输入第%d个学生信息:,i + 1); printf(姓名:); scanf(%s,parri.name); printf(成绩: ); scanf(%f,&parri.score); printf(学号:); scanf(%d,&parri.number); output(parr,&*len);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1