一、需求   :地铁(石家庄地铁)线路查询

二、       学生:洪鼎淇

    合作对象:宋子健

     时间记录日志:  

日期

开始时间

结束时间

中断时间

净时间

活动

2019/3/30

10:00

14:00

13:00

3.5小时

web界面

地铁地图绘制

2019/4/2

7:00

13:00

12:00

4.5小时

优化界面

构建数据库

实现基本线路查询

2019/4/3

18:00

23:00

20:40

3小时

优化查询功能

              三、程序:

              

行中代码如下:

//数据处理层
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page language="java" import="java.util.*"%>
<%@ page language="java" import="com.hdq.service.ClassService"%>
<%@ page language="java" import="com.hdq.entity.LineInfo"%>
<%@ page language="java" import="com.hdq.entity.Linenum" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据处理层</title> </head>
<body>
<%
request.setCharacterEncoding("utf-8");
//--------------------------------
String start=request.getParameter("start");
String end=request.getParameter("end");
ClassService service=new ClassService();
@SuppressWarnings("unchecked")
List<Linenum> ln=(List<Linenum>)service.list("linenum", new String[]{"linenum"},new Linenum().getClass());
int g_slinenum=-1,g_elinenum=-1;
int g_snum=-1,g_enum=-1;
List<LineInfo> pathInfo=new ArrayList<LineInfo>();
c:for(Linenum it:ln)
{
int g_count=0;
@SuppressWarnings("unchecked")
List<LineInfo> info=(List<LineInfo>)service.list("line"+it.getLinenum(), new String[]{"linenum","name"},new LineInfo().getClass()); for(LineInfo it1:info)
{ if(it1.getName().equals(start))
{ //找到相应的节点
g_slinenum=it.getLinenum();
g_snum=g_count;
}
if(it1.getName().equals(end))
{
g_elinenum=it.getLinenum();
g_enum=g_count;
}
if(g_elinenum!=-1&&g_slinenum!=-1)
break c;
g_count++;
} }
if(g_slinenum!=-1&&g_elinenum!=-1)
{
if(g_elinenum!=g_slinenum)
{
@SuppressWarnings("unchecked")
List<LineInfo> einfo=(List<LineInfo>)service.list("line"+g_elinenum, new String[]{"linenum","name"},new LineInfo().getClass());
@SuppressWarnings("unchecked")
List<LineInfo> sinfo=(List<LineInfo>)service.list("line"+g_slinenum, new String[]{"linenum","name"},new LineInfo().getClass());
int g_center=-1,g_ecenter=-1;
boolean fOutside=false,feOutside=false;
for(int i=0;i<sinfo.size();i++)
{
if(i==g_snum)
fOutside=true;
if(sinfo.get(i).getLinenum()==g_elinenum)
{
g_center=i;
}
if(g_center!=-1&&fOutside)
break;
} if(g_center<g_snum)
{
pathInfo=sinfo.subList(g_center, g_snum+1);
Collections.reverse(pathInfo);
}
else
{ pathInfo=sinfo.subList(g_snum, g_center+1);
}
List<LineInfo> subPathInfo=new ArrayList<LineInfo>();
for(int i=0;i<einfo.size();i++)
{ if(i==g_enum)
feOutside=true;
if(g_center<g_snum)
{
if(einfo.get(i).getName().equals(sinfo.get(g_snum).getName()))
{
g_ecenter=i;
}
}
else
{
if(einfo.get(i).getName().equals(sinfo.get(g_center).getName()))
{
g_ecenter=i;
}
}
if(g_ecenter!=-1&&feOutside)
break;
} if(g_ecenter<g_enum)
{
subPathInfo=einfo.subList(g_ecenter, g_enum+1);
}
else
{
subPathInfo=einfo.subList(g_enum, g_ecenter+1);
Collections.reverse(subPathInfo);
}
LineInfo pointInfo=new LineInfo();
pointInfo.setName("换乘"+g_elinenum+"号线路");
pathInfo.add(pointInfo);
pathInfo.addAll(subPathInfo); }
else
{
@SuppressWarnings("unchecked")
List<LineInfo> sinfo=(List<LineInfo>)service.list("line"+g_slinenum, new String[]{"linenum","name"},new LineInfo().getClass()); if(g_snum>g_enum)
{
pathInfo=sinfo.subList(g_enum,g_snum+1);
Collections.reverse(pathInfo);
}
else pathInfo=sinfo.subList(g_snum,g_enum+1);
}
String info=new String("查询的信息如下:");
for(LineInfo it:pathInfo)
{
info+=it.getName();
if(!it.getName().equals(pathInfo.get(pathInfo.size()-1).getName()))
{
info+="-";
}
}
request.setAttribute("message",info);
}
else
{
request.setAttribute("message","查无信息,请确定你输入的起点和终点的名称正确");
}
request.getRequestDispatcher("subway.jsp").forward(request,response);
%>
</body>
</html><br>//具体代码省略<br> 

上述的函数是该数据的数据处理层,主要是对里面路径进行查询,目前并不是对最短路径进行查询,现在正在利用迷宫算法修改,已经快完善了,并且目前支持换乘两次之后最短路径的查询,目前卡在了循环的中间没有办法出来。

对于该系统实现的分析,首先是实现界面,界面的实现需要对矢量图进行放大缩小移动等操作,里面的代码由html中的代码实现,矢量图是在实验期间根据图片画出来的,因此在放大和缩小的时候清晰度还是挺高的

subway.jsp的代码实现了界面的操作功能(主要是在javascript中),handleSql.jsp主要是实现连接数据库及对数据查询,最短路径查询的功能

运行结果: 

石家庄地铁查询PSP0级的更多相关文章

  1. 结对开发_石家庄地铁查询web系统_psp表

    结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/flw0322/p/10680172.html PSP0: PSP0 Personal Software Proce ...

  2. 两人团队项目-石家庄地铁查询系统(web版)psp表

    结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/Aduorisk/p/10652917.html 队友:冯利伟 PSP: PSP0 Personal Softwar ...

  3. 结对开发_石家庄地铁查询web系统

    结对开发:队友田昕可 大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我们自己习惯而言 ...

  4. 两人团队项目-石家庄地铁查询系统(web版)

    大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我自己习惯而言,我写javaweb项目 ...

  5. 团队项目成员与题目(本地地铁查询app)

    团队名称:Daydreaming团队成员及其特点:张运涛:能快速与团队成员中的每一位进行合作,能全面考虑遇到的问题,善于总结积累.能较好的理解老师与其他人员的想法要求.刘瑞欣:做事果断,善于领导,有想 ...

  6. 结对开发项目--石家庄地铁web版

    一.功能要求 1.数据库设计:将石家庄地铁线路图的各个线路,各个站点,换乘信息等用数据库的形式保存起来,应该保存的信息有 {线路号,线路的各个站名,车站的换乘信息}. 2.站点查询:用户可以输入任一一 ...

  7. ThinkPHP 关联模型中查询某条记录的父级(非查询子级)

    数据表 id      cat_name      cat_pid 76     手机.数码     0 84     手机配件        76 86     蓝牙耳机        84 从属关 ...

  8. 四则运算三+psp0级表格

    一.题目 在四则运算二的基础上,选择一个方向进行拓展,我选择的是增加了答题模块 二.设计思路 1.在上次的基础上,增加了答题模块,每出现一道四则运算题目,便提醒输入结果,如果结果错误,就会提示错误 2 ...

  9. 四则运算2+psp0级表格

    四则运算2 一.题目和要求 题目:写一个能自动生成小学四则运算题目的程序,要求一次输出不少于30道,只能是整数100以内的四则运算(四则运算1升级版) 要求: 1.题目避免重复 2.可定制(数量/打印 ...

随机推荐

  1. qt project settings被禁用解决方案

    转载请注明出处:http://www.cnblogs.com/dachen408/p/7422707.html qt project settings被禁用点击不了: 解决方案:需要点击该项目(或者项 ...

  2. IOS中经典的缓存对比

    http://bpoplauschi.wordpress.com/2014/03/21/ios-image-caching-sdwebimage-vs-fastimage/

  3. Android(java)学习笔记184:多媒体之 MediaPlayer使用

    MediaPlayer类可用于控制音频/视频文件或流的播放.关于如何使用这个类的方法还可以阅读VideoView类的文档. 1.MediaPlayer 状态图       对播放音频/视频文件和流的控 ...

  4. Hadoop伪集群部署

    环境准备 [root@jiagoushi ~]# yum -y install lrzsz 已加载插件:fastestmirror Repository 'saltstack-repo': Error ...

  5. 主成分分析、因子分析、ICA(未完成)

    并且SVD分解也适用于一般的矩阵. 主成分分析可以简单的总结成一句话:数据的压缩和解释.常被用来寻找判断某种事物或现象的综合指标,并且给综合指标所包含的信息以适当的解释.在实际的应用过程中,主成分分析 ...

  6. Linux-02 Linux常用命令

    学习要点 用户切换 网络设置 目录操作 挂载 文件操作 用户切换 登陆时候选择其他用户为root则默认密码和系统默认用户一致 例如设置用户为centos1,密码为centos1,则root用户的密码同 ...

  7. process data

    # version 1.0def connect_mysql(sql, oper_type="select", data_l=None): conn = pymysql.conne ...

  8. 执行BarTender

    1.配置.btw模板 1.1.左侧创建“具名数据源” 1.2.条码属性,选择刚才的数据源 1.3.保存 2.配置.btin服务 2.1.点击 工具/Integration Builder” 2.2.创 ...

  9. Java 垃圾回收机制 (分代垃圾回收ZGC)

    什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制.所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象:而未使用中的对象(未引 ...

  10. Shading-jdbc源码分析-sql词法解析

    前言 前有芋艿大佬已经发过相关分析的文章,自己觉的源码总归要看一下,然后看了就要记录下来(记性很差...),所以就有了这篇文章(以后还要继续更