Project #3 (STREET MAPPING)
CSC 172 (Data Structures and Algorithms), Spring 2019,
University of Rochester
Due Date: WED 05/01 11:59 PM
You can work alone or in a team (max.size of 2).
Introduction
This project will require you to create a rudimentary mapping program in Java. Given a data set representing the
roads and intersections in a specific geographic region, your program should be able to plot a map of the data and
provide shortest path directions between any two arbitrary intersections.
Input Data
The geographical data necessary to run your application is provided in the format of a tab-delimited text files.Each
line will consist of 4 pieces of data, as defined below:
Intersections start with “i”, followed by a unique string ID, and decimal representations of latitude and longitude.
i IntersectionID Latitude Longitude
Roads start with “r”, followed by a unique string ID, and the IDs of the two intersections it connects.
r RoadID Intersection1ID Intersection2ID
You may safely assume that all input files will declare intersections before their IDs are used in roads. Three different
data sets are provided for your testing purposes with this project. The first data set, ur.txt represents a subset
of the pedestrian sidewalks on our campus. Building entrances have meaningful intersection IDs such as “CSB” or
“SUEB” for your convenience. The second and third data set test your program’s ability to scale well, with the latest
census data on roads in Monroe County and NYS. The three datasets are attached to the announcement in a zip file.
Project #3 (STREET MAPPING) Page 1 / 3
Deliverable
Your program will be evaluated on how well it accomplishes the following two tasks and command line specification:
Basic Mapping
Implement your own Graph, Node and Edge classes. For this you may use code available online or other
sources, but you must cite the source.
Construct a Graph object using the information read in from the specified input file
Draw the map using Java Graphics (no third party graphing libraries allowed. Talk to your lab TAs for further
clarification if required). The map should scale with the size of the window.
Directions Between Intersections
Implement Dijkstra’s algorithm to find the shortest path between any two arbitrary intersections, as provided
by the command line arguments.

代写CSC 172作业、代写Data Structures作业、java实验作业代做、java程序语言作业调试
When the shortest path has been discovered, the intersections followed to reach the destination should be
printed out to the console in order. Additionally, your program should print out the total distance traveled in
miles.
Finally, if the program is displaying the map, it should highlight (in a different color, stroke width, etc.) the
solution path found.
Command Line Arguments
Your program should accept the following set of command line arguments:
java StreetMap map . txt [ -- show ] [-- directions startIntersection
endIntersection ]
Your program should only display a map if--showis present. Below, you can find how a few of the sample runs
may look like:
java StreetMap ur . txt -- show -- directions HOYT MOREY// Showing both map
and the directions
java StreetMap ur . txt -- show // Just showing the map
java StreetMap ur . txt -- directions HOYT MOREY// Showing the map is
optional .
Getting Started
It is highly recommended that you get your program to work with the UR campus map before moving onto Monroe
County or NYS map data. The size and complexity of those maps introduce new issues that are best handled after
you’ve mastered the basic project requirements.
Hand In
Each student must submit individually irrespective of whether s/he is working in a team or not.
Hand in the source code from this project at the appropriate location on Blackboard. You should hand in a single
compressed/archived (i.e. “zipped”) file named proj3.zip which contains the following
Project #3 (STREET MAPPING) Page 2 / 3
1. A plain text file named README that includes your (and your team member’s) contact information, a detailed
synopsis of how your code works and any notable obstacles you overcame, and a list of all files included in
the submission. If you worked in a team, you must state how you have distributed the workload.
If you went above and beyond in your implementation and feel that you deserve extra credit for a feature in
your program, be sure to explicitly state what that feature is and why it deserves extra credit.
The README for this project should clearly explain any design or implementation choices you made, the
expected runtime of plotting the map and finding the shortest path between two intersections.
2. Source code files representing the work accomplished in this project. All source code files should contain
author identification in the comments at the top of the file.
Grading Rubric
30% Basic mapping
15% Implementation
15% Correctness
50% Directions between intersections
25% Implementation
25% Correctness
20% README with team-information, detailed description of how you structured your project, approached the
challenges the larger maps presented, and the runtime analysis of your code.
Detailed description of your project should include: A brief summary of how your program works, classes used,
their private and public members and methods. You should state the input and output parameters of each method.
See ‘Hand In’ section for further details.
Extra Credit is available for projects that have interactive and/or exceptionally beautiful maps. The Lab TAs will
decide if you deserve any extra-credit.
For calculating the distance between two intersections, you must use This uses the ‘haversine’ formula.
Checkhttps://en.wikipedia.org/wiki/Haversine_formula . It’s ok to use implementation of this
method found online as it is as long as you cite the source.
There might be two intersections which are not connected.
‘show’ and ‘direction’ may appear in any order.
For a large map, we advice you not to add all intersections to the priority queue at the beginning.
If you use a java.util.PriorityQueue, for changing priority of any entry, you must remove it and add it
again. You are welcome to write your own heap implementation (if you want) to avoid removing the
entry.
Project #3 (STREET MAPPING) Page 3 / 3

因为专业,所以值得信赖。如有需要,请加QQ:99515681 或邮箱:99515681@qq.com

微信:codinghelp

CSC 172 (Data Structures and Algorithms)的更多相关文章

  1. CSIS 1119B/C Introduction to Data Structures and Algorithms

    CSIS 1119B/C Introduction to Data Structures and Algorithms Programming Assignment TwoDue Date: 18 A ...

  2. Basic Data Structures and Algorithms in the Linux Kernel--reference

    http://luisbg.blogalia.com/historias/74062 Thanks to Vijay D'Silva's brilliant answer in cstheory.st ...

  3. 剪短的python数据结构和算法的书《Data Structures and Algorithms Using Python》

    按书上练习完,就可以知道日常的用处啦 #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving wit ...

  4. [Data Structures and Algorithms - 1] Introduction & Mathematics

    References: 1. Stanford University CS97SI by Jaehyun Park 2. Introduction to Algorithms 3. Kuangbin' ...

  5. 6-1 Deque(25 分)Data Structures and Algorithms (English)

    A "deque" is a data structure consisting of a list of items, on which the following operat ...

  6. 学习笔记之Problem Solving with Algorithms and Data Structures using Python

    Problem Solving with Algorithms and Data Structures using Python — Problem Solving with Algorithms a ...

  7. Algorithms & Data structures in C++& GO ( Lock Free Queue)

    https://github.com/xtaci/algorithms //已实现 ( Implemented ): Array shuffle https://github.com/xtaci/al ...

  8. Persistent Data Structures

    原文链接:http://www.codeproject.com/Articles/9680/Persistent-Data-Structures Introduction When you hear ...

  9. Choose Concurrency-Friendly Data Structures

    What is a high-performance data structure? To answer that question, we're used to applying normal co ...

随机推荐

  1. ORACLE中dba,user,v$等开头的常用表和视图

    一.Oracle表明细及说明1.dba_开头表    dba_users           数据库用户信息    dba_segments    表段信息    dba_extents        ...

  2. 使用C#.NET列举组合数前N项和

    列举如下列所示的组合数前N项和,代码如下(递归方法里注意去重): static void Main(string[] args) { List<).ToList(); File.AppendAl ...

  3. 聊天机器人開發好消息!!DIALOGFLOW與微信的天作之合!!

    虽然DIALOGFLOW暂未能够与微信(WECHAT)或企业微信(ENTERPRISE WECHAT)进行任何技制上的连接INTERGRATION),确实限制了我们这些聊天机器人开发者的创作空间,因为 ...

  4. vue中用ajax上传文件

    直接上代码 <input class="file-btn" type="file" @change="uploadCompany($event) ...

  5. Luogu5155 [USACO18DEC]Balance Beam

    题目链接:洛谷 这道题看起来是个期望题,但是其实是一道计算几何(这种题太妙了) 首先有一个很好的结论,在一个长度为$L$的数轴上,每次从$x$处出发,不停地走,有$\frac{x}{L}$的概率从右端 ...

  6. Java注解之 @Target、@Retention简介

    先来看一个Spring中的一个常用注解 package org.springframework.stereotype; import java.lang.annotation.Documented; ...

  7. allegro17.2 gerber 步骤

    1.Manufacture -> NC -> Drill Customization... 先点击 Auto generate symbols,出来对话框后点击 YES .然后在Symbo ...

  8. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

    BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...

  9. Oracle安装和配置Oracle数据库快速指南

    Oracle安装12C要求参考文档 汇总 中文版:在 Unix AIX,HP-UX,Linux,Solaris 和 MS Windows 操作系统上安装和配置 Oracle 数据库(RDBMS)的要求 ...

  10. android模拟器访问PC本地接口

    一般来讲PC本地接口是localhost:8080 而在安卓模拟器上用的话,他会映射模拟器本身的,也就是说,可以把模拟器也当成一个PC端来看待,这样会好理解点吧 而在模拟器上想要访问PC本地的loca ...