总任务.docx

上传人:b****5 文档编号:3579937 上传时间:2022-11-24 格式:DOCX 页数:33 大小:133.53KB
下载 相关 举报
总任务.docx_第1页
第1页 / 共33页
总任务.docx_第2页
第2页 / 共33页
总任务.docx_第3页
第3页 / 共33页
总任务.docx_第4页
第4页 / 共33页
总任务.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

总任务.docx

《总任务.docx》由会员分享,可在线阅读,更多相关《总任务.docx(33页珍藏版)》请在冰豆网上搜索。

总任务.docx

总任务

面向对象程序设计实验说明

1.时间安排:

共72学时,18次课(4课时计1次)。

2.评分:

6次阶段考试,各占总分的10%,平时成绩占40%。

平时成绩由5次实验报告和现场提交的代码组成,五次实验报告占20分,提交的代码共计20分。

3.阶段考试:

共计6次,老师随机选择一道进行考试。

4.实验要求:

每次实验内容要求在课内时间段进行提交,超时拒绝接受。

代码相同者均计0分。

5.实验报告:

共5次实验报告,提供报告模版,由学生添加关键代码。

实验报告需要进行评分。

6.实验时间安排如下:

学时

内容

实验报告

备注

1

4

VisualC++环境

2

4

数组

3

4

指针和字符串

实验报告一

需要提交实验报告

4

4

阶段测试一

5

8

第11章类与数据抽象

6

7

4

第12章类

实验报告二

需要提交实验报告

8

4

阶段测试二

9

4

第13章运算符重载

10

4

第14章继承

实验报告三

需要提交实验报告

11

4

阶段测试三

12

4

第15章虚函数与多态性

13

4

阶段测试四

14

4

第16章C++流输入与流输出

15

4

第17章模版

实验报告四

需要提交实验报告

16

4

阶段测试五

17

4

第18章异常处理

实验报告五

需要提交实验报告

18

4

阶段测试六

第19章可视化编程

可选

合计

72

6次阶段测试

5次实验报告

实验1VisualC++开发环境

一、实验目的

1.熟悉VC++6.0编程环境,编制简单的C++程序并运行,熟悉C++的编辑、编译、连接和运行过程。

2.掌握C++数据类型,熟悉如何定义和使用常量和变量,以及对它们赋值的方法。

3.目的是为了使学生对《程序设计基础》课程内容进行复习,为面向对象程序设计进行编程能力的训练。

二、实验要求

1.熟悉VC++6.0编程环境,编制简单C++程序并运行,熟悉C++的编辑、编译、连接和运行过程。

2.掌握循环结构和选择结构

3.掌握函数的定义及调用

4.掌握递归函数的定义及调用及特点

三、实验内容

1.使用VisualC++建立一个非图形化标准C++程序,编译、运行以下程序:

#include

voidmain()

{

cout<<"Hello!

\n";

cout<<"Welcometoc++!

\n";

}

具体实验步骤:

(1)启动VisualC++6.0开发环境

从“开始”菜单中选择“程序”|MicrosoftVisualStudio6.0|Microsoft

VisualC++6.0,显示VisualC++6.0开发环境主窗口。

(2)创建一个项目

单击File菜单中的New选项显示New(新建)对话框(如图1-1所示)。

图1-1新建窗口

单击Projects标签,在Projects(项目)选项卡中,选择Win32Console

Application(Win32控制台应用程序)。

在Location(位置)文本框中指定一个

路径d:

\c++lab,在PrejectName(项目名称)文本框中为项目输入一个名字

“test”,单击OK(确定)按钮。

在弹出的Win32ConsoleApplication-Step1of1对话框中选择AnEmpty

Project单选项,然后单击Finish(完成)按钮(如图1-2所示)。

最后在NewProjectInformation对话框中单击OK按钮,完成项目的建立。

图1-2创建控制台应用程序第一步

(3)建立C++源程序文件

选择菜单命令Project|AddtoProject|New,弹出New对话框。

如图1-3

所示,在new对话框的Files选项卡中选择C++SourceFile,并填入文件名称

“test”,单击OK按钮,完成新建C++源程序文件。

图1-3添加新的源程序文件

(4)编辑C++源程序文件内容

图1-4在文件编辑窗口中输入代码

在文件编辑窗口中输入代码(如图1-4所示)。

选择菜单命令File|Save保存这个文件。

(5)建立并运行可执行程序

选择菜单命令Build->Buildtest.exe建立可执行程序。

如果你正确输入了源程序,此时便成功地生成了可执行程序test.exe。

如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息。

根据这些错误信息对源程序进行修改后,重新选择菜单命令Build|Buildtest.exe,建立可执行程序。

选择菜单命令Build|Executetest.exe运行程序,观察屏幕的显示内容。

(6)关闭工作空间

选择菜单命令File|CloseWorkspace关闭工作空间。

2.编写一个函数intsum(intn),计算从1+2+3+……+n的和并返回,并在主函数中调用。

3.编写一个函数intisprime(intn),判断n是否是素数,如果是则函数返回1,否则函数返回0,并在主函数调用该函数以检查该函数是否能正常工作。

4.调用isprime()输出1000以内的所有素数,每五个一行。

5.从键盘输入一个整数n,把n分解成两个素数l和m,并输出n=l+m的等式。

6.编写非递归函数intFibonacci(intn),返回斐波那契数列的第n项,已知斐波那契数列为:

1,1,2,3,5,8,13……

7.编写递归函数intFibonacci_digui(intn),返回斐波那契数列的第n项。

8.在主函数中设计对Fibonacci和Fibonacci_digui的调用方案,以判断两个函数在效率上的区别

四、实验步骤

五、实验代码

六、心得体会

1.代码

2.实验报告:

按照实验报告要求完成完整的实验报告。

实验2数组

一、实验目的

1.熟悉基本数据类型,及表示形式和取值范围;

2.掌握一维数组和二维数组的定义、赋值和输入输出方法;

3.掌握字符数组和字符串数组的使用;

4.掌握与数组有关的算法(特别是排序算法)。

5.对《程序设计基础》课程内容进行复习,为面向对象程序设计进行编程能力的训练。

二、实验要求

1.熟悉VC++6.0编程环境,编制简单C++程序并运行,熟悉C++的编辑、编译、连接和运行过程。

2.掌握数组作为函数参数的编程方法

3.掌握如何利用循环操作数组

三、实验内容

1.定义一个大小为10的整形数组,数组的元素值由初始化得到,分别计算求出该数组的和,最小值以及最大值并输出。

2.修改以上程序,要求首先由键盘输入数组元素数目n(n<10),然后输入这n个数组元素,其它要求不变。

3.修改以上程序,要求,均分别编写相应的函数来实现求和、求最大值以及最小值等四个功能,并在主函数中进行调用。

4.编写一个排序函数voidsort(inta[],intn),将数组a中的n个元素按照从小到大的顺序进行排序,主函数中要求输出排序前后的数组内容。

5.编写一个函数voidreverse(inta[],intn),将数组a中的n个元素进行逆置,主函数中要求输出逆置前后的数组内容。

6.编写函数voidarray_sum(inta[3][3],b[3][3]),功能是:

实现B=A+A’,即把矩阵A加上A的转置存放在B中,主函数调用该数组,要求,二维数组的元素值由初始化得到,并输出分别输出二维数组a和b的值。

例如:

矩阵a:

其转置矩阵为a’:

矩阵b为:

1231472610

45625861014

789369101418

7.编写一个函数voidstrcat(chara[],charb[]),将字符串b连接到字符串a的后面,主函数调用该函数,分别输出调用该函数前后字符串a和b的内容,要求主函数中的字符串a的值由初始化得到,b的值由键盘输入,且b中的第一个字符是空格。

8.编写一个函数voidstring_sort(charname[][18],intn),对字符串数组name中的n个字符串按照字典顺序进行排序,主函数调用该函数,字符串数组的值可由初始化得到,要求输出排序前后的字符串数组。

四、实验步骤

五、实验代码

六、心得体会

1.代码

2.实验报告:

按照实验报告要求完成完整的实验报告。

实验3指针和字符串

一、实验目的

1.进一步熟悉编程环境。

2.掌握指针的基本使用方法。

3.掌握指针作为函数参数的使用方法。

4.掌握字符指针的使用方法。

二、实验要求

1.熟悉VC++6.0编程环境,编制简单C++程序并运行,熟悉C++的编辑、编译、连接和运行过程。

2.熟悉指针作为函数参数的编程方法。

3.熟悉使用指针操作数组。

三、实验内容

1.定义两个整型数x和y,定义整型指针*p1和*p2分别指向x和y,使用指针交换x和y的值。

2.建立数组

建立一个含10个整数的数组。

3.输入数组的元素

编写一个函数voidinput(int*a,intn),在主函数中调用该函数输入数组的元素。

4.输出数组元素

编写一个函数voidoutput(int*a,intn),在主函数中调用该函数输出数组的元素。

5.数组排序

编写一个函数voidsort(int*a,intn),在主函数中调用该函数对该数组排序。

6.生成字符串

在主函数中定义一个字符指针*ptr,并用字符串常量给它赋值。

7.判断回文

编写一个函数boolisPalindrome(char*s),判断参数是否是回文,如果是返回1,否则返回0。

在主函数中调用它,判断ptr是否是回文。

8.构造回文

编写一个函数char*palindrome(char*s),根据参数给出的字符串构造一个回文。

在主函数中将ptr作为参数调用它生成回文。

9.查找字符串

编写一个函数intfind(char*s,char*t),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);否则返回-1。

在主函数中调用它:

find(ptr,“the”)。

四、提交的资料

本次实验提交的实验报告中,要求提供源程序清单以及实验结果的截屏。

实验4类的定义

一、实验目的

1.掌握类的定义

2.了解如何根据描述发现类及其成员,具备初步的面向对象分析与设计能力

二、实验概述

现在有一个奥特曼打怪兽的角色扮演游戏。

请你根据下面的描述,定义两个类:

奥特曼类和怪兽类。

在奥特曼的世界,打怪兽就是全部。

现在人人都有机会成为奥特曼,加入到与怪兽无止境的战斗中。

可惜,并非人人生来就是英雄,革命尚未成功,同志仍需努力啊。

每一个奥特曼都要从零开始,辛勤劳动,打怪升级,最终才能成为举世瞩目的大英雄。

奥特曼的等级(rank)从第一级开始,随着它打怪兽经验(exp)的增加,等级将不断攀升。

随着等级的升高,奥特曼的生命值(hp)上限和攻击力(damage)也将大大增强。

在与怪兽的战斗中,奥特曼收获的不仅仅是经验。

有时,运气好的话,还能从怪兽身上弄到点小钱(money)。

不要小看这些钱,关键时刻,它能给奥特曼买药补血呀。

奥特曼没有金刚不坏之身,在与怪兽的战斗中,奥特曼会受到伤害。

一旦奥特曼的生命值降到0,它英雄的一生就结束了。

好了,了解了奥特曼的基本情况,现在可以开始战斗了。

首先,我们需要一位全新的奥特曼,我们给它赋予一定的初始实力(initial)。

让它投入战斗吧!

在与怪兽的战斗中要讲究策略。

所谓知己知彼,百战不殆,一旦碰到怪兽,我们首先要查看自己和对方的实力(display),包括双方的等级、生命值、攻击力、经验和所拥有的钱财。

所谓打得赢就打,打不赢就跑。

如果对手太强大,逃跑吧(escape)!

偶尔逃跑无伤颜面,但会耗费一点生命值。

如果总是逃跑,生命被虚耗,那英雄就当不成了。

所以该出手时就出手,勇敢地战斗(attack)吧!

每一回合的战斗中,怪兽会受到攻击(attacked),怪兽也会反击(fightback),让奥特曼受到攻击(attacked)。

每一回合结束,只要奥特曼还活着(isalive),而且怪兽也还活着,战斗就要继续。

如果奥特曼的生命值太低,也许抵挡不了下一轮的进攻,那么别财迷了,掏钱出来给它补血(restore)吧。

当然,如果形势确实不妙,奥特曼也可以中途逃跑。

但如果获得了最终的胜利(win),不仅能赢得战斗经验,夺取怪兽身上的钱财,足够多的经验也许能让奥特曼升级(upgrade)。

三、实验内容

根据以上描述,利用C++语言,定义奥特曼(Ultraman)和怪兽(Monster)两个类。

四、提交材料

1.代码:

两个类的定义代码(成员函数暂时无需给出具体实现)及注释

2.实验报告:

按照实验报告要求完成完整的实验报告。

五、评分标准

1.类定义正确:

10%

2.类属性的正确和完整定义:

20%

3.类方法的正确和完整定义:

20%

4.实验报告各部分完整,无错漏,填写详细,有分析有说明:

50%

实验5:

类的实现

一、实验目的

1.掌握类的实现

2.理解类界面和类实现的分离

二、实验概述

在上一个实验的基础,采用类界面和类实现分离的方式,根据以下描述,改进并实现游戏中的两个类:

奥特曼类和怪兽类。

奥特曼类的方法说明:

1.为每个属性设置get方法。

2.初始化方法将一次性初始化各个属性的取值。

(等级从1开始,生命值为10,攻击力为1,经验值为0,拥有的钱数为0)

3.逃跑将损失1点生命值。

4.攻击将使对方受到自身攻击力大小的伤害,但对方也会采取反击,导致自己受到攻击。

同时,如果对方所剩下的钱数为奇数,可抢夺对方一个钱财。

另外,每攻击一次,可增加一点经验值。

5.受到攻击时,将受到攻击方攻击力值二分之一大小的伤害(即损失相应的生命值)。

即:

受到伤害点数=攻击方攻击力值/2。

6.如果赢得了战斗,将获得攻击方所有经验值。

如果对方身上还有钱财,将全部抢得。

7.如果体力不支,可以用钱恢复一些生命值。

每10个钱可恢复1点生命值。

只要有足够的钱,可以一直恢复,直到达到生命值上限(等级值的10倍)。

8.如果达到升级条件,可以升级。

每次升级需要有等级值的10倍的经验值。

每次升级所使用的经验值都将被扣除,不可重复用于下次升级。

升级将提高生命值上限至新等级值的10倍,生命值将恢复为满血状态,并提升战斗力为新等级值。

怪兽类的方法说明:

1.为每个属性设置get方法。

2.怪兽的初始属性值将随机生成(注意在程序开头包括此处用到两个库:

)。

该方法已实现如下:

voidsetX(){

srand(time(NULL));

rank=rand()%10+1;

hp=(rand()%rank+1)*5;

exp=rand()%rank+1;

damage=rand()%rank+1;

money=rand()%rank+1;

}

3.受到攻击时,将受到攻击方攻击力值大小的伤害(即损失相应的生命值)。

即:

受到伤害点数=攻击方攻击力值。

同时,如果所剩下的钱数为奇数,会被攻击方抢走一个钱财。

4.受到攻击可以反击,将使对方受到自身攻击力二分之一大小的伤害。

三、实验内容

根据以上描述,利用C++语言,采用类界面和类实现分离的方式,首先改进上一实验所设计的奥特曼类和怪兽类。

然后实现两个类的方法。

四、提交材料

1.代码:

两个类的代码及注释

2.实验报告:

按照实验报告要求完成完整的实验报告。

五、评分标准

1.类定义正确:

20%

2.类实现正确:

30%

3.实验报告各部分完整,无错漏,填写详细,有分析有说明:

50%

实验6:

对象的生成与使用

一、实验目的

1.掌握对象的生成和初始化

2.掌握构造函数、拷贝构造函数和析构函数的定义和实现

3.掌握类成员函数调用的方法

4.阅读并理解程序代码

5.编程工具的使用

二、实验内容

1.在已有奥特曼和怪兽类的定义与实现的基础上,对其进行修改,为他们各自添加构造函数、拷贝构造函数和析构函数,实现对象的初始化和析构行为。

2.完成游戏框架,从而形成一个完整的游戏。

请你在以往实验的基础上,阅读main.cpp程序,在画横线的地方加入一句或几句对象生成或类成员函数调用的代码,使得main.cpp程序能够正确运行起来。

#include

#include

usingnamespacestd;

#include"Ultraman.h"

intmain(){

cout<<"欢迎来到奥特曼的世界!

在奥特曼的世界,打怪兽就是全部!

"<

cout<<"现在人人都有机会成为奥特曼,加入到与怪兽无止境的战斗中。

"<

cout<<"可惜,并非人人生来就是英雄,革命尚未成功,同志仍需努力啊。

"<

cout<<"每一个奥特曼都要从零开始,辛勤劳动,打怪升级,最终才能成为举世瞩目的大英雄。

"<

charch1='',ch2='',ch3='';

(1)\\生成奥特曼对象并初始化

while(ch1!

='Y'&&ch1!

='y'&&ch1!

='N'&&ch1!

='n'){

cout<<"输入Y,打怪升级!

"<

cout<<"输入N,退出游戏!

"<

cin>>ch1;

cout<

}

if(ch1=='N'||ch1=='n')

{

cout<<"游戏结束!

"<

exit(0);

}

(2)\\生成怪兽对象并对其属性进行初始化

while(ch1=='y'||ch1=='Y'){

ch1='';

ch2='';

ch3='';

while(ch2!

='u'&&ch2!

='U'&&ch2!

='m'&&ch2!

='M'&&ch2!

='f'&&ch2!

='F'&&ch2!

='e'&&ch2!

='E'){

cout<<"请选择:

"<

cout<<"u:

查看自身状态;";

cout<<"m:

查看对手状态;";

cout<<"f:

打怪兽;";

cout<<"e:

逃跑(将损失一定的生命值)。

"<

cin>>ch2;

cout<

if(ch2=='u'||ch2=='U'){

(3)\\成员函数调用

ch2='';

}

elseif(ch2=='m'||ch2=='M'){

(4)\\成员函数调用

ch2='';

}

elseif(ch2=='e'||ch2=='E'){

(5)\\成员函数调用

if((6)){\\成员函数调用,注意调用形式

cout<<"您英雄的一生结束了!

"<

exit(0);

}

}

elseif(ch2=='f'||ch2=='F'){

(7)\\成员函数调用,怪兽和奥特曼均受到攻击

if((8)){\\成员函数调用,注意调用形式

cout<<"您英雄的一生结束了!

"<

exit(0);

}

if((9)){\\成员函数调用,注意调用形式

cout<<"可...恶...,我还会再来的......"<

cout<<"恭喜你,打败了怪兽!

"<

(10)\\奥特曼获胜,成员函数调用

}

elsech2='';

}

}

(11)\\奥特曼升级,成员函数调用

while(ch3!

='u'&&ch3!

='U'&&ch3!

='y'&&ch3!

='Y'&&ch3!

='n'&&ch3!

='N'){

cout<<"是否用钱补血?

查看自身状态请输入U,补血请输入Y,否则请输入N。

"<

cin>>ch3;

cout<

if(ch3=='u'||ch3=='U'){

(12)\\成员函数调用

ch3='';

}

if(ch3=='y'||ch3=='Y'){

if((13)<10)cout<<"对不起,您钱不够,无法补血!

"<

else(14)\\成员函数调用;

break;

}

if(ch3=='n'||ch3=='N')break;

}

while(ch1!

='y'&&ch1!

='Y'&&ch1!

='n'&&ch1!

='N'){

cout<<"继续打怪升级请输入Y,退出游戏请输入N。

"<

cin>>ch1;

cout<

}

if(ch1=='N'||ch1=='n'){

cout<<"游戏结束!

"<

exit(0);

}

}

}

3.(选做)利用MFC控件设计一个图形化游戏框架,从而形成一个完整的游戏。

三、提交材料

1.代码:

两个类的添加构造和析构函数,主程序框架代码完整,无错误。

2.可执行程序:

利用编程工具,生成可执行程序。

3.实验报告:

按照实验报告要求完成完整的实验报告。

四、评分标准

1.构造和析构函数正确:

20%

2.主程序代码完整正确:

20%

3.程序可以正确执行:

20%

4.实验报告各部分完整,无错漏,填写详细,有分析有说明:

40%

5.完成图形化游戏框架:

+20%

实验7运算符重载

一、实验目的

1.掌握运算符重载的定义和使用

2.理解成员访问运算符和非成员运算符、前缀式运算符和后缀式运算符。

二、实验内容

每个奥特曼和怪兽都有自己的生命值、攻击力、经验和钱财。

在游戏场景中,还会随机产生各种魔法袋,奥特曼可以捡起这些魔法袋,对自己施加不同的魔法。

魔法袋的种类和功能描述如下:

1.“好事成双”魔法袋:

使自己的生命值、攻击力、经验和钱财翻倍。

2.“祸不单行”魔法袋:

使自己的生命值、攻击力、经验和钱财缩减为原来的一半。

3.“吸星大法”魔法袋:

随机选择游戏中比等级、生命值、攻击力、经验和钱财均比自己低的某个奥特曼,将其生命值、攻击力、经验和钱财吸收一半。

4.“有缘相会”魔法袋:

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1