地铁售票系统设计思想及部分代码

     设计思想:地铁售票系统的关键点在于换乘,所以首先要分为换乘和不换乘两种情况。不换乘比较简单,通过起始站名和终点站名查询他们的num,然后list打包输出到jsp就可以。换乘的话就先要找到两条线路,找到两条线路的交点也就是换乘站,然后分别输出起始站到换乘站,换乘站到终点站两段路线就完成了,这里面还涉及到一个最短路径问题,我的想法是把全部的可能线路都找到,然后比较大小就完成了。目前进度到换乘部分。

     双人项目合作人:郑锦

     部分源代码:

package Dao;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;import connection.DBUtil;public class dao {/*** 通过name得到number(线路号)* @param name* @return*/public static int getNum(String name) {String sql = "select xianluhao from aaa where name ='" + name + "'";Connection conn = DBUtil.getConn();Statement state = null;ResultSet rs = null;int number=0;try {state = conn.createStatement();rs = state.executeQuery(sql);while (rs.next()) {number = rs.getInt("xianluhao");}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.close(rs, state, conn);}return number;}/*** 通过name得到zhanhao(站台号)* @param name* @return*/public static int getZhanhao(String name) {String sql = "select num from aaa where name ='" + name + "'";Connection conn = DBUtil.getConn();Statement state = null;ResultSet rs = null;int zhanhao=0;try {state = conn.createStatement();rs = state.executeQuery(sql);while (rs.next()) {zhanhao = rs.getInt("num");}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.close(rs, state, conn);}return zhanhao;}public static String getLine1(int zhanhao1,int zhanhao2) {String line="";String sql = "select name from aaa where num between '"+zhanhao1+"' and '"+zhanhao2+"'order by num ASC ";//升序Connection conn = DBUtil.getConn();Statement state = null;ResultSet rs = null;	try {state = conn.createStatement();rs = state.executeQuery(sql);if(rs.next())line=rs.getString("name");while (rs.next()) {String name=rs.getString("name");line=line+"->"+name;}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.close(rs, state, conn);}return line;}public static String getLine2(int zhanhao1,int zhanhao2) {String line="";String sql = "select name from aaa where num between '"+zhanhao1+"' and '"+zhanhao2+"'  order by num DESC ";//降序Connection conn = DBUtil.getConn();Statement state = null;ResultSet rs = null;	try {state = conn.createStatement();rs = state.executeQuery(sql);if(rs.next())line=rs.getString("name");while (rs.next()) {String name=rs.getString("name");line=line+"->"+name;}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.close(rs, state, conn);}return line;}}

  

package servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Dao.dao;@WebServlet("/servlet")
public class servlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");String method = req.getParameter("method");if ("chaxun".equals(method)) {chaxun(req, resp);} }private void chaxun(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubreq.setCharacterEncoding("utf-8");String qi=req.getParameter("qi");String zhong=req.getParameter("zhong");int zhanhao1=dao.getZhanhao(qi);int zhanhao2=dao.getZhanhao(zhong);int number1=dao.getNum(qi);int number2=dao.getNum(zhong);if(number1==number2) {if(zhanhao1<zhanhao2){String line=dao.getLine1(zhanhao1, zhanhao2);req.setAttribute("line",line );req.setAttribute("num",number1);req.getRequestDispatcher("list.jsp").forward(req,resp);}if(zhanhao1>zhanhao2){String line=dao.getLine2(zhanhao2, zhanhao1);System.out.print(line);req.setAttribute("num",number1);req.setAttribute("line",line );req.getRequestDispatcher("list.jsp").forward(req,resp);}
}}}

  实验截图

项目总结分析

这个项目因为涉及到一个最短路径的问题,最开始我是想用迪杰斯特拉算法来解决这个问题。但是我尝试了很久没有成功,可能是我的水平还是太有限。所以最后用了最简单的方法来解决这个问题。我了解到有的同学是用迪杰斯特拉算法完成了这个项目,所以还是去请教一下。后期有时间的话还是想改善一下我程序的算法。

 

转载于:https://www.cnblogs.com/xuange1/p/10652328.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)

原文地址&#xff1a;http://my.oschina.net/lichaoqiang/blog/317823 在浏览器请求中&#xff0c;出现跨域访问资源的问题&#xff0c;我们肯定会遇到。如果跨域请求被阻止&#xff0c;有可能导致css、js 、ajax请求、font字体等资源出现无法正常访问的问题。接下来&#xff0…

面向视频的全新AI架构 —— 阿里云智能视觉技术全解

2019独角兽企业重金招聘Python工程师标准>>> 我们都知道&#xff0c;AI技术正在以可见的速度被应用于各行各业&#xff0c;然而绝大部分业务场景想应用AI技术&#xff0c;都需要算法工程师根据自身业务的标注数据&#xff0c;来进行单独训练&#xff0c;才能打磨出合…

【转】利用python的KMeans和PCA包实现聚类算法

转自&#xff1a;https://www.cnblogs.com/yjd_hycf_space/p/7094005.html 题目&#xff1a; 通过给出的驾驶员行为数据&#xff08;trip.csv&#xff09;&#xff0c;对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型&#xff0c;激进类型和超冷静型3类 。 利用Python的s…

c 语言str.size,C/C++ strlen(str)和str.length()和str.size()的区别

strlen(str)和str.length()和str.size()都可以求字符串长度,返回字符串中字符的长度&#xff0c;不包括‘/0’。其中str.length()和str.size()是同义词&#xff0c;返回同样的值。strlen(str)是用于求字符数组的长度&#xff0c;其参数是char*。#include #include using namesp…

想跑次高频策略?快来看看Numpy处理真格量化tick数据的技巧

使用澎博真格量化时&#xff0c;很多用户希望用numpy处理tick数据&#xff0c;包括tick数据的留存和运算。 这里有一些技巧。 因为tick数据量比较大&#xff0c;为了降低系统的运算负担&#xff0c;我们不应该在内存里保存大量tick数据。 比如我们只想保存过去10个tick。 可以在…

日本显示屏巨头JDI不敌业务压力,宣布接受中方注资...

本次10亿美元的融资金额中&#xff0c;其中7.2亿美元据传来自中国丝绸之路基金。 最初&#xff0c;在液晶领域日本企业一直都占据着主要市场&#xff0c;如夏普、NEC、东芝等。后来随着韩国三星、LG的强势进入&#xff0c;日本企业的生存空间开始被抢占&#xff0c;现如今中国…

c语言中 d 1是啥意思,空开D/C是什么意思?终于有人把它说清楚了!

原标题&#xff1a;空开D/C是什么意思&#xff1f;终于有人把它说清楚了&#xff01;空气开关是每个人家里必用的东西&#xff0c;但是你到五金店一看&#xff0c;大大小小的开关插座多了去&#xff0c;让人眼花缭乱。怎么选呢&#xff1f;空开有各种字母型号&#xff0c;这些字…

微信小程序开发 | 官方问答精选

2019独角兽企业重金招聘Python工程师标准>>> SF问答精选《七》 多组件显示与隐藏如何实现、function中的...SF问答精选《六》canvas不显示问题SF问答精选《五》菜单内容左右联动、生命周期函数SF问答精选《四》eslint 配置使用 co function&#xff1b;apache 反向代…

清北学堂培训2019.4.4

第一次培训&#xff0c;心情有点激动&#xff08;尽管没了清明节&#xff09;&#xff0c;还见到了各地的dalao们&#xff0c;十分开森 Day 1&#xff08;李昊dalao&#xff09; 上午篇 上午呢&#xff0c;主要讲了关于高精&#xff0c;快速幂&#xff0c;膜模意义下的运算&…

swft c 语言 数组,如何在swift中实现数组的深拷贝

在Objective-C中如果想将一个数组赋值给另外一个数组&#xff0c;同时想让两个数组之间相互独立(即改变其中的一个数组&#xff0c;不影响另外的一个)&#xff0c;有很多的办法&#xff0c;比如我们可以直接copy,用类方法创建新数组。这样得到的数组和原来的数组就是两个完全独…

android studio按钮槽函数,AndroidStudio按钮Button退出程序

AndroidStudio 3.1.41.创建一个新的项目&#xff0c;项目名称为Button&#xff0c;界面为activity_button.xml2.打开activity_button.xml3.点击HelloWorld标签&#xff0c;按Delete删除4.左侧组件栏选择Common - Button5.将Button组件拖到界面上&#xff0c;大概中间的位置6.右…

cobbler介绍与部署

cobbler介绍 Cobbler是一个Linux系统安装的服务&#xff0c;可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机&#xff0c;同时还可以管理DHCP&#xff0c;DNS等。 Cobbler可以使用命令行方式管理&#xff0c;也提供了基于Web的界面管理工具(cobbler-web)&#…

android手机给iphone越狱,一台ROOT后的安卓手机:可以用来给iOS 13越狱了

iOS 13时代的越狱工具主要包括unc0ver和Checkra1n两款&#xff0c;前者最新的v4.2.1版本已经支持A9到A13设备从除了支持的设备和系统多&#xff0c;unc0ver的一大优势在于可在iOS设备上独立完成越狱操作&#xff0c;Checkra1n则需要借助电脑&#xff0c;包括重启失效后也是如此…

iOS VIPER架构(三)

路由是实现模块间解耦的一个有效工具。如果要进行组件化开发&#xff0c;路由是必不可少的一部分。目前iOS上绝大部分的路由工具都是基于URL匹配的&#xff0c;优缺点都很明显。这篇文章里将会给出一个更加原生和安全的设计&#xff0c;这个设计的特点是&#xff1a; 路由时用p…

android camera滑动,Android怎么实现小米相机底部滑动指示器

Android怎么实现小米相机底部滑动指示器发布时间&#xff1a;2021-04-15 14:39:38来源&#xff1a;亿速云阅读&#xff1a;94作者&#xff1a;小新这篇文章给大家分享的是有关Android怎么实现小米相机底部滑动指示器的内容。小编觉得挺实用的&#xff0c;因此分享给大家做个参考…

Mariadb修改root密码

2019独角兽企业重金招聘Python工程师标准>>> 默认情况下&#xff0c;新安装的 mariadb 的密码为空&#xff0c;在shell终端直接输入 mysql 就能登陆数据库。 如果是刚安装第一次使用&#xff0c;请使用 mysql_secure_installation 命令初始化。 # mysql_secure_inst…

自学html和css,学习HTML和CSS的5大理由

描述人们学习HTML和CSS最常见的原因是开始从事web开发。但并不是只有web开发人员才要学习HTML和CSS的核心技术。作为一个网络用户&#xff0c;你需要你掌握的相关技术很多&#xff0c;但下面有5个你无法拒绝学习HTML和CSS的理由。1、轻松制作卡通动画Web上的动画很多年来都是使…

html 左侧 树形菜单,vue左侧菜单,树形图递归实现代码

学习vue有一段时间了&#xff0c;最近使用vue做了一套后台管理系统&#xff0c;左侧菜单需求是这样的&#xff0c;可以多层&#xff0c;数据由后台传递。也因为自己对官方文档的不熟悉使得自己踩了不少坑&#xff0c;今天写出来和大家一起分享。效果图如下所示&#xff1a;先说…

关于Istio 1.1,你所不知道的细节

本文整理自Istio社区成员Star在 Cloud Native Days China 2019 北京站的现场分享 第1则 主角 Istio Istio作为service mesh领域的明星项目&#xff0c;从2016年发布到现在热度不断攀升。 Istio & Envoy Github Star Growth 官网中Istio1.1的架构图除了数据面的Envoy和控制面…

2021吉林高考26日几点可以查询成绩,2021吉林高考成绩查分时间及入口

2021吉林高考成绩查分时间及入口2021吉林高考成绩查分时间及入口&#xff0c;有一些高考生真的很积极&#xff0c;考完试当天就将答案给对好了&#xff0c;考试嘛&#xff0c;站在旁观者的角度来看总是有人欢喜有人忧。估出来分数不咋地的&#xff0c;整个六月就毁了。2021吉林…