校园导游咨询管理系统软件设计报告书.docx

上传人:scccc 文档编号:13410208 上传时间:2021-12-25 格式:DOCX 页数:21 大小:516.02KB
返回 下载 相关 举报
校园导游咨询管理系统软件设计报告书.docx_第1页
第1页 / 共21页
校园导游咨询管理系统软件设计报告书.docx_第2页
第2页 / 共21页
校园导游咨询管理系统软件设计报告书.docx_第3页
第3页 / 共21页
校园导游咨询管理系统软件设计报告书.docx_第4页
第4页 / 共21页
校园导游咨询管理系统软件设计报告书.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《校园导游咨询管理系统软件设计报告书.docx》由会员分享,可在线阅读,更多相关《校园导游咨询管理系统软件设计报告书.docx(21页珍藏版)》请在三一文库上搜索。

1、学 号: 0120810340402课 程 设 计题 目校园导游咨询管理系统软件设计学 院计算机科学与技术学院专 业计算机科学与技术班 级计算机0804班姓 名王成鹏指导教师杜 薇2012年1月9日课程设计任务书学生姓名: 王 成 鹏 专业班级: 计算机0804 指导教师: 杜 薇 工作单位: 计算机学院 题目:校园导游咨询管理系统软件设计初始条件:1预备内容:数据结构(图),软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程2实践准备:掌握一种计算机高级语言等相关的使用。要求完成的主要任务:基本功能要求:(1)设计你所在学校的校园平面图,所含景点不少于10个。将校内各景点的数据(景

2、点名称、代号、简介等信息)和图片以图结构表示并保存于数据库。(2)为来访客人提供任意景点相关信息的查询。(3)为来访客人提供任意景点的问路查询。(4)测试数据:自定。 (5)涉及技术工具:软件工程技术、数据库技术、UML工具、Java语言或C#语言等设计报告内容应说明:1. 课程设计目的与功能;2. 需求分析,数据结构或模块说明(功能与框图);3. 源程序的主要部分;4. 运行结果与运行情况分析;5. 自我评价与总结时间安排:本学期第17-19周:1. 查阅、消化资料,系统调查2天2. 系统分析(采用UML工具)3天3. 总体设计,实施计划(采用UML工具)3天 4. 系统开发与实现

3、(用指定语言工具)5天5. 撰写报告2天指导教师签名: 2011年12月25日系主任(或责任教师)签名: 年 月 日校园导游咨询管理系统1. 课程设计目的与功能1)设计目的:为游客设计一个校园导游咨询管理系统软件,帮助游客很好地了解校园景点位置,为观光带来方便。作为导游就是指示景点之间的距离和方向,让游客很清楚所处的位置,并且能够很快地找到方向与目的地。软件是为了简单、易用而设计的。2)基本功能要求:1.设计你所在学校的校园平面图,所含景点不少于10个。将校内各景点的数据(景点名称、代号、简介等信息)和图片以图结构表示并保存于数据库。2.为来访客人提供任意景点相关信息的查询。3.为来访客人提供

4、任意景点的问路查询。4.测试数据:自定。 5.涉及技术工具:软件工程技术、数据库技术、UML工具、Java语言或C#语言等 3)初始条件:1预备内容:数据结构(图),软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程2实践准备:掌握一种计算机高级语言等相关的使用。2. 需求分析,数据结构或模块说明(功能与框图)1) 确定问题设计一个学校的校园平面图,所含景点不少于10个。将校内各景点的数据(景点名称、代号、简介等信息)和图片以图结构表示并保存于数据库中。为来访客人提供任意景点相关信息的查询。为来访客人提供任意景点的问路查询。一个学校中的景点不少于10个,每个景点都有一些相关的信息,还

5、要有图片来形象地表示景点。给出一个平面图,表示各个景点的位置和景点之间的距离。并且把景点以及跟景点相关的信息保存于数据库中。利用这个软件,游客可以查看到校园的平面图以及全部的景点。从平面图中可以看出景点的位置、景点的名称和景点之间的距离、方向等信息。还附于全部景点的名称和代码。利用这个软件,游客可以查找每个景点的相关信息,如:填入景点的代码或名称,显示景点的图片和信息等。利用这个软件,游客可以查找景点和景点间的最短距离和路径。如:输入起点(景点的代号或名称)和终点(景点的代号或名称),显示两景点的图片和景点间的最短距离和路径。2) 需求分析对于需求分析:从导游(管理员)的角度出发,主要可以包括

6、几个子功能:校园平面图的显示及全部景点、景点查询、路径查询、添加景点、删除景点、修改景点信息等。从来访客人的角度出发,主要可以包括的子功能有:校园平面图的显示及全部景点、景点查询、路径查询等。以下为子功能的用例图,并对它们进行详细分析:l 校园平面图的显示级全部景点:对导游和来访客人都可见,如:校园平面图、全部景点的代号和名称。显示拓补图导游或来访客人l 景点查询:导游和来访客人都可以输入景点代号或名称进行查询景点的相关信息(图片、简介等)。景点查询导游或来访客人l 路径查询:导游和来访客人输入起点(景点代号或名称)和终点(景点代号或名称),查询最短距离和路径。路经查询导游或来访客人l 添加景

7、点:只有管理员可以操作,为校园添加新的景点信息到数据库中。添加景点管理员l 删除景点:只有管理员可以操作,从数据库中删除旧的景点信息。删除景点管理员l 修改景点信息:只有管理员可以操作,在数据库中修改原有的景点信息。修改景点信息管理员3) 数据结构本实验中用到的数据结构:图ADT Graph 数据对象 V:景点顶点集数据关系R:R = VRVR = <v,w>| v,wV 且 P(v,w),<v,w>表示从v到w的弧,谓词P(v,w)定义了弧<v,w>的意义或信息基本操作 P:CreateGraph(&G,V,VR);初始条件:V是图的顶点集,VR是

8、图中弧的集合。操作结果:按V和VR的定义构造图G。DestroyGraph(&G);初始条件:图G存在。操作结果:销毁图G。ShortestPath(&G,v1,v2);初始条件:图G存在,给定起点v1和终点v2。操作结果:返回起点v1和终点v2的最短距离和路径。4) 框图设计导游用户的框图设计:主界面退出修改景点信息删除景点添加景点路经查询景点查询拓补图修改删除添加查询查询返回返回返回返回返回来访客人的框架设计:(添加景点、删除景点和修改景点信息这三项禁用)主界面退出景点查询拓补图路经查询查询查询返回返回5) 模块说明运行环境说明:PC,java sdk,SQL Server

9、 2005,eclipse分块说明(部分):public class ViewDB定义驱动;定义数据库;定义用户名、密码;加载驱动;链接数据库;释放资源、关闭链接;public class SerFrame创建控件;对控件添加监听设置;控件放入容器;窗口加载容器;监听函数实现;public class ViewQuery创建控件;对控件添加监听设置;控件放入容器;窗口加载容器;监听函数实现;调用class ViewDB ,实现链接数据库,进行数据库操作。数据库模块说明:3. 源程序的主要部分ViewDB.javapackage v_sql;import java.sql.*;public cl

10、ass ViewDB /定义驱动、数据库名、用户名、密码public static final String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"public static final String url="jdbc:sqlserver:/localhost:1433;Databasename=view"public static final String user="sa"public static final String password="123

11、45"public static Connection con = null;public static ResultSet rs = null;public static Statement st = null;public void initDB()tryClass.forName(driver);catch(java.lang.ClassNotFoundException e)System.out.println("Can't load Driver");trycon=DriverManager.getConnection(url,user,pass

12、word);st=con.createStatement();catch(SQLException ex)System.out.print("Query is wrong"+ex.getMessage();public static void main(String args)ViewDB vdb = new ViewDB();vdb.initDB();String sql = "select v_name from tb_view"tryrs=st.executeQuery(sql);if(rs!=null)ResultSetMetaData rsmd

13、 = rs.getMetaData();int countCols = rsmd.getColumnCount();for(int i=1;i<=countCols;i+)if(i>1) System.out.print(" ");System.out.print(rsmd.getColumnLabel(i);System.out.print("");while(rs.next()System.out.print(rs.getString("v_name");catch(SQLException ex)System.out

14、.print("Query is wrong"+ex.getMessage();finallytryif(rs!=null) rs.close();if(st!=null) st.close();if(con!=null) con.close();catch(SQLException error)error.printStackTrace();RoadQuery.javapackage v_Frame;import java.awt.*;import java.awt.event.*;import javax.swing.*;import .URL;import java.

15、sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.*;import v_sql.ViewDB;public class RoadQuery extends JFrame implements ActionListener加载容器与监听 public void actionPerformed(ActionEvent e)if(e.getActionCommand().equals("查询") vdb = new ViewDB(); vdb.initDB(); String sql_pic1 =

16、 "select v_name,v_picture from tb_view where v_id='"+rq_text1.getText() +"' or v_name='"+rq_text1.getText()+"'" String sql_pic2 = "select v_name,v_picture from tb_view where v_id='"+rq_text2.getText() +"' or v_name='"+rq_t

17、ext2.getText()+"'" String origin = new String(); String destination = new String(); int ori=0; int des=0; try vdb.rs = vdb.st.executeQuery(sql_pic1); if(vdb.rs!=null)while(vdb.rs.next()sql_pic1=vdb.rs.getString("v_picture");origin = vdb.rs.getString("v_name"); catch

18、(SQLException ex) System.out.print("Query is wrong"+ex.getMessage(); try vdb.rs = vdb.st.executeQuery(sql_pic2); if(vdb.rs!=null)while(vdb.rs.next()sql_pic2=vdb.rs.getString("v_picture");destination = vdb.rs.getString("v_name"); catch(SQLException ex) System.out.print(&

19、quot;Query is wrong"+ex.getMessage(); imgUrl = RoadQuery.class.getResource(sql_pic1);/ 获取图片资源的路径 img = Toolkit.getDefaultToolkit().getImage(imgUrl); / 获取图像资源 imagePanel1 = new DrawImagePanel(); / 创建图像面板对象 imagePanel1.setBounds(40, 100, 150, 150); content.add(imagePanel1); imgUrl = RoadQuery.cla

20、ss.getResource(sql_pic2);/ 获取图片资源的路径 img = Toolkit.getDefaultToolkit().getImage(imgUrl); / 获取图像资源 imagePanel2 = new DrawImagePanel(); / 创建图像面板对象 imagePanel2.setBounds(300, 100, 150, 150); content.add(imagePanel2); repaint(); String sql = "select v_name from tb_view order by v_id" String st

21、r = new String14;/"","","","","","","","","","","","","","" int s = 0; try vdb.rs = vdb.st.executeQuery(sql); if(vdb.rs!=null)while(vdb.rs.next()sql=vdb.rs.getS

22、tring("v_name");strs+=sql;catch(SQLException ex)System.out.print("Query is wrong"+ex.getMessage(); int path= new int ss; for(int i=0;i<s;i+) for(int j=0;j<s;j+) pathij=-1; if(origin.equals(stri) ori=i; if(destination.equals(stri) des=i; sql = "select w_name1,w_name2,w_

23、length from tb_way" try vdb.rs = vdb.st.executeQuery(sql); if(vdb.rs!=null) int i=0,j=0; String name1 = new String(); String name2 = new String();while(vdb.rs.next()name1 = vdb.rs.getString("w_name1");name2 = vdb.rs.getString("w_name2");for(int k=0;k<s;k+)if(strk.equals(n

24、ame1) i=k;if(strk.equals(name2) j=k;pathij=Integer.parseInt(vdb.rs.getString("w_length");pathji=pathij;catch(SQLException ex)System.out.print("Query is wrong"+ex.getMessage(); int shortestPaht = ShortestPath.getShortPath(path,ori,des); for (int i = 0; i < shortestPaht.length;

25、i+) System.out.print("节点 "+(ori+1)+" 到节点 " + (i + 1) + " 的最短距离是" + shortestPahti + "t"); System.out.println("路径为:" + ShortestPath.getSPath(i); if (ShortestPath.getKeepPath().equals(ShortestPath.getSPath(i) rq_showroad.setText("节点"+(ori+1)+&

26、quot;到节点"+(des+1)+"的最短距离是" + shortestPahti + "n路径为:"+ShortestPath.getKeepPath(); System.out.println(ShortestPath.getKeepPath(); else if (e.getActionCommand().equals("返回")this.setVisible(false);ShortestPath.javapackage v_Frame;import java.util.LinkedList; import jav

27、a.util.List; /* * 单源最短路径问题 * * author Sailor * */ class ShortestPath private static String showPath = "","","","","","","","","","","","","","" private static S

28、tring keeppath = "" / 返回图的最短路径 public static int getShortPath(int path,int origin,int destination) LinkedList<Integer> savePath = new LinkedList<Integer>();/ 用于保存已添加进来的节点 int mark = 1; int shortestPath = new intpath.length; for (int i = 0; i < shortestPath.length; i+) shorte

29、stPathi = -1; savePath.add(getsPath(origin); /savePath.add(new Integer(0); /确定源点 if (savePath.size() = 1) int num = savePath.getLast().intValue(); int minIndex = 0; for (int j = 0; j < shortestPath.length; j+) shortestPathj = pathnumj; if (shortestPathj >= 0) showPathj = (origin+1) + "-&g

30、t;" + (j + 1); if(destination=j) keeppath = showPathj; else showPathj = "无通路" if(destination=j) keeppath = showPathj; minIndex = getAddIndex(savePath, shortestPath); savePath.add(minIndex); if (savePath.size() > 1) while (mark < shortestPath.length+1) / savePath.size()<lenth+

31、1 当有不可到达的点是将要出现死循环 int num = savePath.getLast().intValue(); int minIndex = 0; for (int j = 0; j < path.length; j+) if (pathnumj >= 0) if (shortestPathj < 0) shortestPathj = pathnumj + shortestPathnum; showPathj = showPathnum + "->" + (j + 1); if(destination=j) keeppath = showPa

32、thj; else if (shortestPathnum + pathnumj < shortestPathj) shortestPathj = shortestPathnum + pathnumj; showPathj = showPathnum + "->" + (j + 1); if(destination=j) keeppath = showPathj; minIndex = getAddIndex(savePath, shortestPath); if (minIndex > 0) savePath.add(minIndex); mark+;

33、return shortestPath; / 获得加入到保存路径的节点 public static int getAddIndex(List list, int num) int index = 0; for (int i = 0; i < num.length; i+) if (!list.contains(new Integer(i) if (numi > 0 && index = 0) index = i; if (numi > 0 && index > 0) if (numi < numindex) index = i; r

34、eturn index; public static String getSPath(int i) return showPathi; public static String getKeepPath() return keeppath; public static Integer getsPath(int i) return new Integer(i); 4. 运行结果与运行情况分析1) 主窗口对于主窗口显示的格局符合要求,如下:2) 拓补图显示了校园的拓补图和景点的代号和名称。如下:3) 景点查询输入景点的代号或名称,显示景点的图片和简介。如下:4) 路经查询输入起点和终点,显示起点和终

35、点的景点图片,还有起点到终点的最短距离和路径。如下:5. 自我评价与总结通过本次软件综合课程设计,我顺便把原有的基础温故了下,并且向新的只是扩展了下。学到的东西很多,并且很有用。本次设计用到了,java、数据结构、软件工程、UML设计、数据库等知识。首先利用java的可视化创建窗口框架,确保界面看起来简洁并且易操作。再创建数据库和表,优化表的表现形式,易于操作,进行相关的查询等。从数据库中提取数据存入临时的数据结构中,进行无向图的最短路径操作。本次课设都是个人完成,觉得受益匪浅。遗憾的是想在其基础上扩展下相关的功能,如:利用TCP/IP协议实现服务器端和客户端的链接,进行多线程的操作,查询等可以同步进行,管理员可以对数据库进行添加景点、删除景点和修改景点信息等操作。但由于时间的关系,没有对这些任务进行扩展。本科生课程设计成绩评定表班级:计算机0804班 姓名:王成鹏 学号:0120810340402序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:200 年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1