C++大作业18 - 英汉字典程序说明
源代码
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();}
将字典和生词本中的内容分别读入dictionaryWords
和newWordBookWords
中,以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 - 英汉字典程序说明相关推荐
- 英汉字典程序C语言,电子英汉字典_c语言版.doc
PAGE PAGE 5 课程设计报告 课 题: 电子英汉字典 学 院: 电子工程与自动化 专 业: 测控技术与仪器 学生姓名: XXX 学 号: XXXXXXXXXXX 指导老师 : 陈 寿 宏 20 ...
- 英汉字典程序C语言,分享纯C语言英汉字典源码
近期深受开源的精神影响,并为之深深感动,想了很久,今天把我代码积累多年的一个"英汉字典"公布. 研一的时候因为无聊或者因为兴趣,做了一个纯C语言的英汉字典.核心算法是KMP快速查找 ...
- 好程序员Java分享Java案例_英汉字典
在写代码的时候,当鼠标悬浮在某一个单词上面的时候,有道词典点有时会弹出一个消息气泡,在里面中给出关于这个单词相关的解释,下面给大家展示一个使用Java基础语言编写的英汉字典案例: 实现功能: ...
- python英汉字典_Python基于有道实现英汉字典功能
Python基于有道实现英汉字典功能 本文实例讲述了Python基于有道实现英汉字典功能的方法.分享给大家供大家参考.具体如下: import re,urllib aa="http://di ...
- python制作英汉词典_Python基于有道实现英汉字典功能
本文实例讲述了Python基于有道实现英汉字典功能的方法.分享给大家供大家参考.具体如下: import re,urllib aa="http://dict.youdao.com/searc ...
- 前端实验六——英汉字典
实现效果 dict.html <!DOCTYPE html> <html lang="en"><head><meta charset=&q ...
- [转]IOS5添加全局英汉字典教程,ibooks,safari内可用
http://bbs.weiphone.com/read-htm-tid-3926290.html 似乎ipad2区还没有一个关于如何增加英汉全局字典的教程,在其他区找了好久,终于弄好了,在此整理一下 ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- java 学习案例之英汉字典
在写代码的时候,当鼠标悬浮在某一个单词上面的时候,有道词典点有时会弹出一个消息气泡,在里面中给出关于这个单词相关的解释,下面给大家展示一个使用Java基础语言编写的英汉字典案例: 实现功能: 输入英文 ...
最新文章
- bzoj 4871: [Shoi2017]摧毁“树状图”
- php 使用netstat -an,netstat -an 查看端口
- 为RHEL5安装JDK和配置tomcat
- mysql sqlserver 性能优化_SQLSERVER SQL性能优化技巧
- 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
- JavaScript 正则表达式 学习笔记(一)
- 知道这些面试技巧,让你的测试求职少走弯路
- 关于LRU缓存简单记录以及代码补全。
- 【面向对象】面向对象程序设计测试题4-Java中的类和对象测试
- Blah数集(信息学奥赛一本通-T1333)
- linux mysql插入中文乱码_Unix下Mysql插入中文出现乱码
- mysql反掩码_Linux运维:文件目录管理
- Git总结笔记1-搭建和使用30条简明笔记
- Linux 操作系统启动流程以及trouble shooting
- 中兴事件不会对中国高科技产生什么改变
- ARM Linux启动分析----head-armv.S内幕
- postgreSQL 中raise notice用法
- SSH移植到arm开发板
- tp5 微信分享朋友或朋友圈
- 职称计算机pptt应用模块,2016年职称计算机考试PowerPoint单选练习题4