




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第11章 C语言程序综合实训第11章 C语言程序综合实训学习目标通过综合实践性训练,掌握一般应用程序的设计方法。学习内容应用程序设计的一般步骤,应用程序设计实例。下一页返 回第11章 C语言程序综合实训11.1 应用程序设计方法11.2 应用程序设计实例11.3 C语言课程实训上一页返 回11.1 应用程序设计方法程序设计就是针对给定问题进行设计、编写和调试计算机程序的过程。作为一名程序设计者,要想设计好一个程序,除了掌握程序设计语言本身的语法规那么外,还要学习程序设计的方法和技巧,并通过不断的实践来提高自己的程序设计能力。进行应用程序设计时一般遵循以下步骤: 1. 需求分析在这个环节,根据用
2、户的具体要求进行以下工作:1用户需求分析。务必详细、具体地理解用户要解决的问题,明确为了到达用户要求和系统的需求,系统必须做什么,系统必须具备哪些功能。2数据及处理分析。通过分析实际问题,了解或需要的输入数据、输出数据,需要进行的处理。返 回下一页上一页11.1 应用程序设计方法3可行性分析。用户提出的问题是否值得去解,是否有可行的解决方法。4运行环境分析。即硬件环境和软件环境分析。对初学者而言,关键处理好需求分析和数据及处理分析这两方面的工作。2. 系统设计系统设计可分为总体设计和详细设计。总体设计通常用结构图描绘程序的结构,以确定程序由哪些模块组成以及模块间的关系。 详细设计就是给出问题求
3、解的具体步骤,给出怎样具体地实现各功能模块的描述。返 回下一页上一页11.1 应用程序设计方法3. 系统实现选择适当的程序设计语言,把详细设计的结果描述出来,即形成源程序,并上机运行调试源程序,修改发现的错误,直到得出正确的结果。在调试过程中应该精心选择典型数据进行测试,防止因测试数据不妥而引起的计算偏差和运行错误。4. 建立文档资料整理分析程序结果,建立相应的文档资料,以便日后对程序进行维护或修改。返 回11.2 应用程序设计实例开发一个学生成绩管理系统,用于对班级的学生成绩进行处理。班级有N个学生,每个学生的信息包括学号、姓名和3门课成绩。本系统实现的功能要求:1录入学生数据。2显示学生数
4、据。3计算每个学生平均成绩。4计算各科平均成绩。5按照学生平均成绩排序。返 回下一页上一页11.2 应用程序设计实例1. 系统分析与设计通过分析以上功能描述,可以确定本系统的数据结构和主要功能模块。1定义数据结构由于学生的数据包括学号、姓名和3门课成绩,所以决定采用结构体类型来描述,具体定义如下:struct student char num6;char name8; int score3; float avr; 返 回下一页上一页11.2 应用程序设计实例2程序功能模块根据系统功能要求,确定出6个功能模块,如图11-1所示,包括录入模块,显示模块,求每个学生平均成绩,求各科平均成绩,排序模块
5、及显示菜单模块,每个模块对应一个函数,分别命名为creat、show、average、allaverage、sort、showmenu。2. 各个模块设计1主界面设计。为了程序界面清晰,主界面采用菜单设计,便于用户选择执行,如图11-2所示。2数据录入模块。本模块功能是从键盘输入N个学生数据(包括学号、姓名、3门课成绩)并存放到磁盘文件“stud中,“stud为二进制数据文件,用函数fread()和fwrite()完成读写操作。数据录入过程如图11-3所示。返 回下一页上一页11.2 应用程序设计实例显示学生数据模块。从磁盘文件中读取学生数据,以表格形式显示到屏幕上。显示格式如图11-4所示。
6、执行此模块时,还没有计算平均成绩,因此信息表中的平均成绩均为0。3计算每个学生平均成绩。从磁盘文件读取学生数据,计算每个人的平均成绩后输出,如图11-5所示。4计算各科平均成绩模块。从磁盘文件读取学生数据,计算各科平均成绩后直接输出,如图11-6所示。5按照学生平均成绩排序。从磁盘文件读取学生数据,按照平均成绩从高到低排序后输出结果,如图11-7所示。返 回下一页上一页11.2 应用程序设计实例3. 源程序清单#include #include #define N 3 /*以3个学生为例*/struct student char num6;char name8; int score3; dou
7、ble av; stuN,sN; void creat( ) /*录入学生原始数据并写入磁盘文件*/返 回下一页上一页11.2 应用程序设计实例int i,j,sum; FILE *fp; for(i=0;iN;i+) printf(n请输入第%d个学生数据:n,i+1); printf(学号: );scanf(%s,stui.num); printf(姓名: );scanf(%s,);sum=0; for(j=0;j3;j+) 返 回下一页上一页11.2 应用程序设计实例 printf(成绩%d: ,j+1); scanf(%d,&stui.scorej); fp=fope
8、n(stud,wb); /*文件写操作*/for(i=0;iN;i+) fwrite(&stui,sizeof(struct student),1,fp); fclose(fp); void show() /*从磁盘文件读取学生数据并显示*/返 回下一页上一页11.2 应用程序设计实例int i,j;FILE *fp; fp=fopen(stud,rb); for(i=0;iN;i+) fread(&si,sizeof(struct student),1,fp); /*读磁盘文件*/ printf(nn-学生信息表1-nn); printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n);f
9、or(i=0;iN;i+)printf(%st%st,si.num,);返 回下一页上一页11.2 应用程序设计实例 for(j=0;j3;j+) printf(%dt,si.scorej); printf(%.2lfn,stui.av); printf(n); fclose(fp);void average() /*计算每个学生的平均成绩并输出*/int i,j,sum;FILE *fp; fp=fopen(stud,rb); 返 回下一页上一页11.2 应用程序设计实例for(i=0;iN;i+) fread(&stui,sizeof(struct student),1,fp
10、); for(i=0;iN;i+)sum=0; for(j=0;j3;j+) sum+=stui.scorej; stui.av=sum/3.0; printf(-学生信息表2-n); printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n);for(i=0;iN;i+)返 回下一页上一页11.2 应用程序设计实例printf(%st%st,stui.num,); for(j=0;j3;j+) printf(%dt,stui.scorej); printf(%.2lfn,stui.av); for(i=0;iN;i+) fwrite(&stui,sizeof(struc
11、t student),1,fp); printf(nn); fclose(fp);void allaverage() /*计算各科平均成绩并输出*/int i,j,sum;返 回下一页上一页11.2 应用程序设计实例double all3; FILE *fp; fp=fopen(stud,rb); for(i=0;iN;i+) fread(&stui,sizeof(struct student),1,fp); for(i=0;i3;i+)sum=0; for(j=0;jN;j+) sum+=stuj.scorei; alli=(double)sum/N; printf(-学生信息表-n);返
12、回下一页上一页11.2 应用程序设计实例 printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n);for(i=0;iN;i+)printf(%st%st,stui.num,); for(j=0;j3;j+) printf(%dt,stui.scorej); printf(%.2lfnn,stui.av); printf( t t);/*输出各科平均成绩*/for(i=0;i3;i+) printf(%.2lft,alli); printf(nn); fclose(fp);返 回下一页上一页11.2 应用程序设计实例void sort() /*按个人平均成绩上下排序*/
13、int i,j,k,t=0;double temp=0;char str10=;for(i=0;iN-1;i+) /*排序*/ for(j=i+1;jN;j+)if (si.avsj.av) temp=si.av; si.av=sj.av; sj.av=temp; strcpy(str,si.num);strcpy(si.num,sj.num);返 回下一页上一页11.2 应用程序设计实例strcpy(sj.num,str);strcpy(str,); strcpy(,); strcpy(,str); for(k=0;k3;k+) t=s
14、i.scorek; si.scorek=sj.scorek; sj.scorek=t; printf(-学生信息表-n);返 回下一页上一页11.2 应用程序设计实例 printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n);for(i=0;iN;i+)printf(%st%st,si.num,); for(j=0;j3;j+) printf(%dt,si.scorej); printf(%.2lfn,si.av); printf(nn); void showmenu() /*显示菜单*/ printf(n 学生成绩管理系统 n);返 回下一页上一页11.2 应用程序设计实
15、例printf(n=n);printf( 1. 录入学生数据 n); printf( 2. 显示学生数据 n); printf( 3. 计算学生平均成绩 n); printf( 4. 计算各科平均成绩 n); printf( 5. 排名 n); printf( 0. 退出系统 n);printf(=n);printf(n请输入您的选择:);main() /*主控程序*/返 回下一页上一页11.2 应用程序设计实例int choice;showmenu();scanf(%d,&choice);while (choice!=0) /*选择0退出*/switch (choice)case 1:cre
16、at();break; case 2:show();break;case 3:average();break;case 4:allaverage();break;返 回下一页上一页11.2 应用程序设计实例case 5:sort();break; showmenu(); scanf(%d,&choice);程序说明:本学生管理系统是一个例如性质的管理信息系统,其功能简单,实现的技术也有欠缺。不过本例旨在抛砖引玉,相信各位读者经过不断的学习,能开发出完善的应用程序。 返 回11.3 C语言课程实训1. 实训目的课程实训针对本课程所学知识进行综合性的实践训练。通过编制C语言程序,熟练掌握C语言程序
17、设计的方法,理解C语言的语法规那么、编程思想,掌握程序的运行、调试方法,培养学生利用分析问题,解决问题的能力。2. 课程实训应到达的能力要求1语法规那么应用能力。2算法设计能力。3程序代码编写能力。4程序运行、调试的能力。5文档编写能力。3. 实训时间实训时间一周,计30学时,要求一人一机。返 回下一页上一页11.3 C语言课程实训4. 实训内容课程实训主要从以下方面对学生进行训练:1顺序结构,选择结构,循环结构。2模块化程序设计。3数组的应用。4指针的使用。5结构体的应用。6文件的应用。实训题目分为单项训练和综合训练。综合训练题目为每人必做工程,单项训练题目针对每个学生的学习情况专门设计,这
18、样安排的目的是为了发挥每个学生的能动性。返 回下一页上一页11.3 C语言课程实训5考核标准要求每个学生独立完成单项训练和综合训练题目,编写的程序代码能够正常运行并上传到指定的ftp。成绩按下面几个方面评定:1程序是否能正常运行;2程序能否完成题目所提出的功能要求;3人机界面是否友好;4是否在规定时间内独立完成。5实训报告是否内容准确,格式标准。6. 课程实训报告要求1采用提供的统一封面。 2正文内容包括:设计题目,算法描述,程序代码主要代码要加注释,运行记录。3实训总结。4打印设计报告。返 回下一页上一页11.3 C语言课程实训7. 实训参考题目综合训练学生 簿链表管理程序。程序功能要求:1
19、 簿数据包括姓名和 号码两项。2完成 薄文件的建立,输出,查询,删除和插入5个功能。3设计程序功能菜单。4采用模块化程序设计,程序包含1个主模块、5个子模块。5注意人机界面的友好设计。返 回下一页上一页11.3 C语言课程实训单项训练1. 编写一个课表查询菜单程序,由键盘输入数字15中任意值时,在屏幕显示出相应的星期一到星期五的课表,输入0时退出菜单程序,输入05外的数时要重新输入,菜单格式要求: 课表查询菜单0. 退 出1. 星期一2. 星期二3. 星期三4. 星期四5. 星期五返 回下一页上一页11.3 C语言课程实训请选择05:1星期一:1-2英语 、3-4数学、5-6电路请选择05:2
20、请选择05:0谢谢查询,再见!2. 算术测试程序:该程序用来测试小学生的加减运算能力。运行界面如下:请输入试题数量:322-77= -55 正确!85+21=106正确!返 回下一页上一页11.3 C语言课程实训86-24=60错误!答案为:62总共3道题,做对2题,正确率为67%3. 用户登录程序。提示用户输入用户名和密码,判断是否合法用户假设合法的用户名是“abc、密码是123456,如果合法,显示“welcome to use the software,否那么要求重新输入,允许输入3次,假设3次都错,显示password error!you can not use software“。4
21、. 有如下12个国家在我国进行某项体育比赛,依规定入场式时除东道主走在最后外,其它国家依国名的英语字母顺序排列,请编写程序完成:12个国家为:Thailan、Singapore、Laos、Burma、China、India、Nepal、Japan、Korea、Mongolia、Egypt、Indonesia。返 回下一页上一页11.3 C语言课程实训5. 编写程序计算两个矩阵的和,各元素的值由随机函数产生。两个矩阵相加是对应元素相加。要求使用函数完成。6. 评分统计程序。共有8个评委打分,统计时去掉一个最高分和一个最低分,其余6个分数的平均分即是最后得分,得分精确到1位整数、2位小数。7. 某
22、班有40名学生,期终考4门课程。求每个学生总成绩,并按总成绩高分到低分输出。每个学生情况包括学号、姓名、4门课程成绩、总成绩、名次。输出格式为: 软件3061班学生成绩一览表=学号 姓名 C语言 VB 数据库 操作系统 总成绩 名次返 回下一页上一页11.3 C语言课程实训8. 编写程序,计算1001000之间的特殊数。 (1) 素数 (2) 回文数 (3) 完数 (4) 水仙花数 要求:1采用模块化程序设计方法。 2菜单设计格式如:=菜 单= 1. 素 数2. 回 文 数3. 完 数4. 水仙花数 0. 退 出=返 回下一页上一页11.3 C语言课程实训9. 输入10本书的书名和单价,按照单价的升序进行排序后输出。输入格式:please enter book name and 1 : xx xxx 2 : xx xxx 10 : xx xxx输出格式:- BOO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小企业劳动用工合同
- 夏令营代理商合作协议新
- 买卖合作协议合同
- 产品销售数据类表格
- 美甲店装修施工方案模板
- TCSG 13-2024 高纯工业品氟化锂
- 《大数据技术导论》-课程标准
- 布帘施工方案
- 水利水电施工方案
- 预制桩钢平台基础施工方案
- 袁家村规划方案
- 2024年高考英语作文【5篇】
- 结直肠癌免疫治疗
- 老年学概论(第3版) 课件 第5-7章 衰老生物学、老年人口学、老年心理学
- 人教版八年级物理下册《第八章运动和力》单元测试卷-含答案
- 电力计量人员培训课件
- 富氢水完整课件
- 阿拉伯国家联盟课件
- 国家临床版3.0手术操作编码(ICD-9-CM3)
- 打印设备维护服务投标方案
- JGT454-2014 建筑门窗、幕墙中空玻璃性能现场检测方法
评论
0/150
提交评论