第十四周(OOP版电子词典)
*copyright(c) 2015,烟台大学计算机学院
*All rights reserved。
*文件名:第十四周(OOP版电子词典)
*作者:王忠
*完毕日期:2015.6.10
*版本:v1.0
*
*问题描写叙述:做一个简单的电子词典。
在文件dictionary.txt中,保存的是英汉对比的一个词典。词汇量近8000个,英文、中文释义与词性间用’\t’隔开。
(1)编程序。由用户输入英文词,显示词性和中文释义。
提示1:假设要用OOP完毕这个词典(当然也能够用OO方法实现),能够定义一个Word类表示一个词条。当中的数据成员string english; 表示英文单词,string chinese;表示相应中文意思,string word_class;表示该词的词性;还能够定义一个Dictionary类。用来表示词典。当中Word words[8000]成员表示词典中的词条。int wordsNum;表示词典中的词条数。在构造函数中从文件读入词条。而专门添加一个成员函数用于查单词。
提示2:文件里的词汇已经排序,故在查找时。用二分查找法提高效率。
提示3:这种项目,最好用多文件的形式组织
*输入描写叙述:
*程序输出:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
class Word
{
public:
void setword(string e,string c,string w);
string getchinese();
string getword_class();
int compare(string );
private:
string english;
string chinese;
string word_class;
};
void Word::setword(string e,string c,string w)
{
english=e;
chinese=c;
word_class=w;
}
string Word::getchinese()
{
return chinese;
}
string Word::getword_class()
{
return word_class;
}
int Word::compare(string k)
{
return english.compare(k);
}
class Dictionary
{
public:
Dictionary();
int serch(int low,int high,string k);
void display(string k);
private:
Word word[8000];
int wordNum;
};
Dictionary::Dictionary()
{
string e,c,w;
wordNum=0;
ifstream infile("dictionary.txt",ios::in);
if(!infile)
{
cerr<<"open error";
exit(1);
}
while(!infile.eof())
{
infile>>e>>c>>w;
word[wordNum].setword(e,w,c);
wordNum++;
}
infile.close();
}
int Dictionary::serch(int low,int high,string k)
{
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(word[mid].compare(k)==0)
return mid;
if(word[mid].compare(k)>0)
high=mid-1;
else
low=mid+1;
}
return -1;
}
void Dictionary::display(string k)
{
int low=0,high=wordNum-1;
int index=serch(low,high,k);
if(index>=0)
cout<<k<<"-->"<<word[index].getword_class()<<"\t"<<word[index].getchinese()<<endl;
else
cout<<"查无此词"<<endl; }
int main()
{
Dictionary d;
string key;
cout<<"输入英文单词"<<endl;
while(cin>>key&&key!="0000")
{
d.display(key);
}
cout<<"好用再来"<<endl;
return 0;
}
第十四周(OOP版电子词典)的更多相关文章
- C++第15周(春)项目3 - OOP版电子词典(一)
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序中须要的相 ...
- C++第15周(春)项目3 - OOP版电子词典(二)
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...
- 第14周 项目三-OOP版电子词典
做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对比的一个词典,词汇量近8000个,英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词.显示词性和中文释义. ...
- OOP版电子词典
输入代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名:sum123.cpp * 作 者:林海云 * 完毕日期:20 ...
- wxWidgets+wxSmith版电子词典
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...
- 吴裕雄--天生自然python学习笔记:python 用firebase实现英文电子词典
Firebase 版电子词典 学英语是许多 人一辈子的麻烦 . 所以本例中,我们开发一个英汉词典,用户执 行程序后,单击“翻译”按钮即可显示该单词的中文翻译 . 英汉词典标准版 因为这个案例的数据必须 ...
- 201871010105-曹玉中《面向对象程序设计(java)》第十四周学习总结
201871010105-曹玉中<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- Python实现电子词典(图形界面)
Python实现电子词典(图形界面) 终端电子词典:https://www.cnblogs.com/noonjuan/p/11341375.html 文件一览: .├── client.py├── d ...
- Python实现电子词典
代码一览: dictionary/├── code│ ├── client.py│ ├── func.py│ ├── server.py│ └── settings.py├── dat ...
随机推荐
- java读取03、07版EXCEL
03版excel,需要用到jxl.jar这个jar包 package test.poi; import java.io.File; import java.io.IOException; import ...
- HDU_1072_Nightmare
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目描述:矩阵表示迷宫,0表示墙,1表示路,2表示起点,3表示终点,4表示重置炸弹时间(6秒),你需 ...
- 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
package algorithms; /* 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. public class ListNode { int val; ListNo ...
- 记VS2008安装及使用及卸载的艰辛历程!!!(2018/11/6-2018/11/14)
此文为了纪念我对VS2008“孜孜不倦的”无数次的安装及卸载,以及解决使用过程中出现的问题所花费的人力物力和财力!成功之后再作补充.
- ubuntu 下安装wine
PPA地址: https://launchpad.net/~ubuntu-wine/+archive/ppa 添加wine的ppa源 sudo add-apt-repository ppa:ubunt ...
- 升级 HTTPS,价值何在?
HTTPS 实质上是一种面向安全信息通信的协议.从最终的数据解析的角度上看,HTTPS 与 HTTP 没有本质上的区别.对于接收端而言,SSL/TSL 将接收的数据包解密,将数据传给 HTTP 协议层 ...
- 【Codeforces 986B】Petr and Permutations
[链接] 我是链接,点我呀:) [题意] 题意 [题解] n为奇数时3n和7n+1奇偶性不同 n为偶数时也是如此 然后交换任意一对数 逆序对的对数的奇偶性会发生改变一次 求出逆序对 对n讨论得出答案. ...
- noip模拟赛 蒜头君的坐骑
分析:标准的棋盘dp问题. 如果没有技能,那么就很好做了,相当于传纸条的做法.有了技能的限制,我们就要加上一维表示用了多少次技能,这个时候转移就要用到dfs了,而且不能用填表法,要用刷表法,从当前位置 ...
- hdu 1533KM算法
#include<stdio.h> #include<string.h> #include<math.h> #define inf 0x3fffffff #defi ...
- vue用js部分控制动画实现
上次我们提到用vue实现过渡动画,其实只讲了vue动画的一部分,用vue自带的css状态控制动画实现,不带js http://www.cnblogs.com/null11/p/7081506.html ...