zoukankan      html  css  js  c++  java
  • 地铁合作的第一周

    一、题目要求

    1.数据库设计:将石家庄地铁线路图的各个线路,各个站点,换乘信息等用数据库的形式保存起来,应该保存的信息有 {线路号,线路的各个站名,车站的换乘信息}。

    2.站点查询:用户可以输入任一一条线路或输入出发地和目的地信息,可以查询到相关内容。

    二、团队成员

    盖楠 刘雨馨

     

    三、编程过程

    这周我们主要是在思考怎么建立石家庄地铁网站的后台,如何去计算最短路线,本来我们思考了一个方法:

     两个站之间路线的查询:
     1. 输入两个站名,分别为起始站(startStation)和终点站(endStation)
     2. 遍历出起始站和终点站所属的线路(若属换乘站、可能存在两条)(startLine[2]和endLine[2],若没有第二条则为0)
     3. StatisticLine(),保存为line
     4. MultipleTransfer(),若传出非空,则覆盖line
    输出line

    MultipleTransfer(String startStation,String endStation,int currentCount)输入:起点、终点、计数剩余(startStation,endStation,currentCount)
    输出:line[100]
    1. 遍历起始站所属表中,距离起始点站距离小于currentCount的换乘站点(String tStationName[15])
    2. 开始循环:
    3. 变量currentCount记录 count-起始站点与当前换乘站点的距离,保存线路至currentLine[100]
    4. 更新起始点为第一个换乘站点,StatisticLine(startStation,endStation),比较currentCount和返回数组的长度
    5. 若currentCount>length,将返回的数组增加到currentLine中,并将其复制给line[100],并进行下一个循环。若没有,直接进行下一个循环

    StatisticLine(String startStation,String endStation)输入:起点、终点
    输出:line[100]
    1. 判断起始点和终点是否在同一条线路中,若不在,则遍历换乘表,查询出同时包含起始站线和终点站线的换乘点(String transferStationName[5])(可能存在多个)
    2. 通过顺序号,计算换乘站点距离始末站点的距离,并保存这条线路(String line[100]),用一个全局变量count记录这条线路途经的站数

    但是后来发现我们思路有些困顿,关键对于递归我们也不是很熟练,然后目前为止我们只写出了这些代码,还写了一点网站,

    但是后来又发现地图有问题,我们的数据库又建立失败了一次,这是目前的代码

    package com.dao;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import com.bean.StationBean;
    import com.db.DB;
    
    
    public class Dao 
    {
        private int count;
        
        public String[] StatisticLine(String startStationName,String endStationName) 
        {
            StationBean[] startStation = Query(startStationName);
            StationBean[] endStation = Query(endStationName);
            if(startStation[0].getLine() == endStation[0].getLine()) {
                
            }
        }
        
        //query the message of stationName
        public StationBean[] Query(String stationName) 
        {
            String[] tablename = new String[] {"one","two","three","four","five","six"};
            DB db=new DB();
            Connection con = db.getCon();
            StationBean[] stationBean = null;
            
            //there are six tables in total to used remenber station message
            for(int j=0,i=0;i<6;i++)
            {
                try
                {
                    Statement stm = con.createStatement();
                    ResultSet rs = stm.executeQuery("select * from "+tablename[i]+" where 站名='" + stationName + "'");
                    if(rs.next())
                    {
                        System.out.println("select the stationBean from mysql");
                        stationBean[j++] = new StationBean(rs.getString("站名"),i,rs.getInt("是否换乘站"),rs.getInt("换乘线"),rs.getInt("顺序号"));
                        System.out.println("name of the bean is "+rs.getString("name"));
                    }
                    db.close(rs,stm, con);
                }catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
            System.out.println("query true");
            return stationBean;
        }
        
        public String[] QueryRangeOfSameLine(String startStationName,String endStationName,int line)
        {
            String[] way = null;
            DB db=new DB();
            Connection con = db.getCon();
            String tablename = null;
            
            int startNum = 0;
            int endNum = 0;
            
            switch(line)
            {
                case 1:tablename = "one";break;
                case 2:tablename = "two";break;
                case 3:tablename = "three";break;
                case 4:tablename = "four";break;
                case 5:tablename = "five";break;
                case 6:tablename = "six";break;
            }
            try
            {
                Statement stm = con.createStatement();
                ResultSet rs1 = stm.executeQuery("select 顺序号 from "+tablename+" where 站名='" + startStationName + "'");
                if(rs1.next())
                {
                    startNum = rs1.getInt("顺序号");
                    System.out.println("number of the start is "+rs1.getString("站名"));
                }
                db.close(rs1,stm, con);
                ResultSet rs2 = stm.executeQuery("select 顺序号 from "+tablename+" where 站名='" + endStationName + "'");
                if(rs2.next())
                {
                    endNum = rs2.getInt("顺序号");
                    System.out.println("number of the end is "+rs2.getString("站名"));
                }
                db.close(rs2,stm, con);
            }catch(Exception e)
            {
                e.printStackTrace();
            }
            count = endNum - startNum + 1 ;
            
            
        }
    }

    这是我们的数据库思路

    数据库:
    六个表,代表六条线路
    一个表,记录换乘站点
    每个线路表中记录了站名、是否换乘站、换乘线路、顺序号
    换乘表中记录了站名、换乘线1、换乘线2
    这是我们针对数据库做的图片
     

    这就是我们这周的成果

  • 相关阅读:
    在Swift中定义属于自己的运算符
    计算型属性 vs 懒加载
    swift- mutating
    什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
    微信授权登录-微信公众号和PC端网站
    PHP实现购物车的思路和源码分析
    PHP实现图片的等比缩放和Logo水印功能示例
    PHP实现IP访问限制及提交次数的方法详解
    Laravel 队列发送邮件
    laravel 定时任务通过队列发送邮件
  • 原文地址:https://www.cnblogs.com/gothic-death/p/10688916.html
Copyright © 2011-2022 走看看