收藏 分销(赏)

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

上传人:二*** 文档编号:4521413 上传时间:2024-09-26 格式:DOCX 页数:27 大小:519.57KB
下载 相关 举报
校园导游咨询管理系统软件设计报告书样本.docx_第1页
第1页 / 共27页
本文档共27页,全文阅读请下载到手机保存,查看更方便
资源描述
学 号: 2 课 程 设 计 题 目 校园导游征询管理系统软件设计 学 院 计算机科学与技术学院 专 业 计算机科学与技术 班 级 计算机0804班 姓 名 王成鹏 指引教师 杜 薇 年 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天 指引教师签名: 12月25日 系主任(或责任教师)签名: 年 月 日 校园导游征询管理系统 1. 课程设计目与功能 1)设计目: 为游客设计一种校园导游征询管理系统软件,协助游客较好地理解校园景点位置,为观光带来以便。作为导游就是批示景点之间距离和方向,让游客很清晰所处位置,并且可以不久地找到方向与目地。软件是为了简朴、易用而设计。 2)基本功能规定: 1.设计你所在学校校园平面图,所含景点不少于10个。将校内各景点数据(景点名称、代号、简介等信息)和图片以图构造表达并保存于数据库。 2.为来访客人提供任意景点有关信息查询。 3.为来访客人提供任意景点问路查询。 4.测试数据:自定。 5.涉及技术工具:软件工程技术、数据库技术、UML工具、Java语言或C#语言等 3)初始条件: 1.预备内容:数据构造(图),软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程 2.实践准备:掌握一种计算机高档语言等有关使用。 2. 需求分析,数据构造或模块阐明(功能与框图) 1) 拟定问题 设计一种学校校园平面图,所含景点不少于10个。将校内各景点数据(景点名称、代号、简介等信息)和图片以图构造表达并保存于数据库中。为来访客人提供任意景点有关信息查询。为来访客人提供任意景点问路查询。 一种学校中景点不少于10个,每个景点均有某些有关信息,还要有图片来形象地表达景点。给出一种平面图,表达各个景点位置和景点之间距离。并且把景点以及跟景点有关信息保存于数据库中。 运用这个软件,游客可以查看到校园平面图以及所有景点。从平面图中可以看出景点位置、景点名称和景点之间距离、方向等信息。还附于所有景点名称和代码。 运用这个软件,游客可以查找每个景点有关信息,如:填入景点代码或名称,显示景点图片和信息等。 运用这个软件,游客可以查找景点和景点间最短距离和途径。如:输入起点(景点代号或名称)和终点(景点代号或名称),显示两景点图片和景点间最短距离和途径。 2) 需求分析 对于需求分析: 从导游(管理员)角度出发,重要可以涉及几种子功能:校园平面图显示及所有景点、景点查询、途径查询、添加景点、删除景点、修改景点信息等。 从来访客人角度出发,重要可以涉及子功能有:校园平面图显示及所有景点、景点查询、途径查询等。 如下为子功能用例图,并对它们进行详细分析: l 校园平面图显示级所有景点:对导游和来访客人都可见,如:校园平面图、所有景点代号和名称。 显示拓补图 导游或来访客人 l 景点查询:导游和来访客人都可以输入景点代号或名称进行查询景点有关信息(图片、简介等)。 景点查询 导游或来访客人 l 途径查询:导游和来访客人输入起点(景点代号或名称)和终点(景点代号或名称),查询最短距离和途径。 路经查询 导游或来访客人 l 添加景点:只有管理员可以操作,为校园添加新景点信息到数据库中。 添加景点 管理员 l 删除景点:只有管理员可以操作,从数据库中删除旧景点信息。 删除景点 管理员 l 修改景点信息:只有管理员可以操作,在数据库中修改原有景点信息。 修改景点信息 管理员 3) 数据构造 本实验中用到数据构造:图 ADT Graph { 数据对象 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,java sdk,SQL Server ,eclipse 分块阐明(某些): public class ViewDB{ 定义驱动; 定义数据库; 定义顾客名、密码; 加载驱动; 链接数据库; 释放资源、关闭链接; } public class SerFrame{ 创立控件; 对控件添加监听设立; 控件放入容器; 窗口加载容器; 监听函数实现; } public class ViewQuery{ 创立控件; 对控件添加监听设立; 控件放入容器; 窗口加载容器; 监听函数实现; 调用class ViewDB ,实现链接数据库,进行数据库操作。 } 数据库模块阐明: 3. 源程序重要某些 ViewDB.java package v_sql; import java.sql.*; public class 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="12345"; public static Connection con = null; public static ResultSet rs = null; public static Statement st = null; public void initDB(){ try{ Class.forName(driver); }catch(java.lang.ClassNotFoundException e){ System.out.println("Can't load Driver"); } try{ con=DriverManager.getConnection(url,user,password); 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"; try{ rs=st.executeQuery(sql); if(rs!=null) { ResultSetMetaData rsmd = 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.print("Query is wrong"+ex.getMessage()); } finally{ try{ if(rs!=null) rs.close(); if(st!=null) st.close(); if(con!=null) con.close(); }catch(SQLException error){ error.printStackTrace(); } } } } RoadQuery.java package v_Frame; import java.awt.*; import java.awt.event.*; import javax.swing.*; import .URL; import java.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 = "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_text2.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(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("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.class.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 str[] = new String[14];//{"","","","","","","","","","","","","",""}; int s = 0; try{ vdb.rs = vdb.st.executeQuery(sql); if(vdb.rs!=null) { while(vdb.rs.next()) { sql=vdb.rs.getString("v_name"); str[s++]=sql; } } }catch(SQLException ex){ System.out.print("Query is wrong"+ex.getMessage()); } int path[][]= new int [s][s]; for(int i=0;i<s;i++) { for(int j=0;j<s;j++) { path[i][j]=-1; } if(origin.equals(str[i])) ori=i; if(destination.equals(str[i])) des=i; } sql = "select w_name1,w_name2,w_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(str[k].equals(name1)) i=k; if(str[k].equals(name2)) j=k; } path[i][j]=Integer.parseInt(vdb.rs.getString("w_length")); path[j][i]=path[i][j]; } } }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;i++) { System.out.print("节点 "+(ori+1)+" 到节点 " + (i + 1) + " 最短距离是" + shortestPaht[i] + "\t"); System.out.println("途径为:" + ShortestPath.getSPath(i)); if (ShortestPath.getKeepPath().equals(ShortestPath.getSPath(i))) rq_showroad.setText("节点"+(ori+1)+"到节点"+(des+1)+"最短距离是" + shortestPaht[i] + "\n途径为:"+ShortestPath.getKeepPath()); } System.out.println(ShortestPath.getKeepPath()); } else if (e.getActionCommand().equals("返回")){ this.setVisible(false); } } } ShortestPath.java package v_Frame; import java.util.LinkedList; import java.util.List; /** * 单源最短途径问题 * * @author Sailor * */ class ShortestPath { private static String showPath[] = {"","","","","","","","","","","","","",""}; private static String keeppath = ""; // 返回图最短途径 public static int[] getShortPath(int path[][],int origin,int destination) { LinkedList<Integer> savePath = new LinkedList<Integer>();// 用于保存已添加进来节点 int mark = 1; int shortestPath[] = new int[path.length]; for (int i = 0;i < shortestPath.length;i++) { shortestPath[i] = -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++) { shortestPath[j] = path[num][j]; if (shortestPath[j] >= 0) { showPath[j] = (origin+1) + "-->" + (j + 1); if(destination==j) keeppath = showPath[j]; } else { showPath[j] = "无通路"; if(destination==j) keeppath = showPath[j]; } } minIndex = getAddIndex(savePath,shortestPath); savePath.add(minIndex); } if (savePath.size() > 1) { while (mark < shortestPath.length+1) { // savePath.size()<lenth+1 当有不可到达点是将要浮现死循环 int num = savePath.getLast().intValue(); int minIndex = 0; for (int j = 0;j < path.length;j++) { if (path[num][j] >= 0) { if (shortestPath[j] < 0) { shortestPath[j] = path[num][j] + shortestPath[num]; showPath[j] = showPath[num] + "-->" + (j + 1); if(destination==j) keeppath = showPath[j]; } else { if (shortestPath[num] + path[num][j] < shortestPath[j]) { shortestPath[j] = shortestPath[num] + path[num][j]; showPath[j] = showPath[num] + "-->" + (j + 1); if(destination==j) keeppath = showPath[j]; } } } } minIndex = getAddIndex(savePath,shortestPath); if (minIndex > 0) savePath.add(minIndex); mark++; } } 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 (num[i] > 0 && index == 0) { index = i; } if (num[i] > 0 && index > 0) { if (num[i] < num[index]) index = i; } } } return index; } public static String getSPath(int i){ return showPath[i]; } public static String getKeepPath(){ return keeppath; } public static Integer getsPath(int i){ return new Integer(i); } } 4. 运营成果与运营状况分析 1) 主窗口 对于主窗口显示格局符合规定,如下: 2) 拓补图 显示了校园拓补图和景点代号和名称。如下: 3) 景点查询 输入景点代号或名称,显示景点图片和简介。如下: 4) 路经查询 输入起点和终点,显示起点和终点景点图片,尚有起点到终点最短距离和途径。如下: 5. 自我评价与总结 通过本次软件综合课程设计,我顺便把原有基本温故了下,并且向新只是扩展了下。学到东西诸多,并且很有用。本次设计用到了,java、数据构造、软件工程、UML设计、数据库等知识。一方面运用java可视化创立窗口框架,保证界面看起来简洁并且易操作。再创立数据库和表,优化表体现形式,易于操作,进行有关查询等。从数据库中提取数据存入暂时数据构造中,进行无向图最短途径操作。本次课设都是个人完毕,觉得受益匪浅。 遗憾是想在其基本上扩展下有关功能,如:运用TCP/IP合同实现服务器端和客户端链接,进行多线程操作,查询等可以同步进行,管理员可以对数据库进行添加景点、删除景点和修改景点信息等操作。但由于时间关系,没有对这些任务进行扩展。 本科生课程设计成绩评估表 班级:计算机0804班 姓名:王成鹏 学号:2 序号 评分项目 满分 实得分 1 学习态度认真、遵守纪律 10 2 设计分析合理性 10 3 设计方案对的性、可行性、创造性 20 4 设计成果对的性 40 5 设计报告规范性 10 6 设计验收 10 总得分/级别 评语: 注:最后成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、 及格(60-69分)、60分如下为不及格                       指引教师签名:                   200 年 月 日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服