工学实践教材第四章

上传人:dus****log 文档编号:66116671 上传时间:2022-03-26 格式:DOC 页数:12 大小:137KB
收藏 版权申诉 举报 下载
工学实践教材第四章_第1页
第1页 / 共12页
工学实践教材第四章_第2页
第2页 / 共12页
工学实践教材第四章_第3页
第3页 / 共12页
资源描述:

《工学实践教材第四章》由会员分享,可在线阅读,更多相关《工学实践教材第四章(12页珍藏版)》请在装配图网上搜索。

1、C+程序设计实践教材第四章 课程设计-面向对象实用系统分析与设计实践教材第一章介绍了面向对象的软件工程方法,软件设计应遵循分层抽象、逐步细化的原则,软件开发过程包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)、面向对象的维护(OOM)五个阶段。教材从第五到九章的最后一节是利用面向对象系统分析与设计方法进行程序设计的示例,并由简单到复杂地应用了类、数组、类模板、继承与派生、虚函数与多态性以及用流类进行输入输出等内容。本章作为课程所学内容的实践,要求采用面向对象系统分析与设计方法,首先对问题进行需求分析,识别类与对象,设计合理的类结构与程序

2、结构实现程序功能(恰当应用教材所介绍的各种数据结构和算法),用C+语言编写程序;然后设计各种可能的数据(测试对象)对程序进行测试,观察运行结果是否正确,确保在可见范围内的测试对象都能得到正确结果。下面的课程设计题目分管理系统(题目一题目十)和计算、图形与多媒体系统(其余)两大类,管理系统要求尽量用MFC应用程序实现,其余题一定用MFC应用。使用文档/视图结构,用文档类存储数据,用序列化方法保存文档;使用统一的Windows图形用户界面,对话框中用合适的控件,如按钮、编辑框、组合框、列表框、单选钮、复选钮等。采用控制台应用程序形式时,设计合理的程序完成题目要求的功能,输入输出信息时注意输入输出的

3、格式,应该在输入前提示输入的格式和内容;将程序的各项信息保存到文件并能打开,可为各类重载提取和插入运算符,用C+的输入输出流实现。每个同学可以在管理系统题和其余类型中各选作一题。题目一: 银行定期储蓄管理系统要求 该系统存贮以下信息:1每笔存款的储户信息和办理该笔存款的营业员信息,这些信息存放于存款文件中。其中,储户信息包括:帐号,姓名,密码,地址,储种(定期1年、3年、5年),本金,收储日期,是否已挂失和挂失日期,营业员信息包括:接待该储户的营业员的姓名与工号。2每笔取款的储户信息和办理该笔取款的营业员信息,这些信息存放于取款文件中。 系统功能要求如下; 1创建存款文件(第一次输入储户信息时

4、); 2创建取款文件(第一次办理取款时); 3接收储蓄。接收储户与营业员信息并将以上信息添加到存款文件中; 4处理挂失。根据储户提供的帐号、姓名、密码、地址、储种,储金核查有无此项存款,有则对此帐号加入挂失标记,若无此项存款,则需判断是否领走还是未发生过这笔存款。 5办理取款:(1)根据储户提供的存款单(上面有帐号、姓名、储种、本金、日期)判断是否到期,检查有否挂失,根据储户提供的密码判断是否正确。若以上判断通过,执行以下三步。(2)在取款文件中添加这笔取款的储户和营业员的所有信息和取款日期,以便复查。(3)打印利息单,其内容包括:帐号、姓名、储种、起息日期,支取日期、本金、利息和支取金额。利

5、息计算方法如下:1年到期利率1.98;3年到期利率2.25:5年到期利率.5,每逾期一天,每天利率005;若未到期提前支取,按每天利率005计,利息税按20%扣除。(4)在存款文件中对这笔存款删除。6统计今后3天每天到期的储金数,以便备款。提示 1.MFC应用:创建一个存款信息类,包含储户信息和营业员信息,派生自CObject类,并实现序列化操作;创建取款信息类,包含必要信息,也应是可序列化的类;在文档类中添加存储存款信息类和取款信息类的链表或数组(用MFC的集合类),在文档类Serialize函数中实现序列化;存款取款都通过菜单或工具栏按钮打开对话框,在对话框中输入信息;每发生一次存款,向存

6、款链表中添加一个对象,每发生一次取款,从存款链表中删除一个对象,向取款链表中添加一个对象。2.控制台应用:创建一个存款信息类和取款信息类;定义存款信息类和取款信息类的链表或数组,每发生存款或取款,添加或删除相应对象。设计指导:可不按上面的要求作,难度上可适当降低(可不建营业员信息类)。1) 建立储户信息类,加入表示储户信息的帐号,姓名,密码,地址,储种(定期1年、3年、5年),本金,收储日期,是否已挂失和挂失日期的成员变量;2) 建立每笔存取款的信息类,加入表示存取款的金额、营业员工号,日期、存取类别(如用TRUE表示存款、用FALSE表示取款)的成员变量;3) 在文档类中加入关于储户信息类的

7、集合类,管理所有储户信息;4) 在储户信息类中加入关于每笔存取款的信息类的集合类,管理该储户的所有存取款信息。题目二: 汽车客运公司售票系统要求 设某客运公司每日向10个城市发一个直达班车(中途不停留下客)。每天都发售今、明、后三天的车票。该系统在磁盘上存贮以下信息:1. 今、明、后三天每个班次的基本信息,包括:每个班次的班次号、发车时间、终点城市,座位数量;2今、明、后三天每个班次的旅客登记表,表项有:姓名、身份证号、座号。 系统功能要求如下: 1创建存贮一天(开始时创建今、明、后三天的,以后每天创建后天的)每个班次的基本信息的存贮系统; 2创建每个班次的旅客登记表(每次售该班次的客票时创建

8、);3办理售票,即在旅客登记表中添加旅客信息(座位号不能重);4办理退票,即在旅客登记表中删除旅客信息; 5. 可查询当前指定班次的余票数和座位号;6输出指定班次的旅客登记表(发车前交驾驶员用)。提示 1.MFC应用:创建一个班次信息类,包含每个班次的班次号、发车时间、终点城市,座位数量、已售数量,应派生自CObject类,并实现序列化操作;在文档类中添加存储班次类的链表或数组(可用MFC的集合类或直接定义班次数组),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中创建班次信息、售票、退票,并更新文档数据;每当班次信息发生变化(有新班次增加或售票或退票),输出一次当前

9、班次信息(用多个对话框);实现班次查询功能,视图类显示查询结果;班次信息可保存到文件并可读出。 2.控制台应用:创建班次信息类,类似提示1;定义存储班次信息的链表或数组,每当有新班次增加或售票或退票情况发生,添加或删除相应对象。设计指导:可不按上面的要求作,难度上可适当降低。1) 建立班次类,加入表示班次的班次号、发车时间、终点城市,座位数量的成员变量;2) 建立座位类,加入表示座位的顾客姓名、身份证号、座号的成员变量;3) 在文档类中加入关于班次类的集合类,管理所有班次信息;4) 在班次类中加入关于每个座位的集合类,管理所有座位信息。题目三:西文图书室管理系统 该系统存贮以下信息:1、对于同

10、一作者同一书名的书,存贮书名、书目编号、作者名、库存册数(不包括已借出的)、已借出册数。2、对于每一本书还要存贮一个登录号(这是区别每一本书的唯一标志)、当前借阅该书的读者姓名与借书证号、借阅日期。 系统功能要求如下: 1创建存贮系统; 2增加新书; 3删去无使用价值的旧书; 4处理借书。要求读者提供书目号与登录号一位读者限借2册。(应检查库中有无读者要求借阅的图书,检查该读者已借阅图书数量); 5处理还书;6查询某登录号的书是谁借了。提示 1.MFC应用:创建书信息类,包括书名、书目编号、作者名、登录号(这是区别每一本书的唯一标志)、当前借阅该书的读者姓名与借书证号、借阅日期,还定义两个静态

11、数据成员库存册数(不包括已借出的)、已借出册数,用于记录同一作者同一书名的书的借阅情况,应派生自CObject类,并实现序列化操作;在文档类中添加表示库存书和已借出书的链表或数组(可用MFC的集合类),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中实现增加新书、借书、还书和查询功能并及时更新文档(用多个对话框);视图类显示查询结果;库存书和已借出书的信息可保存到文件并可读出。 2.控制台应用:创建书信息类,类似提示1;定义存储库存书和借出书信息的链表或数组,每当借阅情况发生变化,添加或删除相应对象。设计指导: 1) 建立书籍类,加入表示该书的书名、作者名的成员变量;

12、2) 建立一本书的登录类,加入表示登录号、借出标志、读者姓名与借书证号、借阅日期的成员变量;3) 在文档类中加入关于书籍类的集合类,管理所有(同一作者同一书名)书籍信息;4) 在书籍类中加入关于每本书登录类的集合类,管理该书籍所有登录书的信息。通过集合类(登录类的借出标志)计算库存册数和已借出册数。题目四:职工信息管理系统 该系统在磁盘上存贮某单位所有职工的基本信息,对于每一个职工存贮:职工编号、姓名、性别、出生年月、职称、最后学历,工资和婚否。 系统功能要求如下: 1创建存贮该单位职工信息的存贮系统。(第一次输入职工基本信息时); 2增加职工信息,增加新职工时辖人新职工的基本信息; 3删除某

13、职工的基本信息。(如,死亡或离职); 4修改某职工(指定职工编号)的某些信息(如,加工资、获得新学位、晋升职称、结婚或离婚)。 5. 可以输出符合某种特征的职工信息列表: *全体职工信息列表; *某职称的职工信息列表; *某年月以后出生的职工信息列表; *某年月以前出生的职工信息列表;*未婚职工信息列表。提示 1.MFC应用:创建职工信息类,包括职工编号、姓名、性别、出生年月、职称、最后学历、工资和婚否,应派生自CObject类,并实现序列化操作;在文档类中添加存储在职职工的链表或数组(可用MFC的集合类),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中实现增加新职

14、工、删除某个职工、修改信息和查询功能并及时更新文档(用多个对话框);视图类显示查询结果;职工信息可保存到文件并可读出。 2.控制台应用:创建职工信息类,类似提示1;定义存储在职职工的链表或数组,每当职工信息发生变化,添加或删除或修改相应对象。设计指导: 1) 建立职工类,加入表示该职工的编号、姓名、性别、出生年月、职称、最后学历,工资和婚否的成员变量;2) 在文档类中加入关于职工类的集合类,管理所有职工信息;题目五:教学事务管理系统 该系统要求存贮如下信息:1注册信息。每个学期的注册信息应包括每个已注册学生的班级代号,学号、姓名、注册的学期。2. 选课信息。包括已注册的每个学生每个学期所选课程

15、,本程序仅限一年级两个学期。3成绩。每个学生所选的课程的考核成绩,包括补考成绩。 系统功能要求如下: 1能输入注册信息、选课信息和成绩; 2能输出以下表格: *分班的某门课程不及格的名单(含学号、姓名、成绩); *某门课程全年级前5名的学号、姓名、成绩; *某门课程的选修者名单(含学号); *某个学生本学期的成绩单; *某门课程每个班的总平均分(从高到低排列);*某门课程某班的成绩单(按学号排列)。提示 1.MFC应用:创建学生信息类,包括注册信息、选课信息和成绩,派生自CObject类,并实现序列化操作;在文档类中添加存储注册学生的链表或数组(可用MFC的集合类),在文档类Serialize

16、函数中实现序列化;通过菜单打开对话框,在对话框中输入注册、选课、输入成绩、查询要求(用多个对话框);视图类显示查询结果;职工信息可保存到文件并可读出(序列化)。 2.控制台应用:创建学生信息类,包括注册信息、选课信息和成绩;定义存储学生的链表或数组,完成注册、选课、输入成绩等功能。设计指导: 1. 建立注册信息类,加入表示注册学生的班级代号,学号、姓名、注册学期的成员变量;2. 建立选课信息类,加入表示选课名称、考核成绩、补考成绩的成员变量;3. 在文档类中加入关于注册信息的集合类,管理所有注册信息;4. 在注册信息类中加入关于选课的集合类,管理该注册人的所有选课信息。题目六: 工资管理系统

17、该系统在磁盘上存贮了某单位上月全体职工的工资信息。对于每一位职工存贮以下信息:月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,文通补贴,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数。个人所得税计算方法设为:工资少于800元为0;8001000元的部分为5;10005000元的部分为10;5000元以上的部分为20。 系统功能要求如下: 1创建存贮职工工资信息的存贮系统; 2添加某职工的工资信息(增加新职工时用); 3删除某职工的工资信息(职工离职或死亡时用); 4修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化); 5输出指定编号职工的工资信息(借查询用);6输出当

18、月全体职工的工资信息(发工资用)。提示 1.MFC应用:创建职工信息类,包含姓名,月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,文通补贴,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数等,派生自CObject类,实现序列化操作;在文档类中添加存储职工信息的链表或数组(可用MFC的集合类),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中实现创建、添加、修改、删除和查询功能并及时更新文档(用多个对话框);视图类显示查询结果;输入的信息可保存到文件并可读出。 2.控制台应用:创建职工信息类,类似提示1;定义存储职工信息的链表或数组,每当职工情况发生变化,添加或删

19、除相应对象。设计指导: 1) 建立工资信息类,加入表示职工工资的月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,文通补贴,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数的成员变量;2) 在文档类中加入关于工资信息的集合类,管理所有职工工资的信息;题目七:教师住房管理系统 该系统在磁盘中存贮全校住学校宿舍的教师住房信息。对每一住户存贮如下信息:户主:姓名,性别,职称(教授、副教授、讲师、助教),出生年月,参加工作年月,最后学历(博士、硕士、本科、其它);家庭成员:对每一个成员,存贮姓名、性别、出生年月:现住房等级:分居在集体宿舍|一室|一室一厅|二室|二室一厅|三室|三室一厅|。现住房面

20、积:(单位;平方米)。当学校有房源后,各住户可提出分房申请(含姓名、申请住房的等级)。 系统功能要求如下: 1创建存贮教师住房信息的存贮系统; 2分房时,系统应为申请者输入申请信息(存盘)。对于所有分房者按申请等级不同(共6级)分别按分数高低列表(一种等级一张表)输出(同时存盘)。计分方法如下:职称分;教授,20分;副教授,16分;讲师,12分;助教,8分。工龄分:每年0.5分;每月0.0416分。年龄分:每岁0.1分;每月0.0083分。学龄分:博士,4.5分;硕士,3.25分,本科,2分;其它,0分。每张表应含申请该等级的姓名、职称、参加工作年月、最后学历、原住房等级、职称分、工龄分、年龄

21、分、学龄分及总分。每张表按总分从高到低排列。 3可输出婚后仍分居集体宿舍者的户主姓名及出生年月,这类教师的总数。 4可输出未住上三室一厅或三室的副教授,教授姓名及现住房标准,这类教师的总数。 5可输出未住上一室一厅及以上等级的具有博士学位的教师姓名及住房标准。6可输出全校教师人均(包括家庭人口)住房面积。提示 1.MFC应用:创建教师住房信息类,包书户主信息,家庭成员信息,住房情况等(其中可以定义结构体或类或枚举类型表示某部分信息,如住房等级可用枚举类型表示),应派生自CObject类,并实现序列化操作;在文档类中添加存储教师住房信息的链表或数组(可用MFC的集合类),在文档类Serializ

22、e函数中实现序列化;通过菜单打开对话框,在对话框中输入有关信息和查询信息(用多个对话框);视图类显示查询结果;教师住房的信息可保存到文件并可读出。 2.控制台应用:创建教师住房信息类,类似提示1;定义存储教师住房信息的链表或数组。 设计指导: 1. 建立户主类,加入表示姓名,性别,职称(教授、副教授、讲师、助教),出生年月,参加工作年月,最后学历(博士、硕士、本科、其它)、 现住房等级、现住房面积的成员变量;2. 建立家庭成员类,加入表示家庭成员的姓名、性别、出生年月的成员变量;3. 在文档类中加入关于户主的集合类,管理所有户主信息;4. 在户主类中加入关于家庭成员的集合类,管理该户主的所有家

23、庭成员的信息。题目八: 国际马拉松赛信息管理系统该马拉松赛比赛项目有两个:男子全程和女子半程。两个项目同时同场地进行。奖项有;男子前五名,女子前五名,男子团体(一国一个队)前三名,女子团体(一国一个队)前三名。团体成绩评定方法(以男队为例):某国男队的前三名运动员用时之和为该国总成绩,各国男队中总成绩最小者为男队第一名,次小者为男队第二名;再次小者为第三名。该系统在磁盘上存贮以下信息: 1运动员报名单。对于每一位报名的运动员包括:姓名、性别、年龄和国名; 2运动员号码单对于每一位报名的运动员包括:姓名、性别、号码和国名; 3世界男子全程马拉松最好成绩,世界女子半程马拉松最好成绩; 4. 到达终

24、点的每个运动员的号码和用时。 系统功能要求如下: l 比赛前输入运动员报名单并生成运动员号码单; 2比赛后输入到达终点的每个运动员的号码和用时; 3可输出男、女团体前三名的名次和国名。(供颁奖用); 4. 可输出男,女个人前五名的名次和国名。(供颁奖用)若有超过世界最好成绩音,应输出有关信息; 5. 可输出男子个人成绩表,按成绩从优到劣排列。表中对每个人应包括:名次、姓名、国名、成绩,是否超过世界最好成绩。 6可输出女子个人成绩表,表的项目和排列方式同5: 7可输出男子50岁以上选手的成绩表,排列方式同5,表项增加年龄;8可输出女子50岁以上选手的成绩表,排列方式与表项同7。提示 1.MFC应

25、用:创建运动员信息类,包括姓名、性别、年龄、国名、报名号码和运动成绩,应派生自CObject类,并实现序列化操作;在文档类中添加表示男运动员和女运动员的链表或数组(可用MFC的集合类),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中实现报名、输出号码单、及题目要求的其它查询功能并及时更新文档(用多个对话框);在视图类中输出查询结果;比赛结果的信息可保存到文件并可读出。 2.控制台应用:创建运动员信息类,类似提示1;定义存储分别男女运动员信息的链表或数组;创建比赛信息类。设计指导: 1. 建立运动员类,加入表示姓名、性别、年龄、号码、成绩和国名的成员变量;2. 在文档

26、类中加入关于运动员的集合类,管理所有运动员信息;题目九: 篮球联赛个人技术数据处理系统 设某篮球联赛要统计20名著名球员个人技术数据。要求实现篮球联赛个人技术数据处理系统。该系统在磁盘上存贮如下信息:1每场球赛的个人技术数据,一场球一个人的技术数据包括:姓名、所属队名、三分球个数、篮板球个数、扣篮成功次数、抢断次数、得分,比赛日期。2个人技术数据汇总表。表中反映了每个人的技术数据的累计结果。表项为:姓名、三分球总数、篮板球总数、扣篮成功总次数、抢断总次数、得分总数、比赛场数。 系统功能要求如下: 1创建存贮每场球赛个人技术数据的存贮系统(第一次输入个人技术数据时),然后自动创建存贮个人技术数据

27、汇总表的存贮系统; 2每场比赛后,添加个人技术数据,然后自动修改个人技术数据汇总表; 3能输出当前的个人技术数据汇总表;4能输出指定技术项目平均每场数据较高的前三名运动员的姓名、所在队名和平均每场的单项数据;5. 能输出某个队中所有优秀运动员的个人成绩。提示 1.MFC应用:创建运动员信息类,姓名、所属队名、三分球个数、篮板球个数、扣篮成功次数、抢断次数、得分,比赛日期,应派生自CObject类,并实现序列化操作;在文档类中添加存储运动员的链表或数组(可用MFC的集合类),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中实现输入数据和题目所要求的查询功能并及时更新文档

28、(用多个对话框);在视图类中输出查询结果;运动员信息可保存到文件并可读出。 2.控制台应用:创建运动员信息类,类似提示1;定义存储运动员个人信息的链表或数组;创建比赛信息。设计指导: 1. 建立每场球赛类,加入表示球赛的比赛时间的成员变量;2. 建立参赛队员个人技术数据类,加入表示参赛队员的姓名、所属队名、三分球个数、篮板球个数、扣篮成功次数、抢断次数、得分的成员变量;3. 在文档类中加入关于每场球赛的集合类,管理所有场次的比赛信息;4. 在每场球赛类中加入关于参赛队员的集合类,管理该参赛队员的所有个人技术数据信息。题目十: 男子五项全能比赛信息管理系统比赛项目为:100米、110米栏、150

29、0米、跳高和铅球。运动员的总成绩是,每项运动成绩折合成分数再由五个分数相加形成;运动成绩与分数的对应关系如下:1. 100米14”13”12”11”10”9.5”300400600900130016002. 110米栏17”16”15”14”13”12”300400600900130017003. 1500米600530500430400330200300500800120017004. 跳高1.70M1.90 M2.10 M2.25 M2.35 M2.45 M200300500800120017005. 铅球14 M16 M18 M20 M22 M24 M100200400700110016

30、00凡遇成绩与表格数据不符,按线性插值取值。该系统存储如下信息:1. 报名表。包含每位运动员的号码、姓名、出身年月、身高、体重。人数不超过50人;2. 比赛后,每人每项的运动成绩。该系统功能如下:1. 输入报名表和比赛后的每人每项的运动成绩;2. 可输出成绩表,表项有:姓名、5个项目成绩和得分、总分和名次;3. 可输出前6 名的领奖名单,表项有:姓名、总分和名次;4. 可输出产生某体重特征(或指定体重)的运动员成绩表(供研究用)。 提示 1.MFC应用:创建运动员信息类,包含号码、姓名、出身年月、身高、体重、5个项目成绩、得分、总分和名次等信息,根据需要定义函数成员,完成程序功能,应派生自CO

31、bject类,并实现序列化操作;在文档类中添加表示库存书和已借出书的链表或数组(可用MFC的集合类),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中实现报名、成绩输入和题目要求的查询功能并及时更新文档(用多个对话框);在视图类中输出查询结果;运动员信息可保存到文件并可读出。 2.控制台应用:创建一个创建运动员信息类,类似提示1;定义存储运动员信息的链表或数组。题目十一:动画播放器程序要求 可以通过动画控件播放动画,用文件公用对话框打开AVI文件并播放,也可以通过鼠标左右键控制;播放时若用鼠标左键单击画面,可以暂停播放,若用右键单击画面,可以直接对画面进行播放、暂停、

32、停止等控制,可以设置全屏效果。提示 使用动画控件ActiveMovie,该控件内嵌了Microsoft MPEG音频解码器和Microsoft MPEG视频解码器,能够支持音频文件和视频文件。ActiveMovie控件的两个函数GetVolume()和SetVolume(),可以实现音量控制。设计方案提示1 建立一个基于对话框的工程,并为这个对话框定义下面八个按钮:OPEN打开AVI文件PLAY开始播放文件PAUSE暂停播放STOP停止播放FULLSCREEN为设置全屏按钮EXIT退出ADD为增加音量按钮REDUCE为减少音量按钮另外加入GROUP BOX控件,将ADD和REDUCE按钮设为一

33、组。2 使用动画播放控件ActiveMovie进行动画播放。方法是在集成开发环境中,依次选择“Project | Add To Project | Components And Controls”菜单项,在出现的“Components And Controls Gallery”对话框中选择“Registered Active Controls”文件夹,再选择“ActiveMovie Control Object”项,单击“Insert”按钮后关闭该对话框,ActiveMovie便出现在控件面板中。将控件添加到对话框模板,并为其添加对应的变量。ActiveMovie的成员函数介绍如下: Acti

34、veMovie:Run();/播放文件ActiveMovie:Pause();/暂停播放ActiveMovie:Stop();/停止播放音量调整方法如下面代码所示:long m_volume=ActiveMovie:GetVolume();/获取当前音量ActiveMovie:Pause();/暂停播放ActiveMovie:SetVolume ( m_volume +100);/用于增加当前音量(ActiveMovie:SetVolume ( m_volume -100);/用于减小当前音量)实现满屏播放方法如下:ActiveMovie:Pause();/暂停播放ActiveMovie:Se

35、tFullScreenMode(true);/设置满屏模式ActiveMovie:SetMovieWindowSize(SW_SHOWMAXIMIZED)ActiveMovie:Run();/继续播放文件3. 为各控件添加按键消息响应函数,实现各项功能。题目十二:吹泡泡程序,基于对话框的应用要求 用鼠标左键点击对话框上的某个区域即可产生一个大小随机确定的圆形泡泡,通过通用的颜色对话框选择颜色,绘出所选颜色的泡泡。提示 采用基于对话框的应用程序框架,实现吹彩色泡泡程序。对话框上建立一个矩形区域作为吹泡泡的客户区,并通过一个“颜色设置”按钮来设置泡泡颜色。设计方案提示1. 创建基于对话框的应用程序

36、框架,使用对话框模板编辑器编辑作为主界面窗口的对话框模板,并将对话框大小调整到合适大小。添加“颜色设置”按钮。2. 为对话框模板添加一个Picture控件,调整其合适的位置和大小作为吹泡泡客户区,在该区域内按鼠标左键,显示一个泡泡。将其Type设置为Frame,Color设置为black,并且设置Sunken属性(在Styles 选项卡中)。3. 使用ClassWizard为对话框类添加一个鼠标左键消息响应函数OnLButtonDown()(此函数用于产生泡泡)和按钮命令消息响应函数OnColor(),用颜色对话框选择颜色。4. 定义CRect数组,作为泡泡(圆)的外围矩形,用于保存泡泡;定义

37、COLORREF数组用于保存泡泡颜色,一个泡泡对应一个颜色。题目十三:模拟简单计算器程序要求 该计算器使用数字按钮控件输入数据,并有“加”、“减”、“乘”、“除”、“平方根”和“倒数”计算功能,不要求进行混合运算。提示 在本程序中,用按钮控件输入数字和操作命令,EDIT控件输出结果和显示输入值。在math.h中,包含了许多有关数学运算函数,利用这些函数完成计算功能。设计方案提示1 创建一个基于对话框的应用程序框架。2 修改对话框模板,添加各种控件。其中,用于显示结果的EDIT控件设置属性Number和Read-Only;添加20个按钮控件,其中10个是数字输入键,另外十个是操作输入键。3 添加

38、相应的代码。可以同一个函数响应数字按键消息,用另一个函数处理所有的运算操作,需要用到消息范围映射宏,将多个命令消息或多个控件消息映射到同一个响应函数。有三组宏用于映射指定范围的消息。ON_COMMAND_RANGE /响应指定范围内的命令消息ON_UPDATE_COMMAND_UI_RANGE /响应指定范围内的命令更新消息ON_CONTROL _RANGE /响应指定范围内的控件消息对于本例,可以使用ON_COMMAND_RANGE,在对话框的消息映射表中添加如下的消息映射宏:ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)ON_C

39、OMMAND_RANGE(IDC_NUMBER11,IDC_NUMBER0,OnOperationKey)其中第一、二个参数必须是命令ID或控件ID,其ID值应该是连续的。在对话框的头文件添加如下代码:afx_msg void OnNumberKey(UINT nID); /此函数用于处理数字键单击事件afx_msg void OnOperationKey(UINT nID); /此函数用于处理操作键单击事件其中nID为消息ID或控件ID,表示按下的控件ID值。4. 定义double类型的数据成员,用于存储将要进行运算的数字;再根据需要定义其它数据成员用于记录运算状态。 题目十四:二维平面图形

40、设计要求1、可以通过菜单或者工具栏按钮,选择绘画工具,画不同的平面图形(直线、圆弧、矩形、圆角矩形、圆、椭圆)。2可通过颜色对话框选择不同的颜色,使所画图形具有不同颜色。 3可保存文档所画图形,并能打开。设计方案提示 1 使用MFC AppWizard来建立SDI应用程序基本框架。2 为视图类重定义OnLButtonDown、OnLButtonUp、OnMouseMove等函数。在OnLButtonDown函数中用SetCapture捕获鼠标,使随后的鼠标消息都被送往视图窗口;调用CWnd的成员函数GetClientRect获取窗口客户区的坐标,调用CWnd的成员函数ClientToScree

41、n将窗口客户区坐标转换为屏幕坐标。最后,调用Windows API函数ClipCursor将光标限定在窗口客户区内;接着创建与视图窗口有关的设备文本对象;在OnLButtonUp函数中,调用ReleaseCapture函数释放鼠标的使用。3 定义图形类的体系,可以定义一个图形元素基类,派生自CObject,再派生其它具体的图形元素类,为各类定义序列化函数。4 图形绘制函数可参加本实践教材第三章3.6节。5 在文档类中定义存储图形元素对象的数组或链表,定义文档类的序列化函数,实现文档数据的读写。题目十五: 拼图游戏设计要求 将一张图片切分成若干小片,打乱顺序任意显示。用户可用鼠标拖动各小片到正确

42、位置以恢复原来的图像。要求有不同的难度等级,切分成不同的片数。完成拼图后,提交,程序应该判断是否拼成一幅完整图形。还应有图片还原的功能。设计方案提示1选一幅漂亮的图片,装入项目资源,该图片作为拼图的底图。2为框架窗口类定义成员变量及功能如下表所示:变量类型变量名用途CBitmapm_bmp保存位图Intm_nWidth保存位图宽Intm_nHeight保存位图高Intm_nColCount保存每行切分的拼图块数Intm_nRowCount保存每列切分的拼图块数CRectm_rectChipsMAX_CHIPS保存每个切分块的位置Intm_nChipWidth保存切分块宽Intm_nChipHe

43、ight保存切分块高3每个拼图块的位置相邻,实现自动拼图功能。4根据用户选择的难度,将图片切分成若干片数,用随机数产生它的位置进行初始化。定义函数完成拼图块的分割和初始化。如何判断用户拼图成功是一个关键问题。方法提示如下:检验每一行拼图块中,其顶点y坐标是否相等(允许有适量误差),并检验在每行拼图块中,某个拼图块的右边坐标是否等于下一切分块的左边坐标,用类似方法判断同一列上各切分块的位置。题目十六:吹泡泡程序,应用文档/视图结构要求1、用鼠标左键随机在客户区任何地方点击,可产生一个圆形的泡泡(泡泡大小随机产生)。2、可通过颜色对话框选择不同的颜色,绘出不同颜色的泡泡。3、可以保存文档,并能打开

44、。设计方案提示1使用MFC AppWizard来建立SDI基本框架。为视图类定义OnLButtonDown、OnLButtonUp函数。在OnLButtonDown函数中用SetCapture捕获鼠标,使随后的鼠标消息都被送往视图窗口;调用CWnd的成员函数GetClientRect获取窗口客户区的坐标,调用CWnd的成员函数ClientToScreen将窗口客户区坐标转换为屏幕坐标。最后,调用Windows API函数ClipCursor将光标限定在窗口客户区内;接着创建与视图窗口有关的设备文本对象;然后调用SetROP2设置绘图模式为R2_COPYPEN;在OnLButtonUp函数中,调

45、用ReleaseCapture函数释放鼠标的使用。2 文档类头文件中定义新类CBubble, 派生自CObject,用于存放泡泡的包含矩形,并为其定义序列化函数,完成序列化所要求的工作。3 如可以如下定义:class CBubble:public CObjectprotected:CRect m_pRect;/存放椭圆的包含矩形COLORREF m_pColor;/存放椭圆的颜色信息public:CBubble()DECLARE_SERIAL(CBubble)CBubble(CRect rect,COLORREF Color);/构造函数用于初始化泡泡的数据成员virtual void Serialize(CArchive &ar);void Drawing(CDC *pDC);/用于画泡泡;可根据具体情况增加其它数据成员。3 为文档类中定义函数和数据成员,完成程序功能。11

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!