初级实训经验总结
CPP版本
在上周完成了升大二前的初级实训。这次实训的主要内容为实现一个用C++写的会议管理系统。这个系统使用了MVC模式,以及文件读写从而实现数据永久化。
这个实现版本在基于学长给的头文件代码来实现的,所以免去了设计MVC的麻烦,只是在实现业务逻辑的时候需要考虑很多的东西。当然因为使用了C++11,所以很多代码会写的比较简单。
在这次实训中收获最大的就是学会功能分块。不同的功能用不同的类来实现,并且通过调用其他类的成员方法来实现功能,从而避免了重复代码,以及更方便调试。
JavaWeb版本
实话说,因为没有了设计MVC模式,所以在完成CPP的版本并没有遇到太多的困难。在结束实训之后,和同学聊天萌生出了一种想法,就是把这个系统实现成Web,从而熟悉Java语言和学习JavaWeb的相关知识。
在把CPP代码用Java实现时,遇到了不少的困难,主要的难题还是在于选择设计方法。因为我希望嵌入数据库来实现数据永久化,于是就出现了第一个问题:究竟是把数据读入到本地容器中进行操作还是直接使用数据库语言获得数据。在与同学交流之后,选择了比较靠谱的方法:用一个类实现数据库操作(增删改查),用一个类保存本地容器。这种方法可以很好地减少数据库的开销,最后事实证明是可行的。紧接着在编写代码的时候学习了接口和匿名内部类之类之前不太理解的事情。
业务逻辑的部分只用了比较少的时间。在完成业务逻辑之后,我就开始实现展示逻辑。因为没有时间自己做模板所以使用了现成的Bootstrap的flat UI模板,效果还是不错的,这个部分没有太多的困难。但是在之后会开始自己写模板,从而熟悉CSS的语法。根据这次project需要的控件,来写自己的模板,留待以后使用。
最后一步,也是最难的一步,那就是实现MVC中的Controller的部分。最开始是想使用一个只有java代码的jsp来实现数据处理,但是这种实现方法感觉做不到代码的分离,所以最终弃用。本来想用struts2框架,但是在研究了两天后发现,学习难度较大,于是放弃。最后还是退而求其次,使用了servlet。这里需要说明的是,在学习servlet时,我一直不明白web.xml里面mapping是什么,后来明白这其实也是一个空白的jsp,可以直接映射到servlet类里面,然后调度那个类的post或get方法。在理解了这一点之后,接下来的代码工作就没什么特别的困难了。
总结
对我来说,完成了这个Project才算是完成了初级实训,在这次实训中不仅熟悉了CPP,也熟悉了Java和JavaWeb的常用方法。接下来会开始真正地做有传播价值的web。
接下来会在github上记录完成leetcode的题目。欢迎朋友来讨论。一起进步吧~