长江大学C语言上机实习.docx

上传人:b****0 文档编号:12487548 上传时间:2023-04-19 格式:DOCX 页数:36 大小:369.45KB
下载 相关 举报
长江大学C语言上机实习.docx_第1页
第1页 / 共36页
长江大学C语言上机实习.docx_第2页
第2页 / 共36页
长江大学C语言上机实习.docx_第3页
第3页 / 共36页
长江大学C语言上机实习.docx_第4页
第4页 / 共36页
长江大学C语言上机实习.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

长江大学C语言上机实习.docx

《长江大学C语言上机实习.docx》由会员分享,可在线阅读,更多相关《长江大学C语言上机实习.docx(36页珍藏版)》请在冰豆网上搜索。

长江大学C语言上机实习.docx

长江大学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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1