/*

*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;
}
cout<<k<<"-->"<<word[index].getword_class()<<"\t"<<word[index].getchinese()<<endl;这一句能够换成    class()+"\t"<<word  能够直接使用一个+号  这是为什么啊  有什么优点

第十四周(OOP版电子词典)的更多相关文章

  1. C++第15周(春)项目3 - OOP版电子词典(一)

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序中须要的相 ...

  2. C++第15周(春)项目3 - OOP版电子词典(二)

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...

  3. 第14周 项目三-OOP版电子词典

    做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对比的一个词典,词汇量近8000个,英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词.显示词性和中文释义. ...

  4. OOP版电子词典

    输入代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名:sum123.cpp * 作 者:林海云 * 完毕日期:20 ...

  5. wxWidgets+wxSmith版电子词典

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...

  6. 吴裕雄--天生自然python学习笔记:python 用firebase实现英文电子词典

    Firebase 版电子词典 学英语是许多 人一辈子的麻烦 . 所以本例中,我们开发一个英汉词典,用户执 行程序后,单击“翻译”按钮即可显示该单词的中文翻译 . 英汉词典标准版 因为这个案例的数据必须 ...

  7. 201871010105-曹玉中《面向对象程序设计(java)》第十四周学习总结

    201871010105-曹玉中<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  8. Python实现电子词典(图形界面)

    Python实现电子词典(图形界面) 终端电子词典:https://www.cnblogs.com/noonjuan/p/11341375.html 文件一览: .├── client.py├── d ...

  9. Python实现电子词典

    代码一览: dictionary/├── code│   ├── client.py│   ├── func.py│   ├── server.py│   └── settings.py├── dat ...

随机推荐

  1. 微信小程序组件解读和分析:二、scroll-view可滚动视图区域

    scroll-view可滚动视图区域组件说明: 可滚动视图区域. 组件用法:纵向滚动用法 Tip: 使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,否则无法滚动. 当滚动到顶部 ...

  2. js获取微信版本号的方法

    微信现在几乎已经普遍在使用,但是微信版本一直在更新,不同的版本有不同的功能,于是了解微信的版本号很重要,以便自己及时更新体验新的功能.那么如何用js获取微信版本号呢? 一.判断微信版本号 ? 1 2 ...

  3. 从Element.getElementsByTagName方法说起

    一.getElementsByTagName方法: 我们先看几个解释:1)W3C:getElementsByTagName() 方法可返回带有指定标签名的对象的集合.没有说明返回值的具体类型.2)菜鸟 ...

  4. map 用法

    map 是一种关联容器,  提供一对一的关联, 关联的形式为: KEY----VALUE     关键字不重复.multimap与map类似,但是允许关键字重复 即:关键字和与之对应的值 关键字起到索 ...

  5. PHP 浏览器端输出中文正常,cmd中文乱码

    cmd 运行php脚本乱码问题如果别的编码根据下面的自己换吧!chcp 65001 就是换成UTF-8chcp 936 可以换回默认的GBKchcp 437 是美国英语

  6. 使用lombok注解@Getter @Setter方法代码编译成功,但是没有生成get,set方法

    现象描述: 在对应类对象中,添加lombok的@Getter或@Setter注解,编译没有问题,但是在使用类对象时,没有出现对应的get或set方法. 配置且编译ok,但是没有对应的get或set方法 ...

  7. docker 转载

    写的非常好的一篇文章,不知道为什么被删除了.  利用Google快照,做个存档. 快照地址:地址 作者地址:青牛 什么是docker Docker 是一个开源项目,诞生于 2013 年初,最初是 do ...

  8. Python中使用SQLite

    参考原文 廖雪峰Python教程 使用SQLite SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是用C写的,而且体积很小,所以经常被集成到各种应用程序中,甚至在IOS和 ...

  9. 深入理解DOM事件类型系列——剪贴板事件

    定义 剪贴板操作包括剪切(cut).复制(copy)和粘贴(paste)这三个操作,快捷键分别是ctrl+x.ctrl+c.ctrl+v.当然也可以使用鼠标右键菜单进行操作 对象事件 关于这3个操作共 ...

  10. Makefile,Shell command,Shell Language 之间的联系

    1. Makefile 首先要知道Makefile 是什么东西,Makefile 是一个指令文件,里面存储着自定义的命令(可以借助已有的命令创造而来)在不同的系统下对Makefile 的区别不一样,L ...