第10章 综合应用程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图10-7 游戏方块预览
17
10.2.3
系统总体设计
⑶ 显示更新模块:清除游戏方块的过程是先画轮廓再填 充的方式,使用背景色填充小方块,然后使用前景色画一个 游戏底板中的小方块。
⑷ 分数更新模块:当判断出一行满时,score变量加一固 定值(如10),可以把等级level看作是速度speed 4、数据结构设计 ⑴ 游戏底板BOARD结构体 ⑵ 游戏方块SHAPE结构体 ⑶ SHAPE结构数组
1
问题 原由
教学 重点
能力 要求
本章教学内容
§10.1 电子万年历
§10.2 俄罗斯方块游戏
§10.3 图书借阅管理系统
§10.4 学生成绩管理系统
2
§10.1 电子万年历
10.1.1 系统设计目标
电子万年历在计算机系统中、手机里、电子词典中、MP4 播放器中、办公桌上,甚至家庭摆设等随处可见。 1、系统设计的教学目标 掌握C语言程序设计的基本知识、基本思想和基本应用, 熟悉了解开发应用系统的基本方法。 2、系统开发的知识要点 ① 标准输入/输出函数的应用; ② 顺序结构、选择结构、循环结构的程序设计方法; ③ 系统库函数的应用方法; ④ 用户自定义函数的定义、声明及调用方法等。 ⑤ 按功能模块进行设计、组织、调试的基本方法。
19
§10.3 图书借阅管理系统
10.3.1 系统设计目标
1、系统设计的教学目标 设计一个图书借阅管理系统,需要使用函数、数组、指针、 结构体、链表和文件等,基本上涵盖了C语言程序设计的所有 基础阶段的知识。 2、系统开发的知识要点
① 函数的定义与调用;
② 指针变量做为函数参数; ③ 结构体数组的应用;
⑶ int currentMonth:表示当前的月份。
⑷ int currentDay:表示当前的日期。 ⑸ int n_currentMon:表示当前月的天数。
⑹ int n_lastMon:表示上一个月的天数。
8
10.1.4 系统功能实现
电子万年历系统设计项目的实现分为项目建立、项目需 求分析、项目算法设计、代码编写与调试、代码测试、代码 完善等多个环节。
第10章 综合应用程序设计
从第1~9章介绍了C/C++程序设计的基本内容。 怎样从软件工程的角度进行综合应用程序设计呢? 本章力图通过综合应用程序设计实例,全面了解和 掌握开发应用程序的全过程。 本章通过四个实例项目(电子万年历、俄罗斯方块 游戏、图书借阅管理系统、学生成绩管理系统)的 程序设计,全面概括了C语言的所有内容以及C++ 语言的初步应用, 掌握: 应用程序的基本设计方法的开发步骤。 了解:通过应用成绩设计,了解软件工程概念。 熟悉: 编写程序代码、程序调试和程序测试方法。
2、功能要求
一个功能比较完善、具有实用价值的图书借阅管理系统, 从业务流程来讲,要求能实现用户的注册、注销、查找、浏 览、借书、还书,图书的注册、注销、查找、浏览、外借和 归还等。因此,应具有以下6项基本功能。 ⑴ 用户登录:系统用户分为管理员和学生。
21
10.3.2
系统需求分析
⑵ 图书信息管理:包括;书号、书名、作者、图书分 类、出版社、出版时间、单价、总量和库存量。 ⑶ 学生信息管理。包括:输入学生信息、保存学生信 息、修改学生信息、添加学生信息、删除和输出学生信息。 ⑷ 图书查询功能:图书查询分为:按书名查询、按作 者查询、按图书分类查询、按出版社查询和按出版时间查询。 ⑸ 借书功能:借书时,先判断学生是否有空闲的借书 卡,若有空闲的借书卡,则要求学生输入所借图书的书号。 ⑹ 还书功能:还书时,先检查学生的借书卡,然后要 求学生输入所还图书的书号,将对应借书卡上的记录清零, 并修改该书的库存量。
④ 字符串函数的应用;
⑤ 文件的打开、关闭及读/写操作等。
20
10.3.2
1、基本需求
系统Leabharlann Baidu求分析
图书借阅管理系统中的实体主要有图书和用户。对一般 用户来说,主要功能有查找图书、浏览图书、借书、还书等; 对管理员来说,除了一般用户的权限外,还具备有管理功能, 即注册图书、注册用户、注销图书、注销用户等维护管理功 能。
并能突出显示当期日期。
⑵ 日期查询功能:显示查询日期、月份、是否为闰年。 ⑶ 支持键盘操作:通过键盘调整年份、月份和日期。
⑷ 参数排错功能:能对输入的日期进行合法性检查。
4
10.1.3
1、系统结构设计
系统总体设计
根据以上需求分析,系统应有功能控制、打印输出、日历 显示和键值获取等4个功能模块,系统结构如图10-1所示。
10
10.1.4
系统功能实现
⑶ 易阅读:当结构嵌套时,内层结构采用缩进形式, 以明确结构的界限。 ⑷ 易理解:尽量采用容易理解的表达式。 ⑸ 易排错:编码最基本的要求是语法和逻辑的正确。 4、调试程序 ⑴ 异常处理:通过输入错误数据格式验证工程代码对 异常输入的处理能力。 ⑶ 平年2月验证:输入2011-2能验证千年2月的打印输出。 ⑷ 闰年其它月份验证:输入闰年的其它月份如2012-11 可以验证输出结果。 ⑸ 平年其它月份验证:输入平年其它月份如2011-11可 以验证输出结果。
万年历系统
功 能 控 制 模 块
打 印 输 出 模 块
日 历 显 示 模 块
键 值 获 取 模 块
图 10-1 系统功能模块
5
10.1.3
2、主控函数main() 本系统的结构由4个模 块所组成,由主函数main() 实行控制,按照系统工作 顺序,其工作流程如图10 -2所示。 主控函数主要对输入 参数进行检查,以保证输 入参数正确,不会对后续 程序造成影响;其次,对 输入的年份和月份进行处 理和计算,判断输入年份 是否为闰年。
9
10.1.4
系统功能实现
⑵ 闰年判断:判断year为闰年还是平年,为后续程序设 计作判断。仿照算法设计中的公式,写出闰年判断函数 leapyear()。 ⑶ 计算是星期几:根据dayNum()函数返回的结果,计 算month中的星期值。 ⑷ 计算是第几天:根据输入的month值,计算month第 一天在该年中是第多少天。 3. 程序编码的基本原则 ⑴ 易修改:为了便于日后修改,每个函数应在入口处 加入较详细的注释。 ⑵ 易记忆:给变量命名时,名字中尽可能多地包含必 要的信息。
11
§10.2 俄罗斯方块游戏
10.2.1 系统设计目标
1、系统设计的教学目标 本项目旨在训练学生的基本编程能力和游戏开发技巧, 熟悉C语言图形模式下的编程。本项目中涉及C语言的结构 体、数组、时钟中断及绘图等方面的知识。 2、系统开发的知识要点 这里介绍开发俄罗斯方块游戏的实现方法,用C语言编 程实现俄罗斯方块游戏涉及的主要知识点有以下几个方面: 结构体、数组、时钟中断及绘图等方面的知识。 ① 应用结构体类型编程; ② 应用数组编程; ③ 时钟中断系统的应用方法; ④ C语言的绘图知识等;
13
10.2.2
系统需求分析
⑶ 画面显示更新:当游戏方块左右移动、下落、旋转时, 要清除先前的游戏方块。
⑷ 具有成绩记录:在游戏过程中自动计算游戏分数,以激 励游戏者具有技能性的操作。 ⑸ 游戏帮助功能:游戏者进入游戏后,系统具有随时跟踪 本游戏如何操作的友情提示。
14
10.2.3
1、系统结构设计助
7
10.1.3
4. 数据结构设计
系统总体设计
本程序没有自定义结构体,仅定义了全局变量。 ⑴ struct date sysTime:系统结构体,用于存储系统 日期。该结构体有3个成员,分别是da_year、da_mon和 da_day,分别表示年、月和日。 ⑵ int currentYear:表示当前的年份。
3
10.1.2
1、基本需求
系统需求分析
电子万年历用来提供查询,主要实现以下三个查询功能: 功能1:要求从键盘输入年份,输出该年12个月的日历。 功能2:要求从键盘输入年份和月份,输出该月的日历。
功能3:要求从键盘输入年、月、日, 输出该日是星期几。 2、功能要求
⑴ 日历显示功能:自动显示系统日期所在月份的月历,
16
10.2.3
系统总体设计
2. 主控函数main( ) 主控函数main( )实现对整个程序的运行控流程制以及相关 功能模块的调用。 3. 功能模块设计 整个游戏的操作是通过以下5个功能模块来实现的。 ⑴ 方块预览模块:游戏方块将在如图10-7所示的4×4的 正方形小方块中预览。 ⑵ 方块控制模块:这是该游戏开发的重点和难点部分。 ① 左移的实现过程。 □□□□ ② 右移的实现过程 □■□□ □■□□ ③ 下移的实现过程 □■■□ ④ 旋转的实现过程
18
10.2.4
1、函数功能描述
系统功能实现
在进行本项目的程序设计时,建议按教材367页表10-2 定义模块中的函数,然后进行调试。
2、模块化编程
俄罗斯方块程序按模块化编程,分为4个功能模块 。
⑴ 主函数main():实现对整个程序的运行控制。 ⑵ 时钟中断处理:速度越快,时间中断的间隔也就越短。 ⑶ 成绩、速度及帮助的显示:为了帮助游戏者操作,必 须提供帮助,为了鼓励游戏者,必须显示游戏成绩与速度。 ⑷ 满行处理:当游戏方块不能满足相关操作条件时,可 以调用以下函数来处理。
系统总体设计
根据以上需求分析,系统应有游戏方块预览功能、控制 功能、显示更新功能、速度更新功能、帮助功能等,其模块 结构如图10-5所示:
俄罗斯方块游戏
方 块 预 览 模 块
方 块 控 制 模 块
显 示 更 新 模 块
分 数 更 新 模 块
帮 助 功 能 模 块
图 10-5 俄罗斯方块游戏功能描述图
22
10.3.3
1、系统结构设计
系统总体设计
根据上述需求分析,图书借阅管理系统应具有用户登录 管理模块、图书信息管理模块、学生信息管理模块、图书查 询管理模块、图书借阅管理模块,其结构如图10-9所示。 ⑴ 用户登录管理模块:用于实现管理员和学生登录管理。 ⑵ 图书信息管理模块:用于实现图书信息的输入、保存、 修改、添加、删除、输出等。 ⑶ 学生信息管理模块:用于实现学生信息的输入、保存、 修改、添加、删除、输出等。
1、函数功能描述
在进行本项目的程序设计时,建议按教材358页表10-1定义 模块中的函数,然后进行调试。
2、模快化编程
根据模块结构,按模块进行编程,并在每个程序代码前 写上模块显示结构。
⑴ 参数输入与验证:对输入参数作验证,若输入参数 不合法,则重新输入,允许输入3次,若3次均不正确,则结 束程序 。
12
10.2.2
1、基本需求
系统需求分析
游戏本身是一种娱乐,因此,必须使游戏者在游戏过程 中感到有趣。与此同时,通过这种“娱乐”,应能对游戏者 在智能、创造性等方面具有一定的启迪、激发、引导作用。 2、功能要求 要使游戏者感到该游戏格外有趣,在游戏操作过程中, 游戏系统应具有以下功能和特点: ⑴ 游戏操作引导:在游戏过程中,在当前游戏画面中, 出现下一个游戏方块,这样有利于游戏者控制游戏的策略。 ⑵ 方便任意操作:能实现对游戏方块的左、右、下、 上的快速移动、下落和旋转。
系统总体设计
开 始 输入year、month、day 输入合法吗?
是否为闰年
显示当月第 1天是星期几 显示当日日期 结 图 10-2
6

万年历设计流程图
10.1.3
3、功能模块设计
系统总体设计
⑴ 功能控制模块:用来实现日期合法性检查、闰年判断和 星期计算。 ⑵ 打印输出模块:用来实现输出显示和打印指定个数的空 格、打印分隔线、打印用户使用手册、打印当前日期你对应的 星期以及打印给定的星期。 ⑶ 日历显示模块:用来实现日历生成和显示。 ⑷ 键值获取模块:主要用于对键盘操作的响应,由函数 void getKey Value()获取按键值,根据键值调整当前日期,并调 用日历显示模块中的showCalendar()函数来实现日历生成和输 出,其实现过程如图10-4所示。
15
10.2.3
系统总体设计
⑴ 方块预览模块:在游戏过程中,当在游戏底板中出现 一个游戏方块时,必须在游戏方块预览区域中出现下一个游戏 方块,这样有利于游戏玩家控制游戏的策略。 ⑵ 方块控制模块:通过各种条件的判断,实现对游戏方 块的左移、右移、快速下移、自由下落、旋转功能以及行满 消除行的功能。 ⑶ 显示更新模块:当游戏方块左右移动、下落、旋转时, 要清除先前的游戏方块,用新坐标重绘游戏方块。当消除满行 时,要重绘游戏底板的当前状态。 ⑷ 速度更新模块:在游戏者进行游戏过程中,需要按照 一定的游戏规则给游戏者计算游戏分数。 ⑸ 帮助功能模块:游戏者进入游戏后,将有对本游戏如 何操作的温馨提示。
相关文档
最新文档