石家庄地铁查询PSP0级
一、需求 :地铁(石家庄地铁)线路查询
二、 学生:洪鼎淇
合作对象:宋子健
时间记录日志:
|
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
|
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级的更多相关文章
- 结对开发_石家庄地铁查询web系统_psp表
结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/flw0322/p/10680172.html PSP0: PSP0 Personal Software Proce ...
- 两人团队项目-石家庄地铁查询系统(web版)psp表
结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/Aduorisk/p/10652917.html 队友:冯利伟 PSP: PSP0 Personal Softwar ...
- 结对开发_石家庄地铁查询web系统
结对开发:队友田昕可 大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我们自己习惯而言 ...
- 两人团队项目-石家庄地铁查询系统(web版)
大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我自己习惯而言,我写javaweb项目 ...
- 团队项目成员与题目(本地地铁查询app)
团队名称:Daydreaming团队成员及其特点:张运涛:能快速与团队成员中的每一位进行合作,能全面考虑遇到的问题,善于总结积累.能较好的理解老师与其他人员的想法要求.刘瑞欣:做事果断,善于领导,有想 ...
- 结对开发项目--石家庄地铁web版
一.功能要求 1.数据库设计:将石家庄地铁线路图的各个线路,各个站点,换乘信息等用数据库的形式保存起来,应该保存的信息有 {线路号,线路的各个站名,车站的换乘信息}. 2.站点查询:用户可以输入任一一 ...
- ThinkPHP 关联模型中查询某条记录的父级(非查询子级)
数据表 id cat_name cat_pid 76 手机.数码 0 84 手机配件 76 86 蓝牙耳机 84 从属关 ...
- 四则运算三+psp0级表格
一.题目 在四则运算二的基础上,选择一个方向进行拓展,我选择的是增加了答题模块 二.设计思路 1.在上次的基础上,增加了答题模块,每出现一道四则运算题目,便提醒输入结果,如果结果错误,就会提示错误 2 ...
- 四则运算2+psp0级表格
四则运算2 一.题目和要求 题目:写一个能自动生成小学四则运算题目的程序,要求一次输出不少于30道,只能是整数100以内的四则运算(四则运算1升级版) 要求: 1.题目避免重复 2.可定制(数量/打印 ...
随机推荐
- qt project settings被禁用解决方案
转载请注明出处:http://www.cnblogs.com/dachen408/p/7422707.html qt project settings被禁用点击不了: 解决方案:需要点击该项目(或者项 ...
- IOS中经典的缓存对比
http://bpoplauschi.wordpress.com/2014/03/21/ios-image-caching-sdwebimage-vs-fastimage/
- Android(java)学习笔记184:多媒体之 MediaPlayer使用
MediaPlayer类可用于控制音频/视频文件或流的播放.关于如何使用这个类的方法还可以阅读VideoView类的文档. 1.MediaPlayer 状态图 对播放音频/视频文件和流的控 ...
- Hadoop伪集群部署
环境准备 [root@jiagoushi ~]# yum -y install lrzsz 已加载插件:fastestmirror Repository 'saltstack-repo': Error ...
- 主成分分析、因子分析、ICA(未完成)
并且SVD分解也适用于一般的矩阵. 主成分分析可以简单的总结成一句话:数据的压缩和解释.常被用来寻找判断某种事物或现象的综合指标,并且给综合指标所包含的信息以适当的解释.在实际的应用过程中,主成分分析 ...
- Linux-02 Linux常用命令
学习要点 用户切换 网络设置 目录操作 挂载 文件操作 用户切换 登陆时候选择其他用户为root则默认密码和系统默认用户一致 例如设置用户为centos1,密码为centos1,则root用户的密码同 ...
- process data
# version 1.0def connect_mysql(sql, oper_type="select", data_l=None): conn = pymysql.conne ...
- 执行BarTender
1.配置.btw模板 1.1.左侧创建“具名数据源” 1.2.条码属性,选择刚才的数据源 1.3.保存 2.配置.btin服务 2.1.点击 工具/Integration Builder” 2.2.创 ...
- Java 垃圾回收机制 (分代垃圾回收ZGC)
什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制.所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象:而未使用中的对象(未引 ...
- Shading-jdbc源码分析-sql词法解析
前言 前有芋艿大佬已经发过相关分析的文章,自己觉的源码总归要看一下,然后看了就要记录下来(记性很差...),所以就有了这篇文章(以后还要继续更