源代码

https://download.csdn.net/download/qq_41948288/85170411

总体要求

一、软件开发目的
实现简单电子英汉词典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。
二、数据结构
采用结构体数组,每个数据的结构应当包括:单词的英文拼写,单词的中文释义。
三、软件功能说明
1.词条录入:即添加单词记录。
2.信息显示:将所有的单词按字母顺序显示。
3.词条修改:对已经输入的单词信息进行修改。
4.词条删除:删除某个单词记录。
5.单词查询: 输入单词英文拼写,输出该单词的中文释义。
6.信息保存:将单词信息保存到文件。
7.退出系统

四、软件验收标准
1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
系统菜单功能项:
1、词条录入
2、信息显示
3、词条修改
4、词条删除
5、单词查询
6、信息保存
7、退出系统

注意:要求每执行一个具体的功能之后,程序将重新显示菜单。
2.有严密正确的数据验证功能和数据处理功能,能够实现各功能模块。
3.系统要有一定的可靠性、稳定性。

字典类

#include <vector>
#include <string>
using namespace std;#define DICTIONARY "dictionary.txt"
#define NEWWORDBOOK "newWordBook.txt"class dictionary
{
public:vector<string> dictionaryWords;vector<string> newWordBookWords;vector<string>::iterator iter;public:dictionary();//~dictionary();void showDictionary();void exitSystem();void findWord(string word);void addWord(string word);void deleteWord(string word);void modifyWord(string word);
};

主要函数介绍

构造函数

dictionary::dictionary() {string dictionaryWord;string newWordBookWord;ifstream ifsd(DICTIONARY, ios::in);ifstream ifsn(NEWWORDBOOK, ios::in);assert(ifsd.is_open());while (ifsd >> dictionaryWord){this->dictionaryWords.push_back(dictionaryWord);}assert(ifsn.is_open());while (ifsn >> newWordBookWord){this->newWordBookWords.push_back(newWordBookWord);}ifsd.close();ifsn.close();}

将字典和生词本中的内容分别读入dictionaryWordsnewWordBookWords中,以vector<string>保存在内存中。

显示生词本

void dictionary::showDictionary() {for (vector<string>::iterator i = this->newWordBookWords.begin(); i != this->newWordBookWords.end(); i++){cout << *i << endl;}
}

(认为显示整个字典无意义,修改题目为显示生词本)
使用迭代器遍历并显示生词本中的每个元素。

查找单词

void dictionary::findWord(string word) {if (word == ""){cerr << "没有输入要查询的单词" << endl;return;}vector<string>::iterator iterDictionary = find(this->dictionaryWords.begin(), this->dictionaryWords.end(), word);vector<string>::iterator iterNewWordBook = find(this->newWordBookWords.begin(), this->newWordBookWords.end(), word);char YorN = 'n';if (iterDictionary == this->dictionaryWords.end() && iterNewWordBook == this->newWordBookWords.end()){cout << "字典中还没有这个单词 , 是否自己保存到生词本?[y / n]" << endl;cin >> YorN;if (YorN == 'y') {addWord(word);}else{return;}}else{cout << "\n释义: " << endl;if (iterDictionary == this->dictionaryWords.end()) {cout << "\n" << *(iterNewWordBook + 1) << endl;}if (iterNewWordBook == this->newWordBookWords.end()) {cout << "\n" << *(iterDictionary + 1) << endl;}}cout << "\n" << endl;
}

运行结果:

生词本添加生词

void dictionary::addWord(string word) {string interpretation = "";ofstream ofs(NEWWORDBOOK, ios::out | ios::app);cout << "请输入释义: \n" << endl;cin >> interpretation;ofs << word << "\n" << interpretation << endl;ofs.close();}

生词本删除生词

void dictionary::deleteWord(string word) {char YorN = 'n';vector<string>::iterator iterNewWordBook = find(this->newWordBookWords.begin(), this->newWordBookWords.end(), word);if (iterNewWordBook != this->newWordBookWords.end()){cout << "查找到的要删除的单词释义为:" << endl;this->findWord(word);cout << "是否确认删除? [y / n]" << endl;cin >> YorN;if (YorN == 'y'){this->newWordBookWords.erase(iterNewWordBook, iterNewWordBook + 2);ofstream ofs(NEWWORDBOOK, ios::out);for (vector<string>::iterator iter = this->newWordBookWords.begin(); iter != this->newWordBookWords.end(); iter++) {ofs << *iter << endl;}cout << "单词已从生词本移除." << endl;}}else {cerr << "提示:" << endl;cerr << "只允许删除自己创建的生词本" << endl;cerr << "单词不存在或存在于系统词库" << endl;}}

修改生词本中的单词

void dictionary::modifyWord(string word)
{char YorN = 'n';vector<string>::iterator iterNewWordBook = find(this->newWordBookWords.begin(), this->newWordBookWords.end(), word);if (iterNewWordBook != this->newWordBookWords.end()){cout << "查找到的要删除的单词释义为:" << endl;this->findWord(word);cout << "是否确认修改? [y / n]" << endl;cin >> YorN;if (YorN == 'y') {cout << "修改单词: " << endl;cin >> *iterNewWordBook;cout << "修改释义: " << endl;cin >> *(iterNewWordBook + 1);cout << "修改的结果: " << *iterNewWordBook << "\t" << *(iterNewWordBook + 1) << endl;ofstream ofs(NEWWORDBOOK, ios::out);for (vector<string>::iterator iter = this->newWordBookWords.begin(); iter != this->newWordBookWords.end(); iter++) {ofs << *iter << endl;}}}
}

退出系统

void dictionary::exitSystem()
{cout << "欢迎下次使用" << endl;system("pause");exit(0);
}

C++大作业18 - 英汉字典程序说明相关推荐

  1. 英汉字典程序C语言,电子英汉字典_c语言版.doc

    PAGE PAGE 5 课程设计报告 课 题: 电子英汉字典 学 院: 电子工程与自动化 专 业: 测控技术与仪器 学生姓名: XXX 学 号: XXXXXXXXXXX 指导老师 : 陈 寿 宏 20 ...

  2. 英汉字典程序C语言,分享纯C语言英汉字典源码

    近期深受开源的精神影响,并为之深深感动,想了很久,今天把我代码积累多年的一个"英汉字典"公布. 研一的时候因为无聊或者因为兴趣,做了一个纯C语言的英汉字典.核心算法是KMP快速查找 ...

  3. 好程序员Java分享Java案例_英汉字典

    在写代码的时候,当鼠标悬浮在某一个单词上面的时候,有道词典点有时会弹出一个消息气泡,在里面中给出关于这个单词相关的解释,下面给大家展示一个使用Java基础语言编写的英汉字典案例:      实现功能: ...

  4. python英汉字典_Python基于有道实现英汉字典功能

    Python基于有道实现英汉字典功能 本文实例讲述了Python基于有道实现英汉字典功能的方法.分享给大家供大家参考.具体如下: import re,urllib aa="http://di ...

  5. python制作英汉词典_Python基于有道实现英汉字典功能

    本文实例讲述了Python基于有道实现英汉字典功能的方法.分享给大家供大家参考.具体如下: import re,urllib aa="http://dict.youdao.com/searc ...

  6. 前端实验六——英汉字典

    实现效果 dict.html <!DOCTYPE html> <html lang="en"><head><meta charset=&q ...

  7. [转]IOS5添加全局英汉字典教程,ibooks,safari内可用

    http://bbs.weiphone.com/read-htm-tid-3926290.html 似乎ipad2区还没有一个关于如何增加英汉全局字典的教程,在其他区找了好久,终于弄好了,在此整理一下 ...

  8. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)

    全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...

  9. java 学习案例之英汉字典

    在写代码的时候,当鼠标悬浮在某一个单词上面的时候,有道词典点有时会弹出一个消息气泡,在里面中给出关于这个单词相关的解释,下面给大家展示一个使用Java基础语言编写的英汉字典案例: 实现功能: 输入英文 ...

最新文章

  1. bzoj 4871: [Shoi2017]摧毁“树状图”
  2. php 使用netstat -an,netstat -an 查看端口
  3. 为RHEL5安装JDK和配置tomcat
  4. mysql sqlserver 性能优化_SQLSERVER SQL性能优化技巧
  5. 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
  6. JavaScript 正则表达式 学习笔记(一)
  7. 知道这些面试技巧,让你的测试求职少走弯路
  8. 关于LRU缓存简单记录以及代码补全。
  9. 【面向对象】面向对象程序设计测试题4-Java中的类和对象测试
  10. Blah数集(信息学奥赛一本通-T1333)
  11. linux mysql插入中文乱码_Unix下Mysql插入中文出现乱码
  12. mysql反掩码_Linux运维:文件目录管理
  13. Git总结笔记1-搭建和使用30条简明笔记
  14. Linux 操作系统启动流程以及trouble shooting
  15. 中兴事件不会对中国高科技产生什么改变
  16. ARM Linux启动分析----head-armv.S内幕
  17. postgreSQL 中raise notice用法
  18. SSH移植到arm开发板
  19. tp5 微信分享朋友或朋友圈
  20. 职称计算机pptt应用模块,2016年职称计算机考试PowerPoint单选练习题4

热门文章

  1. ecstore2.0数据库词典
  2. MPOS in Retail (Dynamics 365 for Operation)
  3. 好东西下载Download
  4. 字节青训营抖音APP
  5. 牧牛区块链培训,区块链对社会生产的五大好处
  6. 12月6日 DDPM操作步骤
  7. 河北工业大学数据挖掘实验四 贝叶斯决策分类算法
  8. js中了解什么是事件对象event
  9. 计算机开路人阿兰·图灵
  10. 5.电影搜索之 自动填充,也叫autocomplete、搜索建议!