C语言课设实习报告[优秀]_c语言课设实验报告

实习报告 时间:2020-02-28 18:34:52 收藏本文下载本文
【www.daodoc.com - 实习报告】

C语言课设实习报告[优秀]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言课设实验报告”。

C语言课程设计实习报告

班 级: 学生姓名: 学 号: 指导老师: 日 期:

目录

一、程序分析与设计.......................................................................................................................1

二、流程图.......................................................................................................................................1

三、源程序清单...............................................................................................................................5

四、调试过程.................................................................................................................................10

五、程序有待改进的地方.............................................................................................................11

六、本次实习的收获和建议.........................................................................................................11 附录................................................................................................................................................11

C语言课程设计实习报告

一、程序分析与设计(标题四号宋体加黑,正文五号宋体,行间距-固定值行缩进2字符)

18,首

1、先用记事本编辑文件“文件数据.txt”存储一个班学习成绩和“学分.txt” 存储科目学分信息。然后在C环境下,建立一个学生信息的结构体和学分信息的结构体,用r方式打开上述文件,再用fscanf读入。

2、利用循环使每个学生的三门功课的成绩与对应学分相乘再求和,然后再把和除以学分的总和就得到了平均成绩。接着用冒泡法利用平均分的高低排出名次。最后用fprintf将每个学生的信息写入到“学生成绩及排名.txt”文件中。

3、利用for循环求出全班学生一门科目的平均分,利用switch或if求出分数段(60以下,60~69,70~79,80~89,90以上)的学生人数;结果写入文件“分数段及科目平均分.txt”中。

4、按照

2、中求出的信息,分别用printf在屏幕中打印每一位学生的学号、姓名、成绩、平均分及排名情况,同时注意打印到屏幕上的直观美观问题。

5、在for循环中if语句与60 比较大小,用printf直接在屏幕上打印不及格学生的信息及科目等。

6、创建一个函数打印优等生信息,用for循环if判断符合条件的学生成绩,用printf在屏幕上打印出优等生的全部信息。

7、该课设程序中多次用到for及if语句,其中注意全局变量的应用,stu[i].score.[j]中的i,j就可作为全局变量,以免多次在函数中定义。

8、用一个函数被主函数调用,该函数制作菜单。。。。

二、流程图

地信10902 读文件数据和学分文件

写文件学生成绩及排名

C语言课程设计实习报告

写文件分数段及科目平均分

计算科目平均分

计算平均分及排名函数

打印信息函数

地信10902

不及格函数

优秀学生函数

分数段函数

C语言课程设计实习报告

三、源程序清单(此部分采用小五号宋体,行间距-固定值14)

#include #include #include #define M 15 #define N 3 struct student {

struct XueFen {

struct FenShuDuan { char name[20];

int num[N];}FSD[5]={{“分数>=90”,0,0,0},{“分数>=80”,0,0,0},{“分数>=70”,0,0,0},{“分数>=60”,0,0,0},{“分数

void readFromTxtFile();void writeToTxtFile1();void writeToTxtFile2();void CalculateAverageScore();void CalculateAverageScoreOfEveryCourse();void Print();void FenShuDuan();void NoPa();void GoodStudent();void menu();

void main(){ int num;char subject[20];float xuefen;int num;char name[10];float average;int rank;

int score[N];}stu[M];}xf[N];5

地信10902

readFromTxtFile();CalculateAverageScoreOfEveryCourse();writeToTxtFile1();

CalculateAverageScore();

FenShuDuan();

writeToTxtFile2();menu();}

//读文本文件 void readFromTxtFile(){

}

//写文件1 void writeToTxtFile1(){

if((fp=fopen(”学生成绩及排名.txt“,”w“))==NULL){

} fputs(” 序号t姓名t英语t数学tC程序设计t平均分t排名n“,fp);for(i=0;i

} for(j=0;j

} { char title[50];fgets(title,50,fp);printf(”can not open the file!n“);exit(0);

for(i=0;i

C语言课程设计实习报告

}

//写文件2 void writeToTxtFile2(){ if((fp=fopen(”分数段及科目平均分.txt“,”w“))==NULL)} fclose(fp);{

printf(”can not open the file!n“);

exit(0);}

fputs(”tt英语t数学tC程序设计n“,fp);for(i=0;i

{

fprintf(fp,”%4s“,FSD[i].name);

for(j=0;j

{

fprintf(fp,”%10d“,FSD[i].num[j]);

}

fputs(”n“,fp);}

fputs(”n科目平均分“,fp);for(j=0;j

fprintf(fp,”%10.1f“,average[j]);} printf(”n“);

fclose(fp);}

//算平均分及排名

void CalculateAverageScore(){ float sum1,sum2;

for(i=0;i

for(j=0;j

{

sum1+=stu[i].score[j]*xf[j].xuefen;

sum2+=xf[j].xuefen;

}

stu[i].average=sum1/sum2;} for(i=0;i

stu[i].rank=1;for(j=0;j

地信10902

}

} {

} if(stu[i].average

void CalculateAverageScoreOfEveryCourse(){

int t,sum;

for(j=0;j

{

sum=0;for(i=0;i

t=stu[i].score[j];

sum+=t;

average[j]=sum/(M*1.0);

}

}

//计算分数段 void FenShuDuan(){

}

//打印内容 void Print(){ //屏幕上打出平均分及排名

printf(”--------------------------n“);

printf(”序号t姓名t英语t数学tC程序设计t平均分t名次n“);for(i=0;i

for(j=0;j

} if(stu[i].score[j]>=90)

else if(stu[i].score[j]>=80)

else if(stu[i].score[j]>=70)else if(stu[i].score[j]>=60)else if(stu[i].score[j]

FSD[0].num[j]++;

FSD[1].num[j]++;

FSD[2].num[j]++;

FSD[3].num[j]++;8

C语言课程设计实习报告

for(i=0;i

printf(”%-5d%6s“,stu[i].num,stu[i].name);

for(j=0;j

{ } printf(”%9d“,stu[i].score[j]);

printf(”%14.1f%8dn“,stu[i].average,stu[i].rank);

}

}

//不及格统计 void NoPa(){

}

//优等生信息 void GoodStudent(){

printf(”n|*|--------------------|*|n“);

printf(”n优秀学生信息n“);printf(”--------------------n“);printf(”学号t姓名t英语t数学tc语言t平均分t排名n“);for(i=0;i

}

for(j=0;j

} if(stu[i].score[j]

printf(”n不及格学生信息n“);printf(”n|*|--------------------|*|n“);printf(”tt英语t数学tc语言n“);printf(”n科目平均分“);for(j=0;j

{ printf(”%4d%8s%8s%8.1f%8dn“,stu[i].num,stu[i].name,xf[j].subject,xf[j].xuefen,stu[i].score[j]);

{ 9

地信10902

m=0;

n=0;

for(j=0;j

{

if(stu[i].score[j]==100)m++;

if(stu[i].score[j]>=90)n++;

}

if(stu[i].average>=90||stu[i].rank=85&&(m>=1||n>=2)))

{

}

} printf(”n|*|--------------------|*|n“);

} printf(”n%2d%8s“,stu[i].num,stu[i].name);for(j=0;j

void menu()

{ char ch1;

do{ printf(”nnnnnnnnnn“);

printf(”

************学 生 成 绩 管 理 系 统****************n“);

printf(”

--------------------nn“);

printf(”

1.计算平均分及名次nn“);

printf(”

2.统计不及格情况nn“);

printf(”

3.输出优秀学生nn“);

printf(”

输入选择序号n“);

while((ch1=getchar(),ch1!='1'&&ch1!='2'&&ch1!='3'));

switch(ch1)

{case '1' : CalculateAverageScore(),CalculateAverageScoreOfEveryCourse(),Print();break;

case '2' : NoPa();break;

case '3' : GoodStudent();

}

}while(1);

}

四、调试过程

在程序运行的过程中,出现了很多的错误。有很复杂的问题,也不乏许多低级的错误。

1、在写入文件的时候,首先用的是fwrite,而在读入文件的时候用的是fread,现在知道这两个语句都只是对二进制的文件进行操作,实际上我们要用到的fscanf、fprintf这两个语句。

2、在读文件中经常读不出文件,其实是打开文件路径的问题,经老师讲解明白了绝对路径与相对路径的区别,当再次调试后可以正确打开文件。

3、在读文件中,源文件有一个中文表头,按原代码读出皆为零,后经fgets(title,50,fp);可正确读出,在写文件时就用fputs在文件中打出表头。

C语言课程设计实习报告

4、在编译过程中经常出现低级错误,有时标点用的中文格式,有时都忘在语句后加分号,由于长时间没运用该软件的结果,有的函数的格式都会错误。例如忽视了变量类型,用错误的格式输出,导致错误。不过,在这个过程中都有一定收获。

5、对fprintf及fscanf不太熟悉,在读写文件中多次用到这些函数,加深了对这些函数的及文件读写的运用。

6、忘记变量初始化,导致运行错误。在主函数中调用函数中没注意调用函数的顺序的,导致结果出现问题。

7、在判断相等时,用“=”代替了“==”,在C语言中“=”是赋值运算符,“==”是关系运算符。

8、对于双层for语句循环中,在for后面第一个语句中加了;导致for循环不成功,对于for中的变量重复定义,于是用了全局变量。

五、程序有待改进的地方

1、菜单过于简单,没有功能打印出单个学生的成绩信息,部分信息未打印出屏幕。

2、对于读文件,本程序读两个文件,而且第二个文件数据不多,需改进把该文件加到文件1中一次都读出。

3、.对于原文件表头无信息,不能判断学生成绩的英语、数学、c语言分别是哪个分数只能本人能明白,需改进加入一个表头。

六、本次实习的收获和建议

附录(此部分采用小五号宋体,行间距-固定值14)

1、原始数据 文件数据.txt 01

陈志

02

程建

03

邓达

04

汪啸

05

夏雨

06

刘欢

07

杨丹

08

杜月

09

王波

林海

詹阳

冯峰

马喜

吴立

李博

。。。

2、原始数据 学分.txt

01

英语02

数学03

c语言

4.5

地信10902

。。。

3、生成文件 学生成绩及排名.txt 序号 姓名 英语 数学 C程序设计

平均分 排名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 陈志 76 程建 76 邓达 90 汪啸 56 夏雨 73 刘欢 86 杨丹 76 杜月 64 王波 86 林海 85 詹阳 86 冯峰 76 马喜 57 吴立 86 李博 76 89 89 95 53 56 46 76 79 92 86 95 54 80 76 72 78 78 98 80 45 60 75 80 89 96 59 87 89 73

80.17 6

80.17 6

94.43 1

64.61 13

57.61 15

65.39 12

75.61 8

74.17 10

88.74 4

92.26 2

63.61 14

74.74 9

84.57 5

73.78 11

数学

C程序设计 100

91.13 3

3、生成文件 分数段及科目平均分.txt 英语

分数>=90分数>=80分数>=70分数>=60

0分数

科目平均分

76.6

75.9

79.1。。。

4、打印信息

C语言课程设计实习报告

地信10902

下载C语言课设实习报告[优秀]word格式文档
下载C语言课设实习报告[优秀].doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文