学号:0120810340402课程设计题目校园导游咨询管理系统软件设计学院计算机科学与技术学院专业计算机科学与技术班级计算机0804班姓名王成鹏指导教师杜薇2012年1月9日课程设计任务书学生姓名:王成鹏专业班级:计算机0804指导教师:杜薇工作单位:计算机学院题目:校园导游咨询管理系统软件设计初始条件:1.预备内容:数据结构(图),软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程2.实践准备:掌握一种计算机高级语言等相关的使用。要求完成的主要任务:基本功能要求:(1)设计你所在学校的校园平面图,所含景点不少于10个。将校内各景点的数据(景点名称、代号、简介等信息)和图片以图结构表示并保存于数据库。(2)为来访客人提供任意景点相关信息的查询。(3)为来访客人提供任意景点的问路查询。(4)测试数据:自定。(5)涉及技术工具:软件工程技术、数据库技术、UML工具、Java语言或C#语言等设计报告内容应说明:1.课程设计目的与功能;2.需求分析,数据结构或模块说明(功能与框图);3.源程序的主要部分;4.运行结果与运行情况分析;5.自我评价与总结时间安排:本学期第17-19周:1.查阅、消化资料,系统调查2天2.系统分析(采用UML工具)3天3.总体设计,实施计划(采用UML工具)3天4.系统开发与实现(用指定语言工具)5天5.撰写报告2天指导教师签名:2011年12月25日系主任(或责任教师)签名:年月日校园导游咨询管理系统1.课程设计目的与功能1)设计目的:为游客设计一个校园导游咨询管理系统软件,帮助游客很好地了解校园景点位置,为观光带来方便。作为导游就是指示景点之间的距离和方向,让游客很清楚所处的位置,并且能够很快地找到方向与目的地。软件是为了简单、易用而设计的。2)基本功能要求:1.设计你所在学校的校园平面图,所含景点不少于10个。将校内各景点的数据(景点名称、代号、简介等信息)和图片以图结构表示并保存于数据库。2.为来访客人提供任意景点相关信息的查询。3.为来访客人提供任意景点的问路查询。4.测试数据:自定。5.涉及技术工具:软件工程技术、数据库技术、UML工具、Java语言或C#语言等3)初始条件:1.预备内容:数据结构(图),软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程2.实践准备:掌握一种计算机高级语言等相关的使用。2.需求分析,数据结构或模块说明(功能与框图)1)确定问题设计一个学校的校园平面图,所含景点不少于10个。将校内各景点的数据(景点名称、代号、简介等信息)和图片以图结构表示并保存于数据库中。为来访客人提供任意景点相关信息的查询。为来访客人提供任意景点的问路查询。一个学校中的景点不少于10个,每个景点都有一些相关的信息,还要有图片来形象地表示景点。给出一个平面图,表示各个景点的位置和景点之间的距离。并且把景点以及跟景点相关的信息保存于数据库中。利用这个软件,游客可以查看到校园的平面图以及全部的景点。从平面图中可以看出景点的位置、景点的名称和景点之间的距离、方向等信息。还附于全部景点的名称和代码。利用这个软件,游客可以查找每个景点的相关信息,如:填入景点的代码或名称,显示景点的图片和信息等。利用这个软件,游客可以查找景点和景点间的最短距离和路径。如:输入起点(景点的代号或名称)和终点(景点的代号或名称),显示两景点的图片和景点间的最短距离和路径。2)需求分析对于需求分析:从导游(管理员)的角度出发,主要可以包括几个子功能:校园平面图的显示及全部景点、景点查询、路径查询、添加景点、删除景点、修改景点信息等。从来访客人的角度出发,主要可以包括的子功能有:校园平面图的显示及全部景点、景点查询、路径查询等。以下为子功能的用例图,并对它们进行详细分析:校园平面图的显示级全部景点:对导游和来访客人都可见,如:校园平面图、全部景点的代号和名称。景点查询:导游和来访客人都可以输入景点代号或名称进行查询景点的相关信息(图片、简介等)。显示拓补图景点查询导游或来访客人导游或来访客人路径查询:导游和来访客人输入起点(景点代号或名称)和终点(景点代号或名称),查询最短距离和路径。添加景点:只有管理员可以操作,为校园添加新的景点信息到数据库中。删除景点:只有管理员可以操作,从数据库中删除旧的景点信息。修改景点信息:只有管理员可以操作,在数据库中修改原有的景点信息。3)数据结构本实验中用到的数据结构:图ADTGraph{数据对象V:景点顶点集路经查询添加景点删除景点修改景点信息导游或来访客人管理员管理员管理员数据关系R:R={VR}VR={v,w|v,w∈V且P(v,w),v,w表示从v到w的弧,谓词P(v,w)定义了弧v,w的意义或信息}基本操作P:CreateGraph(&G,V,VR);初始条件:V是图的顶点集,VR是图中弧的集合。操作结果:按V和VR的定义构造图G。DestroyGraph(&G);初始条件:图G存在。操作结果:销毁图G。ShortestPath(&G,v1,v2);初始条件:图G存在,给定起点v1和终点v2。操作结果:返回起点v1和终点v2的最短距离和路径。}4)框图设计导游用户的框图设计:主界面拓补图景点查询路经查询添加景点删除景点修改景点信息退出修改查询返回删除查询返回添加返回返回返回来访客人的框架设计:(添加景点、删除景点和修改景点信息这三项禁用)5)模块说明运行环境说明:PC,javasdk,SQLServer2005,eclipse分块说明(部分):publicclassViewDB{定义驱动;定义数据库;定义用户名、密码;加载驱动;链接数据库;释放资源、关闭链接;}publicclassSerFrame{创建控件;对控件添加监听设置;控件放入容器;窗口加载容器;监听函数实现;}publicclassViewQuery{创建控件;主界面拓补图景点查询路经查询退出查询返回查询返回对控件添加监听设置;控件放入容器;窗口加载容器;监听函数实现;调用classViewDB,实现链接数据库,进行数据库操作。}数据库模块说明:3.源程序的主要部分ViewDB.javapackagev_sql;importjava.sql.*;publicclassViewDB{//定义驱动、数据库名、用户名、密码publicstaticfinalStringdriver=com.microsoft.sqlserver.jdbc.SQLServerDriver;publicstaticfinalStringurl=jdbc:sqlserver://localhost:1433;Databasename=view;publicstaticfinalStringuser=sa;publicstaticfinalStringpassword=12345;publicstaticConnectioncon=null;publicstaticResultSetrs=null;publicstaticStatementst=null;publicvoidinitDB(){try{Class.forName(driver);}catch(java.lang.ClassNotFoundExceptione){System.out.println(Can'tloadDriver);}try{con=DriverManager.getConnection(url,user,password);st=con.createStatement();}catch(SQLExceptionex){System.out.print(Queryiswrong+ex.getMessage());}}publicstaticvoidmain(String[]args){ViewDBvdb=newViewDB();vdb.initDB();Stringsql=selectv_namefromtb_view;try{rs=st.executeQuery(sql);if(rs!=null){ResultSetMetaDatarsmd=rs.getMetaData();intcountCols=rsmd.getColumnCount();for(inti=1;i=countCols;i++){if(i1)System.out.print(;);System.out.print(rsmd.getColumnLabel(i));}System.out.print();while(rs.next()){System.out.print(rs.getString(v_name));}}}catch(SQLExceptionex){System.out.print(Queryiswrong+ex.getMessage());}finally{try{if(rs!=null)rs.close();if(st!=null)st.close();if(con!=null)con.close();}catch(SQLExceptionerror){error.printStackTrace();}}}}RoadQuery.javapackagev_Frame;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.net.URL;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.sql.*;importv_sql.ViewDB;publicclassRoadQueryextendsJFrameimplementsActionListener{………………加载容器与监听publicvoidactionPerformed(ActionEvente){if(e.getActionCommand().equals(查询)){vdb=newViewDB();vdb.initDB();Stringsql_pic1=selectv_name,v_picturefromtb_viewwherev_id='+rq_text1.getText()+'orv_name='+rq_text1.getText()+';Stringsql_pic2=selectv_name,v_picturefromtb_viewwherev_id='+rq_text2.getText()+'orv_name='+rq_text2.getText()+';Stringorigin=newString();Stringdestination=newString();intori=0;intdes=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(SQLExceptionex){System.out.print(Queryiswrong+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(SQLExceptionex){System.out.print(Queryiswrong+ex.getMessage());}imgUrl=RoadQuery.class.getResource(sql_pic1);//获取图片资源的路径