课程设计总结报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
○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
○3通过欢迎度来排序: ArrayList
○4通过岔路数进行排序: ArrayList
○5找最短路径的长度: int shortestDistance(String start,String end)
○6找最短路: String shortestRoute(String Start,String end)
○7获取所有景点: ArrayList
○8获取所有的道路: ArrayList
○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++;
}