/Spider

一款支持牛客竞赛网信息搜索和数据分析的应用,采用C#语言和WPF框架。

Spider

1. 简介

  • 牛客竞赛网(https://ac.nowcoder.com/) 是一个自主研发、运营的竞赛平台,也是目前国内优质的大学生ACM竞赛平台。对于参加ACM各类比赛(包括国际大学生程序设计竞赛,**大学生程序竞赛)的大学生或者参加OI比赛(NOI比赛,NOIP比赛)而言,具有重要意义,可以帮助学生更好的学习算法,提高代码水平。本项目基于对当下牛客竞赛网的信息展示杂乱的缺陷,设计了一款界面友好、美观的信息搜索及数据整理的桌面应用。

  • 该应用以C#语言为基础,采用.net技术进行开发,通过多线程异步的形式获取网页信息更新数据库,同时采用图表分析的方式更好对数据进行分析展示,支持导出数据库文件,提高查询所需信息的速度与增强查看整体数据信息的能力。整个系统在用户界面开发上采用了Windows Presentation Foundation(WPF)框架,并且通过MVVM架构对模型视图进行渲染,不仅实现了更为美观的界面,同时将用户界面(View)与业务逻辑(ViewModel)和数据(Model)进行分离,以实现更好的可维护性、可测试性和可扩展性。

  • 本系统实现了包括数据的多方位约束查询,数据分析,数据爬取,数据导出等功能,可以很好的弥补原网站的信息过于杂乱的缺点,并且将其信息进行深度整合分析,同时采用了以蓝色为基调的主题色彩美化界面,确保用户可以更为方便的学习有关的知识,最终提高学习算法的效率。

2. 安装和配置

配置:Windows系统,目标框架为.Net6.0。

安装:点击安装程序下的setup.exe即可安装(或者可以运行Spider文件夹下的项目,直接运行的话不需要安装,但可能存在配置问题)。安装成功后桌面会有该应用的快捷方式。

3. 功能说明

用户界面具体看帮助文档。

(1)安装和卸载功能:用户在获取应用安装文件后以安装该应用,安装的应用不会对目录之外的环节进行修改,对计算机无危害性;卸载程序可以将整个应用进行完整卸载,将不会有残留文件。

(2)信息查询功能:系统均可以对排名、题库、比赛三个部分的相关信息进行查询。查询时可以设置各类查询筛选条件,提供了输入后实时更新表单的功能,也提供对于部分条件的默认参数填入。同时支持对部分信息进行模糊查询,获取适配的数据项。

对于数据查询部分,支持了多种查询约束。用户可以通过直接输入数字或日期进行对所提取的数据的筛选,也支持通过输入获取模糊查询的结果。而且,用户可以通过点击选择进入新的界面进行扩展选择。在扩展选择的窗口,用户可以根据右侧的列表进行对应选取,同时可以通过模糊查询更新列表提供更小的查询选择范围。对于选择的查询条件可以再次点击对其进行删除。

在信息的展示界面,将会将满足当前约束条件下的数据进行显示。通过点击不同的数据项,将会打开新窗口展示对应的完整信息。同时,可以在展示完整信息的窗口下对该数据进行删除,被删除的数据将不会展示在信息展示列表中。

对于以上的数据查询与信息展示,均通过绑定进行实时更新。一旦选择条件发生变化,信息便会立即再次提取进行展示。此外,无论是通过设置不同约束条件还是在展示完整信息窗口对该数据删除,均不会影响底层的数据库,只会影响逻辑层的中间数据存储部分。

(3)数据分析功能:系统均可以对排名,题库,比赛三个部分的相关数据列进行数据分析,对于数据分析将会有三个不同的图表对不同数据进行分析,可以通过不同数据图标获取所提取数据的大概分布。同时支持重新生成操作,当进行约束的条件修改时,可以通过重新生成新的图表数据。

(4)信息导出功能:系统均可以对排名、题库、比赛三个部分的相关信息进行导出。支持导出当前查询页面提取的表单,可以导出Excel文件到任意目录下,同时根据导出的成功与否返回导出信息提示,5秒内提示消息自动消失。

(5)信息搜索功能:系统均可以对排名,题库,比赛三个部分进行信息搜索,重新从官网将所有的数据进行更新导入数据库中。在真正爬取信息更新数据库前,可以设置获取信息的不同约束条件,在接下来的爬取过程中将自动进行筛选。同时,支持了多线程异步爬取信息的方式,可以同时对整个数据库中所有的表进行更新,在更新的同时允许用户对排名、题库、比赛的信息进行查询、分析、导出,任何操作在更新时将不会被系统阻塞。此外,在爬取信息的过程中,将会通过界面形式爬取过程展示,获取实时的爬取进度,并且提供取消当前爬取信息任务的操作。