石家庄地铁查询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.可定制(数量/打印 ...
随机推荐
- innerHTML的性能问题
看到一遍文章When innerHTML isn’t Fast Enough,反应了innerHTML在操作量大了以后的性能下降的问题. 并且给出了一个replaceHTML的函数 function ...
- Django 路由 —— Djangon如何处理一个请求
Django URL路由概述 一个干净优雅的URL方案是高质量Web应用程序中的一个重要细则Django可以让你设计URL,无论你想要什么,没有框剪限制要为应用程序设计URL,您可以非正式地创建一个名 ...
- Bug的定义和分类
什么是BUG 使用人工或自动手段,来运行或测试某个系统的过程.其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别 BUG分类 完全没有实现的功能 基本实现了用户需要的功能,但是运行时 ...
- Ubuntu18.04 NVIDIA显卡驱动 安装大全
离线安装NVIDIA显卡驱动 费了一天的劲,走了好多的坑,最主要的原因是gcc版本的问题,一定要用最新版本的gcc!!! 1)官网下载显卡驱动 2)apt 下载gcc包及其依赖包,可用apt-cach ...
- 使用 Pytorch 实现 skip-gram 的 word2vec
转载请注明 AIQ - 最专业的机器学习大数据社区 http://www.6aiq.com AIQ 机器学习大数据 知乎专栏 点击关注 链接地址: https://github.com/lonePa ...
- 区间DP入门
所为区间DP,主要是把一个大区间拆分成几个小区间,先求小区间的最优值,然后合并起来求大区间的最优值. 区间DP最关键的就是满足最优子结构以及无后效性!! 例如像是石子合并和括号匹配这两类比较经典的模型 ...
- cf上分的失落->高兴->更失落
cf昨日做出一个题居然div2打了1800多名直接上分了...我原以为垂直落地但是....我现在1399差一分就能蓝名了啊啊啊啊,以后不一定会有这个水平的啊,给个蓝名体验卡不行吗,多加一分会死啊... ...
- python中的参数、全局变量及局部变量
1.位置参数.关键字参数.默认参数的使用 位置参数.关键字参数 def test(x,y,z): print(x) print(y) print(z) test(1,2,3) #位置参数,必须一一对应 ...
- python虚拟环境的搭建及作用
Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpreter,而不用与其他Python程序共享统一个library和interpreter.虚拟环境的好处是 ...
- Jvm:性能调优监控工具
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 .... ...