c语言上机实习报告.docx
《c语言上机实习报告.docx》由会员分享,可在线阅读,更多相关《c语言上机实习报告.docx(24页珍藏版)》请在冰豆网上搜索。
c语言上机实习报告
<<计算机上机实习>>
实习报告
班级
学号/序号
姓名
指导教师
完成日期
第一部分:
分析设计与说明
第二部分:
程序框图
第三部分:
源程序清单
第四部分:
原始数据
第五部分:
运行结果
第六部分:
实习心得
第一部分:
分析设计与说明
第一步:
建立一个机械10704班的学生成绩信息文件和学分文件,采用文本文档格式。
第二步:
程序设计思定义一个结构体用于存放chengji文件中的数据。
1.编写菜单,,在主函数中编写菜单,采用二级菜单形式,相应的选项对应相应的函数。
2.编写第一个函数,用于读取文件chengji中的数据。
3.编写第一个函数,用于读取文件xuefen中的数据。
4.编写第二个函数,用于计算平均分和排名次,并将结果保存。
5.编写第三个函数,计算各分数段的人数,并将结果保存。
6.编写第四个函数,统计不及格的情况,并将结果保存。
7.编写第六个函数,作各科成绩的饼状图。
8.编写第八个函数,矩形表示。
9.编写第九个函数,用于解线性方程组。
10.编写第九个函数,编写五角星动画函数。
说明:
十个函数中,前七个函数属于学生信息管理函数,在第一个二级菜单下,后三个保存在第二个二级菜单下。
主函数起调配其他函数的功能。
第二部分:
程序框架
第三部分:
源程序清单
#include"stdio.h"
#include"conio.h"
#include"math.h"
#include"stdlib.h"
#include"dos.h"
#include"graphics.h"
#definePI3.14159
#defineHPI/180
#defineN4
structstu
{intnum,mingci;
charname[20];
intscore[5];
floataver;
}stu1[40];
structxuefen
{
intnum;
charkcname[20];
intxf,a,b,c,d,e;
floatcourseaver;
}course[5];
structchengji
{
floatkcave;
floatbzcha;
intexc;
intgood;
intmid;
intpass;
intnopass;
}chengji[5];
main()/*主菜单*/
{charch1;
do{clrscr();
printf("\n\n\n\n\n\n\n\n\n");
printf("**********c语言程序设计上机实习**********\n");
printf("---------------------\n\n");
printf("1学生成绩管理\n\n");
printf("2解线性方程组\n\n");
printf("3动画\n\n");
printf("4退出\n\n");
printf("输出选择序号\n");
while((ch1=getchar(),ch1!
='1'&&ch1!
='2'&&ch1!
='3'&&ch1!
='4'));
switch(ch1)
{case'1':
section1();break;
case'2':
section2();break;
case'3':
section3();break;
case'4':
exit(0);}
}while
(1);
}
section1()/*第1个2级菜单*/
{charch21;
do{clrscr();printf("\n\n\n\n\n\n\n\n\n\n");
printf("**********学生成绩管理系统***********\n");
printf("---------------------\n\n");
printf("1.输入原始数据并显示2.计算平均分及名次\n\n");
printf("3.计算分数段人数4.输出课程平均分\n\n");
printf("5.统计不及格情况6.输出优秀学生\n\n");
printf("7.作分布图8.返回上级菜单\n\n");
printf("输入选择序号\n");
while((ch21=getchar(),ch21!
='1'&&ch21!
='2'&&ch21!
='3'&&ch21!
='4'&&ch21!
='5'&&ch21!
='6'
&&ch21!
='7'&&ch21!
='8'));
switch(ch21)
{case'1':
function1_1();break;
case'2':
function1_2();break;
case'3':
function1_3();break;
case'4':
function1_4();break;
case'5':
function1_5();break;
case'6':
function1_6();break;
case'7':
function1_7();break;
case'8':
return(0);}
}while
(1);
}
section2()/*第2个2级菜单*/
{charch22;
do{clrscr();printf("\n\n\n\n\n\n\n\n\n\n");
printf("**********解线性方程组***********\n");
printf("---------------------\n\n");
printf("1.解方程组\n\n");
printf("2.返回上级菜单\n\n");
printf("输入选择序号\n");
while((ch22=getchar(),ch22!
='1'&&ch22!
='2'));
switch(ch22)
{case'1':
function2_1();break;
case'2':
return(0);}
}while
(1);
}
section3()/*第3个2级菜单*/
{charch23;
do{clrscr();printf("\n\n\n\n\n\n\n\n\n\n");
printf("**********作动画***********\n");
printf("---------------------\n\n");
printf("1.作动画\n\n");
printf("2.返回上级菜单\n\n");
printf("输入选择序号\n");
while((ch23=getchar(),ch23!
='1'&&ch23!
='2'));
switch(ch23)
{case'1':
function3_1();break;
case'2':
return(0);}
}while
(1);
}
function1_1()
{FILE*fp,*fp1,*fp2,*fp3;
charstrr1[200],strr2[200];
inti,j;
printf("加入读入原始数据并显示的程序内容\n");
if((fp=fopen("C:
\\chengji.txt","r"))==NULL)
{printf("cannotopenthefile\n");
exit(0);}
if((fp1=fopen("C:
\\chengji1.txt","w"))==NULL)
{printf("cannotopenthefile\n");
exit(0);}
if((fp2=fopen("C:
\\xuefen.txt","r"))==NULL)
{printf("cannotopenthefile\n");
exit(0);}
if((fp3=fopen("C:
\\xuefen1.txt","w"))==NULL)
{printf("cannotopenthefile\n");
exit(0);}
/*fgets(strr,50,fp);*/
fgets(strr1,200,fp);
for(i=0;i<40;i++)
{fscanf(fp,"%d%s",&stu1[i].num,stu1[i].name);
for(j=0;j<5;j++)
fscanf(fp,"%d",&stu1[i].score[j]);
}
/*fputs(strr,50,fp1;*/
fprintf(fp1,"学号姓名毛邓三近代史听力英语高数\n");
for(i=0;i<40;i++)
{fprintf(fp1,"%-5d%-10s",stu1[i].num,stu1[i].name);
for(j=0;j<5;j++)
fprintf(fp1,"%-8d",stu1[i].score[j]);
fprintf(fp1,"\n");
}
for(i=0;i<40;i++)
{printf("%-5d%-10s",stu1[i].num,stu1[i].name);
for(j=0;j<5;j++)
printf("%-5d",stu1[i].score[j]);
}
fgets(strr2,200,fp2);
for(i=0;i<5;i++)
{fscanf(fp2,"%d%s%d",&course[i].num,course[i].kcname,&course[i].xf);
}
fprintf(fp3,"编号课程名称课程学分\n");
for(i=0;i<5;i++)
{fprintf(fp3,"%-5d%-10s%-5d",course[i].num,course[i].kcname,course[i].xf);
fprintf(fp3,"\n");
}
for(i=0;i<5;i++)
{printf("%-5d%-10s%-5d",course[i].num,course[i].kcname,course[i].xf);
printf("\n");}
printf("*********按Enter键继续************\n");
getchar();getchar();
fclose(fp);
fclose(fp1);
fclose(fp2);
fclose(fp3);
}
function1_2()
{inti,j,s;
floatsum;
FILE*fp4;
printf("加入计算平均分及名次的程序内容\n");
sum=0;
s=0;
for(i=0;i<5;i++)
s=s+course[i].xf;
for(i=0;i<40;i++)
{sum=0;
for(j=0;j<5;j++)
sum+=stu1[i].score[j]*course[j].xf;
stu1[i].aver=sum/s;
}
for(j=0;j<39;j++)
for(i=0;i<39-j;i++)
if(stu1[i].aver{stu1[40]=stu1[i];
stu1[i]=stu1[i+1];
stu1[i+1]=stu1[40];
}
for(i=0;i<40;i++)
stu1[i].mingci=i+1;
for(i=0;i<40;i++)
{
printf("%-5d%-10s",stu1[i].num,stu1[i].name);
for(j=0;j<5;j++)
printf("%-10d",stu1[i].score[j]);
printf("%-6.1f%-5d",stu1[i].aver,stu1[i].mingci);
printf("\n");}
if((fp4=fopen("C:
\\mingci.txt","w"))==NULL)
{printf("cannotopenfille\n");
return;
}
fprintf(fp4,"学号姓名毛邓三近代史听力英语高数平均分名次\n");
for(i=0;i<40;i++)
{fprintf(fp4,"%-5d%-10s",stu1[i].num,stu1[i].name);
for(j=0;j<5;j++)
fprintf(fp4,"%-6d",stu1[i].score[j]);
fprintf(fp4,"%-6.1f%4d",stu1[i].aver,stu1[i].mingci);
fprintf(fp4,"\n");
}
printf("**************按Enter键继续****************\n");
getchar();getchar();fclose(fp4);
}
function1_3()
{FILE*fp5;
inti,j;
printf("加入计算分数段人数程序\n");
if((fp5=fopen("C:
\\dumain.txt","w"))==NULL)
{
printf("cannotopenthisfile\n");
exit(0);}
fprintf(fp5,"范围>9080~9070~8060~70<60\n");
printf("范围>9080~9070~8060~70<60\n");
for(j=0;j<5;j++)
{course[j].a=0;
course[j].b=0;
course[j].c=0;
course[j].d=0;
course[j].e=0;
for(i=0;i<40;i++)
{if(stu1[i].score[j]>=90&&stu1[i].score[j]<=100)course[j].a++;
elseif(stu1[i].score[j]>=80)course[j].b++;
elseif(stu1[i].score[j]>=70)course[j].c++;
elseif(stu1[i].score[j]>=60)course[j].d++;
elseif(stu1[i].score[j]>0)course[j].e++;}
fprintf(fp5,"%-8s%-8d%-8d%-8d%-8d%-8d\n",course[j].kcname,course[j].a,course[j].b,course[j].c,course[j].d,course[j].e);
printf("%-8s%-8d%-8d%-8d%-8d%-8d\n",course[j].kcname,course[j].a,course[j].b,course[j].c,course[j].d,course[j].e);}
printf("**********按Enter键继续***********\n");
getchar();getchar();fclose(fp5);}
function1_4()
{
FILE*fp6;
inti,j;
intsum1;
for(j=0;j<5;j++)
{sum1=0;
for(i=0;i<40;i++)
sum1=sum1+stu1[i].score[j];
course[j].courseaver=sum1/40.0;
}for(j=0;j<5;j++)
printf("%-8s%-6.2f\n",course[j].kcname,course[j].courseaver);
if((fp6=fopen("C:
\\coursepj.txt","w"))==NULL)
{printf("cannotopenfile\n");exit(0);}
fprintf(fp6,"课程名平均分\n");
for(j=0;j<5;j++)
fprintf(fp6,"%-8s%-6.2f\n",course[j].kcname,course[j].courseaver);
printf("加入输出课程平均分程序内容\n");
printf("**********按Enter键继续***********\n");
getchar();getchar();
fclose(fp6);}
function1_5()
{inti,j;
FILE*fp7;
printf("加入统计不及格情况程序内容\n");
if((fp7=fopen("C:
\\bujige.txt","w"))==NULL)
{
printf("cannotopenthisfile\n");
exit(0);}
fprintf(fp7,"学号姓名课程学分成绩\n");
printf("学号姓名课程学分成绩\n");
for(i=0;i<40;i++)
for(j=0;j<5;j++)
{if(stu1[i].score[j]<60)
{fprintf(fp7,"%-5d%-14s%-10s%-8d%-5d\n",
stu1[i].num,stu1[i].name,course[j].kcname,
course[j].xf,stu1[i].score[j]);
printf("%-5d%-14s%-10s%-8d%-5d\n",
stu1[i].num,stu1[i].name,course[j].kcname,
course[j].xf,stu1[i].score[j]);
}
}
printf("**********按Enter键继续***********\n");
getchar();getchar();fclose(fp7);}
function1_6()
{inti,j;
FILE*fp8;
printf("加入输出优秀学生程序内容\n");
if((fp8=fopen("C:
\\youxiu.txt","w"))==NULL)
{printf("cannotopenthisfile\n");
exit(0);}
fprintf(fp8,"学号姓名毛邓三近代史听力英语数学平均成绩名次\n");
printf("学号姓名毛邓三近代史听力英语高数平均成绩名次\n");
for(i=0;i<40;i++)
{if(stu1[i].aver>=90||stu1[i].mingci<=3||(stu1[i].aver>=85&&(stu1[i].score[0]>=99||stu1[i].score[1]>=99||stu1[i].score[2]>=99||stu1[i].score[3]>=99||stu1[i].score[4]>=99||stu1[i].score[5]>=99)))
{printf("%-5d%-10s",stu1[i].num,stu1[i].name);
for(j=0;j<5;j++)
printf("%-8d",stu1[i].score[j]);
printf("%5.2f%5d\n",stu1[i].aver,stu1[i].mingci);
fprintf(fp8,"%-5d%-10s",stu1[i].num,stu1[i].name);
for(j=0;j<5;j++)
fprintf(fp8,"%-8d",stu1[i].score[j]);
fprintf(fp8,"%5.2f%5d\n",stu1[i].aver,stu1[i].mingci);
}
}
printf("***********按Enter键继续**********\n");
getchar();getchar();fclose(fp8);}
function1_7()
{inte1=0,e2=0,e3=0,e4=0,e5=0,f1=0,f2=0,f3=0,f4=0,f5=0,c1=0,c2=0,c3=0,c4=0,c5=0,b1=0,b2=0,b3=0,b4=0,b5=0,d1=0,d2=0,d3=0,d4=0,d5=0;
char*a1="maodeng",*a2="jindaishi",*a3="tingli",*a4="yingyu",*a5="gaoshu",*k1=">=90",*k2=">=80",*k3=">=70",*k4=">=60",*k5="<60";
intgdriver=DETECT,gmode=0;
floatr=50.0,x,y,q;
charch1,str1[80];inti=0,m;floatn;
printf("加入作分布图程序内容\n");
for(i=0;i<40;i++)
{if(stu1[i].score[0]>=90)e1++;
elseif(stu1[i].score[0]>=80)e2++;
elseif(stu1[i].score[0]>=70)e3++;
elseif(stu1[i].score[0]>=60)e4++;
elsee5++;
if(stu1[i].score[1]>90)f1++;
elseif(stu1[i].score[1]>80)f2++;
elseif(stu1[i].score[1]>70)f3++;
elseif(stu1[i].score[1]>60)f4++;
elsef5++;
if(stu1[i].score[2]>90)c1++;
elseif(stu1[i].score[2]>80)c2++;
elseif(stu1[i].score[2]>70)c3++;
elseif(stu1[i].score[2]>60)c4++;
elsec5++;
if(stu1[i].score[3]>90)b1++;
elseif(stu1[i].score[3]>80)b2++;
elseif(stu1[i].score[3]>70)b3++;
elseif(stu1[i].score[3]>60)b4++;
elseb5++;
if(stu1[i].score[4]>90)d1++;
elseif(stu1[i].score[4]>80)d2++;
elseif(stu1[i].s