Loading

结对第二次作业

目录

作业基本信息

这个作业属于哪个课程 2021春软件工程实践|S班 (福州大学)
这个作业要求在哪里 结对第二次作业
结对学号 221801333,221801235
这个作业的目标 顶会热词统计的实现
其他参考文献 CSDN

,

GitHub

PSP表格和效能分析

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
  • Estimate
  • 估计这个任务需要多少时间
  • 20 20
    Development 开发 3105 3125
  • Analysis
  • 需求分析(包括学习新技术)
  • 30 45
  • Design Spec
  • 生成设计文档
  • 20 20
  • Design Review
  • 设计复审
  • 25 20
  • Coding Standard
  • 代码规范(为目前的开发制定合适的规范)
  • 10 10
  • Design
  • 具体设计
  • 60 50
  • Coding
  • 具体编码
  • 2880 2950
  • Coding Review
  • 代码复审
  • 20 10
  • Test
  • 测试(自我测试,修改代码,提交修改)
  • 60 20
    Reporting 报告 90 100
  • Test Repor
  • 测试报告
  • 30 30
  • Size Measurement
  • 计算工作量
  • 30 30
  • Postmortem & Process Improvement Plan
  • 事后总结,并提出过程改进计划
  • 30 40
    合计 3215 3245

    git仓库链接和代码规范链接

    GitHub
    代码规范

    项目部署访问链接

    功能未完成

    成品展示

    功能1:对已爬取的论文列表进行操作


    • 可对论文列表进行删除:论文列表分页,可直接对论文进行删除
    • 可对论文列表进行查询详细信息:对论文列表模糊查询,根据查询内容对论文关键词、摘要、发布时间等全部信息进行查询,可根据发表日期对论文列表进行排序

    功能2:分析已爬取到的论文信息,提取top10个热门领域或热门研究方向


    • 形成如关键词图谱之类直观的查看方式,点击某个关键词可展现相关的论文:关键词图谱以环形图展示,简洁明了,便于了解数据
    • 可对多年间、不同顶会的热词呈现热度走势对比,以动图的形式呈现(这里将范畴限定在计算机视觉的三大顶会CVPR、ICCV、ECCV内)

    结对讨论过程描述

    由于线上有时候不能及时沟通,因此我们大部分时间都为线下讨论,截图较少,因此文字总结我们的线下讨论:

    • 讨论前后端实现方式:由于我们学习方向都偏前端,235同学擅长前端vue的使用负责前端,333同学运用之前学习的PHP知识负责后端。
    • 数据表的讨论:讨论了用户表的字段
    • 数据交互:讨论如何实现vue和PHP的数据传输,共同讨论实践解决跨域问题,数据库报错问题,沟通前后端数据的传输方式和所用数据
    • 图表讨论:对图表的使用进行讨论,确定饼状图表示十大热门领域所占比例,柱状图表明热度走势
    • 部署讨论:由于都不擅长部署,讨论决定GIF作为备用方法

    设计实现过程

    在确定vue和PHP来实现之后,333同学负责后端,235同学负责前端,以下是我们前端和后端的实现过程

    功能 前端 后端
    显示论文列表 1.将传入后端的搜索内容置为空,后端将传输所有论文
    2.获取后端传输数据
    3.实现分页处理
    4.通过设置控件事显示的论文列表可根据发表日期进行排序
    5.设置论文列表显示简要信息,点击后查看该论文摘要
    1.通过php遍历存放论文json文件的文件夹,解析json文件数据
    2.对jsonString进行处理,使关键字去掉双引号和大括号,以分号分隔
    3.对发布日期进行处理,因为原本的Date数据被转化为jsonString后月份为英文,无法在转成Date,因此通过月份数字转化存入字符串中
    4.将处理好数据存入数据表
    5.链接数据库,获得前端传输的搜索内容,运用MySQL语句对论文表所有数据模糊搜索
    6.获得符合条件的数据,将其传到前端
    搜索功能 1.将控件获得的搜索内容传入后端
    2.从后端接受返回的论文信息,分页显示
    1.链接数据库,获得前端传输的搜索内容,运用MySQL语句对论文表所有数据模糊搜索
    2.获得符合条件的数据,将其传到前端
    删除功能 通过控件获得当前被删除的论文信息,将该论文信息传入后端 链接数据库,获得前端传输的论文,运用MySQL语句对论文表该论文信息进行删除
    关键词图谱 1.学习后使用vchart进行图表的使用
    2.获取后端传来的分析结果
    3.将数据放入饼状图中
    4.对饼状图进行跳转,点击关键词后跳转到默认该关键词为搜索内容的搜索界面
    1.链接数据库,获得论文表内容
    2.遍历论文表,保存当前论文的标题、发布时间信息
    3.对论文表内容中的关键词使用分号分隔,将关键词分隔后获得的array遍历,将之前保存的论文信息和array中的关键词插入关键词表
    4.设置关键词表字段num初值为1,对关键词表的关键词字段重复出现次数进行count(*)统计,次数设置为total,以关键词group,以total排序,limit 10.
    5.将十个最多的关键词及其总数传给前端
    热度走势 1.使用柱状图
    2.将后端传输的十组数据进行设置,使其柱状图变化
    1.对已知的十大关键词进行不同发布时间年份统计
    2.将数据传输给前端
    论文表abstract MeetingAndYearkeywordreleaseTimenamelink
    关键词表keyword namenumreleaseTime

    代码说明

    生成论文表

    通过php遍历存放论文json文件的文件夹,解析json文件数据

    $dir = "ECCV/";
    if (is_dir($dir)){
    if ($dh = opendir($dir)){
    while (($file = readdir($dh)) !== false){
      if($file!='.'&& $file!='..'){
        $path="ECCV/".$file;
        $json_string = file_get_contents($path); 
        $data = json_decode($json_string, true);// 用参数true把JSON字符串强制转成PHP数组 
        $datas = array();//保存处理好的信息
        $i=0;
        foreach($data as $list=>$things)
    

    对jsonString进行处理,对被转化为array的关键字进行处理去掉双引号和大括号,以分号分隔

    if(is_array($things)){
    $str='';
    foreach ($things as $key => $value) 
    {
    $str .=$value.';'; 
    }
    $datas[$i]=$str;
    }
    

    对发布日期进行处理,因为原本的Date数据被转化为jsonString后月份为英文,无法在转成Date,因此通过月份数字转化存入字符串中

    $find = array("January","February","March","April","May","June","July","August","September","October","November","December" );
    $rep = array("01","02","03","04","05","06","07","08","09","10","11","12");
    $number=str_ireplace($find, $rep, $things);
    $day=substr($number,0,2);//取得年份 
    $month=substr($number,3,2);//取得月份 
    $year=substr($number,6,4);//取得几号 
    $number = $year.'-'.$month.'-'.$day; 
    $datas[$i]=$number;
    

    生成关键字表

    遍历论文表,保存当前论文的标题、发布时间信息

    $name=$row["name"];
    $releaseTime=$row["releaseTime"];
    

    对论文表内容中的关键词使用分号分隔,将关键词分隔后获得的array遍历,将之前保存的论文信息和array中的关键词插入关键词表

    $matches = explode(';', $row["keyword"]);
    $matches= array_filter($matches);
    foreach($matches as $list=>$things){
    $mysqli->query("insert into keyword values('".$things."','".$name."','1','".$releaseTime."')"); 
    }
    

    热门关键词

    设置关键词表字段num初值为1,对关键词表的关键词字段重复出现次数进行count(*)统计,次数设置为total,以关键词group,以total排序,limit 10.

    $mysqli->query("select keyword,sum(num) as total from keyword group by keyword order by total DESC limit 10");
    

    对已知的十大关键词进行不同发布时间年份统计

    $mysqli->query("select * from keyword where releaseTime like '%".$year[0]."%' and keyword = '".$things."'");
    

    心路历程和收获

    • UI设计经验不足,echart导入失败,图表实现遇到困难
      • 使用vchart代替
    • 不知道如何实现json文件批量导入,并形成表
      • 尝试了导入工具,但由于软件限制,一次性只能导入20个json文件,只能选择放弃这个方法
      • 使用代码实现,在不断百度,不断尝试不同方法后依然无法实现。选择求助已完成该功能的小组,询问实现流程后编写代码,不断调试,不断发现新的问题,终于在一次次的失败中成功创建
    • 在前后端交互时出现跨域问题,两个人都束手无策
      • 235同学在之前的团队作业中遇到类似问题,在不断修改语句,总结经验后终于找到了解决方法,并第一时间记录笔记,为之后的代码实践积累经验
    • 前后端交互问题,两个人对前后端交互的不太了解
      • 在沟通双方数据设置,共同检查语句是否出错,探讨报错原因,一点一点解决困扰我们的交互问题
    • 部署问题
      • 我们选择在最后完成这一步功能,如果未能实现部署,将使用演示的方式,面对来不及完成的功能,只能优先确保其他功能的实现
    上述内容都是我们这次作业所经历的,既有遇到困难无法解决的着急和挫败,也有通过努力克服困难的喜悦,更重要的是两个人相互帮助,相互鼓励,为一点一点实现的作业感到高兴。同时,我们也在这次作业中不断巩固自己所学的知识,将遇到的问题转化为新的知识吸收,为之后的实践积累经验。

    评价结对队友

    • 221801235同学对221801333同学的评价
      • 她的学习能力很强,遇到问题总能很快解决,认真严谨,经常会有很不错的想法,遇到技术问题也非常耐心,是一个很好的队友和伙伴。
    • 221801333同学对221801235同学的评价
      • 她是一个很好的伙伴,她对vue的熟练账务极大地促进了结对作业的完成进度,对遇到的问题会搜索解决方法后,耐心地不断尝试,同时总结经验,在不断尝试中找到解决方法,和她合作可以使我进步。
    posted @ 2021-04-01 23:21  -ways-  阅读(101)  评论(0编辑  收藏  举报