文档库 最新最全的文档下载
当前位置:文档库 › c++实训报告---飞机大战

c++实训报告---飞机大战

c++实训报告---飞机大战
c++实训报告---飞机大战

目录

1. 概述 (2)

1.1 实训项目简介 (2)

1.2 实训功能说明 (2)

1.2.1 基本功能 (2)

1.2.2 附加功能 (2)

2. 相关技术 (3)

2.1 Windows定时器技术 (3)

2.2 透明贴图实现技术 (3)

2.3 CObList链表 (4)

2.4获取矩形区域 (5)

2.5使用AfxMessageBox显示游戏过程中的提示信息 (5)

2.6内存释放 (5)

2.7 CImageList处理爆炸效果 (5)

2.8对话框的应用 (5)

3. 总体设计与详细设计 (6)

3.1 系统模块划分 (6)

3.2 主要功能模块 (7)

3.2.1 系统对象类图 (7)

3.2.2 系统主程序活动图 (8)

3.2.3 系统部分流程图 (8)

4. 编码实现 (11)

4.1 绘制游戏背景位图程序 (11)

4.2 飞机大战游戏对象的绘制程序 (12)

4.3 飞机大战游戏对象战机位置的动态控制 (14)

4.4 飞机大战游戏对象之间的碰撞实现 (16)

4.5 游戏界面输出当前信息 (18)

5. 项目程序测试 (19)

5.1战机移动及子弹发射模块测试 (19)

5.2 敌机及炸弹模块测试 (20)

5.3 爆炸模块测试 (20)

6. 实训中遇到的主要问题及解决方法 (20)

7. 实训体会 (20)

1. 概述

1.1 实训项目简介

本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅、游戏方式简单,玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是MFC编程中的一些函数、链表思想以及贴图技术。

1.2 实训功能说明

1.2.1 基本功能

(1)设置一个战机具有一定的速度,通过键盘,方向键可控制战机的位置,空格键发射子弹。

(2)界面中敌机出现的位置,以及敌机炸弹的发射均为随机的,敌机与敌机炸弹均具有一定的速度,且随着关卡难度的增大,数量和速度均增加。

(3)对于随机产生的敌机和敌机炸弹,若超过矩形区域,则释放该对象。

(4)添加爆炸效果,包括战机子弹打中敌机爆炸、敌机炸弹打中战机爆炸、战机与敌机相撞爆炸以及战机子弹与敌机炸弹相撞爆炸四种爆炸效果。且爆炸发生后敌机、子弹、炸弹均消失,战机生命值减一。

1.2.2 附加功能

(1)为游戏界面添加了背景图片,并在战机发射子弹、战机击中敌机、敌机击中战机、以及战机敌机相撞时均添加了背景音效。

(2)为游戏设置了不同的关卡,每个关卡难度不同,敌机与敌机炸弹的速度随着关卡增大而加快,进入第二关以后敌机从上下方均会随机出现,且随机发射炸弹。

(3)第一关卡敌机从上方飞出,速度一定,战机每打掉一直敌机则增加一分,每积十分,则为战机增加一个生命值,当战机得分超过50分则可进入下一关;进入第二、三关时敌机速度加快,分别从上下两方飞出,此时战机每得分20、30分,才会增加一个生命值,得分超过100、150分则进入下一关、通关。

(4)在游戏界面输出当前游戏进行信息,包括当前得分、当前关卡以及击中敌机数量。

(5)增加了鼠标控制战机位置这一效果,战绩的位置随着鼠标的移动而移动,并且点击鼠标左键可使得战机发射子弹。

(6)实现了暂停游戏的功能,玩家可通过键盘上的‘Z’键,对游戏进行暂停。

(7)通过对话框的弹出可提示玩家是否查看游戏说明、是否进入下一关、是否重新开始等消息,使得玩家可自己选择。

2. 相关技术

2.1 Windows定时器技术

Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。程序将时间间隔告诉Windows,然后Windows给您的程序发送周期性发生的WM_TIMER消息以表示时间到了。本程序中使用多个定时器,分别控制不同的功能。在MFC 的API函数中使用SetTimer()函数设置定时器,设置系统间隔时间,在OnTimer()函数中实现响应定时器的程序。

2.2 透明贴图实现技术

绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。

在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。整个功能的实现过程如下:

(1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图;

(2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中;

(3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色;

(4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述表中存放的位图与位图设备描述表中的位图一样;

(5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;

(6) 把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作;

(7) 重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;

(8) 最后把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指针,最后把新建的设备描述表也删除。

2.3 CObList链表

MFC类库中提供了丰富的CObList类的成员函数,此程序主要用到的成员函数如下:

(1) 构造函数,为CObject指针构造一个空的列表。

(2) GetHead(),访问链表首部,返回列表中的首元素(列表不能为空)。

(3) AddTail(),在列表尾增加一个元素或另一个列表的所有元素。

(4) RemoveAll(),删除列表中所有的元素。

(5) GetNext(),返回列表中尾元素的位置。

(6) GetHeadPosition(),返回列表中首元素的位置。

(7) RemoveAt(),从列表中删除指定位置的元素。

(8) GetCount(),返回列表中的元素数。

在CPlaneGameView.h文件中声明各游戏对象与游戏对象链表:

(1)//创建各游戏对象

CMyPlane *myplane;

CEnemy *enemy;

CBomb *bomb;

CBall *ball;

CExplosion *explosion;

(2)//创建存储游戏对象的对象链表

CObList ListEnemy;

CObList ListMe;

CObList ListBomb;

CObList ListBall;

CObList ListExplosion;

2.4获取矩形区域

首先,使用CRect定义一个对象,然后使用GetClientRect(&对象名)函数,获取界面的矩形区域rect.Width() 为矩形区域的宽度,rect.Height()为矩形区域的高度。

使用IntersectRect(&,&))函数来判断两个源矩形是否有重合的部分。如果有不为空,则返回非零值;否则,返回0。

2.5使用AfxMessageBox显示游戏过程中的提示信息

AfxMessageBox()是模态对话框,你不进行确认时程序是否往下运行时,它会阻塞你当前的线程,除非你程序是多线程的程序,否则只有等待模态对话框被确认。

在MFC中,afxmessagebox是全局的对话框最安全,也最方便。

2.6内存释放

在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃。及时的释放程序所占用的内存资源是非常重要的。

在程序中使用到的链表、刷子等占用内存资源的对象都要及时的删除。Delete Brush,List.removeall()等。

2.7 CImageList处理爆炸效果

爆炸效果是连续的显示一系列的图片。如果把每一张图片都显示出来的话,占用的时间是非常多的,必然后导致程序的可行性下降。CImageList是一个“图象列表”是相同大小图象的集合,每个图象都可由其基于零的索引来参考。可以用来存放爆炸效果的一张图片,使用Draw()函数来绘制在某拖拉操作中正被拖动的图象,即可连续绘制出多张图片做成的爆炸效果。

2.8对话框的应用

在设置游戏难度、炸弹的速度等,使用对话框进行设置非常方便,又体现出界面的友好。

对话框的应用过程如下:

(1). 资源视图下,添加Dialog对话框。然后添加使用到的控件,并修改控件的ID以

便于后面的使用。

(2). 为对话框添加类,在对话框模式下,点击项目,添加类。

(3). 在类视图中,为对话框类添加成员变量(控件变量)。设置变量的名称、类型、最值等信息。

(4). 在资源视图菜单中,选择相应的菜单项,右击添加时间监听程序,设置函数处理程序名称。

(5). 在处理程序函数中添加相应的信息。

3. 总体设计与详细设计

3.1 系统模块划分

该飞机大战游戏程序分为游戏背景位图绘制模块、各游戏对象绘制模块、游戏对象之间的碰撞模块、爆炸效果产生模块、游戏界面输出玩家得分关卡信息模块。

其中在游戏对象绘制模块中,战机是唯一对象,在游戏开始时产生该对象,赋予其固定的生命值,当其与敌机对象、敌机炸弹碰撞时使其生命值减一,直至生命值为零,便删除战机对象。敌机对象与敌机炸弹对象的绘制中采用定时器技术,定时产生。爆炸对象初始化为空,当游戏过程中即时发生碰撞时,在碰撞位置产生爆炸对象,添加到爆炸链表中。

3.2 主要功能模块

3.2.1 系统对象类图

CGameObject是各个游戏对象的抽象父类,继承自CObject类,其他的类:战机类、敌机类、爆炸类、子弹类、炸弹类、文字类都继承了此类。

每个游戏对象类中既继承了来自父类CGameObject的属性,又有自己的特有属性和方法。

3.2.2 系统主程序活动图

3.2.3 系统部分流程图

(1) 该飞机大战游戏执行流程图:

(2) 利用定时器定时产生敌机并绘制敌机流程图

4. 编码实现

4.1 绘制游戏背景位图程序

CDC *pDC=GetDC();

//获得矩形区域对象

CRect rect;

GetClientRect(&rect);

//设备环境对象类----CDC类。

CDC cdc;

//内存中承载临时图像的位图

CBitmap bitmap1;

//该函数创建一个与指定设备兼容的内存设备上下文环境(DC)

cdc.CreateCompatibleDC(pDC);

//该函数创建与指定的设备环境相关的设备兼容的位图。

bitmap1.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());

//该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。

CBitmap *pOldBit=cdc.SelectObject(&bitmap1);

//用固定的固体色填充文本矩形框

cdc.FillSolidRect(rect,RGB(51,255,255));

//添加背景图片

CBitmap bitmap_BackGround;

bitmap_BackGround.LoadBitmap(IDB_BACKGROUND);

BITMAP bimap2;//位图图像

bitmap_BackGround.GetBitmap(&bimap2);

CDC cdc_BackGround;//定义一个兼容的DC

cdc_BackGround.CreateCompatibleDC(&cdc);//创建DC

CBitmap*Old=cdc_BackGround.SelectObject(&bitmap_BackGround);

cdc.StretchBlt(0,0,rect.Width(),rect.Height(),&cdc_BackGround,0,0,bimap2.bmWidth,bimap 2.bmHeight,SRCCOPY);

4.2 飞机大战游戏对象的绘制程序

//画战机对象(唯一)

if(myplane!= NULL)

{

myplane->Draw(&cdc,TRUE);

}

//设置定时器,随机添加敌机,敌机随机发射炸弹,此时敌机速度与数量和关卡有关SetTimer(2,300,NULL);//敌机产生的定时器

SetTimer(3,500,NULL);//敌机炸弹产生的定时器

if(myplane!=NULL&& is_Pause == 0)

{

switch(nIDEvent)

{

case 2://设置定时器产生敌机

{

if(pass_Num == 1)//第一关

{

int motion =1;//设置敌机的方向,从上方飞出

CEnemy *enemy=new CEnemy(motion);

ListEnemy.AddTail(enemy);//随机产生敌机

}//if

else if(pass_Num >= 2)//第一关以后的关卡

{

int motion1 = 1; //设置敌机的方向,从上方飞出

CEnemy *enemy1=new CEnemy(motion1);

enemy1->SetSpeed_en((rand()%5 +1)* pass_Num);

ListEnemy.AddTail(enemy1);//随机产生敌机

int motion2 = -1;//设置敌机的方向,从下方飞出

CEnemy *enemy2=new CEnemy(motion2);

enemy2->SetSpeed_en((rand()%5 +1)* pass_Num);

ListEnemy.AddTail(enemy2);//随机产生敌机

}//else if

}//case

break;

}//switch

//判断产生的敌机是否出界,若已经出界,则删除该敌机POSITION posEn=NULL,posEn_t=NULL;

posEn=ListEnemy.GetHeadPosition();

int motion = 1;

while(posEn!=NULL)

{

posEn_t=posEn;

CEnemy *enemy= (CEnemy *)ListEnemy.GetNext(posEn);

//判断敌机是否出界

if(enemy->GetPoint().xGetPoint().x>rect.right ||enemy->GetPoint().yGetPoint().y>rect.bottom) {

ListEnemy.RemoveAt(posEn_t);

delete enemy;

}//if

else

{

enemy->Draw(&cdc,TRUE);

switch(nIDEvent)

{

case 3://设置定时器产生敌机炸弹

{

CBall*ball=newCBall(enemy->GetPoint().x+17,

enemy->GetPoint().y+30,enemy->GetMotion());

ListBall.AddTail(ball);

}//case

break;

}//switch

}//else

}//while

//判断产生的敌机炸弹是否出界,若已经出界,则删除该敌机炸弹

POSITION posball=NULL,posball_t=NULL;

posball= ListBall.GetHeadPosition();

while(posball!=NULL)

{

posball_t=posball;

ball= (CBall *) ListBall.GetNext(posball);

if( ball->GetPoint().xGetPoint().x>rect.right

|| ball->GetPoint().yGetPoint().y>rect.bottom) {

ListBall.RemoveAt(posball_t);

delete ball;

}//if

else

{

ball->Draw(&cdc,1);

}//else

}//while

}//if

4.3 飞机大战游戏对象战机位置的动态控制

if(myplane!= NULL)

{

myplane->Draw(&cdc,TRUE);

}

//获得键盘消息,战机位置响应,战机速度speed为30

if((GetKeyState(VK_UP) <0 || GetKeyState('W') < 0) && is_Pause== 0)//上方向键

{

if(myplane->GetPoint().y

myplane->SetPoint( myplane->GetPoint().x,rect.bottom);

else

myplane->SetPoint(myplane->GetPoint().x,( myplane->GetPoint().y - speed) );

}//if

if((GetKeyState(VK_DOWN) <0|| GetKeyState('S') < 0)&& is_Pause== 0)//下方向键{}//if if((GetKeyState(VK_LEFT) <0|| GetKeyState('A') < 0)&& is_Pause== 0)//左方向键{}//if if((GetKeyState(VK_RIGHT) <0|| GetKeyState('D') < 0)&& is_Pause== 0)//右方向键{}//if if((GetKeyState(VK_SPACE)<0)&& is_Pause== 0)//空格键代表战机发射子弹

{

//向子弹链表中添加子弹对象

CBomb *BombOne=new CBomb( myplane->GetPoint().x, myplane->GetPoint().y,1);

ListBomb.AddTail(BombOne);

CBomb*BombTwo=newCBomb(myplane->GetPoint().x+35, myplane->GetPoint().y,1);

ListBomb.AddTail(BombTwo);

PlaySound((LPCTSTR)IDR_WA VE2,AfxGetInstanceHandle(),SND_RESOURCE

|SND_ASYNC);

}//if

if(GetKeyState('Z')<0)

{

is_Pause += 1;

if(is_Pause != 1)

is_Pause=0;

}//if

//鼠标控制战机

void CPlaneGameView::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CView::OnMouseMove(nFlags, point);

if(is_Pause == 0)

myplane->SetPoint(point.x,point.y);

}

//鼠标控制战机,发射战机子弹

void CPlaneGameView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CView::OnLButtonDown(nFlags, point);

if( is_Pause == 0)

{

CBomb *BombOne=new CBomb( myplane->GetPoint().x, myplane->GetPoint().y,1);

PlaySound((LPCTSTR)IDR_WA VE2, AfxGetInstanceHandle(), SND_RESOURCE |SND_ASYNC);

ListBomb.AddTail(BombOne);

CBomb *BombTwo=new CBomb( myplane->GetPoint().x+35, myplane->GetPoint().y,1);

ListBomb.AddTail(BombTwo);

}

}

4.4 飞机大战游戏对象之间的碰撞实现

本飞机大战游戏中的碰撞考虑了飞机子弹打中敌机、敌机炸弹打中战机、战机与敌机相撞、敌机炸弹与战机子弹相撞四种情况,根据游戏对象的矩形区域是否有交叉,而确认两者是否相撞,而产生爆炸对象,添加到爆炸链表中。以战机与敌机相撞为例:

if(myplane != NULL&& is_Pause== 0)

{

POSITION enemyPos,enemyTemp;

for(enemyPos= ListEnemy.GetHeadPosition();(enemyTemp=enemyPos)!=NULL;) {

enemy =(CEnemy *) ListEnemy.GetNext(enemyPos);

//获得敌机的矩形区域

CRect enemyRect = enemy->GetRect();

//获得战机的矩形区域

CRect myPlaneRect = myplane->GetRect();

//判断两个矩形区域是否有交接

CRect tempRect;

if(tempRect.IntersectRect(&enemyRect,myPlaneRect))

{

CExplosion *explosion = new CExplosion( enemy->GetPoint().x+18 ,

enemy->GetPoint().y + 18);

PlaySound((LPCTSTR)IDR_WA VE,AfxGetInstanceHandle(),

SND_RESOURCE |SND_ASYNC);

ListExplosion.AddTail(explosion);

//战机生命值减一

lifeNum_Me--;

//删除敌机

ListEnemy.RemoveAt(enemyTemp);

delete enemy;

if(lifeNum_Me == 0)

{

//删除战机对象

delete myplane;

myplane=NULL;

}//if

break;

}//if

}//for

}//if

战机子弹打中敌机、敌机炸弹打中战机以及战机子弹与敌机炸弹对象的碰撞实现同上。

4.5 游戏界面输出当前信息

if(myplane != NULL&& is_Pause== 0)

{

HFONT font;

font=CreateFont(20,10,0,0,0,0,0,0,0,0,0,100,10,0);

cdc.SelectObject(font);

CString str;

cdc.SetTextColor(RGB(255,0,0));

str.Format(_T("当前关卡:%d"),pass_Num);

cdc.TextOutW(10,20,str);

str.Format(_T("当前得分:%d"),score_Me);

cdc.TextOutW(10,40,str);

str.Format(_T("剩余生命:%d"),lifeNum_Me);

cdc.TextOutW(10,60,str);

}//if

if(myplane !=NULL && lifeNum_Me >0)

{

if(score_Me > 10*count_Life*pass_Num)

{

lifeNum_Me++;//生命值加1

count_Life++;//已增加生命值加1

}

}

游戏进入下一关,以及结束游戏界面设计代码与上类似。

5. 项目程序测试

5.1战机移动及子弹发射模块测试

6. 实训中遇到的主要问题及解决方法

(1)由于对C++的面向对象的思想和逻辑思路不熟悉,不明白其中的封装之类的以及多态的思想,致使开始真正的进入实训接触到项目时没有开发思路,通过逐步查询书籍整理C++面向对象编程思路,才逐步理清项目的开发步骤。

(2)本飞机大战的游戏要求使用链表实现各游戏对象的存储和释放,由于链表知识掌握的不牢固,使用起来总是出现这样那样的错误,给整个游戏开发带来了很大的障碍,通过不断的调试修改,最终使程序正确运行。

(3)在绘制各种游戏对象—敌机和敌机炸弹时,开始使用随机函数,画出敌机时而很少,总是打不到预定的效果,后来经过修改使用定时器产生敌机和敌机炸弹,使整个游戏更加人性化。

7. 实训体会

(1)在本次飞机大战游戏项目的开发过程中遇到很多问题,大部分是因为对MFC编程的不熟悉以及链表掌握不牢固所导致的。

(2)MFC编程中有很多可以直接调用的函数,由于之前缺乏对这方面编程的经验,以至于本次项目开发过程中走了很多弯路。

(3)通过寻求老师和同学的帮助,解决了开发中遇到的很多问题,也提升了自己调试错误的能力。

(4)通过本次实训,使我熟悉了MFC编程技术、巩固了链表的使用方法并加深了对面向对象编程思想的理解,对以后程序的编写打下了良好的基础。

java实训报告总结

java实训报告总结 java实训报告总结 作为就业培训,项目的好坏对培训质量的影响十分大,常常 是决定性的作用。这篇文章是关于在学习JAVA软件开发时练习项 目的总结,简单总结为以下几点:作为就业培训,项目的好坏对 培训质量的影响十分大,常常是决定性的作用。这篇文章是关于 在学习JAVA软件开发时练习项目的总结,简单总结为以下几点:1、项目一定要全新的项目,不能是以前做过的2、项目一定要企 业真实项目,不能是精简以后的,不能脱离实际应用系统3、在开发时要和企业的开发保持一致4、在做项目的时候不应该有参考代码长话短说就是以上几点,如果你想要的了解,可以继续往后看。一:项目的地位因为参加就业培训的学员很多都是有一定的计算 机基础,大部分都具备一定的编程基础,尤其是在校或者是刚毕 业的学生,多少都有一些基础。他们欠缺的主要是两点:(1)不 能全面系统的、深入的掌握某种技术,也就是会的挺多,但都是 皮毛,不能满足就业的需要。(2)没有任何实际的开发经验,完 全是想象中学习,考试还行,一到实际开发和应用就歇菜了。解 决的方法就是通过项目练习,对所学知识进行深化,然后通过项 目来获取实际开发的经验,从而弥补这些不足,尽快达到企业的 实际要求。二:如何选择项目项目既然那么重要,肯定不能随随 便便找项目,那么究竟如何来选择呢?根据Java的研究和实践经

验总结,选择项目的时候要注意以下方面:1:项目不能太大,也 不能太小这个要根据项目练习的阶段,练习的时间,练习的目标 来判断。不能太大,太大了做不完,也不能太小,太小了没有意义,达不到练习的目的。2:项目不能脱离实际应用系统项目应该 是实际的系统,或者是实际系统的简化和抽象,不能够是没有实 战意义的教学性或者是纯练习性的项目。因为培训的时间有限, 必须让学员尽快地融入到实际项目的开发当中去。任何人接受和 掌握一个东西都需要时间去适应,需要重复几次才能够真正掌握,所以每个项目都必须跟实际应用挂钩。 3:项目应能覆盖所学的 主要知识点学以致用,学完的知识点需要到应用中使用,才能够 真正理解和掌握,再说了,软件开发是一个动手能力要求很高的 行业,什么算会了,那就是能够做出来,写出代码来,把问题解 决了,你就算会了。4:最后综合项目一定要是实际应用系统学员 经过这个项目的练习,就要走上实际的工作岗位了,如果这个系 统还达不到实际应用系统的标准,学员练习过后也还是达不到企 业实际的需要,那么这个培训应该说质量就不高了。理想的状况 是这个项目就是实际项目,到时候学员就业到另外一个公司,不 过是换个地方干活而已,完全没有技能上的问题。 123456下一页java实训报告总结 三:Java怎么选择项目这个不是靠想象,而是根据实际的情 况一步一步分析出来的(呵呵要卖弄一下:这也算是逻辑思维),当然这里只是讨论方法,不涉及具体的项目案例。我们可以采用

成本会计实训报告总结

成本会计实训报告总结 《成本会计》 实训报告 班级:财务1102B 学号: xx030370408 姓名:芦靖 一、实训目的 成本会计是一门实践性很强的学科,不通过实际训练、操作,很 难提高实际分析与解决问题的能力。因此,我们不仅需要掌握成本会计核算的理论与方法,更需要在实践中学会针对特定的企业环境进行准确的成本核算与客观理性的成本分析,为企业管理者提供更加有效的成本信息。为了让我们能够更好的了解会计在实际工作中的工作内容,以便于实际与理论相结合,也更能够适应社会的要求,了解成本核算在实际工作的重要性,学校开展了为期两周的成本会计实训课程。学校希望通过这次成本会计实训课程的训练,我们都能够对会计有一

个更新更深层次的认识,以便于我们能懂得会计作账的基本流程,从而在今后的工作中具有较强的实际动手操作能力。 这次成本会计实训采用了两个实际案例模拟企业的经营环境,分别涉及了分批和分类两种法,我们需要将分批法、分类法所用的各种费用分配表和明细账结合起来,这不仅能够使我们掌握成本核算基本方法的特点,还进一步理解了产品成本计算的基本原理。同时还能使我们熟练掌握分批法和分类法核算的会计处理,提高并加快了我们的动手能力,做到理论联系实际,增强感性认识,全面地理解制造企业中成本核算的整个流程。在实训的过程中还培养了我们认真细致、严谨客观的工作作风和理论联系实践的学习态度。 二、实训过程 1、熟悉资料,设置各种帐簿,登记起初余额。 由于我们这次实训课程不用编制总账和财务报表,因此任务量在一定程度上有所减轻。 2、根据经济业务,填制记帐凭证。并附上原始凭证。

要想登记记账凭证,首先需要做的就是编制会计分录,而在编制会计分录的过程中不得不重视以下几点: (1)各种成本费用的归集与分配。 生产成本的归集与分配是本次实训的重头戏,是中心环节。成本归集与分配过程实际上就是成本计算过程。在本次实训中,我们按照成本核算的基本程序,先后对材料费用、职工薪酬、基本生产成本、辅助生产成本、制造费用、完工产品等进行了练习。 a、材料费用方面。用于生产产品的原材料及主要材料,可根据领料单直接计入各种产品成本的“直接材料”项目。 b、人工费用方面。应按成本项目进行归集,生产工人的计入生产成本,车间管理人员的计入制造费用,厂部管理部门的计入管理费用等。 c、辅助生产费用。是为企业的基本生产服务而发生的费用,最终要分摊到各受益单位。

飞机大战实验报告

飞机大战实验报告 专业:网络工程132班 学号:139074298 姓名:孙仁强 计算机科学与技术学院二零一六年十二月

一、软件运行所需要的软硬件环境 本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。本机器的配置如下: 处理器:CORE i7 主频:1.2Hz以上 内存:4G以上 硬盘:HHD 50G 编程语言:Java 开发环境:windows7 开发软件:Eclipse Mars 二、游戏流程 1.用户打开游戏,进入开始菜单。 2.用户点击开始游戏按钮,进入游戏界面; 3.用户通过触屏方式控制玩家飞机上下左右移动,躲避与子弹相撞; 4.游戏失败后,显示本次游戏得分,用的秒数和水平; 5.退出游戏 三、主要代码 1、准备代码设置窗口使用双缓冲使飞机不闪烁 Constant设置窗口大小 package com.ahut.准备代码; publicclass Constant { publicstaticfinalint GAME_WIDTH = 350; publicstaticfinalint GAME_HEIGHT = 600; } package com.ahut.准备代码; import java.awt.Image; import java.awt.image.BufferedImage;

import java.io.IOException; import https://www.wendangku.net/doc/352348899.html,.URL; public class GameUtil { private GameUtil () {} public static Image getImage(String path) { BufferedImage bi = null; try { URL u = GameUtil.class.getClassLoader().getResource(path); bi = javax.imageio.ImageIO.read(u); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bi; } } package com.ahut.准备代码; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyFrame extends Frame{ public void lauchFrame() { setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT); setLocation(100, 100); setVisible(true); new PaintThread().start(); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); }

成本会计实训心得体会3篇

成本会计实训心得体会3篇 成本会计实训心得体会一: 经过几周漫长的实训,让我个人认为会计对与男生而言真的有种苦不堪言的味道。从一开始的做会计分录,到登记凭证。然后再到登记帐簿,再是结帐,对帐,编制报表,装订等一系列烦琐由几个人的工作由一个人来完成,其中的酸甜苦辣,只有经历过了,才真真正正了解到什么是会计。原来会计的工作并没有想象中的那么简单,那么清闲。 还记得,在刚开始做会计分录时,自己由于在电台要准备节目,所以周一到周三的那段时间一直忙于那些工作。于是准备在周四完成会计分录的工作。可是偏偏党老师周五的课换到了周四下午,顿时让我一脸茫然。虽说自己在上学期基会学的是相当不错,给一个题目,2秒钟分录立马脱口而出,可是让我在很快的时间完成40多道分录,还要手写,不太现实。于是干脆等老师讲完自己直接边编分录边编制凭证。于是2个阶段的工作,李晔在一个阶段就完成了! 接下来,就是登记帐簿了,如果说前一阶段的工作还是我的强项的话,这一阶段顿时让我傻了眼,不是自己不会,而是那些烦琐的工作,实在让人着急。要根据凭证一笔一笔登记不同的帐簿,什么总帐、明细分类帐、三栏式等等一系列帐,真是着急。看着这么一厚搭凭证。。。苦的还在后边,尤其在写数字时,写错一个,都要用刀片去刮,稍微用力,纸就破了。这不仅是考验我们的耐心,更是需要我们的细心。

另外,做这些帐,首先要分清哪些业务该登那些帐簿,稍微疏忽,一帐帐页就报废了。还有,最后结帐时要一笔一笔计算每个类型的结果,一大堆数字加加减减,真是做的头大! 成本会计 后来,编制会计报表就简单了许多,由于前期大量的工作,后期只要根据帐簿将会计报表一一编制就行了,当然还是离不开我们的细心。 最后的任务就是将会计的帐页分类装订,凭证等一系列材料整理归类,基本任务就初步完成了! 成本会计实训心得体会二: 一、实训目的: 《基础会计》、《中级财务会计》等课程具有很强的实践性和可操作性,通过这些课程的学习和会计方面的实训,学生对七种会计核算方法和会计模拟操作有一个基本的了解,为使学生对教学中较深的财务会计理论内容有一个较好的掌握,达到会计相关课程设置的目的和要求,安排了这次会计手工综合模拟实训,从而完善课堂教学内容,提高学生动手操作的基本技能,使学生更好地掌握从编制凭证开始到登记帐簿直到编制会计报表这一会计核算过程,提高学生的实践能力,突出高职学生的重实践,强技能的特色。 二、实训步骤 1、熟悉资料,设置各种帐簿,登记起初余额。 2、根据经济业务,填制记帐凭证。 3、根据凭证登记帐簿。

飞机大战MFC实验报告

实训报告 飞机大战游戏设计与开发

目录 1. 概述 (4) 2. 相关技术 (4) 2.1 透明贴图技术 (4) 2.2 CObList链表 (4) 2.3获取矩形区域函数 (4) 2.4弹出对话框函数 (5) 2.5字体的个性化输出函数 (5) 2.6设置定时器 (5) 2.7双缓冲技术 (5) 2.8 内存释放技术 (6) 2.9对话框中添加动态按钮 (6) 2.10检测方向键按下 (6) 3. 需求分析(用结构化方法或面向对象方法给出系统的主要需求模型) (6) 3.1功能需求分析 (6) 3.2 数据需求分析 (7) 3.3 行为需求分析 (7) 3.4 其他需求 (8) 4. 总体设计与详细设计 (8) 4.1 系统模块划分 (9) 4.2 主要功能模块 (10) 4.3 扩展功能设计思路 (10) 5. 编码实现 (11) 5.1游戏初始创建 (11) 5.2定时器 (11) 5.3背景及游戏开始、结束界面绘制函数 (11) 5.4键盘控制函数 (12) 5.5游戏对象进行碰撞测试和碰撞销毁 (13) 5.6创建动态按钮(开始游戏、游戏规则) (13) 5.6重新开始游戏代码 (14) 5.7设置游戏难度代码 (14) 5.8游戏结束时释放资源函数 (15) 5.9调整对话框大小函数 (15) 5.10开始界面背景绘制函数 (15) 5.11选择下一关卡以及选择完成后的执行代码 (16) 6.测试情况说明。 (17) 6.1主要模块测试情况(白盒) (17) 6.11各游戏对象碰撞检测爆炸模块测试 (17) 6.12战机导弹的方向速度模块测试 (17) 6.13文字显示,游戏结束和关卡进入模块测试 (18) 6.14设置游戏难度和重新开始模块测试 (18) 6.2 主要功能测试情况(黑盒) (18)

C语言程序设计实验报告(完整版)

报告编号:YT-FS-4244-21 C语言程序设计实验报告 (完整版) After Completing The T ask According To The Original Plan, A Report Will Be Formed T o Reflect The Basic Situation Encountered, Reveal The Existing Problems And Put Forward Future Ideas. 互惠互利共同繁荣 Mutual Benefit And Common Prosperity

C语言程序设计实验报告(完整版) 备注:该报告书文本主要按照原定计划完成任务后形成报告,并反映遇到的基本情况、实际取得的成功和过程中取得的经验教训、揭露存在的问题以及提出今后设想。文档可根据实际情况进行修改和使用。 实验名称计算出1000以内10个素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和 witch语句格式及使用方法,掌握if语句中的嵌套关 系和匹配原则,利用if语句和switch语句实现分支 选择结构。 2、熟练掌握while语句、do…while语句和for 语句格式及使用方法,掌握三种循环控制语句的循环 过程以及循环结构的嵌套,利用循环语句实现循环结 构。 3、掌握简单、常用的算法,并在编程过程中体验 各种算法的编程技巧。进一步学习调试程序,掌握语 法错误和逻辑错误的检查方法。

实验内容 计算并输出1000以内的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 Main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数 */ { int t,i;

java实习报告范文3篇

java实习报告范文3篇 Java是一种可以撰写跨平台应用程序的面向对象的程序设 计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。*是为大家整理的java实习报告范文,仅供参考。 java实习报告范文篇一: 对于任何一位大学毕业生来说,毕业实习是一个很关键的学习内容,也是一个很好的锻炼机会,也是我们直接接触社会的机会。对于我们来说,平常学到的都是书面上的知识,而毕业实习正好就给了我们一个在投身社会工作之前把理论知识与实际设 计联系起来的机会,毕业实习作为学校为我们安排的在校期间最后一次全面性、总结性的教学实践环节,它既让我们看到实际的中设计生产状况,也我们在就业之前“实战预演”,通过实习能够使我们更好的完善自己,也为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。 一、前言 实习时间:20__年_月_日---20__年_月_日 实习地点:河北中信联信息技术有限公司软件开发实习生

实习目的:通过实习,培养学生树立理论联系实际的工作作风,以及工作中将科学的理论知识加以验证、深化、巩固和充实,并培养学生进行调查、研究、分析和解决实际问题的能力,也是接受一次系统而深刻的专业思想教育,增强从事与本专业相关工作的责任心和光荣感,提高综合运用所学专业知识和基本技能的水平,培养从事软件开发相关工作的能力。理论联系实际,掌握一定的工作能力,积累社会工作经验,了解社会,增长见识,提高与别人和谐相处和协同合作的能力,提高自身的综合素质。 实习任务:了解软件开发所用基础知识,掌握软件开发的基本技术,学习软件开发的基础知识及开发流程和有用的相关技术,提高自己的工作效率。通过实习,巩固大学所学专业的基本知识,提高分析、判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解软件开发的思考角度和主要流程。工作的方法:首先学习java基础知识及HTML、JDBC、JSP和SERVLET,理解MVC设计模式,学习SSH三大框架:Struts、Hibernate和Spring还有这些知识的项目实践练习,熟悉公司软件开发的流程及相关知识,以及相关工具的使用,学习安装卸载配置和维护软件开发运行的环境,最后进入实例操作,参加实际项目开发,巩固和熟练所学到的知识。所取得的主要结果:一个多月的实习,让自己走进了一个全新的领域,开始了自己踏入社会的第一步。实习无所谓结果而言,更确切的说,它是一个新起点,一个让自己学会成长的地方,当然也确实让自己成

《成本会计》实训总结3篇

《成本会计》实训总结3篇 成本会计实训总结(一) 实训地点新楼205 实训资料材料费用的归集和分配、外购动力的归集和分配、工资费用的归集和分配、折旧费用的归集和分配、辅助生产费用的归集和分配、制造费用的归集和分配、生产费用在完工产品与在产品之间的分配、品种法核算、分批法核算。 实习目的了解成本核算的基本程序,熟练运用各种成本计算方法,提高成本核算的实际操作本事,巩固会计学基本理论知识,为以后的学习和工作打下良好的基础。 实训过程 一、生产成本的归集与分配是本次实习的中心环节。成本归集与分配过程实际上就是成本计算过程。在本次实习中,我们按照成本核算的基本程序,先后对材料费用、外购动力、职工薪酬、折旧费用、辅助生产费用、制造费用、生产费用在完工产品和在产品之间的分配等七个方面进行了练习。 1、材料费用方面,用于生产产品的原材料及主要材料,通常是按照产品分别领用的,可根据领料凭证登记领料凭证汇总表,根据领料凭证汇总表编制材料费用分配表和低值易耗品摊销表,直接计入

各种产品成本的“直接计入”项目,但有时一批材料为几种产品共同使用,应根据必须的分配方法分配计入各产品成本。 2、外购动力方面,根据各部门用电汇总表、付款通知单及生产工时情景表,编写外购动力费用表。其中生产用时按生产工时在甲乙丙产品间进行分配。 3、人工费用方面,分配工资和福利费应划清计入产品成本与期间费用和不计入成本和期间费用的工资和福利费的界限,应按成本项目进行归集,生产工人的计入生产成本,车间管理人员的计入制造费用,厂部管理部门的计入管理费用等,若生产多种产品,应按必须的方法进行分配后分别计入各成本项目。 4、折旧费用,折旧额等于固定资产原值乘以月折旧率。 5、辅助生产费用,是为企业的基本生产服务而发生的费用,最终要分摊到各受益单位在本次实习中,主要运用交互分配法对供气车间和机修车间发生的生产费用进行分配,还有直接分配法和计划成本分配法归集和分配。交互分配法分配辅助生产费用要分两次进行 (1)、交互分配以(总费用总劳务量)作为分配率在辅助生产车间内部进行分配。 (2)、对外分配以【(总费用+转入-转出)对外劳务量】作为分配率在辅助车间以外的各受益单位之间进行分配。

飞机大战实训报告.

程序设计综合实践 实习报告 学院名称 专业班级 学生姓名 学号 指导教师 山东科技大学

一、实习题目:飞机大战游戏的设计与实现 二、实习时间:18周~ 19周实习地点: 三、实习任务: 1.基本功能要求:飞机大战游戏必须运用透明贴图、按键处理、定时控制、双缓冲技术等技术实现战机(玩家)和敌机(计算机)对战功能 2.扩展功能:在完成基本功能基础上可以增加双人对战、游戏积分制、声音效果、多种子弹类型、客机类型、游戏关卡设计、多种类型敌机、游戏中间结果存贮等功能 四、小组分工说明:自己完成 五、实习成绩 六、指导教师对实习的评语: 指导教师(签章): 2015年月日

目录 1.概述 (4) 1.1实训项目简介 (4) 1.2实训项目功能说明 (4) 2.相关技术 (5) 2.1透明贴图技术 (5) 2.2 获取矩形区域并判断两个矩形区域是否相撞 (5) 2.3鼠标控制我方战机 (5) 2.4 Windows定时器技术 (6) 2.5 CObList链表 (6) 2.6对话框的应用 (7) 2.7双缓冲技术 (7) 3.需求分析 (7) 3.1功能需求分析 (7) 3.2 数据需求分析 . (7) 3.3 行为需求分析 (7) 3.4 其他需求 (7) 4.总体设计与详细设计 (8) 4.1 系统模块划分 (8) 4.2 主要功能模块 (8) 4.2.1系统主要类图 (8) 4.2.2飞机大战游戏设计执行流程图 (8) 4.3 扩展功能设计思路 (9) 4.4 软件结构设计体会 (9) 5.编码实现 (10) 5.1绘制游戏背景位图的程序 (10) 5.2各个游戏对象的绘制 (10) 5.3我方战机位置的动态控制 (12) 5.4各个游戏对象碰撞的实现 (13) 5.5游戏界面输出当前游戏信息 (15) 6.测试情况说明 (17) 6.1主要模块测试情况 (17) 6.2 主要功能测试情况 (18) 7. 实训中遇到的主要问题及解决方法 (19) 8.实训收获与体会 (19)

C语言实训课程学习总结

C语言实训课程学习总结 在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在为期一周的时间中,我们同组的 同学共同的感受是:C语言实训和平时上课所接触的程序是有很大 不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同 组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言 实训的复杂程序。在这里,我作为其中的参与者,感触良多。 在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功, 让我对下面的项目就充满信心。通过自己与同学合作编写程序,最 终把最初的理论知识转化基本技能。这次的实训,使我对C语言的 学习产生浓厚的兴趣。 还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体 会到了老师认真负责的伟大的精神和热情为同学指导的促学方式, 虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但 是到了结束时才知道,这种教学让我们自己学会了自学,学会了去 看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了 教室,在讲课中海给我们分享他在公司上班的一些心得和体会,还 有那些我们应该注意的事项,这些是平时上课时无法学到的,是更 深层次的巨大收获。 通过这次实训,也使我们发现了许多问题。 在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错 误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的 变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学 好用C语言编写一个按要求的系统。

会计实训心得体会800字(精选3篇)

会计实训心得体会800字(精选3篇) 会计实训心得体会800字 有了一些收获以后,好好地写一份心得体会,这样可以不断更新自己的想法。那么要如何写呢?以下是帮大家整理的会计实训心得体会800字,供大家参考借鉴,希望可以帮助到有需要的朋友。 会计实训心得体会1 两天的实训是在我们充实、奋斗的过程中完成的,记得实训的开始是那样的忙碌和疲惫,甚至是不知所措,只能依靠老师的引导和帮助。通过这十几天来的会计实训我深刻的体会到会计的客观性原则、实质重于形式原则、相关性原则、一贯性原则、可比性原则、及时性原则、明晰性原则、权责发生制原则、配比原则、历史成本原则、划分收益支出于资本性支出原则、谨慎性原则、重要性原则,和会计工作在企业的日常运转中的重要性,以及会计工作对我们会计从业人员的严格要求。让我掌握了记账的基本程序,锻炼了自己的动手操作能力,使我深一步了解到里面的乐趣,更重要的是发现了自己的不足之处,它使我全面系统地掌握会计操作一个完整的业务循环,即从期初建账,原始凭证和记账凭证的填制、审核,账簿的登记、核对,错账的更正,会计处理程序的运用到会计报表的编制,从而对企业会计核算形成一个完整的概念。也让我了解到这一年来到底学到了什么,使我更加爱好这个专业。

俗话说:“要想为事业多添一把火,自己就得多添一捆材”。此次实训,我深深体会到了积累知识的重要性。有些题目书本上没有提及,所以我就没有去研究过,做的时候突然间觉得自己真的有点无知,虽所现在去看依然可以解决问题,但还是浪费了许多时间,这一点是我必须在以后的学习中加以改进的。另外一点,也是在每次实训中必不可少的部分,就是同学之间的互相帮助,有些东西感觉自己做的是时候明明没什么错误,偏偏对账的时候就是有错误,让其同学帮忙看了一下,发现其实是个很小的错误。所以说,相互帮助是很重要的一点。这在以后的工作或生活中也很关键的。 两个星期的实训结束了,收获颇丰,总的来说我对这次实训还是比较满意的,它使我学到了很多东西,虽说很累,但是真的很感谢学校能够给学生这样实训的机会,尤其是会计专业,毕竟会计吃的是经验饭,只有多做帐,才能熟能生巧,才能游刃有余。我深刻理解了什么是会计,会计不仅仅是一份职业,更是一份细心+一份耐心+一份责任心=人生价值的诠释。同时我也认识到要做一个合格的会计工作者并非我以前想像的那么容易,最重要的还是细致严谨。社会是不会要一个一无是处的人,所以我们要更多更快得从一个学生向工作者转变。 会计实训心得体会2 为了更好的了解会计在实际工作中的工作内容,以便于实际与理论相结合,也更能够适应社会的要求,我们开设了成本会计实训课程。 一开始成本会计的综训给人的感觉并不是很累,一天下来我知道

飞机大战程序设计报告

程序设计综合实践 实习报告 一、实习题目:飞机大战游戏 二、实习时间:2014.9.20-2014.9.30实习地点:J13-132、232 三、实习任务:通过项目实战,掌握C++面向对象编程的基础技术和Windows 应用程序的编程方法,能够运用MFC技术及其开发环境进行小项目的开发。 四、小组分工说明: 五、实习成绩 六、指导教师对实习的评语:

指导教师(签章): 年月日 飞机大战游戏 1.实习目的 1.1使学生全面了解软件项目实施的过程,理解软件企业对于程序员的基本 素质和技术能力要求。 1.2使学生掌握C++及Window程序设计的基本技术,能够运用MFC技术及其 开发环境进行小型项目的开发。 1.3重点培养学生的独立创新精神和查阅资料能力,提高其口头和书面的沟 通能力。 1.4使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决 问题的能力 1.5重点提高学生的编程能力,使学生建立正确的编程理念,养成规范的编 程习惯。 2. 实习计划 1、9.20—9.21先建立CGameObject 类,利用继承机制,根据此类进行依次的派生。 2、9.22—9.25再建立派生类:Bomb,Ball,Enemy,MyPlane,Explosion等, 并实现各自功能。 3、9.26—9.29在xxView.cpp中的OnTimer中实现背景的设置,对敌机, 导弹,敌机子弹,爆炸效果的绘制,以及敌机子弹和战机,导弹和敌机的碰撞检验,并添加爆炸效果 4、9.29—9.30最后释放pDC以及定时器

3.实习过程 3.1 技术准备 透明贴图技术 绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。 在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。整个功能的实现过程如下: (1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图; (2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中; (3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色; (4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图 设备描述表中存放的位图与位图设备描述表中的位图一样; (5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操 作绘制到对话框上; (6) 把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作; (7) 重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背 景进行逻辑异或操作绘制到对话框上; (8) 最后把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指 针,最后把新建的设备描述表也删除。 BOOL CGameObject::LoadImage(CImageList& imgList,UINT

C语言实训报告模板

湖北汽车工业学院电气与信息工程学院 《C语言程序设计》 实训报告 实训题目:学生信息管理系统 专业:汽车电子工程专业 班级: 姓名: 成绩:

一、需求分析 1、问题 根据需求,该系统所应包含的信息有以下一些: 学生的基本信息: 学号,班级,姓名,年龄,出生日期。 根据需求,该系统所应实现的功能有以下一些: 各种基本信息数据的录入:a由键盘输入学号,班级等基本信息。 B由文件录入学生信息。 对学生信息的查询:a按学号查询指定学生信息。 b按班级查询指定班级内学生的信息。 学生基本信息数据的删除:按学生学号来删除指定学号的学生信息。 学生基本信息的保存:将录入的学生信息保存到文件中。 2、系统 采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。 3、运行要求 能连续录入任意个数学生的基本信息。 界面简洁,操作方便,提示人性化,例如删除前需要提示用户是否删除 容错性强,例如输入的学生出生日期格式不对或日期不符合时提示输入错误,并可重新输入。 二、总体设计 1、系统流程设计 根据系统要求,设计如下的系统流程

+ 2、系统模块设计 根据系统的功能设计,如下模块

主界面模块:完成系统菜单的显示 功能选择模块:根据用户的选择,完成其相应的功能 键盘输入学生信息:从键盘输入任意个数学生的基本信息,并保存到结构体链表中。 文件录入学生信息:从指定的文件中录入学生的基本信息,并保存到结构体链表中。 按学号查学生信息:输入要查找的学生的学号,可查询并显示该学号对应学生的基本信息。 按班级查学生信息:输入要查找的班级,可查询并显示该班级内学生的基本信息。 删除指定学号信息:输入要删除的学生的学号,可找到并显示该学号对应学生的信息并删除其信息。 保存学生信息:可将已录入的学生信息保存到指定的文件中。 三、详细设计 1、数据结构设计 根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下: 数据项数据项名称数据类型数据长度备注学号xh_number 整形变量 2 班级bj_number 整形变量 2 姓名name 字符串变量20 年龄nl_number 整形变量 2 指向日期结构 体的指针born_day*q 指向日期结构体类型的指针变量 应题目要求另加一个存放日期的结构体: 数据项数据项名称数据类型数据长度备注 年份y 整形变量 2 月份m 整形变量 2 号 d 整形变量 2 为了能实现可连续输入任意个数的学生信息,我采用链表的结构保存学生的 基本信息,在增加学生的基本信息时,创建一个学生信息的节点,将其插入到链表中,示意图如下。 使用C语言创建的结构体如下: struct student { int xh_number; 学号 int bj_number; 班级 char name[20]; 姓名

成本会计实训心得体会.doc

成本会计实训心得体会 篇一:2015成本会计实训报告 2015成本会计实训报告 第1篇:成本会计实训报告范文 一、实训目的: 为了让我们更好的了解会计在实际工作中的工作内容,以便于实际与理论相结合,也更能够适应社会的要求,了解成本核算在实际工作的重要性,成本对一个企业来说是至关重要的,也是我们每个人必须要掌握的一门重要的课程,通过综训希望我们都能够对会计有一个更新更深层次的认识,让我们在工作中更具有实际的动手能力,更能懂得会计作账的基本流程。 二、实训内容及其大概过程: l实训内容 1、各种成本费用的归集与分配。 生产成本的归集与分配是本次实训的重头戏,是中心环节。成本归集与分配过程实际上就是成本计算过程。在本次实训中,我们按照成本核算的基本程序,先后对材料费用、职工薪酬、其他费用、辅助生产费用、制造费用、废品损失、完工产品和在产品等七个板块进行了练习。 a、材料费用方面。用于生产产品的原材料及主要材料,通常是按照产品分别领用的,可根据领料凭证直接计入各种产品成本的”直接成本”项目,但有时一批材料为几种产品共同使用,应根据一定的分配方法分配计入各产品成本。

b、人工费用方面。应按成本项目进行归集,生产工人的计入生产成本,车间管理人员的计入制造费用,厂部管理部门的计入管理费用等,若生产多种产品,应按一定的方法进行分配后分别计入各成本项目。 c、辅助生产费用。是为企业的基本生产服务而发生的费用,最终要分摊到各受益单位。在本次实训中,主要运用交互分配法对供气车间和机修车间发生的生产费用进行分配,这里用的方法相对来说难度比前面的大,不过最重要的是求分配率。交互分配法分配辅助生产费用要分两次进行: (1)交互分配:以(总费用/总劳务量)作为分配率在辅助生产车间内部进行分配。 (2)对外分配:以[(总费用+转入-转出)/对外劳务量]作为分配率在辅助车间以外的各受益单位之间进行分配。 d、制造费用的分配。将在生产环节发生的制造费用按一定的方法(工时比例、定额材料比例、直接材料比例等)分配计入各有关产品的基本生产成本项目中。 e、完工产品和在产品成本的计算时成本核算的最后一项内容,企业应根据月末在产品数量的多少、各月数量变化大小、各项费用变化大小和定额管理的基础的好坏,选择使当地分配方法。在本次实训中,我们采用的时约当产量法,将在产品折合成产成品数量后,按比例分配,计算出在产品和完工产品的成本。 2、各种成本基本计算方法(品种法、分批法、分步法)的综合训练。各种产品成本计算方法的运用时第二项内容,企业应根据自身的生产特点,生产组织经营类型和成本管理要求具体确定计算方法。其中品

飞机大战实训报告

目录 1. 概述 (1) 2. 相关技术 (2) 2.1碰撞检测 (2) 2.2 CObList链表 (2) 2.3 设置定时器 (2) 2.4 背景滚动 (2) 2.5内存释放技术 (2) 3. 总体设计与详细设计 (2) 3.1 系统模块划分 (2) 3.2 主要功能模块 (3) 4. 编码实现 (5) 5. 实训中遇到的主要问题及解决方法 (37) 6. 实训体会 (37) 1. 概述 这次实训,目的以VS 为环境,利用MFC,使用C++语言编写一个简单的飞机大战游戏。 实现的主要功能: 1.有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹。 2.设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射 子弹数量增加。

3.战机起始十条命,可以通过过关和吃到道具增加血量。 4.战机子弹打中敌机,敌机就会爆炸,boss血量随关卡升高而增多,打败敌机或者 boss会有分数加成。 5.设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高 等级。 2. 相关技术 2.1碰撞检测 用CRect类的GetRect()函数可以获得当前对象的矩形区域,IntersectRect()并用此函数判断二者是否碰撞。 2.2CObList链表 这个程序使用CObList链表来存储各效果。CobList类似于一个双向链表,POSITION 类型的变量为链表的键。使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。我们可以通过获得某元素的POSITION来访问它。 本程序中主要用到的函数有: GetHeadPosition():获取链表首元素的POSITION; AddTail():将新的元素添加到链表最后; GetNext( POSITION& rPosition ):使rPosition指向下一个元素。 2.3 设置定时器 SetTimer()函数来设置定时器。 2.4 背景滚动 为了让游戏场景更加逼真,游戏节奏更加合理,可以通过让背景滚动来提高游戏的场景效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使其不会出现图片的卡顿和瞬移现象。 2.5内存释放技术 这个程序中有大量的地方需要使用内存,如果不及时删除会出现闪图等情况,容易导致程序崩溃,要及时释放内存资源。 3. 总体设计与详细设计 3.1 系统模块划分

C语言综合实验报告模板(附调试代码)

学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期: 实验项目:学生成绩管理系统 一、实验目的和要求 目的: 1.掌握三种程序基本结构; 2.熟练使用数组、用户自定义函数等相关知识进行程序设计; 3.熟悉结构化程序设计语言思想编写程序代码; 4.理解和掌握C语言的语法以及三种基本程序结构的综合应用; 5.熟悉排序、查找、统计分析等常用算法 6.熟悉C语言的编程和调试环境,培养学生用计算机解决实际问题的能力要求:根据实验内容,认真编写源程序代码、上机调试程序,书写实验报告。 二、实验内容 综合利用所学C语言三种程序基本结构以及数组(或指针)、用户自定义函数等相关知识进行一个小型学生成绩管理系统的设计与实现,具体内容如下:某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,实现如下的学生成绩管理系统: (1)录入每个学生的学号和考试成绩 (2)计算课程的总分和平均分 (3)按成绩由高到低排出名次表 (4)按学号由小到大排出成绩表 (5)按学号查询学生考试成绩 (6)按优秀(90-100分)、良好(80-89分)、中等(70-79分)、及格(60-69分)、不及格(0-59分)5个类别,统计每个类别的人数及其所占百分比(7)输出每个学生的学号、考试成绩 三、实验步骤 1.仔细阅读实验要求和书上的相关内容,在磁盘上新建以学号姓名命名的文件夹。

2.编写程序代码、编译、连接及运行程序、查找程序中的错误 3.函数及功能说明 四、完整源程序代码 五、结果分析及总结 分析运行结果,并进行总结(可以从以下几个方面来总结:你在编程过程中对问题是如何分析的?遇到了哪些难题?你是怎么克服的?你的收获有哪些?) 调试代码: #include #include #include #define STU_NUM 30 /*最多的学生人数*/ int Menu(void); void Readscore (long num[],float score[],int n); void Aversumofscore(float score[],int n); void Desortbyscore(long num[],float score[],int n); void Assortbynum(long num[],float score[],int n); void searchbynum(long num[],float score[],int n); void statisticanalysis(float score[],int n); void printscore(long num[],float score[],int n); int main() { char itemselected; int n; float score[STU_NUM]; long num[STU_NUM];

java实训报告

实习报告 实习性质:《Java面向对象编程》课程实习学生姓名: 专业班级: 指导教师: 实习时间: 实习地点: XXXXXXXXXXXXX学院

学生实习考核表

目录 1 实习目的 (1) 2 实习概况 (1) 2.1 实习要求 (1) 2.2 实习时间 (1) 2.3 实习环境 (1) 2.4 开发环境 (1) 3 实习内容 (1) 3.1 设计模式 (1) 3.1.1 单例模式 (1) 3.1.2 观察者模式 (3) 3.1.3 代理模式 (4) 3.1.4 集合应用 (5) 3.2 访问数据库 (6) 3.2.1 连接数据库 (6) 3.2.2 添加数据 (7) 3.2.3 查询数据 (8) 3.2.4 修改数据 (8) 3.2.5 删除数据 (8) 3.3 游戏设计 (9) 3.3.1 游戏设计分析 (9) 3.3.2 登陆窗口设计 (10) 3.3.3 注册窗口设计 (10) 3.4 游戏需求: (10) 3.4.1 地图文件的引用 (11) 3.4.2 详细设计 (11) 4 学习总结 (17) 4.1 学习所得 (17) 4.2 经验教训 (17) 4.3 实训体会 (18)

信息工程学院《Java面向对象》实训报告1 实习目的 综合运用在校期间所学到的理论知识和技能,让自己能够熟悉并熟练应用系统的开发过程,培养独立思考能力,检验学习成果和实际动手能力,以及提高工程实践能力,为今后的工作打下坚实的基础。 2 实习概况 2.1实习要求 1.设计模式 (1)单例模式(2)观察者模式(3)代理模式 2.集合应用 设计一个案例,用集合解决实际问题 3.访问数据库 设计一个案例,连接数据库,进行添加、删除、修改、查询 4.综合应用 设计一个用图形界面的数据库应用程序(小型管理系统),或一个小游戏 注意:实习报告要图文并茂,注重分析、设计过程和经验总结,代码所占篇幅不超过整个篇幅的一半。 2.2 实习时间 XXXXXXX 2.3 实习环境 XXXXXX实训室 2.4 开发环境 ●操作系统(Win10) ●使用软件(eclipse、Navicat) ●数据库(MySQL) 3 实习内容 3.1 设计模式 3.1.1 单例模式 1、饿汉模式 饿汉模式是最简单的一种实现方式,饿汉模式在类加载的时候就对实例进行创建,实例在整个程序周期都存在。它的好处是只在类加载的时候创建一次实例,不会存在多

相关文档