程序设计课设:个人账本

其实距离程序设计周(2018.10.22-2018.10.26)已经过去了一个星期了。非常荣幸地在秋冬换季之际得了水痘,回家两周,这才得以有空来整理整理这些天来写的一些东西。 纪念一下我们的程序设计周。



Github仓库

https://github.com/zhaoyw1999/Account-book

正文

我接触的实战开发并不多,虽然这次题目很简单(做一个个人账本),但是我和我的队友还是希望用一些不一样的东西来尝试。

和我组队的是我的俩室友,我是组长。一开始我想先用C++糊一个,我感觉很快能做完。然后我再来用QT或者electron撸一个图形界面啥的。上个学期闲来无事的时候翻了一翻《设计模式》,着实让人头皮发麻……不过虽然不能完全看懂,却也从这本书中吸取了一点灵感。我们拿到选题后我提议就用MVC(Models[模型] – Views[视图] – Controller[控制器])作为这次课设的设计模式,队友点点头然后我们就开始画UML图了(过于顺利?)。

我们三个人正好负责MVC的三个部分,我负责的是架构设计和控制器。在拿到题目之后,我大脑里是有个大概的框架的,但是我一直在纠结是在Views里传入Controller的引用还是在Controller中实例化Views,我想这可能是有一定的标准的,但是我记不得了QAQ……我试图比较这两种方法并不能比出啥区别,于是就选择了在main当中实例化Views并通过引用来操作Controller。在模型设计方面我们用set来实现了数据容器。第一天上午我们确定好了每个人要实现的方法的细节,然后就开始撸代码了,大概下午就差不多写完了(过于顺利?)。

那天晚上我回去写makefile,当时已经基本完成了,还差一个功能没实现,我想先编译一下看看效果。结果TM报了几百个error啊!当时想卧槽心态有点蹦(没大蹦是因为这几年敲算法题见过了形形色色的error,并且去年参加了南航的Hackthon再次领略到了C++的毒瘤,所以心里有预期的),接着开始调试。真正调起来也就是一些小BUG,比如什么少个分号啦,少些个参数之啦,参数位置写错了之类的。这玩意儿调起来快。直到调到增删改查的时候,发现死活过不了,报错显示说我不能修改常量怎么怎么样的,接着我开始找,我哪里改了常量……卧槽我TM到底哪里改了常量啊!一番疯狂百度之后也没有得到答案。我觉得脑子炸了决定去洗个澡。卧槽,居然洗澡的时候想到了去年Hackthon也遇到过相同的事情——set里的元素都是常量。我茅塞顿开,一洗完就开始改代码。然后又调了一些小错误之后,编译通过!很感动……我编了一些数据初步测试了一下基本没啥太大的问题,好了明天甩锅给他俩系统测试一下。

于是我第二天和第三天开始划水了……其实我想到了有些地方设计得不够好,比如容器用set没用map,这样索引的复杂度就有点高。再比如容器应该完全由模型来实现并提供接口,我们却把容器模型裸露在控制器里了。最后想想还是算了,重构太烦了。真·佛系。

星期三下午我寻思能不能写个图形界面出来。可供选择的技术又很多,像什么easyX、MFC、QT,甚至可以用Django或者Electron(桌面应用)做成Web应用形式的。我想拿electron来试试看。本来想我们的MVC只需要改V,M和C可以用NodeJS中C++插件的形式提供给js调用,后来发现想的有点美(哈哈哈哈)。一看文档NodeJS里全用的V8的数据结构,C++原生的STL基本歇菜了。那行吧,从头撸。结果就是前几天太浪了导致模改了几个Bootstrap页面,然后就没时间写逻辑了……好的,写代码的工作基本结束了。

老师来验收我们的成果,对我们还是比较满意的。老师说未来程序员的核心能力会从技术变成Idea,并且告诉我们技术是不停发展的,但是编程思想、设计模式这些是要慢慢沉淀的。前者我是不敢苟同的,后者我感觉说的挺有道理。思想和模式这东西一时半会儿学不来。

学习之路还有很长。

1
说点什么

avatar
50
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
杨晨翌 Recent comment authors
  Subscribe  
最新 最旧 得票最多
提醒
杨晨翌
游客

留个名www