2014年春季學期-面向对象程序设计与实践(C++2)-大作业题目.docVIP

2014年春季學期-面向对象程序设计与实践(C++2)-大作业题目.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2014年春季學期-面向对象程序设计与实践(C2)-大作业题目

“面向对象程序设计与实践2”2014年春季学期上机作业 注意事项: 必须提交:3个程序(电子版),1份程序说明(电子版),1份课程设计报告封面(单人版)(纸版)。程序说明是word文件,内容为程序实现中的想法、经验、教训等,格式不限; 交给各小班学委,由小班学委统一上交; 每个人一个目录,每个目录下3个zip或rar压缩文件,每个文件对应一个作业题目;另外还有一个word文档,是相应的程序说明; 个人目录的命名格式:班级--学号--姓名;压缩文件命名格式:程序X--学号--姓名; 不要提交obj等中间文件,太占空间。 对于题目有疑问的(题意或者实现思路等),可在上机时间与助教讨论。 程序一:Darwin搜索引擎(初级版)(45分,抄袭或被抄袭为0分) 描述:你需要为Darwin搜索引擎准备数据,要求如下: 你将会得到一个文本文件(若干GB),文本内容是英文单词,编码为utf8。 你需要统计文本中单词的出现频数,即每个单词的出现次数(简单起见,大小写不同时态不同的单词都被认为是不同的单词)。 输出频数Top100的单词和其出现次数。 请使用C++ STL模版库中的map类实现统计的功能。 需要处理文件操作过程中的异常 需要使用面向对象的编程方法(详见本文件最后的建议程序结构)。 至少应该有这么几个类: 处理文件输入的类Class InputHandler 统计词频的类Class WordCounter,此类应继承于一个基类Class Base(此类的作用见程序二的要求) 处理输出的类Class OutputHandler 程序二:Darwin搜索引擎(高级版)(40分,抄袭或被抄袭为0分) 在程序一的基础上,额外要求如下: 必须在程序一的代码基础上修改完成。 在遍历文件统计词频时,顺便记录单词的位置(例如可以记住出现在哪个文件的哪个字节,要注意的是可能出现于多个文件的多个位置)。 查询功能:用户输入单词时,能快速输出该单词出现的所有行(由于文件较大,所以用户输入之后再去遍历文件是不行的,只能在程序启动的时候记录好单词的位置,用户输入之后直接去该文件的该位置读取)。 需要使用面向对象的编程方法(详见本文件最后的建议程序结构)。 1.至少应该比程序一多一个记录单词位置的类Class WordPosRecorder,此类应与统计词频的类Class WordCounter继承于相同的基类Class Base 2.要有一个存放基类Class Base的指针的容器,里面依次放着Class WordCounter和Class WordPosRecorder的指针。当InputHandler获取到文本时,依次根据此容器中的指针调用Class Base中定义的接口虚函数(即实现运行时多态)。 程序三:支持远程访问的Darwin搜索引擎(15分,抄袭或被抄袭为0分) 在程序二的基础上,额外要求如下: 程序二中的查询功能可以远程访问,即在客户端输入单词,在服务端查询出结果之后再返回客户端。 客户端只完成简单的输入输出的功能,不涉及任何文件操作。 客户端和服务端可能不在一台电脑上(当然,验收的时候在一台电脑上就行了)。 注意事项: 必须使用Socket作为远程通信技术。 建议程序结构: 类的继承关系: 如上图所示,程序各模块之间的耦合性较低,利于扩展功能。每当需要添加新的处理过程时,只需声明一个类Class NewProcess,使此类Class NewProcess继承于基类Base,并且根据新的处理过程的需求,完成(纯)虚函数process的实现。然后将只需将Class NewProcess放入容器即可。程序总体结构无需做修改,依然是遍历容器,依次调用公共的process方法。 也就是说任何需要??增功能,都实现为一个共有的接口,使其能向调用者提供统一的调用方式。(纯)虚函数process在这里就被称为接口。 例如: 1.为了实现词频统计的功能,实现WordCounter类,使其继承于Base,并且在process方法中完成词频统计的功能,然后将WordCounter放入容器中。 2.为了实现记录单词位置功能,实现WordPosRecoder类,使其继承于Base,并且在process方法中完成记录单词位置的功能,然后将WordCounter放入容器中。 请自行体会这样的容器在面临需要增加或者删除处理过程时,带来的好处。 PS:上图所说的输入输出并不是对于用户的,而指的是程序在利用文本文件构建数据结构(在程序1中指的是一个map类)过程中的输入输出。也就是说,输入是文本文件,输出是根据文本文件构建的数据结构。 如有不清晰的地方,请在上机时间,前来咨询助教。

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档