第一篇:c++实践心得体会1600
在本课程学习过程中我遇到了下面这些问题:
1、刚开始C++实践理论课的学习时,我的学习兴趣很高,总想着自己能够完全掌握PPT的知识,做成一个完美的程序。随着学习的进展,调试程序总是出现问题,最夸张的一次出现了204个ERRORS,也经常不知道怎么去在正确的期房插入程序块。而比较严格的语法规则,也让我一时难以接受,产生畏难情绪,总是怕,最后因为怕学不好而导致没有学好。
2、注重理论学习,忽视上机编程实践,造成“只能用笔在纸上编程”的奇怪现象。特别是在刚开始时,我一开始编译连接就手忙脚乱,总是会出现许多错误。有时程序则一再出现错误,使我就更不理解该如何查找错误,如何排除错误了。
3、在前期的学习中我没有抓得很紧,总觉得不是很难,希望通过突击搞定课程学习。而事实上,本课程实践要靠平时的积累,几乎不能靠临时突击,因为前面基础不够扎实,到了后面险些无法弥补。
4、我发现自己在后期的学习中有些急于求成,总想编写综合性的程序,把老师的要求一次性尽快完成。这直接导致了我编的程序一时很乱,几乎无法阅读。
后来才发现为了学好本课程,没有什么窍门,只能采用一些“笨”技巧:
认真听讲,积极思考,提高上课效率。老师上课讲述的都是课程实践的重点和难点,听好课程能够达到“事半功倍”的目的。
主动上机,多多实践,提高动手才能,实习时不能着急。通过上机实践来验证所学的理论,通过在机器上查找错误来巩固概念,通过提高上机才能来促进理论学习,开阔编程思路,提高反映效率,提高分析问题解决问题的才能,锻炼心理素质,提高心理承受才能。
这是第二次上计算机实践课程了,第一次是网页设计。虽然两次要完成的任务不同,但给人的感觉都是较迷茫的。由于我上课时没有认真听C++课程老师的讲解,学得相当糟糕,但要设计的又是一个较大的程序,便去请教老师。老师建议我们找一个模板,认真仔细地看,去理解它,看懂它,然后根据自己的实践内容适当修改,应该就没多大问题了。
老师的话给了我莫大的鼓励,但不自觉地滋生了傲慢的态度。只要有个模板不就行了嘛,小事一桩啊!但结果并非如此,在后来的实践过程中,我还是碰到了许多麻烦。
其中,对于按省份给每个省的总发表篇数进行排序这一问题,刚开始真的不会弄,我一开始以为要用一维数组来排序,可还是不太明白。于是,我询问了周边同学,才知道他们用的是Access导入C++,再利用Access的排序功能,并且调试成功了,听他们讲解后我便用了他们的方法。与同学讨论、向同学请教有时候也不失为一个好方法,一个人的智慧毕竟是不全面的,集体的力量才是强大的!同时,在运行时老是会出现一些错误,但我发现其实里面的参数并不复杂,只要跟着那个error的提示,一个一个的改下去,其实很简单的。结果事实也是如此,用了一个小时多一点,102个错误全部搞定了。错误几乎为以下三类:
1.冒号,分号等符号打错了; 2.大小写等造成的对应问题; 3.变量的不完全修改。
改完以后,在执行时我发现界面不好看,于是我又将主界面略加修改了些。看上去美观了不少。再运行功能,几乎都能顺利运行,但还是存在一些瑕疵,但是我还是不太会弄清怎么回事。于是,又去问同学,在他们的帮助下,成功解决这个问题,在此真要好好谢谢他们!
终于大功告成!欣慰在这次实践中,我不仅弥补了自己在C++课上所落下的内容,尤其是指针那块部分,虽然现在概念搞的还不是很懂,但看见程序是能够理解的。这次C++实践是给我们这一学期来所学知识的一个总复习,总的实践。它让我们把所知道的知识点运用的更好,把不知道的知识点搞得明白了。实践出真知,通过这次实践,我也系统的把课本好好的第四次回顾了下。猛然觉得,C++二级考试更有把握了。
在本门课程实践过程中,我更好的领悟了自学的重要性,并且和同学加强了交流,以便我们互相及时答疑解惑。同时我也学会了采用多种形式进行交流,不仅只是传统的面对面进行相互答疑,同时也利用网络通过百度知道、百度文库、邮件、BBS进行网上交流,也学会了绝对不要将问题积累到最后。
同时在本次实践中,我还开阔了眼界,打开了思路,阅读了几本关于C++编程的教程,从而通过理解不同作者对于C++的不同看法,来提高我对C++的理解,以方便自己在未来对C++的进一步学习。
第二篇:C++实践报告
中南大学
本科生课程设计(实践)任务书、设计报告
(C++程序设计)
题 目 学生姓名 指导教师
C++程序设计实践
* *
孙 岱
学 院 地球科学与信息物理学院 专业班级 信息物理工程类1106班 学生学号
01451106**
计算机基础教学实验中心
2012年 7 月 日
C++程序设计实践报告书
C++是一种使用非常广泛的电脑程式设计语言,在当今网络如此发达的时代能够运用C++语言进行编程显得尤为重要。它是一种静态资料类型检查的,支援多范型的通用程式设计语言。C++支援程序化程式设计、资料抽象化、面向对象程式设计、泛型程式设计、基于原则设计等多种程式设计风格。在系统学习完《C++程序设计基础》课程后,我们在老师的指导下进行了这次C++程序设计实践,主要以visual C++6.0为编译环境,重点使用了visual C++ MFC编程实现实践所要求的功能。
【任务描述】
这次实践采用了上机实践与老师集体辅导结合的方式,以完成辅导老师下发的《C++语言课程设计任务书》中指定任务与要求为目的,要求我们在已学过的《C++程序设计基础》所掌握的一些C++语言的结构和函数的基础上,以全新的角度去感知和运用C++语言进行一些具有相关目的和功能的程序设计和编译。在这次实践中,我们统一以visual C++ 6.0为编译系统,使用visual C++ MFC编程来达到和完成辅导老师给的《C++语言课程设计任务书》中给出的题目,其中部分题目以基本对话框为应用程序的框架,另一部分则设计为单文档界面(SDI)应用程序。这些程序都具有不同的设计目的和应用功能,运用了常用的基本控件,如静态文本框、命令按钮、编辑框、复选框、列表框、组合框、滚动条等。
本次实践可分为三部分:
一、基于对话框的Windows应用程序:
这部分以知识要点掌握与编程实例主辅结合的方式,让我们基本掌握了基于对话框的应用程序的创建过程,建立基于对话框的 MFC 应用程序框架,放置控件并设置控件属性,以及为控件连接变量(即为控件命名),添加并且编写消息处理函数。在这部分实践中,我按照任务书中要求按照任务书所给的实例,基本掌握了基于对话框的 MFC 应用程序中各常用的基本控件的使用。在完成对MFC编程的初步了解后,我们按《C++语言课程设计任务书》所给出的题目和要求完成了相关基于对话框的 MFC 应用程序的编译。实践完成了以下任务和要求:
1.编写一个如图所示的应用程序。若单击“复制”按钮,则把上面的编辑框中的内容复制到下面的编辑框中;若单击“结束”按钮,则退出程序的运行。
2.输入一元二次方程 ax2 +bx+c=0 的系数 a、b、c,计算并输出两个根 x1、x2。
3.编写一个能对列表框进行项目添加、修改和删除操作的应用程序。
4.设计如图所示的对话框。若选定了“日期”或“时间”复选框,则在对应的只读编辑框中显示系统当前日期或时间。
5.设计如图所示的对话框。单击“确定”按钮后,在列表框中显示选择的信息。
二、文档/视图结构应用程序:
文档/视图结构的思想是将数据的管理与显示分离,其中文档用于管理应用程序的数据,而视图是用户界面,用于显示、打印文档中的数据,并管理与用户的交互。在这部分实践过程中,通过对任务书中介绍的几种SDI结构的典型应用程序来了解其结构及设计方法,学习和实践了典型应用包括:利用画笔、画刷等工具及位图处理的方法实现文字和图形的输出。利用定时器控件制作动画程序。对鼠标和键盘进行编程的基本方法。文件、字体、颜色等几种通用对话框的使用方法及自定义对话框的设计、调用方法。菜单的设计方法。
通过课程实践,以及与同学之间的讨论,我们完成了这一阶段的任务要求:
6.编写一个程序,绘制如图所示的-2π~2π 之间的 sin 曲线。
7.设计一个如图所示的画图程序。要求按下鼠标右键画圆,按住鼠标左键移动画线。(图略)
8.用定时器控制蝴蝶在窗口中飞舞,如图所示。(图略)
9.设计一个如图所示的应用程序。若用户单击左键,则弹出输入成绩对话框,选择 OK 后平均成绩和总分在窗口的客户区输出。(图略)
10.设计如图所示的菜单,并编写相应用的消息处理函数。(图略)
三、完成综合题的程序设计:
将实践过程中选择3~5题(或类似的题),做成一个综合程序,要求通过菜单调用各部分功能。可自行组织和发挥,使其安排合适。
【系统设计思想】
首先建立一个单文档结构的应用程序作为综合程序的主程序,通过对菜单的设计完成与所需调用的各个对话框功能相适应的编辑。利用对话框类资源创建自己的对话框,然后建立成与实践中3~5题相对应的对话框,并分别按要求进行相关功能的实现。然后建立对话框类CMyDlg,在调用的地方建立对话框类对象CMyDlg dlg;然后dlg.DoModal();从而实现主程序对各个对话框的调用。在主程序的单文档界面的菜单中,可以对所需功能进行选择,然后调用出不同的对话框实现所系的功能,达到设计程序通过菜单调用各部分功能的目的。
【系统功能】
设计的综合程序以一个文档类的程序界面为依托,实现其余各个部分功能的调用。对书目管理、时间显示以及教师综合信息管理者三部分进行了整合,达到了对各个部分功能之间的调用。在主界面中,我们可以对所需功能进行选择,从而到达不同的对话框界面进行不同功能的交互。当我们在菜单中选择“书目管理”时,程序自动弹出书目管理对话框,然后我们能对列表框进行项目添加、修改和删除操作等。而我们如果在主界面的菜单中选择“时间显示”,则系统会跳至另一个对话框界面,这个界面可以对当前的时间进行显示,在对话框中若选择了“日期”或者“时间”复选框,则在对应的只读编辑框中显示系统当前的日期或时间,从而实现了对系统当前时间信息的捕获。如果我们在最初的主界面菜单选择了“教师综合信息管理”,则在弹出的对话框中我们可以实现对教师姓名、性别、爱好、工龄以及职称进行选择。
【设计过程】
首先打开VC++ 6.0编译系统,因为我设计的综合程序以一个文档类的程序界面为依托,实现其余各个部分功能的调用。对书目管理、时间显示以及教师综合信息管理者三部分进行了整合,从而达到了对各个部分功能之间的调用。所以创建过程如下:
按照任务书要求设定工程名为“xw1106_0145110626“,利用 AppWizard 创建一个 SDI 应用程序框架。
在工作区中选定“ ResourceView ”,展开 Menu,双击其中的 IDR_MAINFRAME,可以看到由 AppWizard 生成的标准菜单。首先删除原有菜单项,然后添加自己所需要的菜单,添加方式为:双击空白菜单框,弹出“ Menu Item Properties ”,输入菜单项的标题(名称)。若菜单项有一个子菜单(单击会弹出了一子菜单),则选定“弹出”,否则不要选定“弹出”;要输入一条分割线,则选定“分隔符”。我将菜单栏设定为三项,分别为“菜单”、“小工具”以及“QQ”,其中菜单包含三个子选项分别为“方程求解/时间显示/书目管理”,小工具包含“复制/字符游戏”,而“QQ”则是通过进程方式实现对外部软件QQ的调用。
利用“CDialog dlg;dlg.DoModal();”来实现各个子菜单项所对应的对话框的调用,而QQ的调用是个人加进去的(不是任务要求),利用了进程方式调用外部exe程序:STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si,sizeof(si));si.cb = sizeof(si);ZeroMemory(&pi,sizeof(pi));if(!CreateProcess(NULL, ”G:Program FilesTencentQQBinQQ.exe “,NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi)){ MessageBox(”出错 “, ”提示 ",MB_OK|MB_ICONINFORMATION);} WaitForSingleObject(pi.hProcess,INFINITE);CloseHandle(pi.hProcess);CloseHandle(pi.hThread);【运行情况】
编译链接后程序运行正常,能实现通过菜单项调出相应的对话框的目的,以一个文档类的程序界面为依托,实现其余各个部分功能的调用。对书目管理、时间显示以及教师综合信息管理者三部分进行了整合,达到了对各个部分功能之间的调用。其中点击QQ也能很快的弹出QQ登陆界面。在主程序的单文档界面的菜单中,可以对所需功能进行选择,然后调用出不同的对话框实现所系的功能,达到设计程序通过菜单调用各部分功能的目的。
【心得体会】
在为期不到两周的课程设计中,我体会颇多,学到很多东西。我懂得了如何用 MFC编写可视化界面的应用程序,我加强了对C++的认识,复习了自己以前的知识,自己的逻辑思考能力也提高不少。从而对Microsoft Visual C++ 6.0又有了更深入的认识!在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从理论变成了能做一些小型程序,让我对编程更加热爱了。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。特别是学会了在Visual C++ 集成开发环境中如何调试程序的方法。当然,老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中所有辅导老师对我的关心和帮助,诚心诚意感谢老师对我的鼓励与教导,是老师在我迷茫的时候给了我些许提示,激发了我编程的灵感;还有,我在此也十分感谢本次课程设计中同学们对我的帮助,尽管本次不是团队合作,但是他们也给了我不少的提示和帮助,我们相互沟通、共同进步。
【参考文献】
[1] 杨长兴、刘卫国.《C++程序设计》.中国铁道出版社
[2] 刘卫国、杨长兴.《C++程序设计实践教程》.中国铁道出版社
第三篇:C++心得体会
C++学习心得体会
通过一学期对C++的学习,我感觉学习C++是有一定难度却又是非常有趣 的科目。也是很有帮助的。
深刻感受到如果真的想要学好这么课,或者说是从这门课学到点什么东西 的话,那就是两个字:实践。学习编程的秘诀是编程,编程,再编程,一本再好 的书也不能挽救一个不动手的人。即使老师给了已经打好过的书上例子的程序,我们也应当把书上的程序例子亲手输入到电脑上实践,而且更高的境界是你应
当自己先尝试着写写代码,然后再看看自己的实现方法和书上的程序有何出入,或者谁的更好。所谓的实践就是自己上机练习,至少要把书上的例子调试通过,这很重要,因为一般数据机构后面的一些编程习题是再次基础上加进去的。书
上的成员函数的实现它不会全部写出来,只把当前所讲的一些重要的代码给出,基本上的数据结构书都是如此的,那些未给出的就要你自己去补充完整了,一
般都不会太难,有问题可以请教老师。书上的例子有很多都是一下子就给出了
所有的成员函数的声明,但实现可能不会全部写出来,篇幅限制。但我感觉也
不必把所有的成员函数都去一一实现,你可以一个一个来,解决一个再...C++相对于数学分析和高等代数来说还是简单一点,它没有复杂的计算,只
需要理解好知识点,然后多敲敲键盘写写程序就可以很好地掌握了,但是想学 的更好,我觉得必须的多看点课外书,这也是必须的。
这是个人的一点学习心得,希望能更好的运用到学习中去。C++是一门很有
用的、对于我们的就业很实际的语言,学习好C++是一项必须而实际的任务。我
们必须要好好掌握。
——2015214193郑冬冬 数院信息二班
第四篇:c++课程设计心得体会
课程设计心得体会
学生成绩管理是高等学校教务管理的重要组成部分,其内容较多,要完成能够实现人员的信息录入、查询、修改、删除、统计、保存、显示等操作。系统具体实现的功能如下:
1.添加新的联系人
2.删除所有联系人
3.删除某个联系人
4.查询某个联系人
5.查询所有联系人
6.将电话本导出到文件
7.从文件导入电话本
8.查询并编辑某个联系人
9.全班同学的平均分
大概的算法分析
学生成绩管理软件的数据结构
学生成绩一般都是以每个成员为单位进行管理的,一个学生学号用一个结点来表示。考虑到添加、查询和删除的方便,这些以学号为单位的结点用链表方式组成一个主目录。每个结点有四个域:
(1)学生代号;
(2)课程情况;
(3)成绩信息管理情况;
各函数的功能和实现(学生成绩管理的相关功能由对应的函数来实现)(1)添加新的联系人
用代码实现输入及输出添加新的联系人的学号,姓名,性别,生日、语文成绩,数学成绩;完成添加工作。
(2)删除某个联系人
首先输入要删除的姓名,然后要在系统中查看是否有此记录,再用分支结构实现删除链表中此员工结点并修改学校员工链表及未找到这条记录;因为可能系统中不存在此记录。
(3)删除所有联系人
此功能要逐条删除联系人,则我们采用分支、循环结构实现首先遍历是否有给记录,输出读取记录或没有该记录;再到文件是否读完,若没读完则要循环继续读取,否则已删除了所有记录。
(4)查询某个联系人
因此功能会出现还没有任何记录、未找到这条记、输出该联系人信息三种情况,我们则选用简单的三分支结构;首先要请输入要查询联系人的姓名,输出有记录或还没有任何记录,有记录则遍历所有人,最后是未找到这条记录,输出该联系人信息。
(7)从电话本导入文件的流程图
首先查看是否有记录,输出没有任何记录或打开“Manager.txt”,历遍链表,将人员结点信息写入文件Manager.txt、关闭文件,最后成功保存到Manager.txt。
其余的函数功能实现相似则不重复。
心得体会
刚放假不久,我们组的积极分子们就张罗着要开始编写程序了,编写这个程序我们经历了讨论选题,编写代码,调试,写设计报告等。在这期间我们查阅了很多相关的资料,曾盯着课本发呆过,我们成员之间也曾进行过激烈的口舌论战。经过这个暑假来的实践学习,使我们对C++语言有了更进一步的认识和了解,要想学好它,则重在实践,要通过不断的上机操作及实例运用才能更好地深入体会它,当然通过实践,我们也发现我们的好多不足之处。就比如我们对C++语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,一些经常出现的错误也不能很好地处理。我们编写这个程序使用的是比较简单的函数及结构,由于我们的水平有限,还不能很好的使用一些效率高的方式来编写,所以也没有突出的创新点。在做题的时候我们都是分工合作。分工完成结构体、函数设计、算法分析等,这些过程中总是有很多错误出现,有好多的小问题都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于文件的操作,类的使用等等这些使用我们都琢磨了很久,在解决错误时我们有时几乎焦头烂额了。但是我们与队友之间都会不断的相互鼓励、支持,彼此都努力维护着将作业写完。虽然这设计有点枯燥无味,但是当最后我们大功告成时,回味起来还是美滋滋的。总的来说我们真的是在设计的过程中受益匪浅。
第五篇:c++课程心得体会
心得体会
在这几周的面向对象的课程设计中,通过完成本次任务,我所收获到的东西颇丰。
利用设计这次学生信息管理的机会,使我熟练地掌握了上学期所学的C++面向对象程序编程,也更加深入理解了学生信息管理的操作原理和了解了文件的用法及其作用,为日后如何熟练使用文件打下坚实的基础。此外,本次算法的实现采用了C和C++语言面向对象编程,使我对基类的构建,派生类的使用等等各类c的知识,有更深层次的认识。
在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,如总体分析,程序模块设计等。相信通过此次课程设计会为我以后的学习和工作带来很大的好处。最重要的还是激发我对编程的兴趣和热情,让我从一个只懂理论变成了做一些小程序,让我们对编程更加热爱。
最重要的是,在这次的编程中我们不断地从源程序中寻找错误,修改错误,通过不断地更新程序提升对编程的理解。虽然现有的编程还不完美,但是执着认识到了追求完美的信念,相信在下一次的面向对面编程的过程中能将程序推向所能的极致。
通过在这次编程中和队友的携手合作,为以后的合作打下不错的默契,培养相互的信心,提高集体的凝聚力。总而言之,这次的课程设计是比较成功的。程序设计最重要的是要敢于创新,而不应该止步于旧知识的应用,唯有不安于现状,才能有更大的发展空间。