石家庄地铁查询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.可定制(数量/打印 ...
随机推荐
- 数据库系统概论(2)——Chap. 2 关系数据库基础
数据库系统概论(2)--Chap.2 关系数据库基础 一.关系数据结构及形式化定义 1.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...
- pylint安装失败的解决方法
原文链接http://www.cnblogs.com/Loonger/p/7815335.html 使用命令pip3 install pylint安装pylint是出现错误.查了一圈也找不到答案.仔细 ...
- mybatis 存储过程的写法
(注意事项: 在使用游标的时候,不能在游标声明之前,使用crud) 存储过程示例 CREATE DEFINER=`root`@`::` PROCEDURE `earnings_proceduce`() ...
- 在Vue中遇到的各种坑 及性能提升
Vue: (1) 没有再模板里引用data数据,会不会引起update.beforeUpdate生命周期函数的执行? 不会 (2)组件改成异步 (3)v-once (4)如果不用template ...
- c++ cpp和hpp
首先,我们可以将所有东西都放在一个.cpp文件内,编译器会将这个.cpp编译成.obj,即编译单元.一个程序可以由一个编译单元组成,也可以由多个编译单元组成.一个.cpp对应一个.obj,然后将所有的 ...
- OpenCV2:第十章 视频操作
一.简介 OpenCV提供了专门操作视频的接口类VideoCapture 二.构造VideoCapture类 VideoCapture::VideoCapture() VideoCapture::Vi ...
- Springboot 图标更换
1.将自己的logo图片转为.ico格式的,命名必须为[favicon.ico] 2.将该图片直接放在src/main/resourecs目录下 3.重启项目,刷新一下浏览器缓存,就会发现图标更换了
- Ubuntu14.04环境下Qt5.5以上版本无法输入中文的解决教程
1.前言 由于Qt5.4之后对之前的Qt5版本不再二进制兼容,所以网上很多简单的旧的办法已经失效了,所以本教程的办法是重新编译fcitx-qt5,生成最新的libfcitxplatforminputc ...
- 提高CPU使用率
某些特殊时候,需要提升下cpu的利用率,此时……………………需要一个极其简单的脚本来完成! #!/bin/bash while (true);do { for i in $(seq 100000 10 ...
- Tiny4412 U-BOOT移植(转)
http://blog.csdn.net/eshing/article/details/37520291(转) 一.移植前说明: 1. 特别声明:此文档是我的学习文档,里面肯定有错误地方,仅供参考! ...