#include
/* strcmp函数原型包含*/ #define N 100
/*定义最大学生人数为100*/
struct student /*学生结构体定义*/ {
char no[11]; /*学号,10位*/ char name[10];/*,3个汉字*/ char grade[10];/*班级*/ char pro[20];/*专业*/
float score[5];/*储存5门功课的成绩*/ float ave;/*储存平均分*/ int year;/*入学年*/ }stu[N]; int num;
void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/ void init(); /*系统初始化函数*/ void newfile(); /*建立新的数据文件*/
void read1(); /*从数据文件中读取数据*/ void weihu(); /*维护界面函数*/
void new1(); /*新增一个学生成绩函数*/ void xiugai(); /*修改学生成绩*/ void xgcj(int); /*修改成绩*/
void delete1(); /*删除学生信息函数*/ void tongji(); /*统计界面函数*/
void tongji1(); /*计算每个学生平均分*/ void tongji2(); /*计算每门课程的平均分*/ void paixu1(); /*排序函数*/ void paino(); /*按学号排序*/ void paiave(); /*按平均分排序*/ void paidkcj(); /*按单科成绩排序*/
void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩*/ void find1(); /*查找界面函数*/ int find(char sno[]); /*按学号查找*/ int findname(charame[]);/*按查找*/
void findyear(int cyear); /*按入学年查找*/ void save(); /*保存文件*/ void stop(); /*停顿函数*/
void stop() /*停顿函数 (公共函数)*/ {
printf(\ getchar(); }
void output() /*输出学生成绩函数(公共函数)*/ {
int i,j;
printf(\===\\n\
printf(\学号 班级 专业 入学年 C语言 高数 大物 电路 模电\\n\
printf(\===\\n\
for(i=0;i printf(\ %s %s %s %d\; for(j=0;j<5;j++) printf(\ %.1f\ printf(\ } stop(); } void init() /*系统初始化函数 */ { if(access(\ /*判断文件是否存在*/ newfile(); /*若不存在,新建数据文件*/ else read1(); /*若存在,读取数据*/ } void newfile() /*建立新的数据文件 */ { int i; FILE *fp; if((fp=fopen(\创建二进制文件*/ { printf(\创建文件失败,请重新运行程序.\\n\ /*显示\创建文件失败,请重新运行程序\ exit(0); /*终止程序*/ } printf(\初次运行,进行数据初始化...\\n\显示\初次运行,进行数据初始化...\ stop(); printf(\请输入学生人数:\显示\请输入学生人数:\ scanf(\ for(i=0;i printf(\请输入第 %d个学生的学号:\显示\请输入第i+1个学生的学号:\ getchar(); /*吃回车*/ gets(stu[i].no); printf(\显示\ gets(stu[i].name); printf(\班级:\显示\班级:\ gets(stu[i].grade); printf(\专业:\显示\专业:\ gets(stu[i].pro); printf(\入学年n:\显示\入学年\ scanf(\ printf(\语言成绩:\显示\语言成绩\ scanf(\ printf(\高数成绩:\显示\高数成绩\ scanf(\ printf(\大物成绩:\显示\大物成绩\ scanf(\ printf(\电路成绩:\显示\电路成绩\ scanf(\ printf(\模电成绩:\显示\模电成绩\ scanf(\ fwrite(&stu[i],1,sizeof(struct student),fp); /*把第i+1名学生成绩写入文件*/ } fclose(fp); printf(\ printf(\刚才输入的 %d 个数据为:\\n\ /*显示\刚才输入的 num 个数据为:\ printf(\ output(); } void read1() /*从数据文件中读取数据 */ { FILE *fp; num=0; /*num为数据文件中实际存储的学生人数*/ fp=fopen(\ if(fp==NULL) /*数据文件不存在*/ { printf(\文件打开失败!重新运行程序\\n\显示\文件打开失败!重新运行程序\ exit(0); } while(!feof(fp)) /*文件结束检测\ { fread(&stu[num],1,sizeof(struct student),fp); num++; } num--; fclose(fp); printf(\ printf(\现有 %d 个学生的成绩:\\n\显示\现有 NUM个学生的成绩:\ printf(\ output(); } void weihu() /*维护界面函数 */ { char c1; while(1) { printf(\ printf(\ 维护 *\\n\ printf(\ 1. 新增 *\\n\新增*/ printf(\ 2. 删除 *\\n\删除(按学号)*/ printf(\ 3. 修改 *\\n\修改*/ printf(\ 9. 返回 *\\n\返回*/ printf(\ printf(\请选择:\\n\请选择:*/ c1=getchar(); getchar(); if(c1=='9') break; switch(c1) { case '1': new1(); break; case '2': delete1(); case '3': xiugai(); break; default: printf(\选择有误,请重选!\\n\选择有误,请重选!\ } } } void new1() /*新增一个学生成绩函数 */ { printf(\请输入学号:\显示\请输入学号:\ gets(stu[num].no); printf(\显示\ gets(stu[num].name); printf(\班级:\显示\班级:\ gets(stu[num].grade); printf(\专业:\显示\专业:\ gets(stu[num].pro); printf(\入学年:\显示\入学年\ scanf(\ printf(\语言成绩:\显示\语言成绩\ scanf(\ printf(\高数成绩:\显示\高数成绩\ scanf(\ printf(\大物成绩:\显示\大物成绩\ scanf(\ printf(\电路成绩:\显示\电路成绩\ scanf(\ printf(\模电成绩:\显示\模电成绩\ scanf(\ num++; printf(\ printf(\现有 %d个学生的成绩:\\n\显示\现有 NUM个学生的成绩:\ printf(\ output(); } void xiugai() /*修改学生成绩*/ { char xg[11]; int i;