zoukankan      html  css  js  c++  java
  • 预培训-个人项

    所属课程 2019北航软件工程暑期师资培训(北京航空航天大学)
    作业要求 预培训-个人项目
    作业目标 实现一个帮助进行地铁出行路线规划的命令行程序。

    要求:

    1. 使用Visual Studio Community 2019 或 IDEA 进行开发,采用C++, C# 或 Java 语言实现,运行环境为64-bit Windows 10。
    2. 提交的代码要求经过Code Quality Analysis工具的分析并消除所有的警告。Code Quality Analysis工具的用法参见:
      http://msdn.microsoft.com/en-us/library/dd264897.aspx
    3. 请使用性能分析工具来找出代码中的性能瓶颈并进行改进。
    4. 写出至少10个测试用例确保你的程序能够正确处理各种情况。
    5. 使用Github来管理源代码和测试用例。


    1、模块构思

    (1)POJO部分

    站点是以线路为顺序进行组织的,考虑到可维护性(方便修改、添加、删除站点)和语义性使用xml来进行地铁线路的存储:

    其中station包含属性:id、站点名称、站点所属线路、还有邻接站点。

    一条线路line包含多个站点、一个地铁站包含多个线路。

    为了方便进行xml文件和Java对象的映射,使用了JAXB库来实现这种映射:

    SubwayPojo

    Line

    Station:

    三个POJO类实现了一系列get、set方法,并且使用相应的注解和XML进行了映射。

    (2)主程序部分

    主程序部分包含一个类:
    subway
    主要包括以下函数功能:




    主要的思路是,尽可能的解耦,把命令行参数获取解耦出来,这样以后要扩展出新的调用方式只要新增一个函数就好,
    不用修改原来的代码。

    (3)工具类部分

    工具类部分主要包含一个类:
    Util
    为了方便对数据进行录入,Util实现了一个简单的命令行录入小程序:
    有两种录入方式,一种是按线路进行录入:

    一种是按站点进行录入:

    同时还实现了从文件中读取地铁信息,和存地铁信息到文件:

    (4)单元测试部分

    单元测试部分主要包括一个类:
    SubwayTest
    使用了Junit来实现单元测试,通过比对预期文件结果和输出文件结果来判断正确性:

    2、PSP表格

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

    3、核心算法

    核心算法使用Dijkstra算法,实现图的数据结构采用邻接矩阵:

    算法流程图:

    4、单元测试和覆盖率

    5、性能分析

    主要性能瓶颈在JAXB上。

    6、总结

    通过这次个人项目,熟悉了JAXB的使用,更深入的了解了Djkstra算法的原理。

    github:https://github.com/numb-men/subway

  • 相关阅读:
    消息传递协议
    TSL 访问器
    graph engine
    uwp 动画Storyboard
    iOS播放视频时候,忽略设备静音按钮
    Could not find Developer Disk Image
    GIT常用命令
    iOS 音频播放时听筒及扬声器切换
    iOS 9:ATS
    iOS设计模式
  • 原文地址:https://www.cnblogs.com/hengyumo/p/11225455.html
Copyright © 2011-2022 走看看