C语言程序设计课程设计实习报告.docx

上传人:b****5 文档编号:6715599 上传时间:2023-01-09 格式:DOCX 页数:20 大小:346.28KB
下载 相关 举报
C语言程序设计课程设计实习报告.docx_第1页
第1页 / 共20页
C语言程序设计课程设计实习报告.docx_第2页
第2页 / 共20页
C语言程序设计课程设计实习报告.docx_第3页
第3页 / 共20页
C语言程序设计课程设计实习报告.docx_第4页
第4页 / 共20页
C语言程序设计课程设计实习报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言程序设计课程设计实习报告.docx

《C语言程序设计课程设计实习报告.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计实习报告.docx(20页珍藏版)》请在冰豆网上搜索。

C语言程序设计课程设计实习报告.docx

C语言程序设计课程设计实习报告

长江大学

C语言程序设计课程设计实习报告

         

题目:

  学生成绩管理系统     

姓 名:

 陈桥    

学   院:

  计算机科学学院    

专业:

 教育技术学   

班级:

  教技 11001

学号:

  201003885   

指导教师:

 马老师康老师      

 

2011年12月19日

 

一  设计目的…………………………………………………………1

二课程设计摘要…………………………………………………2

三  课程设计的任务与数据…………………………………………3

四系统功能模块 …………………………………………………4

五详细设计(各功能模块的具体实现算法—-流程图)………5

六调试分析(包含各模块的测试用例及测试结果)…………… 6

七   总结…………………………………………………………… 7

 

一、设计目的

1.进一步熟悉VC6。

0的开发环境,掌握基本的编程方法,熟悉用C语言完成一个应用程序的设计过程、掌握有关编辑和调试程序的方法和技巧;

2.主要掌握C语言中的结果提、指针及文件操作等内容;

3.了解开发简单应用程序的全过程,包括:

分析、设计、编程、调试和编写报告.

二、课程设计摘要

第一步原始数据(建立两个数据文件)

1.文件1用来存放学生成绩

2.文件2用来存放课程学分

第二步 程序设计思想

1.定义两个结构体数组用来存放文件1和文件2的内容。

2.编写各个函数对应各个应实现的功能.

3.编写第一个函数ReadDat1( )读取文件1(jj110014.txt)读取学生成绩

4.编写第二个函数ReadDat2( )读取文件2(jj01kc。

txt)读取课程学分

5.编写第三个函数pj()计算各个同学的加权平均值

6.编写第四个函数writecj()计算每个同学的名次,同时创建文本文件ksMC110014.txt写入数据,包括各个学生的学号、名次、姓名、各科成绩、加权平均值。

7.

 编写第五个函数kc()统计全班每门课程的平均分和标准差,并计算各分数段(60分以下;60~69;70~79;80~89;90分以上的学生人数)。

课程设计的计算公式为:

式中:

y为课程标准差,xi为第i个学生成绩,为本门课程的算术平均成绩,N为学生数。

创建txt文本文件kskcjj110014。

txt写入数据,包括课程编号、课程名称、课程学分、标准差、分数段人数统计。

7.编写第六个函数cjt()打印每名学生的成绩条,同时创建txt文本文件kscjt110014.txt写入成绩条内容.

8.编写第七个函数bjg()屏幕显示所有存在不及格课程的学生名单(含学号、不及格课程名称、课程的学分及成绩)。

9.编写第八个函数yxiu()屏幕显示优等生名单(含学号、N门课成绩、平均分、名次)。

三、程序设计的任务与数据

1。

原始文件

①用记事本新建一文本文件,文件名为:

“班名+序号",将本班的M名学生在本学期的N门考试课的成绩(要求用真实的课程名、假想的分数,并要求将自己的学号假定为1,将自己的每门课的分数都定在90分以上,而将别人的每门课的分数都定在95分以下。

)输入到这个文件中,建议按如下形式存放(注:

20≤M≤50、5≤N≤8,下文以M=4,N=3为例):

  学号  姓名  英语 C语言  数学 

 1  我自己  96 93   99 

   2 张某 76  89 89 

    3  李某 91 9667

   4 王某 75 58  56

   …………

jj110014.txt

②用记事本新建另一文本文件,文件名为:

“班名+KC”,将本班本学期的N门真实的课程名及其学分输入到这个数据文件中,建议按如下列形式存放:

    编号 课程名称 课程学分

1  英语     6.0

2  C语言   4。

5

3  数学        5。

5

jj01kc。

txt

2。

课设任务

在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,并根据以上内容计算每个学生N门课的加权平均分(保留1位小数,4舍5入),并按平均分排列名次,平均分相同则名次并列。

然后显示菜单,利用菜单调用各个函数,分别完成如下功能:

 

1)用C语言创建一个数据文件,文件名为:

“MC+班号+序号”,如信计0901班的12号同学所建的文件名应为:

“MC1090221.txt”。

用来存放班级排名后的成绩表,要求按以下形式存放。

 名次  学号姓名  英语 C语言数学……平均成绩

  1 1   我自己 96   93   99  ……95。

5

  3  2    张某 76  89   89 ……80。

5  

   4 3 李某91  9667 ……78.2

   2   4 王某 75  58  56  ……88.8 

5  5    赵某58   67 77 ……68.5  

2)

分别统计全班每门课的平均分和标准差,并计算各分数段(60分以下;60~69;70~79;80~89;90分以上)的学生人数。

课程标准差的计算公式为:

式中:

y为课程标准差,xi为第i个学生成绩, 为本门课程的算术平均成绩,N为学生数.

3)用C语言创建一个数据文件,文件名为:

“KC+班号+序号”,hx1090121。

txt

编号 课程名称课程学分标准差 优秀  良好 中等 及格不及格

1  英语 6。

0  16.8  3 10 18  153 

2 C语言 4.5  11。

7  1520138

3  数学 5。

5  18.5  912 19 8    1

4)打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名为:

“CJT+班号+序号”,CJT1090221。

txt。

成绩条的格式自定。

5)屏幕显示所有存在不及格课程的学生的名单(含学号、不及格课程名称、课程的学分及成绩).

6)屏幕显示优等生名单(含学号、N门课成绩、平均分、名次)

    优等生条件(只要满足三个条件中的任意一个条件即可):

a)平均分≥92分

b)名次在本班位于前五名

c)平均分≥88分,并且至少有一门课的成绩 ≥99分

四、系统功能模块

 

五、详细设计(各功能模块的具体实现算法-—流程图)

1.流程图ﻩ

#include 〈stdio.h〉

#include<math.h〉

structstu

{

ﻩintnum;

 charname[10];

intscore[5];

 float ave;

}stu[20];

struct kecheng

intnum,count[5];

ﻩcharkcname[10];

ﻩfloatxuefen,ave;

}course[5];

voidReadDat1()

ﻩinti,j;

charstr1[100];

ﻩFILE*fp;

ﻩif((fp=fopen(”jj110014。

txt",”r"))==NULL)

ﻩ{

ﻩprintf("Cannotopenthefile1!

\n");

exit(0);

}

fgets(str1,100,fp);

ﻩprintf("%s",str1);

ﻩfor(i=0;i<20;i++)

{

ﻩfscanf(fp,"%5d%s",&stu[i]。

num,stu[i]。

name);

printf("%2d %2s”,stu[i].num,stu[i].name);

ﻩfor(j=0;j<5;j++)

ﻩﻩ{

fscanf(fp,”%4d",&stu[i].score[j]);

ﻩﻩprintf("%6d”,stu[i]。

score[j]);

ﻩprintf(”\n");

}

ﻩfclose(fp);

voidReadDat2()

{

ﻩFILE*fp;

intk;

charstr2[100];

fp=fopen("jj01kc。

txt”,"r");

fgets(str2,100,fp);

puts(str2);

ﻩfor(k=0;k<5;k++)

{

ﻩﻩfscanf(fp,”%d%s%f",&course[k]。

num,course[k]。

kcname,&course[k].xuefen);

ﻩprintf(”%-8d%-10s%f\n",course[k].num,course[k].kcname,course[k].xuefen);

}

fclose(fp);

}

void pj()

inti,j;

ﻩfloats=0,sum;

ﻩfor(i=0;i<5;i++)

s+=course[i].xuefen;

ﻩfor(i=0;i〈20;i++)

ﻩﻩ{

ﻩﻩsum=0;

ﻩfor(j=0;j<5;j++)

ﻩﻩsum+=stu[i]。

score[j]*course[j].xuefen;

ﻩﻩstu[i].ave=sum/s;

ﻩ}

}

void writecj()

{

FILE*fp;

ﻩinti,j,a[20],k;

for(i=0;i〈20;i++)

ﻩk=1;

ﻩfor(j=0;j〈20;j++)

ﻩ{

ﻩﻩif(stu[i].ave—stu[j].ave<0)

ﻩﻩk++;

ﻩﻩ}

ﻩa[i]=k;

if((fp=fopen("e:

\ks\MC110014。

txt”,”w”))==NULL)

ﻩﻩprintf(”Faile tobuild a newfile!

\n”);

ﻩexit(0);

ﻩ}

fprintf(fp,"名次 学号 姓名英语C语言数学 体育物理平均成绩\n");

ﻩfor(i=0;i<20;i++)

ﻩ{

ﻩfprintf(fp,”%3d%4d%7s",a[i],stu[i].num,stu[i].name);

ﻩfor(j=0;j<5;j++)

ﻩfprintf(fp,”%5d",stu[i].score[j]);

ﻩfprintf(fp,"%8.2f\n”,stu[i].ave);

}

fclose(fp);

}

void kc()

ﻩint i,j;

float b[5],sum[5];

  FILE*fp;

ﻩfor(i=0;i〈5;i++)

b[i]=0;

for(j=0;j〈5;j++)

ﻩ{

sum[j]=0;

ﻩﻩfor(i=0;i<20;i++)

ﻩﻩsum[j]+=stu[i]。

score[j];

}

ﻩfor(j=0;j〈5;j++)

ﻩ{

for(i=0;i〈20;i++)

ﻩﻩb[j]+=(stu[i]。

score[j]-sum[j]/20。

0)*(stu[i].score[j]—sum[j]/20.0);

ﻩﻩcourse[j]。

ave=(float)sqrt((double)b[j]/20。

0);

ﻩ}

for(j=0;j〈5;j++)

ﻩﻩfor(i=0;i<5;i++)

ﻩcourse[j].count[i]=0;

ﻩfor(j=0;j<5;j++)

ﻩ{

ﻩfor(i=0;i<20;i++)

ﻩﻩ{

ﻩif(stu[i]。

score[j]〉=90)

ﻩﻩﻩﻩcourse[j]。

count[0]++;ﻩ

ﻩﻩﻩelseif(stu[i]。

score[j]〉=80)

ﻩﻩﻩﻩﻩcourse[j].count[1]++;

ﻩelseif(stu[i].score[j]〉=70)

ﻩﻩcourse[j]。

count[2]++;

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

ﻩﻩﻩﻩﻩcourse[j].count[3]++;

ﻩﻩelsecourse[j].count[4]++;

ﻩﻩ}

}

if((fp=fopen("e:

\ks\kcjj110014.txt”,"w"))==NULL)

ﻩ{

printf(”Failetobuildanewfile!

\n”);

ﻩﻩexit(0);

ﻩ}

ﻩfprintf(fp,"编号课程名称课程学分 标准差优秀 良好 中等 及格不及格\n”);

ﻩﻩﻩfor(i=0;i〈5;i++)

ﻩﻩ{

ﻩﻩﻩfprintf(fp,”%—6d%-10s%-7.1f%5。

1f",i+1,course[i]。

kcname,course[i].xuefen,course[i]。

ave);

ﻩfor(j=0;j<5;j++)

ﻩﻩﻩfprintf(fp,"%5d",course[i].count[j]);

ﻩﻩﻩfprintf(fp,"\n”);

ﻩﻩ}

ﻩfclose(fp);

}

voidcjt()

ﻩinti,j,a[20],k;

floats=0,sum;

FILE*fp;

for(i=0;i<5;i++)

ﻩﻩs+=course[i].xuefen;

for(i=0;i<20;i++)

ﻩ{

ﻩﻩsum=0;

ﻩﻩfor(j=0;j〈5;j++)

ﻩﻩsum+=stu[i].score[j]*course[j].xuefen;

stu[i].ave=sum/s;

}

for(i=0;i<20;i++)

ﻩk=1;

for(j=0;j<20;j++)

ﻩ{

ﻩﻩif(stu[i]。

ave-stu[j]。

ave<0)

ﻩk++;

ﻩ}

ﻩﻩa[i]=k;

ﻩ}

if((fp=fopen("e:

\ks\cjt110014。

txt","w"))==NULL)

ﻩ{

ﻩﻩprintf("Failetobuild anew file!

\n”);

ﻩexit(0);

fprintf(fp,”名次学号 姓名 英语C语言数学体育 物理 平均成绩\n");

 for(i=0;i<20;i++)

fprintf(fp,”%3d%4d%7s”,a[i],stu[i].num,stu[i].name);

for(j=0;j<5;j++)

ﻩfprintf(fp,”%5d”,stu[i].score[j]);

ﻩfprintf(fp,"%6.2f\n",stu[i].ave);

ﻩfprintf(fp,"\n");

ﻩwhile(i!

=19)

ﻩﻩ{

ﻩfprintf(fp,"名次学号 姓名 英语 C语言 数学 体育 物理平均成绩\n”);

break;

ﻩ}

ﻩfclose(fp);

}

void bjg()

{

ﻩinti,j;

ﻩprintf(”不及格课程学生名单\n");

printf(”学号姓名不及格课程名称课程学分 课程成绩\n”);

for(i=0;i〈20;i++)

for(j=0;j<5;j++)

ﻩﻩﻩif(stu[i]。

score[j]〈60)

ﻩﻩ{

ﻩﻩprintf("%-5d”,stu[i]。

num);

ﻩﻩprintf(”%—8s”,stu[i]。

name);

ﻩprintf(”%7s”,course[j].kcname);

ﻩprintf(”%11.1f”,course[j]。

xuefen);

ﻩﻩﻩprintf("%8d\n”,stu[i].score[j]);

ﻩ}

ﻩprintf("\n");

voidyxiu()

{

ﻩinti,j,k,a[20],b[20],c[20];

ﻩfloat s=0,sum;

for(i=0;i<5;i++)

ﻩﻩs+=course[i].xuefen;

ﻩfor(i=0;i<20;i++)

{

ﻩsum=0;

for(j=0;j<5;j++)

ﻩﻩsum+=stu[i].score[j]*course[j]。

xuefen;

ﻩﻩstu[i].ave=sum/s;

ﻩ}

for(i=0;i<20;i++)

ﻩ{

ﻩﻩk=1;

ﻩﻩfor(j=0;j<20;j++)

{

ﻩﻩif(stu[i].ave-stu[j].ave<0)

ﻩk++;

ﻩ}

ﻩﻩa[i]=k;

ﻩprintf("优等生名单\n”);

ﻩprintf("名次学号姓名英语C语言数学体育 物理平均分\n");

ﻩfor(i=0;i〈20;i++)

b[i]=0;

ﻩﻩc[i]=0;

ﻩ}

ﻩfor(j=0;j<20;j++)

{

ﻩif(stu[j].ave〉=92)

ﻩﻩﻩb[j]++;

for(i=0;i<5;i++)

ﻩif(stu[j]。

ave>=88&&stu[j]。

score[i]〉=99)

ﻩc[j]++;

for(i=0;i<20;i++)

if(a[i]<=5||b[i]||c[i])

ﻩ{

ﻩﻩprintf(" %—5d”,a[i]);

ﻩprintf("%—5d",stu[i]。

num);

ﻩprintf("%—6s”,stu[i].name);

ﻩfor(j=0;j<5;j++)

ﻩﻩﻩprintf("%-5d",stu[i].score[j]);

ﻩﻩprintf("%-7.2f\n”,stu[i]。

ave);

ﻩprintf("\n”);

main()

{

ReadDat1();

ReadDat2();

pj();

ﻩwritecj();

ﻩkc();

cjt();

bjg();

ﻩyxiu();

六、调试分析(包含各模块的测试用例及测试结果)

源文件

运行结果

C程序新建的文本文件

ksMC110014。

txt

Kskcjj110014.txt

Kscjt110014。

txt

七、总结

编程题目要求简单易懂,但实际操作却很难,主要是没有理清条理,通过编程各个函数解决各个问题,题目变得简单易操作。

通过编程解决实际问题,掌握了结构体,数组,文件的使用,函数的各个调用,以及顺序结构、选择结构、循环结构的应用。

通过编程,进一步掌握了C语言的实践操作。

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

当前位置:首页 > 医药卫生 > 基础医学

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

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