1、找到就输出此学生全部信息。5、统计功能能: 用函数 void stat(STUDENT *data, int len)来实现。6、退出系统:可用一个函数 exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。三、程序编写#include stdio.hstring.h#define MAXN 35#define Maxsize325typedef struct student / 学生信息int no;char nameMaxsize;char sexMaxsize;char ageMaxsize;char adressMaxsize;char glassnumMa
2、xsize;double Chinese;double math;double English;double mark_ave;double mark_tot; STUDENT;/*- 输入信息子程序 -*/void input(STUDENT *data, int *len)putchar(n);printf(%sn, 请输入新的记录,如果需要退出当前菜单请输入-1. 格式:n 学号n姓名 性别 年龄 地址 班级 学号 语文 数学 英语 如:n1n 张三 93 95 89nscanf(%d, &no);while(no != -1) data*len.no = no;%s %s %s %s
3、%s %lf %lf %lf, data*len.nam&e,data*len.sex,&data*len.age,&data*len.adress,&data*len.glassnum,&data*len.Chinese, &data*len.math,&data*len.English);data*len.mark_ave=(data*len.Chinese+data*len.math+data*len.English)/3.0;data*len.mark_tot=data*len.Chinese+data*len.math+data*len.English;(*len)+;/*- 输出信
4、息子程序 -*/void output(STUDENT *data, int len)int i;system(cls%8s姓名性别年龄地址班级语文数学%10s 英语%12s 平均分 总分for (i =0; i 80; i+)=for (i = 0; i len;%8d, datai.no);, datai.name);, datai.sex);, datai.age);, datai.adress);, datai.glassnum);%8.1lf, datai.Chinese);, datai.math);%10.1lf, datai.English);%12.1lf, datai.ma
5、rk_ave);, datai.mark_tot); 按回车键继续 .getchar();/*- 排序子程序 -*/void sort(STUDENT *data, int len)int i,j,k;STUDENT temp;for (i=0;len-1; i+) for (k=i, j=i+1; j dataj.mark_ave) k=j;if (k != i) temp = datai;datai = datak;datak = temp;/*- 查询子程序 -*/void find(STUDENT *data, int len)int find_no, result ;lab: res
6、ult=0; 请输入需要查找的学生的学号,退出当前菜单请输入 -1.find_no);if (find_no = -1) return; /*exit the fine sub program*/while( dataresult.no != find_no & result = len ) 未查询到相关信息 goto lab;else 查询信息如下: 学号, dataresult.no);, dataresult.name);, dataresult.sex);, dataresult.age);, dataresult.adress);, dataresult.glassnum);, da
7、taresult.Chinese);, dataresult.math);, dataresult.English);, dataresult.mark_ave);, dataresult.mark_tot);/*- 统计子程序 -*/void stat(STUDENT *data, int len)int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0;i if (datai.mark_ave =59) no_59+;else if (datai.mark_ave =69) no_69+;=79) no_79+;= 89) no_89+;else n
8、o_100+; 分数0-5960-6970-7980-8990-100 学生%10d, no_59);, no_69);, no_79);, no_89);, no_100); 按回车键返回 /*- 显示信息子程序 -*/void paint()%55sn, “信计二班学生成绩管理系统 n 制作者: XX n 1 输入信息 2 输出信息n 3 按平均分排序 4 按学号查找n 5 按平均分输出统计信息 6 保存到文件n 0 退出n= 79; 请输入各操作对应的序号 :void save(STUDENT *data, int len)/将/ 数据保存到文件FILE *fp;fp=fopen(成绩统
9、计表 .txt,wfprintf(fp, 学号 姓名 性别 年龄 地址 班级 语文 数学%10sn=n%10.1lfnfclose(fp); 文件已保存到 成绩统计表 .txt/*- 主程序-*/void main()STUDENT dataMAXN;int len = 0;char ctrl_ch;paint();%cctrl_ch);while (ctrl_ch != 0) ; case 1:input(data, &len);break;case 2output(data, len);3sort(data, len);4find(data, len);5insert(data, &6delete_item(data, &7stat(data, len);8save(data, len);default:if (ctrl_ch !) printf( 输入错误!) paint();四、误差分析此程序没有按加权平均排序功能是本程序的一大弊端, 还有就是所列科目少了点, 由于本课题中的许多知识点都没有学过, 需要查找课外资料,所以如有错误,希望老师多多指正,谢谢!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1