您当前的位置:t7t8网 >  范文大全 >  心得体会 >实验总结与心得体会

实验总结与心得体会

更新时间:2022-01-18 17:37:49 点击: 来源:yutu

实验总结与心得体会

  实验总结与心得体会

  之前我在编程的过程中写过一份实验总结,里面详细的记录了实验中遇到的各种问题以及解决办法,当我完成了整个实验整理文档的时候,看到程序说明文档的后面标着0kB,心里一下子就忐忑起来了,打开文档,果然,0KB,什么也没有了。当初编写程序之前,面对着完全不熟悉的C++,就好像是面对着一座小山,当我一点一点的把它啃下来了,再看这些程序的时候,也不觉得有多少内容了,期间遇到的一些问题,现在都觉得很顺理成章,因此只能记录下一些大体的认识和看法了。实验总结与心得体会

  实验一其实就是对类的一些基本操作和文件操作,其中文件操作也是使用了C++封装了的类。主要的工作就是构造两个保存男女嘉宾信息的数据结构,男女嘉宾的信息分别保存在两个文档里,运行的时候将信息装载到元素为男女嘉宾信息类的向量里,实际是对这个向量的操作,添加,删除,查找,然后再把添加和删除的操作反应到文档里。我觉得实现中仍然存在的问题是我在内存中保存男女嘉宾信息是选择了标准模板库的向量(vector)这个类,在试验的小数据量下添加,查找等操作都很方便,但是实际应用中如果要维护大的数据量的话,使用向量结构估计就会性能下降,这样的结构不方便查找。这个试验让我初步认识了C++类的概念,运算符的重载和函数的重载,不过我在使用类的时候,为了引用方便,都把变量和函数改成公有类型了,这样做似乎是违反了C++封装的思想,再以后写代码的话,一定注意把成员变量私有化。另外一个很大的收获就是让我体会到了C++标准模板库的方便,我以前写程序总是首选C语言,但是写了这个程序之后感觉C++其实要方便好多,而且也用C++标准模板库做了很多其他课程的实验。还有一个深刻的'体会就是写程序之前一定要做好用户分析,虽然我们以前总是忽略这个问题,我是看了题目之后就直接上手去编的,但是写到第二个程序我发现之前的思路似乎不是很对,我觉得这个非诚勿扰管理程序应该是面对非诚勿扰内部的工作人员的,而之前就把面对工作人员和面对嘉宾本身混为一谈了。其实对于这两种不同的用户,实现的要求还是有差别的,嘉宾的话他会只关注自己关心的事,所以对他的操着都应该是单个人的,工作人员的话他们不会太关注单个的注册嘉宾,他们的操作一般都是真的一批注册的嘉宾,所以在写到实验二的时候我又对前面的函数做了一些修改,虽然修改的代码量也不是很大,但是也确实很麻烦,这件事让我认识到编程之前的用户分析真的很重要。

  实验二是在实验一的基础上修改了,就是增加了两个更具体的查找方案,反应到程序上就是增加了两个函数,对于在输入条件下查找的那个函数,我为了实现的简单一点,就限定了一下用户输入的内容,要按照程序的要求输入,这样做或许会给用户带来一些麻烦,更好的实现方案是对用户输入的字符串进行分词处理然后再逻辑判断,由于精力有限,就没有实现。只好让用户多替我做些工作了。

  实验三是网络编程,用socket实现的支持远程访问的功能。我选择了最简单的UDP协议,收发双方交替传送数据。这个试验主要涉及到一个问题是成祯方法,为了减少传送的次数,我是让发方把要发送的所有信息都收集起来放在数组中,不同的数据用‘|’隔开,然后一起传送出去,再在收方将这些数据分离出来;另一个问题我觉得是各种数据类型之间的转换,因为在发送的过程中所有的变量都是以字符型传送的,所有就需要在收发双方将各种数据转换成字符型。其他的操作就要试验一二类似了,只是涉及到数据的来源问题。我看很多资料中都把socket通信与文件操作类比,不过我觉得其实它更像是键盘输入和屏幕显示,只是数据来源不同。

  在完成了三个字符行界面的编程后,我又学习了一下MFC,把试验一二的图形界面做了出来。使用了MFC,才对C++类的封装有了更深刻的理解。由于时间仓促,我学习的MFC只是冰山一角,很多地方都还 不清楚,只是了解了一下消息映射并把自己的函数添加到按键对应的函数中。由于我学习的例子是一个单文档加一个对话框的程序,所以我在实现的时候也选择了使用单文档模式,其实文档对这个程序好像也没有多大用处,用对话框模式更加方便一点。因为是单文档加对话框,在实现第一个对话框的时候还没有什么问题,但是实现第二个对话框时就有一个我用了很长时间才解决的问题:我用到的全局变量和全局函数没有地方添加,因此程序一直在变量重定义和外部变量不可用这两个链接错误之间徘徊,最后我查到有人说在VC的工程里,由于用到的文件很多,为了体现C++的封装性,可以把全局变量和全局函数定义在一个Public类里面,变量和函数全部定义为静态的共有的,这样不仅体现了变量和函数的全局性,还把他们作为一类封装在了一个结构里,很好的和C++程序融合,这一部分也是我认为我在这次试验中实现的最成功的部分。我感受比较深的另外一个问题就是实现的位置问题,虽然以前也知道头文件里要放声明,实现放在.cpp文件里,但是因为放在那里对程序结果也没有什么影响,所以有时候写程序就比较随便,实现也写在.h里,这次实验就给了我很大的教训,因为多个对话框都要用到一些公用的头文件,把实现放在头文件里之后就一直出现重定义的问题,我找了很久这个错误的原因,最后才发现是我写程序结构不严谨的问题;而且因为这个试验的对话框要初始化,我有时候把初始化的代码全在按键实现里,虽然不会出现编译链接错误,程序运行结果也会有一些问题出现。这些给我的经验是,程序的各个部分一定要各司其职,各就各位,老老实实的把该放在什么位置的代码放在什么位置,会给编写程序省很多事。

  本次实验一共用时两个多星期,期间遇到了很多的问题,其实我觉得编写程序,调试,遇到问题耐心的查错,总会有解决办法的,比较困难的错误其实是能够运行之后结果不稳定,有时候对,有时候错,这样的问题往往是程序设计的算法的问题,虽然这次程序没有太复杂的算法,但是一些小的地方没有考虑到,往往会给运行结果造成很多难以解释的错误。我觉得我的程序在经过很多种情况的测试后,基本上能满足我自己的要求了,可能还有很多不完善的地方,但是确实收获了很多东西,随着以后的学习运用,估计会有更深入的认识。

  最后,很是要感谢百度知道上那些不知名的作者,还有我的同学们,在我调程序调的不知所以然的时候给了我很大的帮助,也支持我能够最终完成这个程序。

转载请备注原文地址:https://www.t7t8.net/xindetihui/75079.html
移动端网站原文地址:https://m.t7t8.net/xindetihui/75079.html