版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
11.1应用程序设计步骤11.1应用程序设计步骤作为一名程序设计者,要想设计好一个程序,除了掌握程序设计语言本身的语法规则外,还要学习程序设计的方法和技巧,并通过不断的实践来提高自己的程序设计能力。进行应用程序设计时一般遵循以下步骤:
1.需求分析在这个环节,根据用户的具体要求进行以下工作:(1)用户需求分析。务必详细、具体地理解用户要解决的问题,明确为了达到用户要求和系统的需求,系统必须做什么,系统必须具备哪些功能。(2)数据及处理分析。通过分析实际问题,了解已知或需要的输入数据、输出数据,需要进行的处理。(3)可行性分析。用户提出的问题是否值得去解决,是否有可行的解决办法。(4)运行环境分析。即硬件环境和软件环境分析。对初学者而言,关键处理好需求分析和数据及处理分析这两个方面的工作。下一页返回11.1应用程序设计步骤2.系统设计系统设计可分为总体设计和详细设计。总体设计通常用结构图描绘程序的结构,以确定程序由哪些模块组成以及模块间的关系。详细设计就是给出问题求解的具体步骤,给出怎样具体地实现各功能模块的描述。
3.系统实现选择适当的程序设计语言,把详细设计的结果描述出来,即形成源程序,并上机运行调试源程序,修改发现的错误,直到得出正确的结果。在调试过程中应该精心选择典型数据进行测试,避免因测试数据不妥而引起的计算偏差和运行错误。
4.建立文档资料整理分析程序结果,建立相应的文档资料,以便日后对程序进行维护或修改。上一页返回11.2应用程序设计实例
开发一个学生成绩管理系统,用于对班级的学生成绩进行处理。班级有N个学生,每个学生的信息包括学号、姓名和3门课成绩。本系统实现的功能要求:(1)录入学生数据。(2)显示学生数据。(3)计算每个学生平均成绩。(4)计算各科平均成绩。(5)按照学生平均成绩排序。系统分析与设计通过分析以上功能描述,可以确定本系统的数据结构和主要功能模块。(1)定义数据结构。由于学生的数据包括学号、姓名和3门课成绩,所以决定采用结构体类型来描述,具体定义如下:下一页返回11.2应用程序设计实例structstudent{charnum[6];charname[8];intscore[3];floatavr;}
(2)程序功能模块。根据系统功能要求,确定出6个功能模块,如图11−1所示,包括录入模块,显示模块,求每个学生平均成绩,求各科平均成绩,排序模块及显示菜单模块,每个模块对应一个函数,分别命名为creat、show、average、
allaverage、sort、showmenu。上一页下一页返回11.2应用程序设计实例
2.各个模块设计(1)主界面设计。为了程序界面清晰,主界面采用菜单设计,便于用户选择执行,如图11−2所示。(2)数据录入模块。本模块功能是从键盘输入N个学生数据(包括学号、姓名、3门课成绩)并存放到磁盘文件"stud"中,"stud"为二进制数据文件,用函数fread()和fwrite()完成读写操作。数据录入过程如图11−3所示。(3)显示学生数据模块。从磁盘文件中读取学生数据,以表格形式显示到屏幕上。显示格式如图11−4所示。执行此模块时,还没有计算平均成绩,因此信息表中的平均成绩均为0。(4)计算每个学生平均成绩。从磁盘文件读取学生数据,计算每个人的平均成绩后输出,如图11−5所示。上一页下一页返回11.2应用程序设计实例
(5)计算各科平均成绩模块。从磁盘文件读取学生数据,计算各科平均成绩后直接输出,如图11−6所示。(6)按照学生平均成绩排序。从磁盘文件读取学生数据,按照平均成绩从高到低排序后输出结果,如图11−7所示。
3.源程序清单#include"stdio.h"#include"string.h"#defineN3/*以3个学生为例*/structstudent{charnum[6];charname[8];intscore[3];doubleav;上一页下一页返回11.2应用程序设计实例}stu[N],s[N];voidcreat()/*录入学生原始数据并写入磁盘文件*/{inti,j,sum;FILE*fp;for(i=0;i<N;i++){printf("\n请输入第%d个学生数据:\n",i+1);printf("学号:");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);sum=0;for(j=0;j<3;j++){上一页下一页返回11.2应用程序设计实例
printf("成绩%d:",j+1);scanf("%d",&stu[i].score[j]);}}fp=fopen("stud","wb");/*文件写操作*/for(i=0;i<N;i++)fwrite(&stu[i],sizeof(structstudent),1,fp);fclose(fp);}voidshow()/*从磁盘文件读取学生数据并显示*/{inti,j;FILE*fp;上一页下一页返回11.2应用程序设计实例
fp=fopen("stud","rb");for(i=0;i<N;i++)fread(&s[i],sizeof(structstudent),1,fp);/*读磁盘文件*/printf("\n\n-----------------学生信息表1------------------\n\n");printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for(i=0;i<N;i++){printf("%s\t%s\t",s[i].num,s[i].name);for(j=0;j<3;j++)printf("%d\t",s[i].score[j]);printf("%.2lf\n",stu[i].av);printf("\n");上一页下一页返回11.2应用程序设计实例
}fclose(fp);}voidaverage()/*计算每个学生的平均成绩并输出*/{inti,j,sum;FILE*fp;fp=fopen("stud","rb");for(i=0;i<N;i++)fread(&stu[i],sizeof(structstudent),1,fp);for(i=0;i<N;i++){sum=0;for(j=0;j<3;j++)上一页下一页返回11.2应用程序设计实例
sum+=stu[i].score[j];stu[i].av=sum/3.0;}printf("-------------------学生信息表2----------------------\n");printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");for(i=0;i<N;i++){printf("%s\t%s\t",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%d\t",stu[i].score[j]);printf("%.2lf\n",stu[i].av);}for(i=0;i<N;i++)fwrite(&stu[i],sizeof(structstudent),1,fp);printf("\n\n");上一页下一页返回11.2应用程序设计实例
fclose(fp);}voidallaverage()/*计算各科平均成绩并输出*/{inti,j,sum;doubleall[3];FILE*fp;fp=fopen("stud","rb");for(i=0;i<N;i++)fread(&stu[i],sizeof(structstudent),1,fp);for(i=0;i<3;i++){上一页下一页返回11.2应用程序设计实例
sum=0;for(j=0;j<N;j++)sum+=stu[j].score[i];all[i]=(double)sum/N;}printf("----------------学生信息表----------------------\n");printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");for(i=0;i<N;i++){printf("%s\t%s\t",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%d\t",stu[i].score[j]);printf("%.2lf\n\n",stu[i].av);}printf("\t\t");/*输出各科平均成绩*/上一页下一页返回11.2应用程序设计实例
for(i=0;i<3;i++)printf("%.2lf\t",all[i]);
printf("\n\n");fclose(fp);}voidsort()/*按个人平均成绩高低排序*/{inti,j,k,t=0;doubletemp=0;charstr[10]="";for(i=0;i<N−1;i++)/*排序*/for(j=i+1;j<N;j++)if(s[i].av<s[j].av){temp=s[i].av;上一页下一页返回11.2应用程序设计实例
s[i].av=s[j].av;s[j].av=temp;strcpy(str,s[i].num);strcpy(s[i].num,s[j].num);strcpy(s[j].num,str);strcpy(str,s[i].name);strcpy(s[i].name,s[j].name);strcpy(s[j].name,str);for(k=0;k<3;k++){t=s[i].score[k];上一页下一页返回11.2应用程序设计实例
s[i].score[k]=s[j].score[k];s[j].score[k]=t;}}printf("------------------学生信息表----------------------\n");printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");for(i=0;i<N;i++){printf("%s\t%s\t",s[i].num,s[i].name);for(j=0;j<3;j++)printf("%d\t",s[i].score[j]);printf("%.2lf\n",s[i].av);}上一页下一页返回11.2应用程序设计实例
printf("\n\n");}voidshowmenu()/*显示菜单*/{printf("\n学生成绩管理系统\n");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请输入您的选择:");}上一页下一页返回11.2应用程序设计实例main()/*主控程序*/{intchoice;showmenu();scanf("%d",&choice);while(choice!=0)/*选择0退出*/{switch(choice){case1:creat();break;case2:show();break;上一页下一页返回11.2应用程序设计实例
case3:average();break;case4:allaverage();break;case5:sort();break;}showmenu();scanf("%d",&choice);}}【程序说明】
本学生管理系统是一个示例性质的管理信息系统,其功能简单,实现的技术也有欠缺。不过本例旨在抛砖引玉,相信各位读者经过不断地学习,能开发出完善的应用程序。上一页返回11.3C语言课程实训
1.实训目的课程实训针对本课程所学知识进行综合性的实践训练。通过编制C语言程序,熟练掌握C语言程序设计的方法,理解C语言的语法规则、编程思想,掌握程序的运行、调试方法,培养学生分析问题、解决问题的能力。
2.课程实训应达到的能力要求(1)语法规则应用能力。(2)算法设计能力。(3)程序代码编写能力。(4)程序运行、调试的能力。(5)文档编写能力。
3.实训时间实训时间一周,计30学时,要求一人一机。
4.实训内容下一页返回11.3C语言课程实训
课程实训主要从以下方面对学生进行训练:(1)顺序结构,选择结构,循环结构。(2)模块化程序设计。(3)数组的应用。(4)指针的使用。(5)结构体的应用。(6)文件的应用。实训题目分为单项训练和综合训练。综合训练题目为每人必做项目,单项训练题目针对每个学生的学习情况专门设计,这样安排的目的是为了发挥每个学生的能动性。
5.考核标准要求每个学生独立完成单项训练和综合训练题目,编写的程序代码能够正常运行并上传到指定的ftp。成绩按下面几个方面评定:上一页下一页返回11.3C语言课程实训
(1)程序是否能正常运行;(2)程序能否完成题目所提出的功能要求;(3)人机界面是否友好;(4)是否在规定时间内独立完成。(5)实训报告是否内容准确,格式规范。
6.课程实训报告要求(1)采用提供的统一封面。(2)正文内容包括:设计题目,算法描述,程序代码(主要代码要加注释),运行记录。(3)实训总结。(4)打印设计报告。上一页下一页返回11.3C语言课程实训
7.实训参考题目
【综合训练】
学生电话簿链表管理程序。程序功能要求:(1)电话簿数据包括姓名和电话号码两项。(2)完成电话簿文件的建立,输出,查询,删除和插入5个功能。(3)设计程序功能菜单。(4)采用模块化程序设计,程序包含1个主模块、5个子模块。(5)注意人机界面的友好设计。
上一页下一页返回11.3C语言课程实训
(3)用户登录程序。提示用户输入用户名和密码,判断是否合法用户(假设合法的用户名是“abc”、密码是123456),如果合法,显示“welcometousethesoftware”,否则要求重新输入,允许输入3次,若3次都错,显示“passworderror!youcannotusesoftware”。(4)有如下12个国家在我国进行某项体育比赛,依规定入场式时除东道主走在最后外,其他国家依国名的英语字母顺序排列,请编写程序完成。(5)编写程序计算两个矩阵的和,各元素的值由随机函数产生。两个矩阵相加是对应元素相加。要求使用函数完成。上一页下一页返回11.3C语言课程实训
(6)评分统计程序。共有8个评委打分,统计时去掉一个最高分和一个最低分,其余6个分数的平均分即是最后得分,得分精确到1位整数、2位小数。(7)某班有40名学生,期终考4门课程。求每个学生的总成绩,并按总成绩高分到低分输出。每个学生情况包括学号、姓名、4门课程成绩、总成绩、名次。输出格式为:上一页下一页返回11.3C语言课程实训(8)编写程序,计算100~1000之间的特殊数。(1)素数(2)回文数(3)完数(4)水仙花数要求:(1)采用模块化程序设计方法。(2)菜单设计格式如下:
=============菜单=============1.素数
2.回文数
3.完数
4.水仙花数
0.退出=================================上一页下一页返回11.3C语言课程实训
(10)现在有教师(姓名、单位、住址、职称)和学生(姓名、班级、住址、入学成绩)的信息。请输入10名教师和学生的原始信息后,按姓名排序,然后按排序后的顺序输出两张信息表。注意输出表的格式。(11)某个公司采用公用电话传递数据,总共10个数据,每个数据是个四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。要求从键盘提供10个原始数据,输出加密后的数据。(12)设某一个班共有40个学生,期末考试5门课程,编制程序评定学生的奖学金。要求输出一、二等奖学金学生的学号和各门课成绩。奖学金评定标准是:总成绩超过全班总平成绩20%发给一等奖学金,超过全班总平成绩10%发给二等奖学金。上一页下一页返回11.3C语言课程实训
(13)设有50个学生档案(学号、姓名、年龄、5门课成绩)。编制程序,读取每个学生的档案数据,然后计算出每个学生的总成绩和平均成绩。最后将所有平均成绩高于总平均成绩的学生档案输出。(14)电话簿中每个人的数据由姓名和电话号码两项组成。设计一个结构体数组来表示电话簿,读取每个人的数据并按姓名排序,然后等待用户输入一个电话号码,如果电话簿中有此号码,则输出相应的用户信息,否则输出此号是空号的信息。(15)同学录管理程序。要求可以实现录入,排序,查询及修改功能。同学录信息包括学号,姓名和联系电话。(16)调用随机函数产生0~29内的随机数:①在数组中存入10个互不重复的整数。②按从小到大的顺序排序并输出。③任意输入一个数,并插入到数组中,使数组仍保持有序,输出插入后的数组。上一页下一页返回11.3C语言课程实训④任意输入一个0到9之间的整数K,删除a[k]后,输出删除后的数组。要求:以上功能均用函数完成,主函数功能为显示以下菜单,并根据选择调用相应的函数。============数组处理程序=============1.产生数组中的值
2.数组排序
3.数组插入操作
4.数组删除操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《FZT 90107.7-1999圆柱形筒管 筒子纱染色用网眼筒管的尺寸、偏差和标记》
- 深度解析(2026)《FZT 60011-2016复合织物剥离强力试验方法》
- 深度解析(2026)《FZT 14059-2025棉与涤纶长丝交织印染布》
- 初中家长学业支持方式对学生学习策略影响研究-基于支持方式记录与策略测评关联数据分析
- 中债金融估值中心中债指数2026年1月统计及分析月报
- 2026年高考物理复习(习题)第七章第1讲 电场力的性质
- 2026年泉州市泉港区社区工作者招聘笔试模拟试题及答案解析
- 2026年河北省廊坊市城管协管招聘笔试备考题库及答案解析
- 2026年云南省普洱市社区工作者招聘笔试模拟试题及答案解析
- 七年级生物下册 第三单元 第二章 人的生活需要空气 第三节 呼吸保健与急救教学设计设计(新版)济南版
- 2025年教学设计试题及答案解析
- 2024国控私募基金笔试真题及答案解析完整版
- 安徽省江南十校2026届高三下学期3月综合素质检测语文试题及答案
- 安全主管竞聘演讲
- 飞利浦录音笔VTR7000使用手册
- 弱电工程招标技术要求
- 2023年成都市新津文旅投资集团有限公司招聘笔试题库及答案解析
- 北京市失能老年人上门健康评估申请表
- 道德与法治(部编版)《我是一张纸》完整版1课件
- 脊柱的解剖学课件
- 抛石挤淤检查记录表
评论
0/150
提交评论