第一篇:VC++编程经验总结(范文)
VC++编程经验总结
vc++如何实现远程调试
*假设调试机IP 192.168.0.182 远程机IP 192.168.0.161
*远程机为调试机分配权限,使调试机可以使用远程桌面登陆到远程机器上(这样调试起来方便)。
*调试机上安装visual studio.net 2003
共享调试机上的Visual Studio上的远程调试目录(以我的机器为例)
C:Program FilesMicrosoft Visual Studio.NET
2003Common7PackagesDebugger
*远程机将上面的共享目录考贝到本地,比如:d:Debugger
*调试机共享要调试的程序所在目录,比如:
D:importantcvsrootdv-to-dvdbindebug
*远程机将调试机上的目录影射为本地目录。比如:Z:
*远程机上以命令行形式执行 D:Debuggermsvcmon.exe –tcpip –anyuser
*调试机启动vc.打开要调试的工程。比如dvtodvd.选择菜单project->properties 选debuging->remote setting
Connection :Remote via TCP/IP(Native only)
Remote machine: 192.168.0.161
Remote Command: z:dvtodvd.exe
*debug->start
*就可以调试了。
1.如何在Release状态下进行调试
Project->Setting=>ProjectSetting 对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选 Disable(Debug),Debut info选Program Database。在Link标签中选中Generate debug info复选框。
注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。
2.Release和Debug有什么不同
Release版称为发行版,Debug版称为调试版。
Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。Release 的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll)。这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++ 6.0的机器上运行。而Debug版本的exe链接了调试版本的MFC DLL文件,在没有安装Visual C++6.0的机器上不能运行,因为缺相应的DLL,除非选择use static dll when link。
3.ASSERT和VERIFY有什么区别
ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然翻译,但不再判断真假。所以后者更安全一点。
例如ASSERT(file.Open(strFileName))。
一旦到了Release版本中,这一行就忽略了,file根本就不Open()了,而且没有任何出错的信息。如果用VERIFY()就不会有这个问题。
4.Workspace和Project之间是什么样的关系
每个Workspace可以包括几个project,但只有一个处于Active状态,各个project之间可以有依赖关系,在project的Setting..中可以设定,比如那个Active状态的project可以依赖于其他的提供其函数调用的静态库。
5.如何在非MFC程序中使用ClassWizard
在工程目录下新建一个空的.RC文件,然后加入到工程中就可以了。
6.如何设置断点
按F9在当前光标处增加一个断点和取消一个断点。
另外,在编辑状态下,按Ctrl+B组合键,弹出断点设置对话框。然后单击【Condition…】按钮弹出设置断点条件的对话框进行设置。
7.在编辑状态下发现成员变量或函数不能显示提示是如何打开显示功能
这似乎是目前这个Visual C++ 6.0版本的一个bug,可按如下步骤使其正常,如再出现,可如法炮制:
(1)关闭Project
(2)删除“工程名.ncb”文件
(3)重新打开工程
8.如何将一个通过ClassWizard生成的类彻底删除
首先在工作区的FileView中选中该类的.h和.cpp文件,按delete删除,然后在文件管理器中将这两个文件删除,再运行ClassWizard,这时出现是否移走该类的提示,选择remove就可以了。
9.如何将在workspace中消失的类找出来
打开该类对应的头文件,然后将其类名随便改一下,这个时候工作区就会出现新的类,再将这个类改回原来的名字就可以了。
10.如何清除所有的断点
菜单【Edit】->【Breakpoints…】,打开“Breakpoints”对话框,单击【Remove All】按钮即可。快捷键是“Ctrl + Shift + F8”。
11.如何再ClassWizard中选择未列出的信息
打开“ClassWizard”对话框,然后切换到“Class Info”页面。改变“Message filter”,如选择“Window”,“Message”页面就会出现Window的信息。
12.如何检测程序中的括号是否匹配
把光标移动到需要检测的括号前面,按快捷键“Ctrl + ]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告。
13.如何查看一个宏(或变量、函数)的定义
把光标移动到要查看的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的相关菜单),如果没有建立浏览文件,就会出现提示对话框,按【确定】按钮,然后就会跳到该宏(或变量、函数)定义的地方。
14.如何添加Lib文件到当前工程
单击菜单【Project】->【Settings…】弹出“Project Setting”对话框,切换到“Link”标签页,在“Object/library modules”处输入Lib文件名称,不同的Lib之间用空格格开。
15.如何快速删除项目下的Debug文件夹中临时文件
在工作区的FileView视图中选中对应的项目,单击右键弹出菜单,选择【Clean(selection only)】菜单即可。
16.如何快速生成一个现有工程除了工程名外完全相同的新工程
在新建工程的“New”对话框中选择“Custom Appwizard”项,输入新工程的名字,单击
【OK】按钮。出现“Custom AppWizard”项,输入新工程的名字,单击【OK】按钮。出现“Custom AppWizard-Step 1 of 2”对话框,选择“An existing Project”项,单击
【Next】按钮。出现“Custom AppWizard-Step 2 of 2”对话框,选择现有工程的工程文件名,最后单击【Finish】按钮。编译后就生成一个与现有工程相同但可以重新取名的工程AppWizard。
现在就可以项用MFC AppWizard一样用这个定制的向导。如果不想用了,可以在Visual C++ 6.0安装目录下CommonMSDev98Template目录中删除该Wizard对应的.awx和.pdb文件。
17.如何解决Visual C++ 6.0不正确连接的问题
情景:明明改动了一个文件,却要把整个项目全部重新编译链接一次。刚刚链接好,一运行,又提示重新编译链接一次。
这是因为出现了未来文件(修改时间和创建时间比系统时间晚)的缘故。可以这样处理:找到工程文件夹下的debug目录,将创建和修改时间都比系统时间的文件全部删除,然后再从新“Rebuild All”一次。
18.引起LNK2001的常见错误都有哪些
遇到的LNK2001错误主要为:unresolved external symbol “symbol”
如果链接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误信息。
一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在,拼写不正确或者使用错误;其次可能使用了不同版本的链接库。以下是可能产生LNK2001错误的原因:
<1>由于编码错误导致的LNK2001错误
(1)不相匹配的程序代码或模块定义(.DEF)文件导致LNK2001。例如,如果在C++源文件了内声明了一变量“var1”,却试图在另一个文件内以变量“var1”访问改变量。
(2)如果使用的内联函数是在.cpp文件内定义的,而不是在头文件内定义将导致LNK2001错误。
(3)调用函数时如果所用的参数类型和头函数声明时的类型不符将会产生LNK2001错误。
(4)试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001错误。
(5)要注意函数和变量的可公用性,只有全局变量、函数是可公用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001错误。
<2>由于编译和联机的设置而造成的LNK2001错误
(1)如果编译时使用的是/NOD(/NODERAULTLIB)选项,程序所需要的运行库和MFC时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。这种情况下使用/NOD将导致LNK2001错误
(2)如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时将出现“unresolved external on _WinMain@16”的LNK2001错误信息。
(3)使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func”的引用。如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行链接,将在__imp__func上发生LNK2001错误。如果不使用/MD选项编译,在使用MSVCxx.LIB链接时也会发生LNK2001错误。
(4)使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001错误。
(5)当编译调试版的应用程序时,如果采用发行版模态库进行链接也会产生LNK2001错误;同样,使用调试版模态库链接发行版应用程序时也会产生相同的错误。
(6)不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。
(7)在不同的模块中使用内联和非内联的编译选项能够导致LNK2001错误。如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头文件里却关闭了函数内联(没有inline关键字),只是将得到错误信息。为避免该问题的发生,应该在相应的头文件中用inline关键字标志为内联函数。
(8)不正确的/SUBSYSTEM或ENTRY设置也能导致LNK2001错误。
19.如何调试一个没有源码的exe文件调用的dll
在Visual C++ 6.0中,进入“Project Setting”对话框然后选择Debug标签页。通常Visual Studio默认“executable for debug session”为可执行文件名,但可以将他改成任何你想要的程序。甚至可以指定不同的工作目录以及传递参数到你的程序。这个技术常用来调试Dlls、名字空间扩展、COM对象和其他从某些EXE以及从第三方的EXE中调用的plug-in程序。
20.Visual C++ 6.0工程中的项目文件都表示什么
.opt:工程关于开发环境的参数文件。如工具条位置等信息。
.aps(AppStudio File)资源辅助文件,二进制格式,一般不用去管它。
.clw:ClassWizard信息文件,实际上是INI文件格式,有兴趣可以研究一下。有时候ClassWizard出了问题,手工修改CLW文件可以解决。如果此文件不存在的话,每次用ClassWizard的时候回提示是否重建。
.dsp(DevelopStudio Project):项目文件,文本格式,不过不熟悉的不要手工修改。.dsw(DevelopStudio Workspace):是工作区文件,其他特点和.dsp差不多。
.plg:是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大。在单击菜单【Tool】->【Option】弹出的对话框里面有个选项可以控制这个文件的生成。
.hpj(Help Project):是生成帮助文件的工程,用microsoft Help Compiler可以处理。.mdp(Microsoft DevStudio Project):是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的.dsp格式。
.bsc:是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件。如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,这样可以加快编译速度。
.map是执行文件的映象信息记录文件,除非对系统底层,这个文件一般用不着。.pch(Pre-Compiled File):是与编译文件,可以加快编译速度,但是文件非常大。
.pdb(Program Database):记录了程序有关的一些数据和调试信息,在调试的时候可能有用。
.exp:只有在编译DLL的时候才会生成,记录了DLL文件的一些信息,一般也没有用。.ncb:无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。
第二篇:数控编程经验总结
一、刀路的总则:
开粗:在机床的最大负荷下,绝大部分情况应选用尽可能大的刀,尽可能大的的进刀量,尽可能快的进给。在同一把刀的情况下,进给与进刀量成反比。一般情况下,机床的负荷不是问题,选刀的原则主要依产品的二维角与三维弧是否过小来考虑。选好刀后,便定刀长,原则是刀长大于加工深度,大工件则要考虑夹头是否有干涉。光刀:光刀的目的是为了达到满足工件表面光洁度、预留适当余量的加工要求。同样,光刀选用尽可能大的刀,尽可能快的时间,因为精刀需要较长的时间,用最合适的进刀与进给。在同一进给下横向进刀越大越快,曲面进刀量与加工后的光洁度有关,进给的大小与曲面的外表形状有关,在不伤及面的情况下,留最小的余量、用最大的刀、最快的转速、适当的进给。
二、装夹方法:
1、所有的装夹都是横长竖短。
2、虎钳装夹:装夹高度不应低于10个毫米,在加工工件时必须指明装夹高度与加工高度。加工高度应高出虎钳平面5毫米左右,目的是保证牢固性,同时不伤及虎钳。此种装夹属一般性的装夹,装夹高度还与工件大小有关,工件越大,则装夹高度相应增大。
3、夹板装夹:夹板用码仔码在工作台上,工件用螺丝锁在夹板上,此种装夹适用于装夹高度不够及加工力较大的工件,一般中大型工件,效果比较好。
4、码铁装夹:在工件较大、装夹高度不够,又不准在底部锁缧丝时,则用码铁装夹。此种装夹需二次装夹,先码好四角,加工好其它部分,然后再码四边,加工四角。二次装夹时,不要让工件松动,先码再松。也可以先码两边,加工另两边。
5、刀具的装夹:直径10mm以上,装夹长度不低于30mm;直径10mm以下,装夹长度不低于20mm。刀具的装夹要牢固,严防撞刀与直接插入工件。
三、刀具的分类及其适用范围:
1、按材质分:
白钢刀:易磨损,用于铜公及小钢料开粗。钨钢刀:用于清角(特别是钢料)及光刀。合金刀:类似于钨钢刀。紫刀:用于高速切削,不易磨损。
2、按刀头分:
平底刀:用于平面及直身侧面,清平面角。球刀:用于各种曲面中光、光刀。
牛鼻刀(有单边、双边及五边):用于钢料开粗(R0.8、R0.3、R0.5、R0.4)。粗皮刀:用于开粗,注意余量的留法(0.3)。
3、按刀杆分:
直杆刀:直杆刀适用各种场合。
斜杆刀:但不适用于直身面及斜度小于杆斜度的面。
4、按刀刃分:
两刃、三刃、四刃,刃数越多,效果越好,但做功越多,转速及进给相应调整,刃数多寿命长。
5、球刀与飞刀光刀的区别:
球刀:凹面尺小于球尺,平面尺小于球R时,光不到(清不到底角)。
飞刀:优点是能清底角。相同参数的比较:V=R*ω转速快许多(飞刀),力大光出的东西亮,飞刀较多地用于等高外形,有时用飞刀不需中光。缺点是凹面尺寸及平面尺小于飞刀直径时光不到。
四、CNC配合电火花加工,铜公的做法:
1、什么情况下需要做铜公:
刀完全下不去要做铜公,在一个铜公中还有下不去的,形状是凸出需再分。刀能下去,但易断刀的也需做铜公,这需根据实际情况而定。要求火花纹的产品需做铜公。铜公做不成的,骨位太薄太高,易损公且易变形,加工中变形与打火花变形,此时需镶件。
铜公加工出的东西表面(特别是曲面会很顺很均匀)能克服精锣中的许多问题与绘图中的许多问题。要求精确外形或余量多时必须做粗铜公。
2、铜公的做法:
选出要做铜公的面,补全该补的面,或延长该延的面,保证铜公的所有边缘大于要打的边缘同时不伤及其它产品的面,去掉不必要的清不到的平面角(与平面角相交处是更深的胶位),补成规则形状;找出铜公最大外形,用一边界然后投影到托面;定出基准框大小,剪掉掉托面,到此铜公图基本完成;备料:长*宽*高,长与宽≥Ymax与Xmax为基准框实际铜料的长宽必须大于图上基准框。高≥铜公的理论尺寸+基准框高+装夹高度。
五、图纸定数问题:
1、在没有现成的加工面下,平面四面分中,中心对原点,顶面对零,顶面不平时(铜公而言)留0.1的余量,即碰数时,实际对(z),图上偏低0.1。
2、当有现成的加工面时,使图上的现成面对0(z),平面能分中则分中,否则以现成边碰数(单边)加工面则要校核实际高度,宽,长与图纸差别,按实际的料来编程。一般情况,先加工成图上的尺寸再加工图上形状。
3、当要多个位加工时,第一个位(标准位),就要把其它几个位的基准锣好,长宽高都要锣,所有下一次加工基准要以上次已加工好的面为准。
4、镶件的定位:放在整体里面,把下面垫起一定高度然后图纸也升高此高度,平面按整体分中,高度按图下面用镙丝锁住;是方方正正的则可直分中;粗略一点可用最大外形分中;割一夹具,按夹具分中,镶件图与夹具的相对位置确定然后把图纸原点放在夹具中心点。
六、开粗的刀路选择:
1、曲面挖槽:
关键是范围的选择与面的选择,刀路加工的区域是以所选范围内所选面为终止面,从最高点到最低点刀具能下得去的所有地方为原则。所选面最好是全体面,边界则只能是所要加工的区域,无面处延伸小于半个刀径的距离,因为其它面留有足够余量所以自动保护;最好延伸最低线,因为最低处有一个R锣不到。
刀的选择:如刀具不能螺旋或斜线进刀时或加工不到的区域进不了刀的区域封起,留待二次开粗。光刀之前,一定要把未开粗的区域全部开粗,特别是小角,其中包括二维角,三维角及封起来的区域,不然则会断刀。
二次开粗:一般用三维挖槽选范围,平底刀,能用平面挖槽与外形刀路的则用。在不伤及其它面的情况下刀具中心到所选边界,一般不精修边界,用快速双向角度视情况而定,螺旋进刀,角度1.5度,高1,当挖槽形状为条形,不能螺旋下刀则用斜线进刀,一般打开过滤,特别是曲面开粗,进刀平面不可低,以免撞刀,安全高度不可低。
退刀:一般不用相对退刀,用绝对退刀,当没有岛屿时则用相对退刀。
2、平面挖槽:铣各种平面,凹平槽,当铣部分开放式平面时,则需定边界,原则能进刀(大于一个刀径),开放处偏外大于半个刀径,封闭外围。
3、外形:当所选平面适合外形分层,则用外形分层提刀(平面外形),提刀点与下刀点为一点时,不须提刀z平面一般提刀,尽量不用相对高度;补正方向一般右补正(顺刀)。
4、机械补正的刀路设置:补正号为21,改电脑补正机械补正,进刀为垂直进刀,刀过不了的地方则改大R不留余量。
5、等高外形:适合于走封闭式的面,走开放式的面若是四圈则要封项面,若是四圈内或非四圈则要选范围与高度(一定弧形进刀开粗),用于开粗的情况:任一平面内的加工距离小于一个刀径,若大于一个刀径则要用更大的刀或两次等高外形。
6、曲面流线:具有最好的均匀性与干脆性,适合光刀很多时候可取代等高外形。
7、放射刀路:适合中间有大孔的情况(少用)。注意事项:弹刀,刀不锋利,刀过长,工件过深时要环绕走不可上下走;工件中的利角两边的面要分两个刀路,不可越过去,光刀时的边缘最好延长(用弧线进退刀)。
七、清角:
1、这里的清角清的是二维死角,是前面工序都未曾走到的部分,如光刀需走到的地方则应先清角再光刀,太小大深的角可分几把刀清,不要用小刀清太多地方。
2、清三维角:开一些小槽,一些三维转角处。
3、易断刀,一定要考虑像细刀、过长,加工量过大(主要是z向,深度方向)的情况。
4、刀路:用二维外形走,只能清小角(R0.8)及二维平面角;用平行刀路;用等高外形;有一种地方刀子去不了的曲面及外形走不到的死角则要先封起来起刀,最后清角,大面中的小缺口一般先封起来。
八、中光:
1、中光:作为曲面的钢料与细公才中光。
2、原则:大刀开粗时层与层间的余量较多,为使光刀时得到更好效果的一道工序,3、特点:快速清除,大刀飞刀亦可,大进给,大间距;不必顾忌表面质量;平面的工件不必中光;等高外形的工件不用中光,等高外形开粗时可细一点把两道工序放在一起,细一点指表面余量与层与层的距离;需不需中光,还有一个重要因素是工作的材料,材料越硬,则考虑中光;中光的加工方向与光刀开粗最好相对这样加工的东西会效果好,均匀。
九、光刀:
光刀是要达到各种产品与模具的装配要求所以要非常慎重,根据不同的要求给予不同的刀路设置与参数设置。
1、光刀的下刀高度与最后高度都改为0,公差设计1个丝以内,不需过滤(工件越小公差越小,公差影响外型)。
2、前模与分型面要达到最好的光洁度,后模可次,其它非配合及避空位可粗糙点。
3、刀路设计由以下因素决定:
具体外形(如平面与其它面),陡峭面与平坦曲面。两面之间是否利角(利角则分开)。两部分是否要求不同(要不要留余量,余量的多少,光洁度的要求不同)。光刀中保护面问题是个大问题,对已加工好的面一定要预到加工中的误差保护起来,按保护面的要求保护起来。范围保护,不计误差的0保护,高度范围与平面范围;保护面保护。
刀路的延长问题:光刀中,刀路加工到边缘时最好作圆弧进退刀否则事先把面稍加延长。
光刀中的提刀问题:提刀浪费时间,所以尽量避免提刀。方法1:设提刀间隙(小缺口)
方法2:封面,把提刀处封起来(小缺口)方法3:避开间隙(大缺口处)
方法4:等高外形时延长到同一高度,光刀中的进刀问题,第一刀进刀一定要从工件外进,避免振动及碰伤工件,所有光刀一定设进刀。刀具的磨损问题:当工件较大时,需多把刀光完同一工件。
第三篇:热血Vc++
Ying--2012-9-3
第一章 基础构建平台
一.Vc++项目文件
.dsp 整个工程的项目文件
我需要手动添加.h(c++的头文件,一般是类的声明文件)和.cpp(c++的源文件,是类的函数定义和整个程序实现文件)
二. C++的输入输出
cin 和 >> 配合使用,cout 和 << 配合使用
由于cout 和cin 定义在头文件 iostream.h 中。编写程序是需要此文件包含在程序中。体现为#include “iostream.h”
三. C++的面向对象的编程
类的关键词class
对象是类的一个实例,就像int和 i 的关系
构造函数和析构函数(需要熟悉!)
1.析构函数加 ~ ; 析构函数实现和构造函数相反的功能。
2.友元函数不是类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有成员。(程序中如非必要,应尽量减少友元的使用);使用时,需要在函数名or 前面加friend
四. mfc和windows 编程基础
1.mfc是微软的基础类库,其核心是以C++类的形式封装了 windows的 API(application program interface 应用程序接口)函数。
2.c++的控制台程序中,每一个程序的入口程序是main()函数,同样在windows 程序中也有一个入口程序,即winmain()函数,其功能:
a.注册窗口类。建立窗口及做一些初始化工作
b.进入消息循环,接受消息并进行处理
c. 当检索到退出消息时,销毁窗口,推出程序并进行扫尾工作。
第二篇可视化程序设计
一.对话框应用程序设计
a.
二. 单文档和多文档
三.Windows标准控件的应用
四.菜单、工具栏和状态栏设计
五.Windows图形处理和文本输入输出
第三章 windows编程篇
一.文件操作
二.注册表和INI文件
三.DLL动态链接库
四.多线程编程
第四章 VC++开发篇
一.数据库应用程序设计
二.网络编程
三.多媒体编程
第五章 实例篇
一.图书管理系统的实现
二.简单邮件客户端实现
三.媒体播放器的实现
第四篇:《VC++程序设计》教学大纲
《Visual C++与面向对象程序设计》教学大纲
课程编号:
课程类型:计算机科学
学 时:48(其中讲课32,机时16)学 分:3 适用对象:计算机及理科的全部或部分专业 先修课程:计算机文化基础 使用教材及参考书:
《Visual C++与面向对象程序设计(第二版)》,吕军等,高教出版社,2003年8月 《Visual C++与面向对象程序设计》,刘路放,高教出版社
一、课程的性质、目的及任务
“Visual C++程序设计”是面向计算机类各专业的必修计算机类专业基础课程。该课程介绍基本的程序设计技术,包括结构化程序设计方法(SP)、面向对象的程序设计方法(OOP)以及使用Visual C++和MFC开发WINDOWS应用程序的技术。通过本课程的学习,使学生掌握现代程序设计的基本理论和方法,能用Visual C++进行基本的WINDOWS应用程序设计。
本课程的重点在培养学生的实际应用软件开发能力.二、教学基本要求
通过本课程的学习,在结构化程序设计方法和面向对象的程序设计方法的基本理论研究WINDOWS应用程序开发和MFC编程能力方面达到以下基本要求:
1.熟悉计算机程序的基本组成要素,包括数据类型、程序流程、函数和指针等基本概念; 2.理解结构化程序设计方法(SP)的理论,掌握“自顶向下,逐步求精”的程序设计技术,可设计含有分支、循环和模块(函数)的程序; 3.掌握C++的基本流程控制;
4.理解类、对象、封装、继承和多态性等面向对象程序设计(OOP)概念,掌握基本的面向对象程序设计方法;
5.理解WINDOWS的消息机制和WINDOWS应用程序的基本结构;
6.掌握MFC的基本概念,窗口、资源、图形设备接口、文档/视图结构、对话框和控件等对象的程序设计方法,Visual Studio中的AppWizard、ClassWizard、资源编辑器和调试器等工具的方法,可用Visual C++开发基本的WINDOWS应用程序。
三、教学内容及要求
1.Developer Stadio集成开发环境
主要内容:软件开发、算法、程序的基本知识;C++程序的基本要素以及Visual C++的集成开发环境使用初步。
基本要求:了解C++程序的基本特点, 熟悉Visual C++集成开发环境的基本使用方法。2.控制结构
主要内容:结构化程序设计方法的基本思想以及C++的基本控制结构和控制转移语句。基本要求:掌握结构化程序设计方法的基本思想和C++的几种基本控制转移语句,熟悉使用伪代码的编程方法。3.数据类型
主要内容:C++的基本数据类型以及常数、变量和数组的使用方法。
基本要求:掌握几种基本数据类型, 包括字符型、整型、长整型、浮点和双精度数据类型的基本概念, 以及常数、变量和数组的使用方法。4.表达式
主要内容:介绍C++的表达式和表达式语句。基本要求:熟练掌握C++的各种表达式, 特别是赋值表达式及其他有副作用的表达式。5.函数
主要内容:介绍C++函数的定义、声明和调用方法。
基本要求:熟练掌握C++函数的编写和调用方法,以及内联函数、函数重载和递归函数的概念。
6.指针与引用
主要内容:介绍C++中指针和引用的基本概念。
基本要求:理解和掌握指针的基本概念,以及指针型变量的声明方法、怎样通过指针类型的变量去访问某个变量或数组元素的值;引用的概念和用法。7.类与对象
主要内容:介绍面向对象程序设计方法的基本原理以及类和对象的概念。
基本要求:掌握面向对象的程序设计思想,类和对象的概念,以及类的声明方法和对象的引用。
8.继承与多态性
主要内容:介绍类的继承与派生、虚函数和运算符重载等面向对象程序设计的基本概念。基本要求:深入理解面向对象程序设计方法的基本思想,包括封装、继承和多态性及其在C++中的实现方法。
9.WINDOWS应用程序的特点
主要内容:介绍WINDOWS编程的基本思想和MFC程序框架的基本结构。
基本要求:理解WINDOWS的基本编程思想,特别是其消息传递机制,弄清MFC程序的组成及各部分的作用。10.图形设备接口
主要内容:介绍Windows的图形设备接口(GDI)和MFC的图形对象。
基本要求:了解图形设备接口的概念,掌握画笔、画刷和字体的用法,以及逻辑坐标和设备坐标的概念。11.资源
主要内容:介绍资源的概念以及图标、位图、菜单、工具栏和状态栏等资源的编程方法。基本要求:掌握Developer Studio的各种资源编辑器的用法,能在应用程序中添加图标、位图、菜单和工具条等资源并进行相应的编程工作。12.文档视图结构
主要内容:介绍MFC的文档/视图程序结构。
基本要求:理解文档/视图结构,可在AppWizard生成的应用程序框架的基础上添加必要的代码,以生成自己的应用程序。13.序列化与文档打印
主要内容:介绍在文档/视图结构中文档读写的基本手段——序列化,以及文档打印的编程技术。
基本要求:理解序列化的基本思想和MFC的打印工作流程,可编写相应的处理程序。14.对话框与控件 主要内容:介绍对话框和控件的概念,以及常用控件的使用方法和基于对话框的应用程序编程。
基本要求:理解对话框、对话框模板和控件的概念,掌握常用控件的使用方法以及基于对话框的应用程序开发,以及数据交换和验证机制,可编写使用对话框的应用程序。
四、实验环节
实验
一、Visual Studio集成环境及C++程序的输入、调试和运行(4学时,分2次完成)实验
二、面向对象程序设计(4学时,分2次完成)
实验
三、基本WINDOWS应用程序编程(4学时,分2次完成)实验
四、文档/视图结构程序设计(2学时,分1次完成)实验
五、对话框应用程序设计(2学时,分1次完成)
五、学时分配表
说明:本课程为实行“精讲多练”教学改革的课程, 重视实验环节.本课程分为16个教学单元, 每单元3学时, 两学时授课, 1学时上机实验.授课采用有联机大屏幕投影的电化教学手段进行.序号 内 容 分配学时数 Developer Stadio集成开发环境
控制结构数据类型
表达式
函数指针与引用类与对象
继承与多态性WINDOWS应用程序的特点
图形设备接口
资源文档视图结构序列化与文档打印对话框与控件
总计
2 2 2 2 2 2 2 2 2 2 4 2 4 32
考核方法: 笔试
2004年12月
第五篇:Vc++程序设计课程教学大纲
《VC++程序设计》课程教学大纲
总学时:54
学分:3 理论学时:34
实验学时:20 面向专业:计算机科学与技术课程代码:2710015 先开课程:数据结构、C语言、面向对象程序设计课程性质:选修 执笔人:张磊审定人:陈龙猛、于仁师 第一部分:理论教学部分
一、说明
1、课程的性质、地位和任务
《VC++程序设计》最重要的任务是发展学生的智力,即编程、上机调试能力,具体到教学内容上则是重在使学生掌握理论教学中的重点和难点,对VC++语言的编程技巧能熟练掌握,提高自身的编程能力,加强素质教育。注重从事理论研究、实验工作的能力和严谨的科学作风的培养,提倡创新精神。
2、课程教学和教改基本要求
本课程主要讲解Visual C++6.0的语法结构、体系结构、各种组件,以及微软在Visual C++6.0中推出的各种新技术。通过本课程的学习,使学生熟悉采用面向对象编程语言进行Windows 可视化开发,掌握面向对象的编程思想,熟悉面向对象编程的消息响应。
本课程主要采用多媒体教室讲课,讲课与上机实验相结合,并辅以实际应用案例、常见问题分析等,巩固所学内容,基本要求如下:(1)掌握面向对象程序设计的基本概念(2)熟悉Visual C++集成开发环境
(3)掌握Visual C++语言的基本内容、常用的算法
(4)理解WINDOWS的消息机制和WINDOWS应用程序的基本结构
(5)掌握MFC的基本概念,窗口、资源、图形设备接口、文档/视图结构、对话框和控件等对象的程序设计方法
(6)可用Visual C++开发基本的WINDOWS应用程序
二、教学内容与课时分配
第一章
Visual c++概述(学时数:1)
本章将重点介绍Visual c++的总体功能和特点,具体讲述Visual c++6.0版的安装过程,并详细介绍。教学内容:
1、Visual c++开发环境、Visual c++向导、Visual c++应用程序环境。
2、Visual c++安装过程。
3、Visual c++菜单栏、Visual c++工具栏、Visual c++工作区、Visual c++资源编辑器。本章重点难点:Visual c++6.0版开发环境的熟悉
建议教学方法:先讲解主要知识点,再通过多媒体演示达到教学效果。思考题
1、Visual c++的安装有什么要求?
2、Visual c++的帮助文件如何安装?
3、简单描述Visual c++开发环境?
第二章使用Visual c++创建控制台程序(学时数:2)
本章主要通过一个具体实例——“Hello World”程序,演示Visual c++开发环境下建立一个控制台程序的完整过程。教学内容:
1、创建“Hello world”程序的基本步骤。
2、创建控制台程序的输入、输出。
3、熟悉控制台程序句柄与I/O。
4、解析控制台程序窗口。
本章重点难点:Visual c++6.0版开发环境的熟悉
建议教学方法:先讲解主要知识点,再通过实例讲解进行巩固 思考题
1、如何控制自定义控制台程序的输入、输出?
2、如何读取控制台程序中的文字与背景?
3、如何在控制台窗口的指定部位写入指定的字符信息? 第三章使用Visual c++创建windows应用程序(学时数:2)
本章将传统Windows应用程序和以MFC为基础的Windows应用程序作比较,并详细介绍应用程序向导的使用方法和Visual c++的消息系统及其消息映射机制。教学内容:
1、简介传统windows程序。
2、概述Visual c++中windows程序。
3、介绍如何使用向导生成应用程序。
4、介绍如何使用Visual c++中的消息与命令。
本章重点难点:如何使用向导生成应用程序、如何使用Visual c++中的消息与命令。建议教学方法:知识点的详细讲解,结合例子。思考题
1、使用Windows API编程与使用MFC编程有什么区别?
2、用户如何定义消息?
3、简述MFC消息映射的机制?
第四章
windows可执行程序的基本类型(学时数:2)
本章主要介绍Visual c++的三种应用程序类型:对话框应用程序、单文档应用程序和多文档应用程序。详细阐述Windows系统对话框的类型及其在Visual c++的制作方法。教学内容:
1、对话框应用程序的制作。
2、文档应用程序的制作。
本章重点难点:多文档应用程序的制作
建议教学方法:知识点讲解,多媒体实例演示。思考题
1、Windows程序有几种类型?
2、如何创建和使用非模式对话框?
3、文档、视图与文档模板的关系是什么? 第五章
windows标准控件的使用(学时数:3)本章主要介绍Windows中的几种常用控件表头控件、图像列表控件、列表控件、树控件、标签控件、进度条控件等及其在Visual c++的实现方法 教学内容:
1、如何使用表头控件。
2、如何使用图像列表控件。
3、如何使用列表控件。
4、如何使用树控件。
5、如何使用标签控件。
6、如何使用进度条控件。
7、如何使用滑动条控件。
8、如何使用状态条控件。
本章重点难点:各个控件的具体使用方法和用途 建议教学方法:知识点讲解,多媒体实例演示。思考题
1、如何绘制ListCtrl和TreeCtrl中Item的背景颜色?
2、如何在对话框中使用控件与在普通的窗口中使用控件有什么不同?
3、应用控件表头控件、图像列表控件、列表控件、树控件、标签控件等创建一个简单的应用程序?
第六章使用Visual c++编写多媒体程序(学时数: 4)本章主要介绍如何在Visual c++中实现图像、声音、视频等多媒体应用程序的制作。教学内容:
1、介绍几种多媒体数据格式
2、位图操作方法
3、多媒体控制实现方法。
4、简介DirectX编程
本章重点难点:多媒体数据格式、多媒体控制实现方法 建议教学方法:知识点的重点讲解,多媒体实例演示。思考题
1、如何在对话框中显示位图?
2、编写一段程序,实现播放MIDI的功能?
3、DirectDraw与GDI编程有什么区别?
第七章使用Visual c++编写数据库程序(学时数: 4)本章主要介绍Visual c++中三种主要的访问数据库的方法:使用ODBC访问数据库、使用DAO访问数据库、使用ADO访问数据库。教学内容:
1、如何使用ODBC访问数据库。
2、如何使用DAO访问数据库。
3、如何使用ADO访问数据库。
4、说明ODBC与DAO的常用类
本章重点难点:使用ODBC、ADO访问数据库 建议教学方法:知识点的重点讲解,同类的对比 思考题
1、如何配置ODBC数据源,使用MFC如何配置数据源?
2、使用DAO可以打开SQL Server数据库吗?
3、试使用DAO实现如下功能:创建数据库、创建表、然后实现数据库程序的增、删、改、查的功能?
第八章使用Visual c++编写网络应用程序(学时数:4)本章主要介绍如何使用Visual c++编写对网络进行操作的程序。教学内容:
1、Winsock编程技术简介、示例演示。
2、WinInet编程技术简介、示例演示。本章重点难点:WinInet编程技术
建议教学方法:知识点讲解,实例演示相结合。思考题
1、如何编写程序实现“ping”的功能?
2、试使用CAsyncSocket类和派生CSocket类,编写不同主机的通讯程序?
3、试使用MFC编写FTP程序,并能够实现断点续传功能? 第九章使用Visual c++编写动态链接库程序(学时数:4)本章重点讲解如何使用Visual c++编写动态链接库程序。教学内容:
1、动态链接库类型和生成。
2、如何使用动态链接库。
本章重点难点:动态链接库的生成、如何使用动态链接库。建议教学方法:知识点讲解。思考题
1、创建导出函数的方法有几种?
2、.LIB文件和.DLL文件有什么联系?功能是什么?
3、DLL的调用方式有几种,有什么区别?
第十章使用Visual c++编写多线程程序
(学时数:3)本章主要介绍两种建立线程的方法:线程间通讯和线程同步。教学内容:
1、如何编写多线程程序。
2、如何实现线程通讯。
3、如何实现线程同步。
本章重点难点:编写多线程程序。
建议教学方法:知识点的讲解与多媒体演示教学结合 思考题
如何定义线程的优先级?
如何知道一个线程的运行情况? 如何实现线程同步?
第十一章
COM编程简介
(学时数:3)本章简单介绍COM编程的基本概念和方法。教学内容:
1、介绍COM的基本概念。
2、概述COM编程。
3、创建COM程序
本章重点难点:介绍如何创建COM程序。思考题
1、COM与ActiveX有什么区别与联系?
2、COM组建最基本的接口是什么?
3、简述COM对象的生成与销毁过程
第十二章
Visual c++的调试技术
(学时数:2)本章将简单介绍Visual c++的调试技术。教学内容:
1、讲解Visual c++的基本调试技巧。
2、介绍TRACE和ASSERT的使用。
本章重点难点:Visual c++的基本调试技巧。建议教学方法:多媒体演示教学 思考题
1、编写一个简单程序,使用调试器在汇编级别跟踪它的运行情况?
2、断言的使用有什么优点?有几种断言宏?
3、如何观察程序是否有资源泄漏?
三、本课程考核方式、方法
本课程理论部分采用笔试方式,共100分:闭卷考试,占60%;上机实验占20%;平日作业占10%,出勤占10%。第二部分:实验教学部分
一、说明
1、本门课程实验的性质任务、目的与要求
实验是本课程教学的一个非常重要的环节,采取上机的形式进行。本实验课程的教学目标是使学生通过20课时的上机实验,认识并学会VC++集成环境的基本使用,掌握计算机程序的编辑,编译、调试和运行的一系列操作步骤和方法,理解并消化课堂中学到的理论知识,锻炼分析解决问题的能力。初步掌握计算机编程及调试技术,为今后计算机应用在本专业领域打下良好的基础。
基本要求:熟悉Visual C++的集成开发环境、掌握编程步骤、Visual C++语言基础,能用该开发工具设计,编写简单、实用的应用程序。
2、本门课程实验项目设置情况 序号
实验名称
学时
必开
选开
实验类型
内容提要
验 证
基本 操作
综 合设 计
应 用
创 新
VC++语言使用 环境 √
√
VC集成环境及应用程序创建初步
Visual C++简单程序初步设计
√
√
建立简单的Visual C++应用程序
Windows标准控件的使用 √
√
熟悉Windows中的几种常用控件及其在Visual c++中的实现
编写多媒体程序 √
√
熟悉在Vc++中实现图像、声音、视频等多媒体应用程序的制作
Visual c++中访问数据库的主要方法 √
√
熟悉VC++中三种主要访问数据库的方法并学会创建
网络应用程序的编写 √
√
学会使用Vc++编写对网络进行操作的程序
动态链接库程序的编写 √
√
学会使用Vc++编写动态链接库程序
Visual c++的调试
√
√
熟悉并掌握Visual c++的基本调试技巧
二、各实验项目教学要求。
1.实验目的:学习操作使用,理解消化理论知识,理论联系实际,掌握可视化面向对象程序的设计、编辑、调试、运行等基本技能,强化程序设计思想,培养分析问题解决问题的能力。2.所需仪器设备及材料:Pentium以上微机,Windows98以上操作系统,安装Visual C++ 6.0.3.实验步骤:
开机启动编辑运行环境; 建立工程; 程序设计; 存盘调试运行;
重复步骤(3)-(5); 关闭系统。
4.问题讨论,编写实验报告等; 5.各项实验内容
VC++语言使用环境:熟悉Visual C++及其开发环境;初步了解运行一个C++及Visual C++程序的过程。
Visual C++简单程序初步:进一步熟悉Visual C++语言环境;明确Visual C++语言程序的结构,掌握Visual C++语言程序的书写格式。
Windows标准控件的使用:掌握Windows中的几种常用控件表头控件、图像列表控件、列表控件、树控件、标签控件、进度条控件等及其在Visual c++的实现方法。
编写多媒体程序:了解多媒体数据格式,掌握实现图像、声音、视频等多媒体应用程序的制作的方法。
Visual c++中访问数据库的主要方法:掌握Visual c++中三种主要的访问数据库的方法:使用ODBC访问数据库、使用DAO访问数据库、使用ADO访问数据库的方法。
网络应用程序的编写:掌握如何使用Visual c++编写对网络进行操作的程序的方法。动态链接库程序的编写:了解并掌握动态链接库的生成、如何使用动态链接库。Visual c++的调试:了解并掌握使用Visual c++的基本调试技巧。
三、考核方式和成绩评定要求等。
根据实验报告和结果进行评定,实验成绩占总成绩的20%。第三部分:建议使用的教材和参考书目 [1] 《Visual C++6.0教程》,于涛等编著, 2002,科学出版社。