课程设计总结报告模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程编号:B080109010

数据结构课程设计

总结报告

东北大学软件学院

第一章需求分析

1、问题的定义

设计一个景点管理系统,分为管理员和游客两部分,需要帮助景区更为方便的管理景区,规划道路,帮助游客更为方便地找到自己想要的信息

2、问题分析

为游客提供景点分布图,景点简介,景点查询,以及查询路线选择等相关建议;为管理员提供添加景点,删除景点,添加道路,以及发布公告的功能,考虑到景区的实际情景,整个项目应该设计为一个手机App,这样才能满足用户需求,方便用户操作

3、研究意义

这是一个与实际相连的小项目,以方便游客游览和景区管理作为最终目的,提供高效的算法,和简洁的界面,方便用户操作,这样有利于学生写的作业与社会实际情况相连,考虑确实需求

第二章系统设计

2.1总体设计

(1)基本数据结构:

○1list: MyList

private final static int INIT_CAPACITY;

private Object[] mList;

private int mCurrentCapacity;

private int mSize;

public void add(T item);

public void remove(int index);

public T get(int index);

public void set(int index, T item);

public int size();

○2队列: MyQueue

private Object[] queue;

private int front;

private int nItems;

private int maxSize = 100;

public void add(T item)

public T remove()

public boolean isEmpty()

public int size()

○3栈: MyStack

private int capacity = 10;

private int length = 0;

private Object[] stack;

public boolean isEmpty()

public boolean isFull()

public void push(Object obj) public T pop()

public int size()

○4邻接表: Graph

public MyList adjList; public MyList visit;

○5边: EdgeNode

public int index;

public String name;

public boolean flag = true;

public int value;

public EdgeNode nextArc;

○6点: VertexNode

public String name;

public Attraction attraction;

public EdgeNode firstArc = new EdgeNode();

(2)游客操作的定义:

○1提供所有景点之间的距离: void outputGraph()

○2搜索相关的景点: ArrayList findByName(String keyword)

○3通过欢迎度来排序: ArrayList sortByPopular()

○4通过岔路数进行排序: ArrayList sortByStreetNum()

○5找最短路径的长度: int shortestDistance(String start,String end)

○6找最短路: String shortestRoute(String Start,String end)

○7获取所有景点: ArrayList getAllAttraction()

○8获取所有的道路: ArrayList getAllStreet()

○9提供导游回路: String outputloop()

○10登记车辆: String registerCar(String license)

○11驶出车辆: String leaveCar(String lisence)

(3)管理员操作定义:

○1添加新景点: void addAtrraction(VertexNode newAttraction)

○2添加道路: String addStreet(String start,String end,int distance)

○3删除景点: boolean deletAttraction(String name)

○4维护道路: void maintainStreet(String start,String end)

○5发布公告: void sendNotice()

2.2程序设计

(1)Dijkstra算法找最短路径

○1初始时,S只包含了初始的起点,即S={v},v的距离为0。U包含着v之外的所有节点,即U={其余节点},若v与U中顶点有边,则正常有权值,若不是u与v无直接的边相接,则的权值为无穷大。

○2从U中选取一个距离v最小的顶点k,把k,加入S中。

○3以k为新考虑的中间点,修改U中各顶点的距离,若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值为顶点k的距离加上边上的权。

○4重复步骤2和3直到所有顶点都包含在S中

(2)哈密尔顿回路找最短的导游回路

○1初始时,S中只包含一个起点,即S={v}

○2遍历所有与v,相邻的节点,选取最近的顶点k加入,检查集合中是否形成了回路,若存在,则换其他点,若没有,则k便成了新的v节点○3重复步骤2,直到将所有节点都包含在S中

第三章系统实现与调试

3.1 景区路线图的初始化

我将所需要的数据放进了数据库,然后再录入数据,通过Graph,VertexNode 和EdgeNode三个数据结构来保存这个邻接表

while (rs.next()) {// 初始各顶点信息

String name = rs.getString("name");

String introduce = rs.getString("introduce");

int popularity = rs.getInt("popularity");

int streetNum = rs.getInt("streetnum");

G.adjList.add(new VertexNode(name, new Attraction(name, introduce, popularity, streetNum)));

G.adjList.get(i).firstArc = null;

G.visit.add(false);

i++;

}

相关文档
最新文档