计算机实习计划书.docx

上传人:无*** 文档编号:68341983 上传时间:2022-12-27 格式:DOCX 页数:20 大小:203.70KB
返回 下载 相关 举报
计算机实习计划书.docx_第1页
第1页 / 共20页
计算机实习计划书.docx_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《计算机实习计划书.docx》由会员分享,可在线阅读,更多相关《计算机实习计划书.docx(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、北京邮电大学电信工程学院计算机实习计划书电信工程学院2006级2007年暑期1、教学目标北京邮电大学电信工程学院2006级暑期计算机实习,是在学习C+大学基础教程的基础上开设的,目的是使学生们进一步综合运用C+的基本概念和语法,学习C+面向对象的设计思想,并且初步学会MS Visual C+的集成开发环境的使用。计算机实习的时间为两个星期,在这两星期内,学生们将学习复杂应用程序的设计和使用、文件流的读写、相关API的使用等,并提交一个完整的C+的作品。充分培养学生的合作意识,培养学生们发现问题、解决问题的能力,充分发挥学生的想象力、创造力,激发学生主动学习的潜能。2、相关知识2.1 相关数据类

2、型实例使用得数据类型包含在库文件中,该库文件主要用来描述windows 环境下常用的数据结构,宏和其他数据类型。2.1.1、 相关数据结构 HANDLE:句柄实际上是一个无符号的整型数,作为窗口的唯一标识ID,控制台的黑屏也是一个窗口,也需要这样的一个HANDLE来标识。 BOOL逻辑实际结构:typedef int BOOL; BYTE字节实际结构:typedef unsigned char BYTE; WORD 字实际结构:typedef unsigned short WORD;A DWORD双字实际结构:typedef unsigned long DWORD;2.1.2、 颜色标识实例中

3、用来描述颜色的数据结构是WORD,根据下列宏定义可以常用的各种前景色和背景色。前景色: 红色:FOREGROUNT.RED 绿色:FOREGROUND_GREEN 蓝色:FOREGROUND_BLUE 颜色力重显示:FOREGROUND_INTENSITY背景色: 红色:BACKGROUND_RED 绿色:BACKGROUND_GREEN 蓝色:BACKGROUND_BLUE 颜色力重显示:BACKGROUND_INTENSITY根据系统提供的三元色进行组合,可以得到混合后的文本和背景颜色。前景色: 黄色:FOREGROUNT_RED I FOREGROUND_GREEN 青色:FOREGRO

4、UNT_BLUE I FOREGROUND_GREEN 紫色:FOREGROUNT.BLUE I FOREGROUND_RED 白色:FOREGROUND_REDIFOREGROUND_BLUEIFOREGROUND_GREEN背景色: 黄色:BACKGROUNT_RED I BACKGROUNT _GREEN 青色:BACKGROUNT _BLUE I BACKGROUNT _GREEN 紫色:BACKGROUNT_BLUEIBACKGROUNT_RED 白色:BACKGROUNT_REDI BACKGROUNT_BLUEI BACKGROUNT _GREEN2.2 常用的系统函数实例使用得

5、系统函数大都来自文件,该文件包括控制台的键盘输入输出操作。常用的系统函数如下所示: kbhit()检测是否有按键按下,系统函数直接调用。 getch()获取按键的值,但不在屏幕回显,系统函数直接调用。A getche()获取按键的值,但在屏幕回显,系统函数直接调用。 Sleep(DWORD n)使程序休眠n毫秒,系统函数直接调用。 void srand(unsigned int seed )随机数的种子函数。 int rand()产生伪随机数序列。2.3教师的前期工作鉴于学生们学习C+的时间较短,了解的相关知识相对较少,为了方便同学们快速上手进行编程,需要教师提前作一些准备工作。使用控制台编程

6、需要了解很多复杂的系统函数,因此,教师提前将这些系统函数进行了加工,封装成简单的函数提供给学生调用,包含这些函数的文件如下:这些文件由教师提供: 头文件 colorConsole.h (附件1) 源文件 colorConsole.cpp (附件2)这两个文件中实现了下面两个函数,函数接口如下:1) HANDLE initiate();输入参数:无输出参数:HANDLE函数功能:初始化控制台窗口,并获取该窗口的句柄;该函数只在程序初始化时执行一次。2) BOOL textout(HANDLE hOutput, int x, int y, WORD wColors,int nColors, LPT

7、STR Ipsz String);窗口句柄 HANDLE hOutput设置窗口横坐标int x设置窗口列坐标int y设置文本和背景色序列WORD wColors设置颜色序列的数目int nColors设置输出的字符串LPTSTR IpszString)输出参数:true表示执行成功,false表示失败在控制台窗口指定的(x,y)位置输出指定颜色的字符串。实际编程中,学生们需要按照以下步骤进行:1、将colorConsole.h文件添加到新建的工程中2、将colorConsole.cpp文件添加到当前工程中3、新建一个源文件main.cpp,将#include colorConsole.h”

8、自己编写主程序中的代码调用封装后的,极大的简化了编程难度。2.4编程技巧2.4.1、 显示彩色字符串编程步骤:1)初始化获取窗口句柄2)设置颜色3)设置坐标4)输出指定字符串例1:显示红蓝相间的彩色字符串Happy Birthday!void main(void)(HANDLE handle;handle = initiate();WORD wColors2;wColors|0=FOREGROUND_REDIFOREGROUND_INTENSITY;wColors1=FOREGROUND_BLUE;textout(handle,l0,10,wColors,2,Happy Birthday!);

9、)2.4.2、 闪烁的彩色文字闪烁原理:1)写一遍彩色文字2)延时200ms3)写一遍空文字4)延时100ms反复该过程,则文字不断闪烁。例2:彩色字符串H叩py Birthday!不断闪烁void main(void)HANDLE handle;handle = initiate();WORD wColors2;wColors0=FOREGROUND_REDIFOREGROUND_INTENSITY; wColorsl =FOREGROUND_BLUE;while(l)textout(handle,l0,10,wColors,2/*Happy Birthday!*);Sleep(200);t

10、extout(handle,10,10,wColors,2,0 Sleep(lOO);)2.4.3、 移动的彩色文字移动原理:1)写一遍彩色文字2)延时100ms3)写一遍空文字4)改变坐标位置反复该过程,则文字不断移动。例3:水平移动彩色字符串Happy Birthdayivoid main(void)(HANDLE handle;handle = initiate();WORD wColors2;wColors0=FOREGROUND_REDIFOREGROUND_INTENSITY; wColorsl =FOREGROUND_BLUE;fbr(int x=0; x65; row+)(te

11、xtout(handle,xJ0,wColors,2,HHappy Birthday!11);Sleep(lOO); textout(handle,x,10,wColors,2,*);)2.4.4、 检测键盘输入检测原理:1)检测是否有按键2)有:键盘处理3)无:屏幕处理反复该过程,则文字不断移动。例4:移动字符串的过程中,按下任意键暂停,再次按下时继续移动 void main(void)HANDLE handle;handle = initiate();WORD wColors2;wColors0=FOREGROUNDREDIFOREGROUND_INTENSITY;wColorsl =FO

12、REGROUND_BLUE;int x=0;bool flag=false;while(x 游戏运行,可以显示不同点数的筛子; 游戏开始,按下“回车键”,则筛子随机出现不同的点数,产生动画效果; 按下“回车键”,筛子停止变化,记录点数; 按下“空格键”,更换游戏者,重复上述2、3步骤; 按下“q键”,游戏结束。该游戏可以多人参加,每人可以投多次,每人每次的筛子点数自动累加,点数最高者胜。3.1.2 实现步骤1)搭建程序框架 新建一个空的工程,工程名称game; W colorConsole.h (附件1)和colorConsole.cpp (附件2)拷贝到工程当前目录,添加到工程中; 新建一个

13、主文件 main.cpp,将#include “colorConsole.h”代码添加到 main.cpp 中。2)代码实现(源代码见附件3) 一个辅助函数void rolldice(HANDLE hOutput, int n, int col, int row, WORD wColorsf);输入参数:输出屏幕:hOutput筛子点数:n屏幕位置:列col行row文字颜色:wColors输出参数:无功能:在屏幕指定位置输出指定点数和指定颜色的筛子 主函数功能:检测按键,根据不同的按键实现不同的功能,算法思想如下面的为代码所示。 void main()(屏幕初始化;显示6个黄色的不同点数的筛子

14、;在屏幕底部显示菜单;while(l)/游戏开始if(检测到按键)(if(检测是否按下“回车键”)(标志位取反;if(当前标志为false)(停止投筛子:显示当前点数的筛子;rolldice(handle,i+1,row,col,wColors);记录并显示游戏者和点数;)else if (检测是否按下“空格键”)(计数器清零;游戏者人数加1;)else if (检测是否按下“q或Q键”) break;)if (标志位是true)(随机投筛子;游戏结束3)程序编译调制运行不需要额外的设置,常规调试运行即可。3.2范例题目二制作一个指法测试游戏。程序界面如图2所示。图2指法测试游戏3.2.1 程

15、序功能如图2所示: 游戏运行,可以显示5行40列的随机字符; 按下“任意键”,游戏开始,开始计时; 从左到右,键入字符,如果与相应位置显示的字符相同,则正确字符数加1,否则错误字符数加1; 1分钟后程序自然停止,统计正确/错误字符数;并弹出窗口询问是否继续该游戏可以用于自测指法,在规定时间内正确字符数越多,则指法越好。3.2.2 实现步骤1)搭建程序框架 新建一个空的工程,工程名称Finger; 将colorConsole.h (附件1)和colorConsole.cpp (附件2)拷贝到工程当前目录,并添加到工程中; 新建一个主文件 main.cpp,将#include colorConso

16、le.h”代码添加到 main.cpp 中。2)代码实现 辅助变量const int TOP =4;const int LEFT =10;const int RIGHT =62;const int BOTTOM =20;const int TIME =60;char ch540=0;产生5行40列随机字符 六个辅助函数1、void init (HANDLE handle)输入参数:输出屏幕:handle输出参数:无功能:初始化界面2、void randCharacter (HANDLE handle)输入参数:输出屏幕:handle输出参数:无功能:产生5行40列随机的字符3、void sta

17、t (HANDLE handle)输入参数:输出屏幕:handle输出参数:无功能:统计正确的字符数,并计时。4、void clearScreem (HANDLE handle)输入参数:输出屏幕:handle输出参数:无功能:清屏,重新开始练习5、int GetTime (HANDLE handle)输入参数:输出屏幕:handle输出参数:无功能:计算练习指法的时间6、void WinOK (HANDLE handle)输入参数:输出屏幕:handle输出参数:无功能:确认对话框 主函数功能:检测按键,根据不同的按键统计,算法思想如下面的为代码所示。 void main()屏幕初始化;窗口

18、初始化;产生随机字符;输出菜单提示;while(l)测试开始统计正确/错误字符数loop:一次测试结束,询问是否继续if(否)程序停止运行;else if(是)(清屏;重新产生随机字符1else goto loop;)测试结束3)程序编译调制运行不需要额外的设置,常规调试运行即可。4、实习要求4.1 基本要求4.1.1、 内容要求作品的内容可以是下面4种中的任意一种: 可以制作一个小游戏,比如俄罗斯方块、贪吃蛇、时钟、投筛子等; 可以制作一个课件,比如模拟汉诺塔游戏的过程; 可以制作一个管理系统,比如学生成绩管理、学生基本信息管理等; 其它你认为有兴趣的作品。4.1.2、 作品功能要求基本要求

19、:能够应用文件流进行磁盘文件的读写:比如游戏分数的保存等 能够应用面向对象的设计思想和方法 能够使用多文件结构 能够播放音频文件,增强游戏的效果4.2可选课题鉴于部分同学对于Windows编程非常感兴趣,并且C+基础较好,可以1-2人组成一个课题小组,尝试完成下面的课题(选作可选课题中的任何一个,就不需要在做基本要求中的内容了)。4.2.1、 完成一个简单计算器简单计算器的界面如图3所示,功能可以参见Windows操作系统的附件中的计算器的功能,能够完成基本的算术运算。图3简单计算器研究步骤:1)学习Windows编程框架,了解消息机制2)学习各种控件的使用,尤其是对话框、按钮、编辑框等3)学

20、习菜单的使用4)如果时间允许,可以将简单计算器,扩展为如图4所示的科学计算器。图4科学计算器422、完成一个简单的信息管理系统简单的信息管理系统主要能够完成对信息的读取、增、册k改、查、保存等功能,比如一个简单学生信息管理系统界面如图4所示,基本功能如下:(1)读取文件中的学生信息、,能够按照学生类别显示;(2)能够增加、删除、修改学生信息(3)能够按照学号精确查询学生信息(4)能够统计不同类别、不同性别的学生人数(5)更新后的学生信息数据保存在文件中左 StudentMIS,图5简单学生管理系统说山两秒球-壬周町田节0102229电信学院LAB90102129电信学院LAB9Y0934923

21、电信学院lab2Y0934823电信学院lab2B0948421电信学院B0948021电信钠姓名 I学号 年龄 学院 实聆室发表文章研究步骤:1)学习Windows编程框架,了解消息机制2)学习各种控件的使用,尤其是对话框、按钮、编辑框等3)学习菜单的使用4)学习IO流的使用5)可以对各种信息进行管理,比如学生成绩管理系统、通讯录、图书管理系统等4.2.3、 完成一个画图软件简单的画图软件的形式和功能可以参考Windows操作系统中“附件”里的画图软件,如图6所示。未命名-画图图6画图软件该软件能够完成如下基本功能:(1)能够绘制直线、曲线;(2)能够绘制各种形状,比如矩形、椭圆形等(3)能

22、够绘制各种实心形状,比如实心矩形、实心椭圆等(4)能够添加文字(5)能够设置不同的绘制颜色研究步骤:1)学习使用单文档的(Single document)程序结构2)学习使用MFC中CDC类系列的使用,包括CPen类、CBrush类等3)学习使用鼠标消息处理函数的使用4)有能力的同学可以扩展画图软件的功能,比如能够显示磁盘上已有的图片文件、能够具备“橡皮擦”的功能,进行擦除、能够保存绘制后的图形等等4.2.4、 自选题目学生根据自身的情况,可以自由选择感兴趣的题目,要求一要写出具体的想法以及预期完成的结果,二要征得实验教师的同意。下面给出一些题目可供参考。1)可以实现一个简单的Windows游

23、戏,比如:碰碰球游戏,游戏者可以控制木板的左右移动,迎接下落的小球,小球与模板碰撞后弹起,反复运行,直到小球下落后木板无法接起,游戏结束。参考程序如图7所示。图7碰碰球游戏2)可以实现Josephus问题的求解,Josephus问题是:n个小孩围成一圈,任意假定一个数m,从第一个小孩起,顺时针方向数,每数到第m个的小孩时,该小孩便离开。小孩不断离开,圈子中的人数不断减少,最后一个离开的小孩是胜利者,请问最后一个离开的小孩的编号?实现可参考程序如图8所示。图8 Josephus问题的求解3)可以学习使用OpenGL等工具库实现一个动画制作,题目任意。4)可以学习数据库的使用,完成一个基于数据库的

24、信息管理系统。5)可以学习Socket类的使用,完成一个基于网络的应用,比如一个即时消息系统、文件传输系统等。6)可以学习如何实现一个屏幕保护程序7)可以学习任何你感兴趣的相关程序设计的知识,完成一个完整的作品。5、参考资料可以参考以下资料。1) VC经典教程.chm 电子版2) C+到Visual C+6.0精彩100例,应甫臣、刘迎辉编,电脑爱好者杂志出版社,2001年3) Visual C+课程设计案例精选,严华峰等编著,中国水利水电出版社,2002年5、实验报告实验报告由4部分组成,每部分的格式和要求如下:第一部分:封皮,包括作品名称,学生姓名、班级、班内序号、学号。第二部分:作品功能

25、说明,包括作品界面、使用方法、程序执行效率等。第三部分:程序设计说明,包括1 .程序总体框架或流程图,程序实现过程中的重点和难点2 .代码分析如果使用面向过程的设计方法,包括功能模块划分、每个模块完成的功能、各关键函数之间的调用关系、关键函数的实现思路;如果使用面向对象的设计方法,包括关键类的功能说明、各类之间的关系、类中关键函数的实现思想;3 .调试方法,以及调试中的问题及其解决方法第四部分:总结,包括学习体会,程序目前的功能缺陷及下一步改进的思路,对于本次实习的意见等。6、时间安排本次计算机实习一共2周,从9月1日开始,至9月16日结束,期间集中授课两次,每位同学上机8次,每次4个小时,共

26、32个小时。集中授课主要讲解计算机实习需要的相关知识,以及上机过程中出现的问题。上机期间会有辅导教师随时现场辅导。附件1文件 ColorConsole.h#include #include using namespace std;HANDLE initiate();BOOL te xtout( HANDLE hOutput,int x,int y,WORD wColors|,int nColors,LPTSTR IpszString);文件 colorConsole.cpp#include colorConsole.hHANDLE initiate()HANDLE hOutput;hOutpu

27、t = GetStdHandle(STD_OUTPUT_HANDLE); return hOutput;BOOL textout(HANDLE hOutputJnt x,int y,WORD wColors,int nColors,LPTSTR IpszString)(DWORD cWritten;BOOLfSuccess;COORD coord;coord.X = x; coord. Y = y;/ start at first cell/ of first rowfS access = WriteConsoleOutputCharacter(hOutput, IpszString, Ist

28、rlen(lpszString), coord,&cWritten);/ screen buffer handle/ pointer to source string/ length of string/ first cell to write to/ actual number writtenif (! fSuccess)coutveiror: WriteConsoleOutputCharacterHendl;fbr (;fSuccess & coord.X lstrlen(lpszString)+x; coord.X += nColors)(fSuccess = WriteConsoleO

29、utputAttribute(hOutput, wColors, nColors, coord,/ screen buffer handle/ pointer to source string/ length of string&cWritten);/ first cell to write to/ actual number writtenif(! fSuccess)coutHerror: WriteConsoleOutput Attribute Hendl; return 0;主文件main.cpp#include #include #include #include colorConso

30、le.h1投筛子void rolldice(HANDLE hOutputjnt n,int col,int row,WORD wColors);void main(void)(HANDLE handle;WORD wColorsl;int row,col;初始化handle = initiate();生成6个不同骰子wColors0=FOREGROUND_GREENIFOREGROUND_REDIFOREGROUNDJNTE NSITY;row=col=2;for (int i=0;i6;i+)rolldice(handle,i+1,col,row+6*i,wColors);打印屏幕底部菜单W

31、ORD wMenuColorsl;wMenuColors0=FOREGROUND_REDIFOREGROUND_BLUEIFOREGROUNDJN TENSITY;textout(hand!e,l ,24,wMenuColors,1,”游戏规则:);textout(handle,l 1,24,wMenuColors,1投掷开始/结 M=ENTER;H);10乂10叫11前怕,34,24w11111(301061更换游戏者=空格;”);textout(handle,53,24,wMenuColors,l退出=q.);bool flag=false;int count=l;int sum=0;随机

32、数的种子srand(unsigned)time( NULL);col=15;row=8;游戏开始while(l)if(_kbhit()(int ch=_getch();if(ch=13)flag=!flag;if(!flag)wColors0=FOREGROUND_REDIFOREGROUND_INTENSITY;rolldice(handle,i+l,row,col,wColors);记录游戏者和点数char buf20;itoa(count,buf,10);textout(handle,l J 3+2*count,wMenuColors,1,buf);textout(handle,3,l

33、3+2*count, wMenuColors,1点数:);sum+=i+l;itoa(sum,buf,10);textout(handle,9J 3+2*count, wMenuColors,1,buf);)else if (ch=32)更换游戏者(sum=0;count+;else if(ch=qllch=Q)break;)if (flag)随机投筛子(i=rand()%6;wColors0=FOREGROUND_REDIFOREGROUND_INTENSITY;rolldice(handle,i+1,row,col, wColors);Sleep(lOO);wColors|0=0;roll

34、dice(handle,i+1 jow,col,wColors);void rolldice(HANDLE hOutputjnt n,int col ,int row,WORD wColors)switch(n)case 1: textout(hOutput,row+1,col+1, wColors,1,n );break;case 2: textout(hOutput,row+1,col, wColors,l,M); textout(hOutput,row+1,col+2, wColors,1); break;case 3: textout(hOutput,row, col+2,wColor

35、s,1textout(hOutput,row+ l,col+1, wColors,1,); textout(hOutput,row+2,col, wColors, break;case 4: textout(hOutput,row, col, wColors/,); textout(hOutput,row, col+2, wColors,1,M *); textout(hOutput,row+2,col, wColors,l,); textout(hOutput,row+2,col+2,wColors,l,M); break;case 5: textout(hOutput,row, col,

36、wColors,l,); textout(hOutput,row, col +2, wC ol ors,1;te xtout( hOutput ,ro w+ l,col+1, wCoIors,1, textout(hOutput,row+2,col, wColors, textout(hOutput ,row+2,col+2, wColors,1,n M); break;case 6: textout(hOutput,row, col, wColors,l,#M); textout(hOutput,row, col+1, wColors,1,); te xtout( hOut put ,ro w, col+2, wColors,1,H *); textout(hOutput,row+2,col, wColors,l,*); textout(hOutput,row+2,col+ l,wColors,l,n); textout(hOutput,row4-2,col+2,wColors,l,#H); break;default:cout”投掷骰子失败!”vvendl;)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com