1、include
2、loat ave;/*储存平均分*/ int year;/*入年*/ }stu[N]; int num; void panduani(int); /*经过i值,判定信息要查找信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/ void init(); /*系统初始化函数*/ void newfile(); /*建立新数据文件*/ void read1(); /*从数据文件中读取数据*/ void weihu();
3、 /*维护界面函数*/ void new1(); /*新增一个学生成绩函数*/ void xiugai(); /*修改学生成绩*/ void xgcj(int); /*修改成绩*/ void delete1(); /*删除学生信息函数*/ void tongji(); /*统计界面函数*/ void tongji1(); /*计算每个学生平均分*/ void tongji2(); /*计算每门课程平均
4、分*/ void paixu1(); /*排序函数*/ void paino(); /*按学号排序*/ void paiave(); /*按平均分排序*/ void paidkcj(); /*按单科成绩排序*/ void change(int,int); /*交换结构体数组中两个统计*/ void outputx(int); /*选择输出单科成绩*/ void find1(); /*查找界面函数*/ int find(char s
5、no[]); /*按学号查找*/ int findname(char cname[]);/*按姓名查找*/ void findyear(int cyear); /*按入年查找*/ void save(); /*保留文件*/ void stop(); /*停顿函数*/ void stop() /*停顿函数 (公共函数)*/ { printf("Press Any Key To Continue...\n"); getchar(); } void output() /*输出学生成绩函
6、数(公共函数)*/
{
int i,j;
printf("===================================================================\n");
printf("学号 姓名 班级 专业 入年 C语言 高数 大物 电路 模电\n");
printf("===================================================================\n");
for(i=0;i 7、 %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year);
for(j=0;j<5;j++)
printf(" %.1f",stu[i].score[j]);
printf("\n");
}
stop();
}
void init() /*系统初始化函数 */
{
if(access("stu.dat",0)) /*判定文件是否存在*/
newfile(); /*若不存在,新建数据文件*/
else
read1(); 8、 /*若存在,读取数据*/
}
void newfile() /*建立新数据文件 */
{
int i;
FILE *fp;
if((fp=fopen("stu.dat","wb"))==NULL) /*创建二进制文件*/
{
printf("创建文件失败,请重新运行程序.\n"); /*显示"创建文件失败,请重新运行程序"*/
exit(0); /*终止程序*/
}
printf("首次运行,进行数据初始化...\n");/*显示"首次运行,进行数据初始化..."*/
stop();
printf("请输入学生人数:") 9、/*显示"请输入学生人数:"*/
scanf("%d",&num);
for(i=0;i 10、s(stu[i].pro);
printf("入年n:");/*显示"入年"*/
scanf("%d",&stu[i].year);
printf("C语言成绩:");/*显示"C语言成绩"*/
scanf("%f",&stu[i].score[0]);
printf("高数成绩:");/*显示"高数成绩"*/
scanf("%f",&stu[i].score[1]);
printf("大物成绩:");/*显示"大物成绩"*/
scanf("%f",&stu[i].score[2]);
printf("电路成绩:");/*显示"电路成绩"* 11、/
scanf("%f",&stu[i].score[3]);
printf("模电成绩:");/*显示"模电成绩"*/
scanf("%f",&stu[i].score[4]);
fwrite(&stu[i],1,sizeof(struct student),fp); /*把第i+1名学生成绩写入文件*/
}
fclose(fp);
printf("========================\n");
printf(" 刚才输入 %d 个数据为:\n",num); /*显示"刚才输入 num 个数据为:"*/
printf("== 12、\n\n");
output();
}
void read1() /*从数据文件中读取数据 */
{
FILE *fp;
num=0; /*num为数据文件中实际存放学生人数*/
fp=fopen("stu.dat","r");
if(fp==NULL) /*数据文件不存在*/
{
printf("文件打开失败!重新运行程序\n"); /*显示"文件打开失败!重新运行程序"*/
exit(0);
}
while(!feof(fp)) /*文件结束检测"*/
{
fread(&stu[nu 13、m],1,sizeof(struct student),fp);
num++;
}
num--;
fclose(fp);
printf("\t\t\t=======================================\n");
printf(" \t\t\t现有 %d 个学生成绩:\n",num); /*显示"现有 NUM个学生成绩:"*/
printf("\t\t\t=======================================\n\n");
output();
}
void weihu() /*维护界面函数 */
{
14、
char c1;
while(1)
{
printf("\n\n\n\t\t\t************************\n");
printf("\t\t\t* 维护 *\n");
printf("\t\t\t* 1. 新增 *\n"); /*新增*/
printf("\t\t\t* 2. 删除 *\n"); /*删除(按学号)*/
printf("\t\t\t* 3. 修改 *\n"); /*修改*/
printf(" 15、\t\t\t* 9. 返回 *\n"); /*返回*/
printf("\t\t\t************************\n");
printf("\t\t\t 请选择:\n");/*请选择:*/
c1=getchar();
getchar();
if(c1=='9')
break;
switch(c1)
{
case '1':
new1();
break;
case '2':
delete1();
case '3':
xiugai();
16、 break;
default:
printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/
}
}
}
void new1() /*新增一个学生成绩函数 */
{
printf("请输入学号:"); /*显示"请输入学号:"*/
gets(stu[num].no);
printf("姓名:"); /*显示"姓名:"*/
gets(stu[num].name);
printf("班级:"); /*显示"班级:"*/
gets(stu[num].grade);
printf(" 17、专业:"); /*显示"专业:"*/
gets(stu[num].pro);
printf("入年:");/*显示"入年"*/
scanf("%d",&stu[num].year);
printf("C语言成绩:");/*显示"C语言成绩"*/
scanf("%f",&stu[num].score[0]);
printf("高数成绩:");/*显示"高数成绩"*/
scanf("%f",&stu[num].score[1]);
printf("大物成绩:");/*显示"大物成绩"*/
scanf("%f",&stu[num].score[2 18、]);
printf("电路成绩:");/*显示"电路成绩"*/
scanf("%f",&stu[num].score[3]);
printf("模电成绩:");/*显示"模电成绩"*/
scanf("%f",&stu[num].score[4]);
num++;
printf("\n======================================\n");
printf("现有 %d个学生成绩:\n",num); /*显示"现有 NUM个学生成绩:"*/
printf("=============================== 19、\n\n");
output();
}
void xiugai() /*修改学生成绩*/
{
char xg[11];
int i;
printf("\n请输入要修改学生学号:\n\n");
gets(xg);
for(i=0;i 20、 }
xgcj(i);
}
void xgcj(int x) /*修改成绩*/
{
char xueke[5][10]={"C语言","高数","物理","电路","模电"};
char (*p)[10],c;
int j,k;
p=xueke;
for(;;)
{
printf("\n");
printf("\t\t\t************************************\n\n");
printf("\t\t\ 21、t 成绩 \n");
printf("\t\t\t 1.C 语言 \n"); /*C语言*/
printf("\t\t\t 2.高数 \n"); /*高数*/
printf("\t\t\t 3.物理 \n"); /*大学物理*/
printf("\t\t\t 4.电路 \n"); 22、 /*电路*/
printf("\t\t\t 5.模电 \n"); /*模电*/
printf("\t\t\t 9.返回 \n\n"); /*返回上级*/
printf("\t\t\t************************************\n\n");
printf("\t请选择要修改成绩(按 1.2.3.4.5.9):\n");
c=getchar();
getchar();
23、 if(c=='9')break;
else if (c>='1'&&c<='5')
{
k=c-49;
printf("\n请输入 %s 成绩:\n",p+k);
scanf("%f",&stu[x].score[k]);
printf("\n修 息为:\n");
printf("学号 姓名 班级 专业 入年 C语言 高数 大物 电路 模电\n");
24、printf("===================================================================\n");
printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].year);
for(j=0;j<5;j++)
printf(" %.1f",stu[x].score[j]);
25、 printf("\n");
}
else printf("\n选择有误,请重选!\n\n");
stop();
}
}
int find(char sno[]) /*按学号查找 */
{
int i;
for(i=0;i 26、r cno[11];
int i,j;
printf("请输入要删除学生学号:"); /*"请输入要删除学生学号"*/
gets(cno);
i=find(cno);
if(i!=-1)
{for(j=i;j 27、) /*统计界面函数 */
{
int i;
char c2;
while(1)
{
printf("\n\n\n\t\t\t*******************************\n");
printf("\t\t\t* 统计 *\n");
printf("\t\t\t* 1. 学生平均分 *\n"); /*计算学生平均分*/
printf("\t\t\t* 2. 课程平均分 *\n"); /*计算每门课程平均分*/
printf( 28、"\t\t\t* 9. 返回 *\n"); /*返回*/
printf("\t\t\t*******************************\n");
printf("\t\t\t请选择:\n");/*请选择:*/
c2=getchar();
getchar();
if(c2=='9') break;
switch(c2)
{
case '1':
tongji1();
printf("\n\n学生平均分为:\n");
printf("============================ 29、\n");
printf("学号 姓名 入年 平均分\n");
printf("===========================================\n");
for(i=0;i 30、 printf("选择有误,请重选\n");/*"选择有误,请重选!"*/
}
}
}
void tongji1() /*计算每个学生平均分*/
{
int i,j;
for(i=0;i 31、nt i,j;
float sum;
float avec[5]; /*储存每门课平均分*/
for(j=0;j<5;j++)
{
sum=0;
for(i=0;i 32、\n");
for(i=0;i<5;i++)
printf("%-7.1f",avec[i]);
printf("\n");
stop();
}
void paixu1() /*排序界面*/
{
char c3;
for(;;)
{
printf("\n\n\n");
printf("\t\t\t***********************************\n");
printf("\t\t\t* 排序 33、 * \n");
printf("\t\t\t* 1. 按学号排序 * \n"); /*按学号排序*/
printf("\t\t\t* 2. 按平均分排序 * \n"); /*按平均分排序*/
printf("\t\t\t* 3. 按单科成绩排序 * \n"); /*按单科成绩排序*/
printf("\t\t\t* 9. 返回 * \n"); /*返回*/
printf("\t\t\t****** 34、\n\n");
printf("\t请选择:(按1.2.3.9):\n");/*请选择:*/
c3=getchar();
getchar();
if(c3=='9') break;
switch(c3)
{
case '1':paino();break;
case '2':paiave();break;
case '3':paidkcj();break;
default:
printf("\n选择有误,请重选!\ 35、n\n");/*选择有误,请重选!*/
stop();
}
}
}
void paino() /*按学号排序*/
{ /*按学号从低到高冒泡法排序*/
int i,j;
for(i=0;i 36、ave() /*按平均分排序 */
{ /*按平均分从高到低冒泡法排序*/
int i,j;
tongji1(); /*计算平均成绩*/
for(i=0;i 37、\n");
printf("\t学号 姓名 入年 平均分 排名\n");
printf("\t===============================================\n");
for(i=0;i 38、序*/
{
char c;
int i,j,k;
while(1)
{
printf("\n");
printf("\t\t\t************************************\n\n");
printf("\t\t\t 单科成绩 \n");
printf("\t\t\t 1.C 语言 \n"); /*C语言*/
printf("\t\t\t 2 39、高数 \n"); /*高数*/
printf("\t\t\t 3.物理 \n"); /*大学物理*/
printf("\t\t\t 4.电路 \n"); /*电路*/
printf("\t\t\t 5.模电 \n"); /*模电*/
printf("\t\t\t 9.返回 \n\n"); /* 40、返回上级*/
printf("\t\t\t************************************\n\n");
printf("\t请选择:(按1.2.3.4.5.9):\n");
c=getchar();
getchar();
if(c=='9')break;
else if (c>='1'&&c<='5')
{
k=c-49;
for(i=0;i 41、r(j=0;j 42、emp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
void outputx(int k) /*选择输出单科成绩*/
{
char xueke[5][10]={"C语言","高数","物理","电路","模电"};
char (*p)[10]; /*定义一个指向包含10个字符型元素一维数组指针变量*/
int i;
p=xueke;
printf("\n\t排序后为:\n");
printf("\t====================================== 43、\n");
printf("\t学号 姓名 入年 %s 排名\n",p+k);
printf("\t===============================================\n");
for(i=0;i 44、界面函数*/
{
char c4;
char cno[11],cname[10];
int i,cyear;
while(1)
{
printf("\t\t\t*************************************\n");
printf("\t\t\t* 查找 *\n");
printf("\t\t\t* 1. 按学号查找 *\n"); /*按学号查找*/
printf("\t\t\t* 2. 按姓名查找 45、 *\n"); /*按姓名查找*/
printf("\t\t\t* 3. 按入年查找 *\n"); /*按入年查找*/
printf("\t\t\t* 9. 返回 *\n"); /*返回*/
printf("\t\t\t*************************************\n");
printf("\t\t\t请选择:\n");/*请选择:*/
c4=getchar();
getchar();
if(c4==57) break;
switch 46、c4)
{
case '1':
printf("输入学号:\n");/*"输入学号:"*/
gets(cno);
i=find(cno);
panduani(i);
break;
case '2':
printf("输入姓名:\n");/*"输入姓名:"*/
gets(cname);
i=findname(cname);
panduani(i);
break;
case '3':
printf("输入入年:\n");/*"输入入年"*/
scanf("%d",&cyear); 47、
findyear(cyear);
stop();
break;
default:
printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/
}
}
}
int findname(char cname[]) /*按姓名查找*/
{
int i;
for(i=0;i 48、nt cyear)
{
int i,j,flag=0;
for(i=0;i 49、\n");
for(i=0;i 50、)
printf(" %.1f",stu[i].score[j]);
printf("\n");
}
}
}
}
void panduani(int i) /*经过i值,判定信息要查找信息是否存在*/
{
int j;
if(i==-1)
{
printf("要查找学生不存在\n");/*要查找学生不存在*/
stop();
}
else
{
printf("查找到学生信息为:\n");






