《C语言程序开发实例.ppt》由会员分享,可在线阅读,更多相关《C语言程序开发实例.ppt(12页珍藏版)》请在三一办公上搜索。
1、第12章 C语言程序开发实例,本章要点:应用程序设计步骤C语言综合实例的开发,学习方法建议:通过C语言综合实例的开发,掌握C语言应用程序开发的一般步骤,重点掌握结构化程序设计的思想。,进行应用程序设计时一般遵循以下步骤:1可行性研究在应用程序开发之前,要对需要解决的问题进行定义,对问题的性质、目标和规模进行确切的了解。同时要研究这个问题是否值得解决,也就是对要开发的系统进行可行性研究,可行性研究的目的就是用最小的代价在尽可能短的时间内,确定问题是否能够解决,从而确定问题是否值得解决。2需求分析需求分析是指在可行性研究基础上进行更细致的分析工作,需求分析过程实际上是一个调查研究、分析综合的过程,
2、是一个抽象思维的过程。需求分析阶段务必详细、具体地理解用户要解决的问题,明确系统必须做什么,系统必须具备哪些功能,把来自用户的这些信息加以分析提炼,最后从功能和性能上加以描述。还要通过分析实际问题,了解已知或需要的输入数据、输出数据,需要进行的处理。,12.1 应用程序设计步骤,3.系统设计系统设计是把软件需求变换成为软件的具体方案,可分为总体设计和详细设计。总体设计通常用结构图描绘程序的结构,以确定程序由哪些模块组成以及模块间的关系,即解决怎样做的问题。详细设计就是给出问题求解的具体步骤。这个阶段主要是对模块过程的说明,这种说明可以使用图形、表格、公式或文字来描述。不管使用哪种表达方式,都应
3、当给编码人员提供足够准确的信息,尽量避免歧义性,根据它可以很快地写出源程序。4软件编码软件开发的最终目标是把软件设计结果翻译成计算机能够理解和执行的形式,也就是选择适当的程序设计语言,把详细设计的结果描述出来,即形成源程序。,5软件测试可以选择若干具有代表性的输入数据,其中包括合理的数据(包括边界值)和不合理的数据,进行测试,尽量使程序中的每个语句和每个分支都被检查到,以期待发现程序中的错误的漏洞,然后针对出现的问题,对算法和程序进行修改。6文档编制开发者编制程序文档的主要目的是为了让别人了解自己编写的算法和程序。文档包括源程序代码、算法(程序)的流程图、开发过程中各阶段的有关记录、算法(程序
4、)的正确性证明、程序的测试结果、对输入/输出的要求及格式的详细描述等。,12.2.1 学生成绩管理系统1案例描述开发一个学生成绩管理系统,用于对班级的学生成绩进行处理。学生的基本信息包括学号、姓名、三门课的成绩和平均分。2设计分析本系统是一个学生综合管理系统,能够完成对学生成绩的综合管理,本系统具备如下的基本功能:输入学生基本信息、追加、修改、删除、查找、浏览学生和排序等功能。,12.2 应用程序设计实例,本系统由9个模块组成,结构图如图12-1所示。,3设计方案(1)定义数据结构由于学生的基本数据信息包括学号、姓名、3门课成绩和平均分,所以决定采用结构体类型来描述,具体定义如下:struct
5、 student char num6;/*学号*/char name8;/*姓名*/int score3;/*3门课成绩*/float avr;/*平均分*/,(2)主界面设计。为了程序界面清晰,主界面采用菜单设计,便于用户选择执行,如图12-2所示。,(3)输入数据模块(函数名为creat)。本模块功能是从键盘输入N个学生数据(包括学号、姓名、3门课成绩)并存放到磁盘文件“stud”中,“stud”为二进制数据文件,用函数fread()和fwrite()完成读写操作。(4)追加数据模块(函数名为add)。通过该模块可以随时添加多个学生的信息。(5)修改学生信息模块(函数名为modify)。当
6、输入数据出现错误时,可以使用修改学生信息模块进行修改,可以对每个学生的学号、姓名、成绩进行修改。(6)删除学生信息(函数名为del)。用来删除某个学生的信息。(7)浏览学生信息模块(函数名为show)。当每次进行一项操作后,可以通过调用该模块来查看操作情况,也可以单独浏览学生基本信息。(8)查找学生信息模块(函数名为search)。本模块可以通过姓名查找某个学生的基本信息。(9)排序模块(函数名为sort)。可按照学生的平均分进行降序排序。4实现程序 略,12.2.2 单位员工通讯录管理系统1案例描述为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号。其功能包括通
7、讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录链表的输出。2设计分析在本设计中,整个通讯录可以采用顺序表或链表方式存储。采用前者,可以提高查询速度;采用后者,可以提高插入与删除记录的效率。在本系统中对查询速度要求不高,所以采用链表存储结构。数据结点类型采用单链表来实现的。,3设计方案(1)存储结构类型定义/*员工通讯信息的结构类型定义*/typedef struct char num5;/*员工编号*/char name8;/*员工姓名*/char phone9;/*办公室电话号码*/char call12;/*手机号码*/DataType;/*通讯录单链表的结点类型*/
8、typedef struct node DataType data;/*结点的数据域*/struct node*next;/*结点的指针域*/ListNode,*LinkList;,(2)主要功能函数设计建立通讯录链表采用手工输入的方法,逐个输入每个员工的信息,每输入一个自动创建一个结点,并插入链表中,直到所有的员工信息输入完毕,通讯录链表也就建立好了。查询功能:可以按照编号或姓名在链表中顺序查找出对应的记录。插入新的记录:将新记录结点插入到头结点之后,成为链表中的第一个记录结点。也可将新记录插入在记录链表的尾部,成为最后一条记录(读者自己编写实现算法)。删除记录:可以按照编号或姓名在链表中顺序查找出对应的记录,然后将其删除。本函数调用查询函数。查看全部记录:从第一个结点到最后一个结点依次输出所有记录。4实现程序略,