【教学课件】第4章大型综合程序范例解析.ppt

上传人:牧羊曲112 文档编号:5679235 上传时间:2023-08-09 格式:PPT 页数:55 大小:314KB
返回 下载 相关 举报
【教学课件】第4章大型综合程序范例解析.ppt_第1页
第1页 / 共55页
【教学课件】第4章大型综合程序范例解析.ppt_第2页
第2页 / 共55页
【教学课件】第4章大型综合程序范例解析.ppt_第3页
第3页 / 共55页
【教学课件】第4章大型综合程序范例解析.ppt_第4页
第4页 / 共55页
【教学课件】第4章大型综合程序范例解析.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《【教学课件】第4章大型综合程序范例解析.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章大型综合程序范例解析.ppt(55页珍藏版)》请在三一办公上搜索。

1、第4章 大型综合程序范例解析,前言,目的:通过案例解析,领略大型程序的设计思想和开发方法,了解程序评价标准案例:通讯录 简单计算器 俄罗斯方块,第4章 大型综合程序范例解析,通讯录范例解析简易计算器范例解析俄罗斯方块范例解析,第4章 大型综合程序范例解析,通讯录,问题描述:以文件的方式保存用户录入的通讯录数据 供用户查询和使用通讯录信息,第4章 大型综合程序范例解析,通讯录,功能分析:记录项的基本属性:姓名、性别、住址、联系电话、电子邮件 等操作功能:录入:操作添加一条新的记录项 删除:删除一条已经存在的记录项,第4章 大型综合程序范例解析,通讯录,功能分析:修改:改变记录项的一个或多个属性,

2、并用新的记录项覆盖已经存在的记录项 查找:根据用户输入的属性值查找符合条件的记录项。,第4章 大型综合程序范例解析,通讯录,功能分析:通讯录数据以文件形式存储在磁盘上,根据实际需要定义文件的存储格式;在程序运行中需要对文件进行读取操作。程序中还要对输入数据的容错性进行检查,可以保证通讯录数据的合法性。,第4章 大型综合程序范例解析,通讯录,设计:程序总体结构:输入输出模块:人机交互,包括程序界面显示、用户输入响应、结果输出等 管理模块:管理模块从输入输出模块读取用户命令并进行相应的操作,包括录入、删除、修改、查找、列表等 文件操作模块:进行存储文件的读写,第4章 大型综合程序范例解析,通讯录模

3、块结构图,输入输出终端,输入输出模块,管理模块,文件操作模块,存储文件,用户输入,系统输出,文件写入,文件读出,第4章 大型综合程序范例解析,通讯录,界面设计:,第4章 大型综合程序范例解析,通讯录,数据结构设计:struct myrecordunsigned int num;unsigned int group;char nameMAXLEN+1;char gender;date birthday;char addressMAXLEN+1;char phoneMAXLEN+1;char emailMAXLEN+1;,第4章 大型综合程序范例解析,通讯录,数据结构设计:struct mydat

4、eunsigned int year;unsigned int month;unsigned int day;typedef struct mydate date;,第4章 大型综合程序范例解析,通讯录,数据结构设计:三个查询关键字:记录编号、组别和联系人姓名 union mysearch_entryunsigned int num;unsigned int group;char nameMAXLEN+1;typedef union mysearch_entry search_entry;,第4章 大型综合程序范例解析,通讯录-函数设计,menu.c输入输出文件,第4章 大型综合程序范例解析,

5、通讯录-函数设计,file.c文件处理文件,第4章 大型综合程序范例解析,通讯录-函数设计,control.c控制文件,第4章 大型综合程序范例解析,通讯录-程序运行示意图,第4章 大型综合程序范例解析,通讯录,源程序:略,第4章 大型综合程序范例解析,通讯录范例解析简易计算器范例解析俄罗斯方块范例解析,第4章 大型综合程序范例解析,简单计算器,问题描述:Windows操作系统提供了计算器应用程序,它有标准型和科学型两种模式,是标准的Windows图形界面应用程序,支持鼠标和键盘操作。,Windows提供的计算器,第4章 大型综合程序范例解析,简单计算器,功能分析:简单计算器是对Windows

6、计算器的模拟,设计其功能如下:具有加(+)、减(-)、乘(*)、除(/)四则运算和求百分运算;通过鼠标输入一个数,单击S按钮还可计算该数的平方根,第4章 大型综合程序范例解析,简单计算器,设计:简单计算器的处理过程:首先进行图形和鼠标初始化,接着显示简单计算器外观,并接受用户的鼠标控制使用。如果单击了鼠标右键,则程序关闭图形方式并结束运行。,第4章 大型综合程序范例解析,简单计算器,简单计算器的流程图,主程序流程:void main()GraphInit();initmouse();picture();compute();closegraph();,第4章 大型综合程序范例解析,简单计算器,界

7、面外观:,第4章 大型综合程序范例解析,简单计算器,界面设计:(1)背景采用浅蓝色,用灰色作底色和红色作前景色画一个bar3d图形,模拟立体效果;(2)第1行是数据输入和结果输出的信息显示框,使用bar函数,用黄色填充;(3)信息显示框下面是4排按钮,每排5个,同样使用bar函数。按钮被设计成有按下和弹起两种状态,初始是弹起状态;(4)在每个按钮框上显示相应的按钮标签;(5)在简单计算器下方输出使用说明和设计单位信息。,第4章 大型综合程序范例解析,简单计算器,数据结构设计:简单计算器没有用到复杂的数据结构,计算时定义了两个double变量u、v和一个字符数组s及几个标志变量。开始使用时u和v

8、变量分别存储第1次和第2次输入的数据,计算结果始终保存在u中。继续运算时,输入的数据存于v,并与u中的数据运算后结果保存于u中。,第4章 大型综合程序范例解析,简单计算器,数据结构设计:简单计算器进行加减乘除运算的函数compute()中,定义以下主要标志变量:(1)sign:表示+、-、*、/等运算符的整数变量。值为0表示当前未单击过运算符。(2)flag:输入数据时是否单击了小数点。单击了小数点,flag为1,否则为0。,第4章 大型综合程序范例解析,简单计算器,函数设计:简单计算器采用了结构化程序设计思想,由一个.h文件和四个.c文件组成,并构造了TC工程文件来管理和生成简单计算器应用。

9、每个源文件包含多个函数的设计,这些函数的功能设计及处理描述见下表。,第4章 大型综合程序范例解析,简单计算器-函数设计,第4章 大型综合程序范例解析,简单计算器-函数设计,第4章 大型综合程序范例解析,简单计算器-函数设计,简单计算器-函数设计,第4章 大型综合程序范例解析,简单计算器-函数设计,第4章 大型综合程序范例解析,简单计算器-函数设计,第4章 大型综合程序范例解析,第4章 大型综合程序范例解析,简单计算器,源程序:略,第4章 大型综合程序范例解析,简单计算器,测试:关于测试方法和特殊输入的测试,针对简单计算器程序,我们可以从以下几个方面来检验程序功能是否正确。1界面及按钮单击测试

10、检查界面布局是否合理、正确,单击按钮是否有按下再弹起效果,单击按钮的输入是否正确。,简单计算器,第4章 大型综合程序范例解析,测试:简单计算器的功能测试(1)加、减、乘、除四则运算的测试。(2)优先级处理的测试 单击1、+、2、*、4、=按钮,结果是12,即不支持四则运算的优先级。因为单击*按钮时,1+2的结果3已经计算并显示在信息显示框中,此时继续计算乘4得结果12。,简单计算器,第4章 大型综合程序范例解析,测试:(3)求平方根运算的测试 1)计算sqrt(9)先单击9、再S按钮,看结果是否正确。2)计算1+sqrt(9)检查是否能正确1+sqrt(9)。通过以上测试可以基本确定计算器程序

11、是否实现了预定的功能。,第4章 大型综合程序范例解析,通讯录范例解析简易计算器范例解析俄罗斯方块范例解析,第4章 大型综合程序范例解析,俄罗斯方块,问题描述:要求支持键盘操作和7种不同类型方块的旋转变换,并且界面上显示下一个方块的提示以及当前的玩家得分,第4章 大型综合程序范例解析,俄罗斯方块,功能分析:俄罗斯方块游戏需要解决的问题包括:(1)整个游戏界面的图形显示;(2)各种方块形状的表示;(3)如何控制方块的移动、旋转和下落速度;(4)如何判断方块是否到底;(5)如何判断一行是否填满以及如何消去填满的行;(6)如何判断游戏的结束及如何终止游戏;(7)游戏难度的设计和得分规则,第4章 大型综

12、合程序范例解析,俄罗斯方块,功能分析:重点:游戏面板的数据结构:二维数组 7种形状方块的数据结构:结构体保存每种形状方块的坐标、颜色,第4章 大型综合程序范例解析,俄罗斯方块,设计:程序总体结构:void main()InitializeGraph();SetTimer(newtimer);/*设置新的时钟中断*/while(1)StartGame();ProcessInGame();if(bOver)break;KillTimer();closegraph();,第4章 大型综合程序范例解析,俄罗斯方块,界面设计:分为左右两个部分:左边为游戏面板右边有三个框:下一形状提示框、速度框和记分框,

13、第4章 大型综合程序范例解析,俄罗斯方块,数据结构设计:定义如下的结构体来表示每一个形状:struct block int arrXY8;int nColor;int nNext;可用4*4的格子显示7种形状,并用4个数对来表示:arrXY 0、arrXY 1表示第一个数对,arrXY 2、arrXY 3表示第二个数对。例如,(-2,0)、(-1,0)、(0,0)、(1,0)表示左边的方块,-1 0 1 2-3-2-10,第4章 大型综合程序范例解析,俄罗斯方块,数据结构设计:每一种形状都可以进行旋转,旋转后的变形体同样可用结构体block表示。所有的7种形状和它们的旋转体(共19个)可保存在

14、一个全局数组arrayBlock中。Block中的nNext就是当前形状逆时针旋转后的下一个形状在该全局数组中的索引。,第4章 大型综合程序范例解析,俄罗斯方块,数据结构设计:第一个形状和它的旋转体在arrayBlock中的表示 BLOCK arrayBlock19=/*x1,y1,x2,y2,x3,y3,x4,y4,color,next,第一种形状*/0,-2,0,-1,0,0,1,0,CYAN,1,/*第一种形状,对应图3-12的第一个*/-1,0,0,0,1,-1,1,0,CYAN,2,/*一种旋转体,对应图3-12的第二个*/0,-2,1,-2,1,-1,1,0,CYAN,3,/*另一

15、种旋转体,对应图3-12的第三个*/-1,-1,-1,0,0,-1,1,-1,CYAN,0,/*第三种旋转体,对应图3-12的第四个*/.,第4章 大型综合程序范例解析,俄罗斯方块,数据结构设计:游戏的主界面:宽10、高20的游戏板数据结构:全局数组Gameboard1222,1表示已有方块,0表示这个位置空着。在10*20基础上各加2行、2列为了便于判断形状在移动时是否到边、到底。整个屏幕的坐标系原先为640*480。在此游戏中,将16个像素定义为一个方格的边长,所以坐标系转变成为了40*30(640/16=40,480/16=30)。,第4章 大型综合程序范例解析,俄罗斯方块,数据结构设计

16、:绝对坐标和相对坐标的转换 相对坐标即指在结构体block中的4对坐标 某个形状的绝对坐标:指原点方块(4*4格子中的第2列、第4行的方块)在10*20的游戏面板中的坐标,第4章 大型综合程序范例解析,俄罗斯方块-程序结构 1个.h文件和4个.c文件,共20个函数;函数相互关系见右图,第4章 大型综合程序范例解析,俄罗斯方块-函数设计,Timer.c文件,第4章 大型综合程序范例解析,俄罗斯方块-函数设计,Drawing.c文件,第4章 大型综合程序范例解析,俄罗斯方块-函数设计,Util.c文件,第4章 大型综合程序范例解析,俄罗斯方块-函数设计,Russia.c文件,第4章 大型综合程序范

17、例解析,俄罗斯方块重要函数算法分析,IsConfilict(int,int,int):判断索引号为ShapeIndex的形状在坐标(x,y)是否与游戏板当前状态发生冲突:int IsConflict(int BlockIndex,int x,int y)int i;/*对组成索引号为ShapeIndex的形状的四个方块依次判断*/for(i=0;i10)return TRUE;/*如果四个方块中某个方块的y坐标小于1,表示整个形状还没有完全落入游戏板中。此时,没有必要对这个方块进行判断。*/if(arrayBlockBlockIndex.arrXYi+1+y1)continue;/*如果四个方块中有任何一个方块与游戏板当前状态发生冲突,则整个形状在(x,y)处与游戏板当前状态冲突*/if(GameboardarrayBlockBlockIndex.arrXYi+xarrayBlockBlockIndex.arrXYi+1+y)return TRUE;/*四个方块中没有任何一个方块与游戏板当前状态发生冲突,则整个形状在(x,y)处没有与游戏板当前状态冲突*/return FALSE;,第4章 大型综合程序范例解析,俄罗斯方块,源程序:略,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号