主要是利用最近学的一些C++ 11新特性,完全虚构一个小程序来练练手,其实也不是完全虚构也有一点点用处。
主要参考的书:
深入应用C++11 -- 代码优化与工程实践
先描述需求
1. 可以录入英文单词和翻译的内容
2. 可以等录入的多了,挑选一些出来做个小随机测试
3. 能查看所有的单词
准备条件
需要rapidjson ( 封装sqlite 需要用)
需要slite3对应的lib和dll
需要根据深入应用C++11 把sqlite3封装类给整出来,笔者根据书上照葫芦画瓢,画了部分。
有了这个类,写sqlite3的小程序简直太爽了。
插入
查询
到目前,我们有了sqlite3 操作的封装的类,以及一个小需求。
C++11 的可变参数,好像很厉害的样子,感觉这个要是精通了,可以写一些高复用的库。
剩下来,我们来看看如何构建这个小程序
总体设计
这里设计了一个状态机,vocabularyMachine, 有多个状态,录入单词模式,查看模式,考试模式
通过标准输入来驱动状态的变化。这里主要是为了掌握而构造的设计模式的场景。
选择模式,也是主菜单模式,主要处理用户输入,然后设置状态
查看模式
这里主要利用VocabularyMachine 以及内部状态类来实现(C++ 以及内部类)
状态机持有数据库管理的对象。
主函数
运行结果
总结
C++ 可变参数真的很强大
状态机模式,好像让程序变的更优雅一点了,至少跟过程程序设计相比