ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:257.30KB ,
资源ID:9871748      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9871748.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计总结报告模板.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计总结报告模板.docx

1、课程设计总结报告模板课程编号:B080109010数据结构课程设计总结报告姓名 学号 班级 指导教师姜琳颖实验名称数据结构课程设计开设学期2017-2018第一学期开设时间第1周第3周报告日期2017年9月12日评定成绩评定人评定日期2017-9-25东北大学软件学院第一章需求分析。1、 问题的定义设计一个景点管理系统,分为管理员和游客两部分,需要帮助景区更为方便的管理景区,规划道路,帮助游客更为方便地找到自己想要的信息2、 问题分析为游客提供景点分布图,景点简介,景点查询,以及查询路线选择等相关建议;为管理员提供添加景点,删除景点,添加道路,以及发布公告的功能,考虑到景区的实际情景,整个项目

2、应该设计为一个手机App,这样才能满足用户需求,方便用户操作3、 研究意义这是一个与实际相连的小项目,以方便游客游览和景区管理作为最终目的,提供高效的算法,和简洁的界面,方便用户操作,这样有利于学生写的作业与社会实际情况相连,考虑确实需求 第二章系统设计2.1总体设计 (1) 基本数据结构: list: MyList private final static int INIT_CAPACITY; private Object mList; private int mCurrentCapacity; private int mSize; public void add(T item); publ

3、ic void remove(int index); public T get(int index); public void set(int index, T item); public int size(); 队列: 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()栈: MyStac

4、k 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()邻接表: Graph public MyList adjList; public MyList visit;边: EdgeNode public int index; public String name; public boolean f

5、lag = true; public int value; public EdgeNode nextArc;点: VertexNode public String name; public Attraction attraction; public EdgeNode firstArc = new EdgeNode();(2) 游客操作的定义 :提供所有景点之间的距离: void outputGraph()搜索相关的景点: ArrayList findByName(String keyword)通过欢迎度来排序: ArrayList sortByPopular()通过岔路数进行排序: Array

6、List sortByStreetNum()找最短路径的长度: int shortestDistance(String start,String end)找最短路: String shortestRoute(String Start,String end)获取所有景点: ArrayList getAllAttraction()获取所有的道路: ArrayList getAllStreet()提供导游回路: String outputloop() 登记车辆: String registerCar(String license)驶出车辆: String leaveCar(String lisenc

7、e) (3) 管理员操作定义:添加新景点: void addAtrraction(VertexNode newAttraction)添加道路: String addStreet(String start,String end,int distance)删除景点: boolean deletAttraction(String name)维护道路: void maintainStreet(String start,String end)发布公告: void sendNotice() 2.2程序设计 (1) Dijkstra算法找最短路径初始时,S只包含了初始的起点,即S=v,v的距离为0。U包含着

8、v之外的所有节点,即U=其余节点,若v与U中顶点有边,则正常有权值,若不是u与v无直接的边相接,则的权值为无穷大。从U中选取一个距离v最小的顶点k,把k,加入S中。以k为新考虑的中间点,修改U中各顶点的距离,若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值为顶点k的距离加上边上的权。重复步骤2和3直到所有顶点都包含在S中(2) 哈密尔顿回路找最短的导游回路初始时,S中只包含一个起点,即S=v遍历所有与v,相邻的节点,选取最近的顶点k加入,检查集合中是否形成了回路,若存在,则换其他点,若没有,则k便成了新的v节点重复步骤2,直到将所有节点都

9、包含在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 Ve

10、rtexNode(name, new Attraction(name, introduce, popularity, streetNum); G.adjList.get(i).firstArc = null; G.visit.add(false); i+; v = G.adjList.size();/ 初始化顶点数目的信息 sql = select * from route; stmt = conn.prepareStatement(sql); rs = stmt.executeQuery(); i = 0; while (rs.next() / 根据路径形成图 String start =

11、rs.getString(start); String end = rs.getString(end); int v1 = Index(start); int v2 = Index(end); EdgeNode enode1 = new EdgeNode(); enode1.name = start; enode1.index = v1; enode1.value = rs.getInt(distance); enode1.nextArc = G.adjList.get(v2).firstArc; G.adjList.get(v2).firstArc = enode1; EdgeNode en

12、ode2 = new EdgeNode(); enode2.name = end; enode2.index = v2; enode2.value = rs.getInt(distance); enode2.nextArc = G.adjList.get(v1).firstArc; G.adjList.get(v1).firstArc = enode2; 3.2 景区管理模块(1)添加景点public void addAtrraction(VertexNode newAttraction) / 添加新景点 G.adjList.add(newAttraction); v = G.adjList.

13、size(); (2)删除景点 enode = new EdgeNode();enode = G.adjList.get(v).firstArc;while (enode != null) EdgeNode pEnode = new EdgeNode(); EdgeNode bEnode = new EdgeNode(); pEnode = G.adjList.get(enode.index).firstArc; bEnode = G.adjList.get(enode.index).firstArc; if (pEnode.index = v) G.adjList.get(enode.ind

14、ex).firstArc = pEnode.nextArc; else pEnode = pEnode.nextArc; while (pEnode != null) if (pEnode.index = v) bEnode.nextArc = pEnode.nextArc; break; pEnode = pEnode.nextArc;enode = enode.nextArc;G.adjList.remove(v); (3)添加道路 int v1 = Index(start);int v2 = Index(end); EdgeNode enode1 = new EdgeNode();eno

15、de1.name = start;enode1.index = v1;enode1.value = distance;enode1.nextArc = G.adjList.get(v2).firstArc;G.adjList.get(v2).firstArc = enode1; EdgeNode enode2 = new EdgeNode();enode2.name = end;enode2.index = v2;enode2.value = distance;enode2.nextArc = G.adjList.get(v1).firstArc;G.adjList.get(v1).first

16、Arc = enode2; 3.3 景点的查找与排序(1)景点的查找public ArrayList findByName(String keyword) / 搜索相关的景点 ArrayList result = new ArrayList(); ArrayList attractions = getAllAttraction(); for (int i = 0; i = 0 | attractions.get(i).introduce.indexOf(keyword) = 0) result.add(attractions.get(i); return result; (2)景点排序 pub

17、lic ArrayList sortByPopular() / 通过欢迎度来排序 ArrayList attractions = getAllAttraction(); for (int i = 0; i attractions.size(); i+) for (int j = i + 1; j attractions.size(); j+) if(attractions.get(i).popularity attractions.get(j).popularity) Attraction temp = attractions.get(i); attractions.set(i, attrac

18、tions.get(j); attractions.set(j, temp); return attractions; 3.4 两景点间最短路径(1)得到最短路径的长度 EdgeNode enode = G.adjList.get(x).firstArc; / 初始化distance while (enode != null) distanceenode.index = enode.value; enode = enode.nextArc; for (int k = 1; k v; k+) int second = inf; int pIndex = x; / 选取用于松弛的点 for (in

19、t i = 0; i v; i+) if (!(G.visit.get(i) & distancei second) pIndex = i; second = distancei; G.visit.set(pIndex, true); EdgeNode enode1 = G.adjList.get(pIndex).firstArc; for (int i = 0; i (distancepIndex + temp) distancei = distancepIndex + temp; return distanceIndex(end); (2)得到最短路径 public String shor

20、testRoute(String start, String end) int distance = new intv + 1; int p = new intv + 1v + 1; / 初始化distance for (int i = 0; i v; i+) distancei = inf; for (int i = 0; i v; i+) for (int j = 0; j v; j+) pij = -1; / 初始化visit的值 for (int i = 0; i v; i+) G.visit.set(i, false); int x = Index(start); distancex

21、 = 0; G.visit.set(x, true); EdgeNode enode = G.adjList.get(x).firstArc; / 初始化distance while (enode != null) distanceenode.index = enode.value; / 若存在直接路径 penode.index0 = x; penode.index1 = enode.index; enode = enode.nextArc; for (int k = 1; k v; k+) int second = inf; int pIndex = x; / 选取用于松弛的点 for (i

22、nt i = 0; i v; i+) if (!(G.visit.get(i) & distancei second) pIndex = i; second = distancei; G.visit.set(pIndex, true); EdgeNode enode1 = G.adjList.get(pIndex).firstArc; for (int i = 0; i (distancepIndex + temp) distancei = distancepIndex + temp; for (int j = 0; j v; j+) pij = ppIndexj; if (pij = -1)

23、 / 在pw第一个等于-1的地方加上顶点w pij = i; break; int pEnd = Index(end); String route = ; / 最短路径 for (int i = 0; i -1) route += G.adjList.get(ppEndi).name; if (i + 1 = v | ppEndi + 1 = -1) break; else route += -; return route; (3) 导游线路图设计 public String outputloop() / 提供导游回路 boolean visit = new booleanv + 1; for

24、 (int i = 0; i v; i+) visiti = false; int start = 0;/ 先假定从第一个值开始 int result = new intv + 1; EdgeNode enode = new EdgeNode(); int next = start; visitstart = true; int k = 0; int value = inf; while (next != -1) enode = G.adjList.get(next).firstArc; resultk+ = next; next = -1; value = inf; while (enode != null) if (!visitenode.index & enode.value value) next = enode.index; value = enode.value; enode = enode.nextArc; if (next != -1) visitnext = true; String ans = ; for (int i = 0; i ; return ans; 3.6输出车辆的进出信息(1)车辆登记public String registerCar(S

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1