长江大学C语言上机实习.docx
《长江大学C语言上机实习.docx》由会员分享,可在线阅读,更多相关《长江大学C语言上机实习.docx(36页珍藏版)》请在冰豆网上搜索。
长江大学C语言上机实习
班级装备11001
学号201002486
姓名胡强
指导教师周志宏
完成日期2011-12-29
一、分析设计与说明
分别建立三个数据文件
文件1(成绩.txt)用于存放学生成绩;
文件2(课程学分.txt)用于存放课程及其学分;
文件3(学生信息.txt)用于存放学生信息
程序设计思想
(1)学生成绩管理系统
1读入原始数据并显示(将其读入另外的“成绩表.txt”中);
2编写函数用于计算平均分及名次(将其读入另外的”平均成绩和名次.txt”中);
每个学生各科分数乘以相应的学分并相加除以学分总和;先令每个学生的名次都
是1,在把一个学生的加权平均分与其他的所有学生的进行比较,遇到一个比
该学生平均分高的,该学生的名次加1。
循环依次得出全班人的名次;并将这种
结果输出到文本文件mingci.txt
3编写函数计算分数段人数(将其读入另外的成绩分数段.txt”中);
先令每一个分数段(>=90;>=80;>=70;>=60;<60)的人数都是0,然后利用循环结
构,遇到一个在某个分数段的成绩,那个分数段的计数变量加1,最后可得每门
科目每个分数段人数;并将这种结果输出到文本文件“成绩分数段.txt
利用循环结构,将所有人的同一科成绩相加,再除以总人数,课程平均.txt中;
编写函数统计不及格情况(将其读入另外的”不及格信息表.txt”中);
利用循环,将每个人的各科成绩和60相比较,若小于60,则输出名单(学号、
姓名、不及格课程名称、课程学分及成绩)结果存放在文本文件:
“不及格.txt
6编写函数输出优秀学生(将其读入另外的“优秀学生名单.txt”中);
1平均分≥90,2.名次在本班前三名,3.平均分≥85,并且至少有一门课的成绩为100分,4平均分≥85,并且至少有二门课的成绩为≥90分。
将上述条件作为逻辑或的判别式,找到符合条件的所有学生,输出并同时存放到“优秀学生名单.txt中;
程序实现功能
1)学生成绩管理系统
1.班级成绩单查看见文件(成绩.txt);
2.课程学分详情见(课程学分.txt);
3.班级成绩排名表单(平均成绩和名次.txt);
4.成绩分数分布段见(成绩分数段.txt)
5.男女生的课程平均分见(男女生课平均成绩.txt)
6.不及格学生的名单(不及格信息表.txt);
7.优秀生的名单(优秀学生名单.txt);
8.退出
一.一级菜单结构图
四.源程序
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"string.h"
structstudent
{
intnum;
charname[20];
charsex[3];
charzw[20];
inta[5];
floatxf[5];
floatave;
intage;
intmc;
charcourse[20];
}stud[33],k;
voidfunction1_1()
{FILE*fp,*hp,*wp,*yp;
inti;
charstr[60];
if((fp=fopen("C:
\\成绩.txt","r"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fgets(str,40,fp);
fclose(fp);
if((hp=fopen("C:
\\成绩表.txt","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fputs(str,hp);
fclose(hp);
if((hp=fopen("C:
\\成绩表.txt","a"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
puts(str);
for(i=0;i<33;i++)
{fprintf(hp,"\n%-3d%9s%7d%8d%9d%7d%8d",stud[i].num,stud[i].name,stud[i].a[0],
stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4]);
printf("%-3d%9s%7d%8d%9d%7d%8d\n",stud[i].num,stud[i].name,stud[i].a[0],
stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4]);}
fclose(hp);
printf("------------------------------------------------------------------------\n\n\n");
if((hp=fopen("c:
\\课程学分.txt","r"))==NULL)
{printf("cannotopenhp!
\n");
exit(0);
}
fgets(str,150,hp);
puts(str);
for(i=0;i<5;i++)
{
fscanf(hp,"%d%s%f",&stud[i].num,stud[i].course,&stud[i].xf[i]);
printf("%-4d%8s%10.1f\n",stud[i].num,stud[i].course,stud[i].xf[i]);
}
fclose(hp);
printf("------------------------------------------------------------------------\n\n\n");
if((wp=fopen("C:
\\学生信息.txt","r"))==NULL)
{printf("cannotopenfile\n");
exit(0);
}
if((yp=fopen("C:
\\学生信息.txt","r"))==NULL)
{printf("cannotopenfile\n");
exit(0);
}
printf("学号姓名性别年龄职务\n");
fgets(str,100,wp);
printf("%s",str);
for(i=0;i<33;i++)
{fscanf(wp,"%d%s%s%d%s\n",&stud[i].num,stud[i].name,&stud[i].sex,&stud[i].age,stud[i].zw);
fprintf(yp,"%d%s%s%d%s\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].zw);
printf("%-7d%-9s%-8s%-8d%-8s\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].zw);
}
fclose(wp);
fclose(yp);
printf("------------------------------------------------------------------------\n\n\n");
printf("\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
voidfunction1_2()
{
FILE*hp,*ip;
charstr[]={"学号姓名性别职务平均分名次"};
inti,j;
if((hp=fopen("C:
\\平均成绩和名次.txt","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fputs(str,hp);
fclose(hp);
if((hp=fopen("C:
\\平均成绩和名次.txt","a"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
puts(str);
for(i=0;i<33;i++)
{
fprintf(hp,"\n%-3d%9s%7s%9s%9.1f%6d",stud[i].num,stud[i].name,stud[i].sex,stud[i].zw,stud[i].ave,stud[i].mc);
printf("%-3d%9s%7s%9s%9.1f%6d\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].zw,stud[i].ave,stud[i].mc);
}
fclose(hp);
printf("\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
voidfunction1_3()
{
FILE*hp;
charsub[]={"范围形政高数计算机听力英语"};
charfw[6][20]={{">=90(优秀)"},{"80~90(良好)"},{"70~80(中等)"},{"60~70(较差)"},{"<60(差)"},{"课程平均分"}};
floatkc[5];//定义5门课程的平均成绩
inti,j,rs[5][5]={0};//定义5门课程5段分数段人数
if((hp=fopen("C:
\\成绩分数段.txt","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fputs(sub,hp);
fclose(hp);
puts(sub);
if((hp=fopen("C:
\\成绩分数段.txt","a"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
for(i=0;i<5;i++)
{
intsum=0;//定义每门课总成绩,循环前初始化
for(j=0;j<33;j++)sum+=stud[j].a[i];
kc[i]=sum/33.0;
}
for(i=0;i<5;i++)//统计每门课程分数段人数
for(j=0;j<33;j++)
{
if(stud[j].a[i]>=90)rs[i][0]++;
elseif(stud[j].a[i]>=80)rs[i][1]++;
elseif(stud[j].a[i]>=70)rs[i][2]++;
elseif(stud[j].a[i]>=60)rs[i][3]++;
elsers[i][4]++;
}
for(i=0;i<5;i++)
{
fprintf(hp,"\n%-9s%7d%10d%10d%10d%8d",fw[i],rs[i][0],rs[1][i],rs[2][i],rs[3][i],rs[4][i]);
printf("%-9s%7d%10d%10d%10d%8d\n",fw[i],rs[0][i],rs[1][i],rs[2][i],rs[3][i],rs[4][i]);
}
fprintf(hp,"\n%-15s%4.1f%10.1f%10.1f%10.1f%8.1f",fw[5],kc[0],kc[1],kc[2],kc[3],kc[4]);
printf("%-15s%4.1f%10.1f%10.1f%10.1f%8.1f\n",fw[5],kc[0],kc[1],kc[2],kc[3],kc[4]);
fclose(hp);
printf("\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
voidfunction1_4()
{FILE*hp,*ip;
inti,j;
charz[]={"性别形政高数计算机听力英语"};
if((ip=fopen("C:
\\学生信息.txt","r"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fscanf(ip,"%*[^\n]%*c");
for(i=0;i<33;i++)
fscanf(ip,"%d%s%s%d%s",&stud[i].num,&stud[i].name,&stud[i].sex,&stud[i].age,&stud[i].zw);
fclose(ip);
if((hp=fopen("C:
\\男女生各科平均成绩.txt","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fputs(z,hp);
fclose(hp);
if((hp=fopen("C:
\\男女生各科平均成绩.txt","a"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
puts(z);
charxb[2][4];
floatb[2][5]={0.0};
strcpy(xb[0],stud[0].sex);
for(i=0;i<5;i++)
{intm=0,n=0;
for(j=0;j<33;j++)
{
if(strcmp(xb[0],stud[j].sex)==0){b[0][i]+=stud[j].a[i];m++;}
else{b[1][i]+=stud[j].a[i];strcpy(xb[1],stud[j].sex);n++;}
}
b[0][i]/=m*1.0;
b[1][i]/=n*1.0;
}
for(i=0;i<2;i++)
{fprintf(hp,"\n%-4s%8.1f%8.1f%9.1f%7.1f%8.1f",xb[i],b[i][0],b[i][1],b[i][2],b[i][3],b[i][4]);
printf("%-4s%8.1f%8.1f%9.1f%7.1f%8.1f\n",xb[i],b[i][0],b[i][1],b[i][2],b[i][3],b[i][4]);}
fclose(hp);
printf("\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
voidfunction1_5()
{FILE*hp,*ip;
charstr[]={"学号姓名性别不及格课程课程学分成绩"};
charxk[5][20]={{"形政"},{"高数"},{"计算机"},{"听力"},{"英语"}};
inti,j;
if((hp=fopen("C:
\\不及格信息表.txt","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fputs(str,hp);
puts(str);
for(i=0;i<33;i++)
for(j=0;j<5;j++)
{if(stud[i].a[j]<60)
{
fprintf(hp,"\n%-3d%9s%7s%12s%14.1f%14d",stud[i].num,stud[i].name,stud[i].sex,xk[j],stud[i].xf[j],stud[i].a[j]);
printf("%-3d%9s%7s%12s%14.1f%14d\n",stud[i].num,stud[i].name,stud[i].sex,xk[j],stud[i].xf[j],stud[i].a[j]);
}
}
fclose(hp);
printf("\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
voidfunction1_6()
{FILE*ap;
inti,j,m;
charaa[]={"学号姓名性别形政高数计算机听力英语平均分名次"};
if((ap=fopen("C:
\\优秀学生名单.txt","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fputs(aa,ap);
fclose(ap);
if((ap=fopen("C:
\\优秀学生名单.txt","a"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
puts(aa);
for(i=0;i<33;i++)
{
if(stud[i].ave>=90||stud[i].mc<=3)
{
fprintf(ap,"\n%-3d%9s%7s%8d%8d%9d%7d%8d%10.1f%6d",stud[i].num,stud[i].name,stud[i].sex,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
printf("%-3d%9s%7s%8d%8d%9d%7d%8d%10.1f%6d\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
}
elseif(stud[i].ave>=85&&(stud[i].a[0]>=95||stud[i].a[1]>=95||stud[i].a[2]>=95||stud[i].a[3]>=95||stud[i].a[4]>=95))
{
fprintf(ap,"\n%-3d%9s%7s%8d%8d%9d%7d%8d%10.1f%6d",stud[i].num,stud[i].name,stud[i].sex,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
printf("%-3d%9s%7s%8d%8d%9d%7d%8d%10.1f%6d\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
}
elseif(stud[i].ave>=85)
{m=0;
for(j=0;j<5;j++)
if(stud[i].a[j]>=90)
m++;
if(m>=2)
{
fprintf(ap,"\n%-3d%9s%7s%8d%8d%9d%7d%8d%10.1f%6d",stud[i].num,stud[i].name,stud[i].sex,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
printf("%-3d%9s%7s%8d%8d%9d%7d%8d%10.1f%6d\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
}
}
}
fclose(ap);
printf("\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
voidfunction1_7()
{FILE*ap;
inti,j,m;
charaa[]={"学号姓名性别职务形政高数计算机听力英语平均分名次"};
charzw[]={"无"};
if((ap=fopen("C:
\\优秀学生干部名单.txt","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
fputs(aa,ap);
fclose(ap);
if((ap=fopen("C:
\\优秀学生干部名单.txt","a"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
puts(aa);
for(i=0;i<33;i++)
{
if(strcmp(stud[i].zw,zw)!
=0)
{
if(stud[i].ave>=85||stud[i].mc<=7)
{
fprintf(ap,"\n%-3d%9s%5s%10s%4d%7d%8d%8d%7d%9.1f%7d",stud[i].num,stud[i].name,stud[i].sex,stud[i].zw,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
printf("%-3d%9s%5s%10s%4d%7d%8d%8d%7d%9.1f%7d\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].zw,stud[i].a[0],stud[i].a[1],stud[i].a[2],stud[i].a[3],stud[i].a[4],stud[i].ave,stud[i].mc);
}
elseif(stud[i].ave>=80&&(stud[i].a[0]>=95||stud[i].a[1]>=95||stud[i].a[2]>=95||stud[i].a[3]>=95||stud[i].a[4]>=95))
{
fprintf(ap,"\n%-3d%9s