面向对象综合实验II-词频分析软件的设计与实现

1LSGO软件技术团队

贡献人:马燕鹏

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。

If you like the content here, the greatest helpyou can give meis forwarding, so tell your friends and encourage them to learn together.

本篇图文是配合数理系大二同学面向对象综合实验II来发送的,以便同学们更方面的浏览资料,把实验做好。

一. 目的与要求

培养信息类专业学生的面向对象编程技术基本能力。

熟悉一门面向对象语言,本次实验推荐使用C#语言。

了解面向对象编程的基本概念。熟练掌握类的封装、继承、多态(运行时多态、编译时多态)的概念与实现,掌握属性、泛型、索引器的概念与实现,掌握抽象类与接口的概念与实现。

掌握多线程处理技术。

掌握常用的设计模式原理与实现方法,掌握获取类实例的反射机制。

二.主要内容

以《数据结构与算法》课程中所学的“串”结构为基础,至少实现两个字符串模式匹配的算法,如前缀暴力匹配算法,KMP算法等。

以《数据结构与算法》课程中所学的“排序”算法为基础,至少实现五个排序算法,如直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序、改进的冒泡排序、快速交换排序等。

在“字符串模式匹配算法”与“排序算法”实现的基础上,进行词频统计软件工具的开发。即给定关键词文件,见user.txt文件,该文件存储所要统计词频的关键词,本任务给定的关键词为88个。所做软件工具可以选择另外一个文本文件,统计这88个关键词在该文件中出现的频数或者可以选择一个目录,统计这88个关键词在该目录下所有文本文件中出现的频数,统计完毕后以频数从大到小的顺序进行输出。

由于该问题可以利用不同的字符串模式匹配算法和排序算法,为了满足日后的扩展性采用策略模式进行算法的封装。

由于统计文件可能过多,本任务给定文件夹sample下共有44个文本文件,需要采用多线程技术进行词频的统计,以防止界面的“卡死”现象出现。

为了满足日后的扩展性采用反射的机制,从配置文件中读取程序所要执行“字符串模式匹配算法”以及“排序算法”的实体类赋值给策略类。

构造类库StringMatching.dll封装算法,构造客户端应用程序WordFA.exe,调用类库中的算法实现词频统计软件工具。

三.进度计划

05月19日收集字符串模式匹配算法以及排序算法的资料;完成程序整体框架的设计。

05月20日完成两种字符串模式匹配算法;完成五种排序算法;把这些算法按照策略模式封装到动态链接库中。

05月26日构造客户端应用程序,调用类库中的算法实现业务逻辑;测试完成的软件工具,保证程序统计的准确性与可靠性。

05月27日完成实验报告,现场验收。

四.实验成果要求

基本要求:完成至少两种字符串模式匹配算法、五种排序算法。

基本要求:客户端代码运行稳定,统计结果准确无误,且在统计文本大量的情况下,程序界面不出现“卡死”现象。

基本要求:撰写实验报告。实验报告要求能够反映设计的思路和实验的过程,清楚记录调试中遇到的问题,参考资料真实有效。

基本要求:学生独立完成设计任务,严禁抄袭、找人代做等,一经发现成绩记零分,按考试作弊处理。

基本要求:实验报告必须提交电子版和打印版。实验报告必须符合格式要求,格式不合格的记为零分。

基本要求:将源程序和实验报告电子版提交到规定地址,并验收合格。

五.考核方式

学生讲解设计思路。教师提问,学生回答。

教师审核学生实验报告。

六.参考资料

感兴趣的小伙伴也可以做一下,通过这次实验利用一周的时间完成一个词频统计的工具,本次实验结束后,我会把自己写的代码放入GitHub仓库,让大家下载,对照来学习。

经过8年多的发展,LSGO软件技术团队在地理信息系统、数据统计分析、计算机视觉领域积累了丰富的研发经验,也建立了人才培养的完备体系。

欢迎对算法设计与实现感兴趣的同学加入,与我们共同成长进步。

本微信公众平台长期系统化提供有关机器学习、软件研发、教育及学习方法、数学建模的知识,并将以上知识转化为实践。拒绝知识碎片化、耐心打磨技能、解决实际问题是我们的宗旨和追求。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180519B01KKX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券