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

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

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

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 stub
        req.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);
            }
}}}
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;
    }}

队友:张子轩

d

原文地址:https://www.cnblogs.com/jinseliunian/p/10652354.html

时间: 2024-11-09 13:31:26

地铁售票设计思想及部分代码的相关文章

课程作业01的设计思想。源程序代码和结果截图

好,—>这个图是代码结果截图. 第一次课堂作业的 思想 . 从 图书馆的书中获得程序思想 和 英语单词拼法 , 再做一点错误 , 以确保和一桌的同学不完全一样以致老师 看多了一样的代码作业答案后 恼羞成怒 又刚好抓到我 . 然后 给老师说的是: ......还是一样说. 首先,弄一个有 参数个数 长度的循环 ,循环累加给一个变量,而这个变量由我定义.而且这个循环累加被强制类型转换为int类类型.输出我定义的变量.就是这么简单.好吧就是这么难. 首先,第一句,怎么弄有参数长度的循环?怎么弄?不会.

模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数 字,求和之后输出结果,写出其的设计思想、程序流程图、源程序代码。

一 设计思想 首先现在file中建立一个类,并把任务名和类名写上(注意类名的大写):第二步则是参数的输入,并且定义求和变量:第三步则是对参数数据类型的要求,要把字符类型转化为整数类型并输出(这也是本道题的重点所在),当然这步要放在输入参数的for循环中:最后就是求和并输出参数的和. 二 程序流程图 三 源程序代码 public class JavaAppArguments { /** * @param args */ public static void main(String[] args)

《Spring设计思想》AOP实现原理(基于JDK和基于CGLIB)

0.前言 在上篇文章<Spring设计思想>AOP设计基本原理中阐述了Spring AOP 的基本原理以及基本机制,本文将深入源码,详细阐述整个Spring AOP实现的整个过程. 读完本文,你将了解到: 1.Spring内部创建代理对象的过程 2.Spring AOP的核心---ProxyFactoryBean 3.基于JDK面向接口的动态代理JdkDynamicAopProxy生成代理对象 4.基于Cglib子类继承方式的动态代理CglibAopProxy生成代理对象 5.各种Advice

转:从《The C Programming Language》中学到的那些编程风格和设计思想

这儿有一篇写的很好的读后感:http://www.cnblogs.com/xkfz007/articles/2566424.html 读书不是目的,关键在于思考. 很早就在水木上看到有人推荐<The C Programming Language>这本书,一直都没看,开学一个月就专心拜读了一下,并认真做了课后习题.读来收获不少,主要有两点:一是加深了自己对一些基础知识的理 解和感悟:二是从中学到了一些不错的编程风格和设计思想,这些东西虽看起来不起眼但细细嚼来还是很值得学习的.下面就从四个方面做一

Linux/Unix设计思想

Mike Gancarz 1.Unix开发基于Multics分时操作系统 2.NIH(Not invented here,非我发明) 3.GPL:GUN公共授权协议,适用于软件的法律协议.开源 4.Unix哲学: 1)小即是美:易理解.维护.低消耗系统资源.易于其他工具结合 2)让每一个程序制作好一件事 3)尽快建立原型(prototyping):"第三个系统"概念 4)舍高效而取可移植性 5)使用纯文本文件来存储数据:二进制严格禁止 6)充分利用软件的杠杆效应:借用代码模块;将一切自

React的设计思想——理解JSX和Component

基于HTML的前端界面开发正变得越来越复杂,其本质问题基本都可以归结于如何将来自于服务器端或者用户输入的动态数据高效的反映到复杂的用户界面上.而来自Facebook的React框架正是完全面向此问题的一个解决方案.React带来了很多开创性的思路来构建前端界面,虽然选择React的最重要原因之一是性能,但是相关技术背后的设计思想更值得我们去思考. React项目经理Tom Occhino曾经阐述React诞生的初衷,他提到React最大的价值究竟是什么?是高性能虚拟DOM.服务器端Render.

面向对象的设计思想

博主之间是做 Linux  C++ 软件开发的,深刻地领悟到了面向对象的设计思想.但新的工作岗位是做嵌入式开发的,用的是C语言,突然有一点不太习惯. C语言是一种面向过程的语言,它本身不像C++具备面向对象的功能,但是这不等于说C就不能写出面向对象的软件. 博主看过许多比较出名的开源软件,如:dbus, avahi, cunit,虽然它们都是用C语言来实现的,但它们都融入了面向对象的设计思想,到处都是面对象的影子. dbus 中的 DBusString 对象就类似于 C++中的 std::str

Java设计思想(1)

前言:接下来学习的是java中非常重要的东西,也是非常抽象的东西,有种只可意会不可言传的感觉,不过没那么神秘咯,要相信代码功底好,这些都不在话下塞.不过设计思想需要的是不断的学习,不断的领悟,才能更好的体会设计思想. 一.组件 下面通过一个图片抽象的了解下: 这是一种"组件"封装体设计思想,图中的组件(1~k)很显然是组件,还有模块(1~m),子系统(1~n)也是可以看成是组件,而且系统也可能是组件,如果一个很大的软件,那么这部分系统只是项目的一角. 二.Java程序设计的基本原则1

分布式存储系统的cassandra设计思想

以上有些是实践总结.有不对之处,有些则加了自己的理解.还请指出,多谢. 分布式存储系统的一些理解和实践 做cassandra开发和维护,经常是纠于代码细节,缺乏从分布式存储系统设计的角度去理解cassandra设计思想.最近研究和测试ceph也对比其与cassandra和hbase功能和特性差异,总结了下对分布式存储系统的一些理解,以及这三种系统在实现上的一些取舍.注:ceph实现了对象存储(类似amazons3块儿存储.分布式文件系统的统一存储.本文比拟只针对其块儿存储局部.分布式存储系统一般