/*

*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:这种项目,最好用多文件的形式组织

*输入描写叙述:

*程序输出:

  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdlib>
  4. #include <string>
  5. using namespace std;
  6. class Word
  7. {
  8. public:
  9. void setword(string e,string c,string w);
  10. string getchinese();
  11. string getword_class();
  12. int compare(string );
  13. private:
  14. string english;
  15. string chinese;
  16. string word_class;
  17. };
  18. void Word::setword(string e,string c,string w)
  19. {
  20. english=e;
  21. chinese=c;
  22. word_class=w;
  23. }
  24. string Word::getchinese()
  25. {
  26. return chinese;
  27. }
  28. string Word::getword_class()
  29. {
  30. return word_class;
  31. }
  32. int Word::compare(string k)
  33. {
  34. return english.compare(k);
  35. }
  36. class Dictionary
  37. {
  38. public:
  39. Dictionary();
  40. int serch(int low,int high,string k);
  41. void display(string k);
  42. private:
  43. Word word[8000];
  44. int wordNum;
  45. };
  46. Dictionary::Dictionary()
  47. {
  48. string e,c,w;
  49. wordNum=0;
  50. ifstream infile("dictionary.txt",ios::in);
  51. if(!infile)
  52. {
  53. cerr<<"open error";
  54. exit(1);
  55. }
  56. while(!infile.eof())
  57. {
  58. infile>>e>>c>>w;
  59. word[wordNum].setword(e,w,c);
  60. wordNum++;
  61. }
  62. infile.close();
  63. }
  64. int Dictionary::serch(int low,int high,string k)
  65. {
  66. int mid;
  67. while(low<=high)
  68. {
  69. mid=(low+high)/2;
  70. if(word[mid].compare(k)==0)
  71. return mid;
  72. if(word[mid].compare(k)>0)
  73. high=mid-1;
  74. else
  75. low=mid+1;
  76. }
  77. return -1;
  78. }
  79. void Dictionary::display(string k)
  80. {
  81. int low=0,high=wordNum-1;
  82. int index=serch(low,high,k);
  83. if(index>=0)
  84. cout<<k<<"-->"<<word[index].getword_class()<<"\t"<<word[index].getchinese()<<endl;
  85. else
  86. cout<<"查无此词"<<endl;
  87.  
  88. }
  89. int main()
  90. {
  91. Dictionary d;
  92. string key;
  93. cout<<"输入英文单词"<<endl;
  94. while(cin>>key&&key!="0000")
  95. {
  96. d.display(key);
  97. }
  98. cout<<"好用再来"<<endl;
  99. return 0;
  100. }
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. PHP开发心得三

    1, JSON在调用json_decode前要检查其中是否含有反斜杠“\”等特殊字符 比如下面这段代码,返回的就是空值,非常坑爹吧. $res = {"Ret":"1&q ...

  2. PSP需求分析文档

    PSP软件需求分析文档 刘杰 1.       引言 1.1  背景 开发项目经常延期不能按时提交,甚至不能给出明确的延迟时间 1.2  术语 PSP,数据库 2.       任务概述 2.1  目 ...

  3. redis的安装、启动、主从配置,以及.Net下StackExchange.Redis的使用

    开门见山,Linux下配个环境真是苦逼死了,这里记录一下,囧 一.环境 服务端:Ubuntu16.04 LTS(虚拟机,redis官方没有window发布版本,而且在Linux下运行更稳定) 客户端: ...

  4. CAD使用GetAllAppName读所有名称(网页版)

    主要用到函数说明: MxDrawEntity::GetAllAppName 得到所有扩展数据名称,详细说明如下: 参数 说明 [out, retval] IMxDrawResbuf** ppRet 返 ...

  5. CAD得到0层上的所有实体(com接口VB语言)

    主要用到函数说明: IMxDrawSelectionSet::Select 构造选择集.详细说明如下: 参数 说明 [in] MCAD_McSelect Mode 构造选择集方式 [in] VARIA ...

  6. 梦想CAD控件打印相关

    一.打印设置 在顶部快速访问工具栏单击打印按钮或者直接输入PLOT命令或者点击打印控制的打印设置按钮打开打印对话框.c#代码实现如下: //打印设置 private void Print1() {   ...

  7. C++ Primer(第4版)-学习笔记-第5部分:高级主题

    第17章  用于大型程序的工具 异常处理 不存在数组或函数类型的异常.相反,如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针,类似地,如果抛出一个函数,函数被转换为指向该函数的指针. 不要抛出 ...

  8. python lambda简易使用

    基本格式 lambda 变量名:函数表达式 ①直接使用 f=lambda x:x**2 f(3) ②设置函数列表 l=[lambda x:x**2, lambda x:x**3, lambda x:x ...

  9. <SpringMvc>入门六 异常处理

    如果不做异常处理,那么一直将错误向上抛出,则会最后在页面上显示错误代码 服务启动后,访问test1方法,页面会报500 为了提示友好的错误页面,所以需要做异常处理 1.编写自定义异常类(做提示信息的) ...

  10. HTTP服务和APACHE2

    HTTP服务和APACHE2 知识点 请求报文响应报文 错误码 请求重定向 编译安装 实现https curl工具 1. http协议 http协议版本 http/0.9, http/1.0, htt ...