版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+课程设计任务书指导时间:2012年上学期指导老师:邹汉斌一、课程设计目的: 通过 C+课程设计,使学生能将学到的面向对象的程序设计思想用到具体的工作和学习中,加深对类与对象的理解,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。二、 课程设计要求 1.明确课设任务,复习与查阅有关资料 2.按要求完成课设内容,课设报告要求文字和图工整、思路清楚、正确。 3.四至五名同学分为一组,完成一个应用问题的程序的编写工作。4.对应用程序的要求: (1)凡等候用户输入时,给出足够的提示信息,如“请选择(1
2、 借书 2 还书):”提示用户选择。 (2)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入 。(3)对删除数据应给出警告。 三、课程设计步骤与方法 1.需求分析:对用户提出的问题提出解决的办法和思路。 2.根据需求,设计系统功能模块,并设计相应的类和界面。 3.根据基本思路,确定输入和输出,设计程序的算法。 4.确定用到的所有类的描述和定义,并设计测试程序来对类进行测试。 6.在计算机上编译程序,检验程序的可运行性。 7.编写C+课程设计报告。 课程设计报
3、告内容 写设计报告(要求正规打印,A4幅面),内容包括: 题目 系统功能模块结构图 数据结构设计及用法说明 程序结构(画流程图) 各模块的功能 试验结果(包括输入数据和输出结果) 体会 参考文献 附录:源程序清单四、课程设计题目及分组:题目1:一个简单的商品管理系统1课题功能描述 编写一个简单的商品信息管理的程序,主要完成商品信息的录入、排序、查询和显示等功能。2. 问题详细描述 某超市的电器区的每种商品包括以下信息:商品代码(整型),商品名称(字符串),商品数量(整型),单价(双精度),销售量(整型),库存量(=商品数量-销售量,整型), 要求编写多个函数分别实现下列功能,而后在main函数
4、中进行调用。 (1) 录入商品信息:从键盘输入这些商品的代码,名称,数量,单价,销售量信息,而后自动计算其库存量。(2) 查询满足条件的商品信息:查询1:按商品代码查询用户指定的商品信息。在主函数中给出查询结果,若找到则输出该商品的信息,如找不到,则给出相应的提示信息,而后可多次查询也可退出程序的运行。查询2:按库存量进行查询用户指定的商品信息。查询结果的处理同查询。(还可以扩充) (3)修改商品信息:首先查询到需要修改的商品,然后修改保存。(4)删除商品信息:首先查询到需要删除的商品,然后删除。(5) 按需求对商品信息排序:排序1:将商品按照商品的库存量进行升序排序,若库存量相同则按照销售量
5、升序排序。 排序2:将商品按照代码进行升序排序。 (6) 显示全部商品的信息:输出某个商品的信息。(7) 程序运行结束: *电器超市简单商品管理系统* 1录入商品信息,请选择:1 2. 查询商品信息,请选择:2 3修改商品信息,请选择:3 4删除商品信息,请选择:4 5商品信息排序,请选择:5 6. 显示全部商品的信息,请选择:57. 结束程序,请选择:7 * 请选择: (用户可根据菜单项进行选择) 题目2:简单通信录系统的设计 通信录人员信息至少包括姓名、性别、电话、地址、邮政编码、邮箱、QQ号码和类别(例如:同学、朋友等)具体功能:1 输入人员信息功能 2 查询人员信息功能1)能够根据姓名
6、、电话精确查询人员信息2)能够根据地址进行模糊查询人员信息3 根据姓名对人员信息排序输出信息; 4 根据姓名、电话修改人员信息;5 根据姓名、电话删除人员信息;6、 显示所有人员信息题目3:高校教师工作量统计系统计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时)功能要求 :A、教师信息处理(1) 输入教师授课教学信息,包括教师号、姓名、性别、职称、任教课程、班级、班级数目、理论课时、实验课时。(2) 插入(修改)教师授课教学信息:(3) 删除教师授课教学信息:(4) 浏览教师授课教
7、学信息:B、教师工作量数据处理:(1) 计算单个教学任务总课时。计算原则如下表:班级数目单个教学任务总课时21.5*(理论课时+实验课时)32*(理论课时+实验课时)=42.5*(理论课时+实验课时)(2) 计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。(3)教师数据查询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。C、教师综合信息输出(提示:输出教师信息到屏幕。)题目4: 学生成绩统计管理系统功能要求 :1、 各种基本数据的录入。如:学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码、班级等; 学生各科课程的成绩:语文成绩,数学成绩,
8、外语成绩,数据库成绩等。2、各种基本数据的修改。即:允许对以及录入的数据重新进行编辑、修改。3、各种基本数据的插入。如:在学生选修课程基本信息中插入一条新信息等。4、各种基本数据的删除。如:假设某同学转学或出国深造,删除该生的相关信息; 5、基于各种数据的查询。如:查询某班学生信息,查询某学生的成绩等。6、基于各种基本数据的统计计算。如:A统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩、平时成绩、综合成绩);B统计并输出各班各门功课的平均成绩和总平均成绩;列出不及格学生清单(学号、姓名、不及
9、格的课程和成绩)。7、退出系统题目5: 小型公司工资管理系统功能要求 1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。其中(1)职工编号在输入人员信息时生成,每输入一个人员信息编号顺序加1。(2)程序对所有人员有提升级别的功能。 (3)能够按照不同身份进行月薪的计算。 (4)能按姓名或者编号查找各类人员的信息。(5)能够修改/删除各类人员的信息。(6)能够显示所有人员的信息。2)工资的计算办法:经理:固定月薪为8000;技术员:工作时间小时工资(100元每小时);销售员:销售额4%提成;销售经理:底薪(5000)所辖部门销售
10、额总额0.5%;3)类的层次结构大体如下:雇员类技术员类经理类销售员类销售经理类题目6: 高校人事管理系统具体设计要求求实现如下功能:(1)建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作时间和年龄(必须通过计算得到)等等其他信息; (2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能); (3)对所选人员信息按需求进行排序(如编号排序,按年龄排序等等)(4)要求对“”和“”运算符进行重载。考虑到输入人员编号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载”运算符时,需要满足这个要求; (5)检索(查找)指定信息(如显示全部人员信息、按姓名检索、按年
11、龄检索、按部门检索等等);(6)对人员信息进行统计:(对各个年龄段人数进行统计、计算人员的平均年龄,对各个部门人数进行统计等) 参考系统界面如下: 1-增加一位人员信息记录 2-检索(查找)指定人员信息记录3-修改指定人员信息记录4-删除指定人员信息记录 5-对指定人员信息进行排序6-对人员信息进行统计7-结束程序运行 。题目7: 学校运动会管理系统设计本课程设计项目主要是模拟解决一场运动会举行时,如何查询、管理比赛项目(含时间、 地点、选手等信息)和选手信息(含参加的比赛项目、成绩、名次等信息)。而在此管理系统 中,一个比赛项目有多名运动员参赛,而同一运行员可参加多种比赛项目。 项目应包含以
12、下功能: 1、 各种基本数据的录入。如:比赛项目信息:包括比赛项目编号、名称、比赛时间、比赛地点等;运动员信息:包括运动员的编号、姓名、性别、年龄、工作单位或省份;比赛赛事信息:某运动员参加某比赛项目,成绩、名次。2、各种基本数据的修改。即:允许对以及录入的数据重新进行编辑、修改。3、各种基本数据的插入。如:在学生选修课程基本信息中插入一条新信息等。4、各种基本数据的删除。如:假设某项目取消或某运动员因某种原因能参加比赛,删除该相关信息; 5、基于各种数据的查询。如:查询某场比赛运动员信息,查询某运动员参加的比赛等。6、基于各种基本数据的统计计算。如:A统计每场比赛的名次等等。7、退出系统题目
13、8: 学生选修课程系统设计假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课学期等信息。学生可以按要求(如每个学生总学分不得少于20、没学期不能超过3门课程,每门课程不得超过50个人,但不能少于10否则该课程不开设)自由选课。使之能提供一些功能:1、 课程信息录入功能2、 课程信息浏览功能3、 查询功能:(按课程性质查询、按课程学分查询,查询每个学生的选修信息、查询每门课程的选修信息等)4、 学生选修课程5、修改课程或选课信息(根据课程编号或名称修改课程信息、根据学生姓名修改选课信息);6、删除课程或选课信息(根据课程编号或名称删除课程信息、根据学生
14、姓名删除选课信息);题目9:学生通讯录管理系统使用面向对象的方法编写一个程序,实现在如下菜单中,输入数字序号,执行相应功能。基本要求:(1) 学生信息包括:学号,姓名,所在专业和年级、性别,出生年月,手机,QQ、家庭住址等(2) 查询学生时,可以按照学号或姓名完成查询(3) 修改或删除学生时,可按照学号或姓名找到学生后完成相应修改(4) 显示学生信息时,要求可以按照学号或姓名的升序或降序分别进行显示(5) 该系统的首页信息如下学生通讯录管理系统请选择要进行的操作:1. 添加新学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示通讯录中的所有信息6. 退出系统题目10:学生成
15、绩统计系统使用面向对象的方法编写一个程序,实现在如下菜单中,输入数字序号,执行相应功能。基本要求(1) 选择课程,输入学生人数,以及本课程所有学生的成绩(2) 统计本课程的总成绩,平均成绩,最高成绩,最低成绩。(3) 将所有学生成绩以及统计的各项结果,以友好的界面形式显示。(4) 下列菜单所给的课程只作为参考,可以根据自己的实际情况设计课程名称。学生成绩管理系统请选择课程:1. C+程序设计2. 图形图像处理3. 英语4. 计算机导论5. 高等数学6. 退出系统学生成绩管理系统所选课程:C+程序设计1. 输入学生人数及成绩2. 成绩统计3. 显示统计结果4. 返回题11:学生信息管理系统使用面
16、向对象的方法编写一个程序,实现在如下菜单中,输入数字序号,执行相应功能。基本要求(1) 学生信息包括:学号、姓名、专业及年级、若干门课程、总成绩、平均成绩(2) 查询学生时,可以按照学号或姓名完成查询(3) 修改或删除学生信息时,可按照学号或姓名找到学生后完成相应修改或删除。学生成绩管理系统请选择要进行的操作:1. 输入学生信息2. 查询学生信息3. 修改学生信息4. 计算每位学生各门课程的总成绩和平均成绩5. 显示每位学生的所有信息6. 退出系统题目12:大数计算问题大数是超过整数表示范围的整数,针对正整数运算,定义一个大数类,并编写两个大数类对象的加法和减法函数。基本要求:(1) 编写大数
17、类对象的构造函数和输入输出函数(2) 编写大数类对象的加法和减法运算函数(3) 设计主函数时,可指定测试数据。题目13:外币兑换系统使用面向对象的方法编写一个程序,实现在如下菜单中,输入数字序号,执行相应功能。基本要求:(1) 在下列菜单中选择对换方式,在接下来的下级菜单中选择币种,然后在随后弹出的菜单中输入要兑换的货币数额和汇率,完成转换操作。(2) 兑换时,可在中国银行网站查找汇率中间价。(3) 可按照以下菜单提示设计程序。外币兑换系统请选择:1. 外币对换人民币2. 人民币兑换外币3. 退出系统 外币兑换系统你选择的是:外币对换人民币请选择币种:1. 英镑2. 欧元3. 日元4. 瑞士法
18、郎5. 加拿大元6. 美元7. 港元8. 澳元9. .10. 返回 外币兑换系统你选择的是:英镑1. 输入汇率的中间价和所换金额2. 显示兑换结果3. 返回题目14:简单计算器设计一基于Windows的应用程序,使其能完成简单的计算功能。计算功能包括:加、减、乘、除、求余数、求阶乘、指数运算、程序界面自己设计题目15:单选题的评判设计一基于Windows的应用程序,使其能对单选题进行评判。可按照下列形式设计,题目不少于5个题,选择题自己设计安排。面向对象程序设计课程设计(之方向二VC+ MFC应用)指导书1设计一:“用VC+制作一个人事管理系统”11 课程设计的目的和意义人事管理系统具有数据库
19、应用系统的典型特征,同时系统结构与现实生活联系紧密,便于没有分析、设计经验的同学进一步扩展,应此它的开发简单而又不失一般性。本设计的目的是使同学们初步掌握VC+ MFC应用程序的结构和开发。12 课程设计要求(满分8590)(1) 完成具有以下功能的人事管理系统:人事信息的增、删、改、查和排序,并能成功演示其运行。(2) 阐述在开发过程中遇到的问题及解决过程。(3) 解决VC在开发数据库应用时“日期/时间字段”的查询和更新问题。(可以采用其他新方法)(4) 论述你对“MFC AppWizard(exe)”生成的应用程序的框架的认识、理解和开发心得。(5) 选做:同学们可根据自己的调研进一步扩充
20、系统功能,如“万能查询”,即可以按所有字段查询。附:教学大纲中的有关要求: 成绩考核面向对象的编程技术课程设计实验采用课程设计实验报告和课程设计实验应用系统程序综合评定成绩,其中课程设计实验报告占60%;课程设计应用系统程序占40%。课程设计提交一份综合实验报告,一份程序软盘,课程设计应用系统程序采取上机检验的方式确定分数。课程设计实验报告的基本格式课程设计实验报报告的基本内容至少包括封面、正文、附录三部分。1封面封面包括“面向对象的编程技术课程设计实验报告”、班级、姓名、设计时间等信息。2正文(1)应用程序的名称;(2)应用程序的主题、设计目的;(3)应用程序简介:设计目的、功能介绍、基本内
21、容、主要技术、运行环境等;(4)应用程序的总体设计结构图、类层次图、主要运行界面的介绍;(5)创新和难点:阐述创新的得意之处;在开发过程中遇到的重点、难点问题及解决过程。(6)课程设计中目前存在的问题;(7)设计实践过程中的心得体会。3附录附录中至少包括:附录1: 程序的安装、使用说明。2设计一:“用VC+制作一个人事管理系统”开发指导 21 数据库设计采用Access数据库:“人事管理系统.mdb”数据库中有一张“人事管理数据表”方法一:利用VC+创建数据工程VC主菜单 | 文件 | 新建 | 工程标签中的数据库工程 | 输入工程名和保存位置 ,ok|进入数据源选择对话框,选机器数据源 |
22、new,用户数据源,下一步| 数据源类型选 Microsoft Access Driver*.mdb下一步,完成| 先create 一个库“人事管理系统.mdb”,然后输入数据源名称,ok| 回到数据工程窗体,双击弹开,Tables右键,准备在数据库中new一张“人事管理数据表”。不规范的VC+安装版无法“New Table”,所以只好把前面工作全删掉,准备采用方法二。方法二:用Office中的Access软件建库、建表、输入数据,配置ODBC数据源“人事管理数据表”结构如下:字段名称字段类型字段大小索引必须填写职工编号数字长整型有(无重复),主键是职工姓名文本20是职工性别文本2是所在部门文
23、本30是职工年龄数字整型是工作时间日期/时间10 短日期是基本工资数字单精度是职称文本20是简历备注默认是输入数据:配数据源: 控制面板 | 管理工具| 双击数据源(ODBC)指W2K,98或xp下可能位置不同| User DSN | Add | 数据源类型选 Microsoft Access Driver*.mdb,完成| 输入数据源名称“人事管理系统”,“选择”刚创建好的mdb文件,确定22 创建人事管理应用程序框架VC+ | 文件 | 新建 | 工程标签中的MFC AppWizard(exe)向导 |输入工程名和保存位置 ,ok选“单文档”,“支持文档/视图架构”,next选不带文件支持
24、的数据库视图,点Data Source,选中刚建好的ODBC数据源及其中的表 此时就可以finish。看一下摘要。向导已帮你生成程序框架理解此框架见参考书23 制作人事管理主窗体向导已生成主窗体:Dialog下的IDD_MY_FORM。在此对话框中加10个静态标签控件(只是用来提示其旁边的编辑框),如下表:控件ID控件类型控件标题IDC_STATIC_BT静态标签人事管理系统IDC_STATIC_ZGBH静态标签职工编号IDC_STATIC_ZGXM静态标签职工姓名IDC_STATIC_ZGXB静态标签职工性别IDC_STATIC_SZBM静态标签所在部门IDC_STATIC_ZGNL静态标签
25、职工年龄IDC_STATIC_GZSJ静态标签工作时间IDC_STATIC_JBGZ静态标签基本工资IDC_STATIC_ZC静态标签职称IDC_STATIC_JL静态标签简历每个控件下右键 | 属性,可设置其ID和标题在对应的静态标签右边放9个编辑框控件,每个控件下右键 | 属性,可设置其ID。 控件ID控件类型绑定数据库字段IDC_EDIT_ZGBH编辑框控件职工编号IDC_EDIT_ZGXM编辑框控件职工姓名IDC_EDIT_ZGXB编辑框控件职工性别IDC_EDIT_SZBM编辑框控件所在部门IDC_EDIT_ZGNL编辑框控件职工年龄IDC_EDIT_GZSJ编辑框控件工作时间IDC
26、_EDIT_JBGZ编辑框控件基本工资IDC_EDIT_ZC编辑框控件职称IDC_EDIT_JL编辑框控件简历为每个编辑框控件绑定数据源字段:选定一个编辑框控件,右键 | 建立类向导 | 成员变量标签 |class name列表下选CmySet(数据库的结果集)。左边是数据库字段资源,右边是在类中为其分配的成员变量,但m_column*不好记,又不能改,只好全部删掉(Delete Variable)再手工建立(Add Variable),换为好记的名字将编辑框(在CmyView视图类中)与上述变量绑定:Add Variable然后选而不是输入。你会发现惟独IDC_EDIT_GZSJ与m_gzs
27、j(工作时间)联不上(没有m_pSet-m_gzsj可选) ,看一下m_gzsj的定义,在“人事管理系统Set.h”文件中。 用的是Ctime类,此类有些毛病(年份范围有限)以下花了很大精力解决“日期/时间字段”问题,本来可以把数据库的“工作时间”字段改为“文本”类型,这样向导就会自动对应Cstring,从而回避此问题。之所以不回避,主要目的是想通过解决此问题,让同学们了解程序的结构。,并且应该初始化为0(即NULL)(据说用SQL Server数据库就没问题,难道是与Access不匹配?),因此检查一下CmySet类的构造函数:m_gzsj=NULL;发现惟独没有对m_gzsj初始化,因此加
28、一句m_gzsj=0;再回去看看,结果还是不能绑定(还是没有m_pSet-m_gzsj可选)。 所以还是不用Ctime类,改用COleDateTime类,改头文件:改构造函数中的初始化:再回去看看,结果可以绑定了,注意类型变为COleDateTime。再到视图类中看看影射函数DoDataExchange(),已有映射了。保存,编译出错,提示DDX_FieldText(pDX, IDC_EDIT_GZSJ, m_pSet-m_gzsj, m_pSet);中DDX_FieldText : none of the 10 overloads can convert parameter 3 from t
29、ype class COleDateTime可见 COleDateTime与CString无法转换方法1:自己转 (请用此方法完成后面的“增加记录”)int dyear,dmonth,dday;dyear= m_pSet-m_gzsj.GetYear();dmonth= m_pSet-m_gzsj.GetMonth();dday= m_pSet-m_gzsj.GetDay();CString dstr;dstr.Format(“%d-%d-%d”,dyear,dmonth,dday);DDX_FieldText(pDX, IDC_EDIT_GZSJ, dstr, m_pSet);编译,运行 开
30、始正确,但点“下一记录”,出错,考虑:DDX_FieldText(pDX, IDC_EDIT_GZSJ, dstr, m_pSet);中最后的指针已没有用处,将此句改为:DDX_Text(pDX, IDC_EDIT_GZSJ, dstr); 编译,运行,暂时正确(还未经过UPDATE验证)方法2:不用Cstring,即不用编辑框控件IDC_EDIT_GZSJ,取消其与m_gzsj的绑定,再删掉此编辑框控件;在对话框中加一个“Date Time Picker”控件,资源索引ID为IDC_DATETIMEPICKER_GZSJ,并与m_gzsj绑定。此时视图类中的影射函数DoDataExchang
31、e()增加了一句:DDX_FieldDateTimeCtrl(pDX, DATETIMEPICKER_GZSJ, m_pSet-m_gzsj, m_pSet)。 但编译报错:没有DDX_FieldDateTimeCtrl标识(应该是VC的BUG),故改为:DDX_DateTimeCtrl(pDX, DATETIMEPICKER_GZSJ, m_pSet-m_gzsj);运行也正确(还未经过UPDATE验证)2.4 为系统实现增加、删除、排序和查询功能 2.4.1增加4个按钮,ID如下表:控件ID控件类型控件标题IDC_BUTTON_ADD命令按钮增加记录IDC_BUTTON_DEL命令按钮删除
32、记录IDC_BUTTON_SORT命令按钮排序记录IDC_BUTTON_FILTER命令按钮筛选记录2.4.2 增加新的对话框(窗体)及创建类成员在查询或过滤记录时,需要一个对话框,用于输入查询的条件,增加对话框的方法:VC主菜单,“插入”|“资源”|“对话框(Dialog)类型”| 放一个“分组框控件”,标题为“请输入过滤查询条件”| 在分组框内放一个“编辑框”控件新建对话框在工程中是不可识别的,须为其定义一个新的“类”并作一个类的声明,才可在工程中调用,对话框中“右键”| “类向导”,提示必须创建新类,创建,并命名为CDlgQuery 切到“成员变量”标签,为编辑框控件IDC_EDIT1增
33、加成员变量m_query2.4.3编制按钮的单击响应代码回到IDD_MY_FORM对话框,(1) 双击“增加记录”按钮,完成下列代码:void CMyView:OnButtonAdd() / TODO: Add your control notification handler code herem_pSet-AddNew();m_pSet-Update();/更新记录集m_pSet-Requery();/重新提取数据m_pSet-MoveLast();/移动下一条记录UpdateData(FALSE);/更新视图(2) 双击“删除记录”按钮,完成下列代码:void CMyView:OnBut
34、tonDel() / TODO: Add your control notification handler code here m_pSet-Delete();m_pSet-MoveNext();if (m_pSet-IsEOF()m_pSet-MoveLast();if (m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);(3)“筛选记录”按钮的响应代码:按职工编号查询,要用到对话框IDD_DIALOG1(CDlgQuery类)来输入筛选条件,所以“人事管理系统View.cpp”中要加入“#include DlgQuery.
35、h”。CDlgQuery Dlgquery;CString value;if (Dlgquery.DoModal()=IDOK)/“模式窗口方式打开,结束前不能操纵父窗口”value=职工编号=+Dlgquery.m_query+;m_pSet-m_strFilter=value;m_pSet-Requery();UpdateData(FALSE);(4) 双击“排序记录”按钮,完成下列代码:按职工编号排序 m_pSet-m_strSort=职工编号;m_pSet-Requery();UpdateData(FALSE);说明:对于数据库操作可以采用异常处理机制下的保护代码,如下所示:try/被
36、保护的代码catch (CDBException* e)MessageBox(e-m_strError);/对于异常信息的处理,这里是简单输出错误的信息例:对于删除记录的代码可以这样写:trym_pSet-Delete();m_pSet-MoveNext();if (m_pSet-IsEOF()m_pSet-MoveLast();if (m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);catch (CDBException* e)MessageBox(e-m_strError);面向对象的编程技术课程设计(之方向3-电脑游戏制
37、作)指导书1课程设计的目的和意义在中国,电子游戏曾一度被大家斥为“电子海洛因”。然而电子游戏在青年学生中大受欢迎却又是一个不争的事实。正如水能载舟,亦能覆舟一样,任何事物都有其两面性。与其千方百计地封堵,还不如让同学们从技术的角度来研究它,这样既可以掌握复杂系统的设计技巧,也可以破除对电子游戏的神秘感。我相信,一个人如果自己能制作游戏,如果能清楚地知道那个绚丽多彩的虚拟世界背后无非就是一些类、变量、函数的话,他就不可能再沉迷于打游戏与一堆对象、内存变量和函数较劲。同时,从技术上讲,游戏程序的开发异常复杂,能充分体现面向对象的拟人化思想和面向对象设计技巧。通过游戏程序的制作,可以帮助学生真正掌握
38、面向对象程序设计的精髓。 2课程设计要求 附:教学大纲中的有关要求: 成绩考核面向对象的编程技术课程设计实验采用课程设计实验报告和课程设计实验应用系统程序综合评定成绩,其中课程设计实验报告占60%;课程设计应用系统程序占40%。课程设计提交一份综合实验报告,一份程序软盘,课程设计应用系统程序采取上机检验的方式确定分数。课程设计实验报告的基本格式课程设计实验报报告的基本内容至少包括封面、正文、附录三部分。1封面封面包括“面向对象的编程技术课程设计实验报告”、班级、姓名、设计时间等信息。2正文(1)应用程序的名称;(2)应用程序的主题、设计目的;(3)应用程序简介:设计目的、功能介绍、基本内容、主
39、要技术、运行环境等;(4)应用程序的总体设计结构图、类层次图、主要运行界面的介绍;(5)创新和难点:阐述创新的得意之处;在开发过程中遇到的重点、难点问题及解决过程。(6)课程设计中目前存在的问题;(7)设计实践过程中的心得体会。3附录附录中至少包括:附录1: 程序的安装、使用说明。21 设计一:“子弹打飞机” (满分90)(1) 要求白手起家,独立完成,即不允许套用现成的案例,程序要能看出“土香气”。能成功演示,报告中还要给出主要代码(设计思想可参考设计三中的 TankWar剖析.doc(或pdf))(2) 主要功能:飞机横向飞过;炮塔不能移动,在垂直方向上发出单发炮弹(f键),判断炮弹是否击
40、中飞机。(重 点在于模拟物体的运动,同学们不会MFC图形编程没关系,可以在控制台下采用字符方式模拟飞机等;也可以用Turbo C+ 3.0来编程,)22 设计二:“基地保卫战” (满分95)(1) 要求白手起家,独立完成,即不允许套用现成的案例,程序要能看出“土香气”。能成功演示,报告中还要给出主要代码 (设计思想可参考设计三中的 TankWar剖析.doc(或pdf))(2) 要功能:一堆敌机从天而降,炮塔可以左右移动(键)发出连发炮弹束(f键),在飞机撞上炮塔前击落它。23 设计三:“坦克大战” (满分100)(1) 参考(PC游戏编程(窥门篇)谭文洪著)中的“坦克大战”(TankWar工
41、程),并对其进行完善、扩充,程序要能看出专业水平和商业化产品的效果。(2) 要求:修改案例中“子弹可以穿透石头墙”的错误;增加上帝模式(无敌);修改一种敌军坦克,使之威力更大(要求坦克画面采用学生自己的头像)(需要重新编译资源包;之所以“改”而不是“增”,是因为同学们无法修改地图编辑器,另一个办法是在程序运行后动态加入);回答 “坦克大战”指导书.doc(或pdf) 和 TankWar剖析.doc(或pdf)中带有蓝色.?标记的问题。3 设计一:“子弹打飞机”开发指导(1)为了突出面向对象思想,回避图形界面、音效等商业化元素带来的复杂性,建议采用同学们熟悉的控制台应用和字符界面。(2)为此给出
42、turbo c+几个常用函数的vc+模拟程序(VC+控制台模拟函数.txt)。严重声明,其中几个函数是DOS的处理方式,标准的windows程序平并不这么用,而是有自己的处理方式。这里只是模拟,因为同学们短时间内不可能掌握windows的处理方式。目前还没有人完全正确模拟这几个函数,其中gettext函数中的(unsigned long *)b处是我瞎碰出来的,与puttext不对偶,完全没有道理,运行时也有内存泄漏。希望同学们参照VC+帮助(MSDN)中有关控制台输入输出的内容,帮我解决这个问题。void gotoxy(int x, int y) /光标移到(x,y)(DOS时代,字符方式下
43、,屏幕宽80、高25) COORD point; / new cursor position coordinatesHANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);/ handle of console screen bufferpoint.X = x; point.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),point); void clrscr() /清屏 COORD coordScreen = 0, 0 ; DWORD cCharsWritten; CON
44、SOLE_SCREEN_BUFFER_INFO csbi; DWORD dwConSize; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsole, &csbi); dwConSize = csbi.dwSize.X * csbi.dwSize.Y; FillConsoleOutputCharacter(hConsole,TEXT( ),dwConSize,coordScreen,&cCharsWritten); GetConsoleScreenBufferInfo(hCon
45、sole, &csbi); FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize,coordScreen,&cCharsWritten); SetConsoleCursorPosition(hConsole, coordScreen); void sound(DWORD freq) /按freq HZ频率发声 (50ms)Beep(freq,50);void nosound(void) /停止发声(sound已确定时间是50ms,所以不用做什么) void delay(DWORD dur)/延时dur毫秒 Sleep(du
46、r);int gettext(int left,int top,int right,int bottom,char *buffer)/取屏幕上矩形区域中的字符到buffer char *b=buffer;COORD point;LPDWORD count=0; int i,j; HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);/ handle of console screen buffer for (j=top;j=bottom;j+) point.Y = j; for(i=left;i=right;i+) point.X = i; ReadConsoleOutputCharacter(hOutput,b,1,point,(uns
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省绵阳市(2024年-2025年小学五年级语文)部编版期中考试(上学期)试卷及答案
- 体育产业园区渣土运输合同
- 保健品三方配送协议样本
- 图书市场合作伙伴
- 医疗废物回收运输合同
- 保险代理居间协议模板
- 休闲娱乐场所装修居间协议
- 低温食品运输合同
- 摄影棚装修追加协议样本
- 乳制品冷链物流合同模板六
- 白鹭的科普知识
- 河南理工大学课堂教学检查督导情况记录表
- (新课标)新冀人版小学科学六年级上册第一单元第4课《生物的演变》说课稿
- 南方谈话学习汇报
- 需求变更申请表模板
- 处级干部因公短期出国(出境)申请表
- 福建省厦门市第一中学2023-2024学年七年级上学期期中数学试卷
- 国企行测常识900题
- 医院病房超市经营管理服务方案
- 社会秩序的维护主要靠法律还是靠道德辩论赛
- 中国各区域矢量地图素材(详细到省市、能编辑)
评论
0/150
提交评论