我承认里面有些话简直就是废话,可还是得写。。。
有些内容粘贴过来格式发生了变化。。。比如少空格啥的,大家心里知道就行了。。。
正文:
1 概况:
1.1 需求分析
现在中国英语学习者的数量每年都在不断增加,英语在各种场合的重要性也与日俱增,出现了很多英语学习软件。一个基本的英语学习软件要求能够方便学习者练习、模拟考试来查看自己当前的水平,同时还应该能够根据特定的要求来进行动态增删,界面也应当足够简洁友好。
本设计尝试设计一个简单的背单词程序,基本上可以实现增删、练习、考试等功能,但由于时间有限,加之本人水平有限,未能实现图形化界面,功能相对简单。
1.2 开发设计思路
首先应当弄清楚程序所要实现的基本功能,也就是上面所列出来的增加单词、删除单词、修改单词、背单词练习、浏览词库、模拟考试等;
其次是要设计针对特定功能的数据结构和类,在本设计中,单词采用一个类节点WordNode来进行存储,整个词库则使用STL中的vector向量来存储,为了保持每个类的功能清晰、简洁,在单个类内部实现的功能应当有一定的联系,非对外的接口最好设置为private属性;
然后是程序的具体实现,算法的东西主要包括二分查找单词、词库排序等,相对简单,而且也有STL可以使用。其余的部分基本没有算法的难度,但要保证程序的清晰,包括注释、变量合理命名等;
最后是程序的测试。针对测试出来的bug或者用户友好性不足的地方进行进一步的改正,得到最终的代码。
2 具体实现过程:
2.1 类设计
针对本设计的特点,可以用四个类来实现,分别为WordNode、DataBase、myless、MyFrame类,下面分别说明这四个类的具体功能:
■WordNode类
WordNode类用来表示一条单词记录。对于词典中的每条单词记录,有英语单词和中文解释两个数据域,因此可用两个私有数据成员来进行表示:
//英文单词
string english;
//对应的中文语义
string chinese;
同时为了方便其他类对单词记录进行操作,还需要提供一系列的公有方法:
//默认空构造函数
WordNode();
//给出英文单词和中文解释的构造函数
WordNode(string english, string chinese);
//获取英文内容
string getEnglish();
//获取中文内容
string getChinese();
//重新设置英文内容
voidsetEnglish(string english);
//重新设置中文内容
voidsetChinese(string chinese);
这些公有方法主要是用来获取某字段的内容以及设置相应字段的内容,实现较为简单,不在赘述。
■DataBase类
DataBase是一个数据库类,用来盛装词典的内容,以及提供一系列的操作功能。词典记录是被放在一个vector<WordNode>中的,该数据段被定义为private。
提供的对外接口大致如下:
//默认构造函数
DataBase();
//返回单词的总数目