ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:287.03KB ,
资源ID:4373185      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4373185.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、C语言程序设计实验报告C语言程序设计课程设计实习报告院系:班级:学号:姓名:序号:指导老师: 实习日期:2011.12.23 目 录一、系统题目1二、系统摘要1三、系统设计1 1、系统功能模块概图1 2、菜单结构图2 3、数据结构说明2四、系统实现4五、系统使用说明4六、测试数据5七、结论68、附录6一、系统名称 简易教学管理系统的设计与实现二、系统摘要 在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,并根据以上内容计算每个学生N门课的加权平均分(保留1位小数,4舍5入)并按平均分排列名次,平均分相同则名次并列。然后显示菜单,利用菜单调用各个函数,分别完成如下功能: 1) 用C

2、语言创建一个数据文件,文件名为:“MC+班号+序号”,如信计0901班的12号同学所建的文件名应为:“MC1090221.txt”。用来存放班级排名后的成绩表,要求按以下形式存放。 名次 学号 姓名 英语 C语言 数学 平均成绩 1 1 我自己 96 93 99 95.5 3 2 张某 76 89 89 80.5 4 3 李某 91 96 67 78.2 2 4 王某 75 58 56 88.8 5 5 赵某 58 67 77 68.5 2) 分别统计全班每门课的平均分和标准差,并计算各分数段(60分以下;6069;7079;8089;90分以上)的学生人数。 课程标准差的计算公式为:式中:y

3、为课程标准差,xi为第i个学生成绩,为本门课程的算术平均成绩,N为学生数。3) 用C语言创建一个数据文件,文件名为:“KC+班号+序号”, hx1090121.txt 编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格1 英语 6.0 16.8 3 10 18 15 3 2 C语言 4.5 11.7 1 5 20 13 83 数学 5.5 18.5 9 12 19 8 14) 打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名为:“CJT+班号+序号”, CJT1090221.txt。5) 屏幕显示所有存在不及格课程的学生的名单(含学号、不及格课程名称、课程的学分

4、及成绩)。6) 屏幕显示优等生名单(含学号、门课成绩、平均分、名次) 优等生条件(只要满足三个条件中的任意一个条件即可):a) 平均分 92分b) 名次在本班位于前五名c) 平均分 88分,并且至少有一门课的成绩 99分三、系统设计1、系统功能模块框图 2、菜单结构图 1、创建班级成绩单 2、创建各课程成绩统计 3、打印每名学生成绩条 4、显示不及格学生名单 5、显示优等生名单 6、退出3、数据结构说明 (1)struct 结构体名 类型名1 结构体成员表1; 类型名2 结构体成员表2; 结构体变量名表; struct student int rank,num; char name15; in

5、t scoreM,Condition4; float ave;stuN;struct kecheng int num,xuefen; char kcname20; float ave; int count5;courseM; (2)#indefine是宏定义命令,标示符又称宏名。宏定义的作用是用一个简单的标示符来代替一个字符串,方便程序的书写,一般格式为: #indefine 标示符 字符串 如:#define N 24 #define M 5 (3)FILE *文件指针名; 如:FILE *fp; C语言中所有对文件的操作都是通过文件指针进行的四、系统实现1、函数的实现 第一步 原始数据(建

6、立两个数据文件)1. 文件1用来存放学生成绩2. 文件2用来存放课程学分 第二步 系统设计1. 定义两个结构体数组用来存放文件1和文件2的内容。2. 编写第一个函数ReadDat1( )读取文件1(jj100208.txt)读取学生成绩。3. 编写第二个函数ReadDat2( )读取文件2(jj02kc.txt)读取课程学分。4. 编写第三个函数Rank( )计算各个同学的加权平均值和名次。5. 编写第四个函数WriteCJ( )创建文本文件MC1090221.txt写入数据,包括各个学生的名次、学号、姓名、各科成绩、加权平均值。6. 编写第五个函数Class( )统计全班每门课程的平均分和标

7、准差。7. 编写第六个函数Tongji( )计算各分数段(60分以下;6069;7079;8089;90分以上的学生人数)。课程设计的计算公式为: 式中:y为课程标准差,xi 为第i个学生成绩, 为本门课程的算术平均成绩,N为学生数。 创建txt文本文件hx1090221.txt写入数据,包括课程编号、课程名称、标准差、分数段人数统计。7编写第七个函数cjt( )打印每名学生的成绩条,同时创建txt文本文件CJT1090221.txt写入成绩条内容。8编写第八个函数Fail( )屏幕显示所有存在不及格课程的学生名单(含学号、不及格课程名称、课程的学分及成绩)。9编写第九个函数Excellent

8、( )屏幕显示优等生名单(含学号、N门课程成绩、平均分、名次)。2、流程图函数1:读取原始数据 主菜单函数7:屏幕显示不及格学生名单函数8:屏幕显示优等生名单函数6:打印每名学生成绩条函数2:计算平均分并排名函数4:计算课程平均分和标准差函数5:进行分数段人数统计,并打印函数3:打印成绩表5、系统的使用说明1、系统的主菜单2、在“查询”的位置,用户根据自己的需求,输入对应的数字。 (1)输入“1”,创建班级成绩单。 (2)输入“2”,创建各课程成绩统计。 (3)输入“3”,打印每名学生成绩条。 (4)输入“4”,显示不不及格学生名单。 (5)输入“5”,显示优等生名单。 (6)输入“6”,退出

9、。3、注意事项 如果输入16以外的数字,系统则会显示“输入有误”。六、测试数据原始数据学生各课程成绩原始数据课程和学分生成的班级成绩表生成的各课程统计表生成的每名学生的成绩条不及格学生名单和优等生名单七、结论通过本次课程设计,我熟练掌握了结构体,数组,文件的使用,函数的各个调用,以及顺序结构、选择结构、循环结构的应用。通过编程,进一步掌握了C语言的实践操作,来解决实际问题。编程题目要求简单易懂,但自己实际操作却很难。主要是开始没有理清思路,后来先将程序模块化。通过编写各个函数来解决各个问题,题目变得简单易行。整个程序的编写过程,充分体现了结构化程序设计的自顶向下、逐步求精、模块化的几大原则。八

10、、附录(程序清单)#include #include #define N 24#define M 5struct student int rank,nums,coreM,Condition4; char name15; float ave;stuN;struct kecheng int num,xuefen,count5; char kcname20; float ave;courseM;void ReadDat1() /读取成绩 int i,j; char str1100; FILE *fp; if(fp=fopen(c:jj100208.txt,r)=NULL) printf(Cannot

11、 open the file1!n); exit(0); fgets(str1,100,fp); printf(%s,str1); for(i=0;iN;i+) fscanf(fp,%d%s,&stui.num,stui.name); printf(%3d%9s,stui.num,stui.name); for(j=0;jM;j+) fscanf(fp,%d,&stui.scorej); printf(%10d,stui.scorej); printf(n); fclose(fp); printf(n);void ReadDat2() /读取课程 FILE *fp; int k; char s

12、tr2100; fp=fopen(c:jj02kc.txt,r); fgets(str2,100,fp); printf(%6s,str2); for(k=0;kM;k+) fscanf(fp,%d%s%d,&coursek.num,coursek.kcname,&coursek.xuefen); printf(%3d%12s%9d,coursek.num,coursek.kcname,coursek.xuefen); printf(n); fclose(fp);void Rank() /平均分和名次 int i,j; float s=0,sum; for(i=0;iM;i+) s+=cour

13、sei.xuefen; for(i=0;iN;i+) sum=0; stui.rank=1; for(j=0;jM;j+) sum+=stui.scorej*coursej.xuefen; stui.ave=sum/s; for(i=0;iN;i+) for(j=0;jstui.ave) stui.rank+=1; void WriteCJ() /打印成绩 FILE *fp; int i,j; if(fp=fopen(C:MC100208.txt,w)=NULL) printf(Fail to build a new file!n); exit(0); fprintf(fp,名次 学号 姓名

14、c语言 线性代数 普通物理 电路与模电 摄影技术 平均成绩n); for(i=0;iN;i+) fprintf(fp,%3d%6d%10s,stui.rank,stui.num,stui.name); for(j=0;jM;j+) fprintf(fp,%10d,stui.scorej); fprintf(fp,%11.1fn,stui.ave); fclose(fp);void Class() /标准差和分数段人数 int i,j,sum24; float bM; for(i=0;iM;i+) bi=0; for(j=0;jM;j+) sumj=0; for(i=0;iN;i+) sumj+

15、=stui.scorej; for(j=0;jM;j+) for(i=0;iN;i+) bj+=(stui.scorej-sumj/24.0)*(stui.scorej-sumj/24.0); coursej.ave=(float)sqrt(double)(bj/24.0); for(j=0;jM;j+) for(i=0;i5;i+) coursej.counti=0; for(j=0;jM;j+) for(i=0;i=90) coursej.count0+=1; else if(stui.scorej=80) coursej.count1+=1; else if(stui.scorej=70

16、) coursej.count2+=1; else if(stui.scorej=60) coursej.count3+=1; else coursej.count4+=1; void Tongji() /课程成绩统计 int i,j; FILE *fp; if(fp=fopen(c:KCjj100208.txt,w)=NULL) printf(Faile to build a new file!n); exit(0); fprintf(fp,编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格n); for(i=0;iM;i+) fprintf(fp,%2d%12s%7d%10.

17、1f,i+1,coursei.kcname,coursei.xuefen,coursei.ave); for(j=0;j5;j+) fprintf(fp,%6d,coursei.countj); fprintf(fp,n); fclose(fp);void cjt() /打印成绩条 int i,j; FILE *fp; if(fp=fopen(c:CJTjj100208.txt,w)=NULL) printf(Faile to build a new file!n); exit(0); for(i=0;iN;i+) fprintf(fp,n名次 学号 姓名 C语言 线性代数 普通物理 电路与模

18、电 摄影技术 平均成绩n); fprintf(fp,%3d%5d%9s,stui.rank,stui.num,stui.name); for(j=0;jM;j+) fprintf(fp,%11d,stui.scorej); fprintf(fp,%12.1f,stui.ave); fprintf(fp,n); fclose(fp);void Fail() /不及格学生名单 int i,j; printf(n 不及格学生名单n); printf(n学号 姓名 不及格课程名称 课程学分 课程成绩n); for(i=0;iN;i+) for(j=0;jM;j+) if(stui.scorej60)

19、printf(%-5d,stui.num); printf(%6s,stui.name); printf(%12s,coursej.kcname); printf(%11.1f,coursej.xuefen); printf(%9dn,stui.scorej); printf(n);void Excellent() /优等生名单 int i,j; float s=0,sum; for(i=0;iM;i+) s+=coursei.xuefen; for(i=0;iN;i+) sum=0; stui.rank=1; for(j=0;jM;j+) sum+=stui.scorej*coursej.x

20、uefen; stui.ave=sum/s; for(i=0;iN;i+) for(j=0;jstui.ave)stui.rank+=1; printf(n 优等生名单n); printf(n学号 姓名 C语言 线性代数 普通物理 电路与模电 摄影技术 平均分 名次n); for(i=0;iN;i+) for(j=0;j4;j+) stui.Conditionj=0; for(i=0;i=92) stui.Condition0=1; else if(stui.rank=88) stui.Condition2=1; for(j=0;j=99)break; stui.Condition3=1; f

21、or(i=0;iN;i+) if(stui.Condition0|stui.Condition1|(stui.Condition2&stui.Condition3) printf(%-5d,stui.num); printf(%-9s,stui.name); for(j=0;j5;j+) printf(%-10d,stui.scorej); printf(%-7.1f,stui.ave); printf(%-6dn,stui.rank); printf(n);void mainmenu() int n; printf(n&); printf(n 简易教学管理系统n); printf(n 1.创

22、建班级成绩单 2.创建各课程成绩统计 3.打印每名学生成绩条n); printf( 4.显示不及格学生名单 5.显示优等生名单 6.退出n); printf(n&n); while(1) printf(查询:); scanf(%d,&n); switch(n) case 1:Rank();WriteCJ();break; case 2:Class();Tongji();break; case 3:cjt();break; case 4:Fail();break; case 5:Excellent();break; case 6:exit(0); default:printf( 输入有误!n);break; void main() ReadDat1(); ReadDat2(); mainmenu();

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

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