北京地铁查询系统
先说一下半成品。按照老师的要求就是说实现了线路查询(即输入线路号返回该线路上的所有站点)和站点查询(即输入一个站点返回该站点的线路号),还有一个换乘查询(不会),经过我的一番查找和思考,只能实现一条线路上的起始点查询,考虑到地铁是来回往返的,所以就是说加了个方向(正向反向)。这个一条线路的我是这么弄的,就是返回起点和终点的id号,然后用sql语句between..and..存到数组里,因为它始终是从小到达这样存的,所以又设置了一个方向,正向的话就是正常输出,反向的话就是从后往前输出。
这是方法:
public void showhc1(ArrayList<ditie> ditie, int n1,int n2) throws ClassNotFoundException, SQLException {//线路相同时的数组 String sql ="select * from llines where id between ? and ? order by id"; Connection connection = Util.getConnection(); try { PreparedStatement ps = connection.prepareStatement(sql); ps.setInt(1, n1); ps.setInt(2, n2); ResultSet rs = ps.executeQuery(); while(rs.next()){ ditie A = new ditie(); A.setId(rs.getInt(1)); A.setStation(rs.getString(2)); A.setLine(rs.getString(3)); ditie.add(A); } } catch (SQLException e) { e.printStackTrace(); } }
这个是servlet:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解决中文乱码问题 req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); Selectline A=new Selectline(); String s1=req.getParameter("sname1"); String s2=req.getParameter("sname2"); int flag=1;//1代表方向为正向 ArrayList<ditie> ditie = new ArrayList<>(); ArrayList<jhPoint> B = new ArrayList<>();//该线路上交换点的数组 try{ String a1=A.shows(s1);//a线路 String b1=A.shows(s2);//b线路 if(!A.isExist(s1)&&!A.isExist(s2)){//若两个站都不是交换点 int a=A.showid(s1);//a站号 int b=A.showid(s2);//b站号 if(a1.equals(b1)){//若两站在同一线路上 if(a<=b){//a到b为正向 A.showhc1(ditie,a,b); }else{//a到b为反向 A.showhc1(ditie,b,a); flag=0; } }else{//若两站不在同一线路 A.excPoint(B,a1); for(int i=0;i<B.size();i++){ } } } }catch(ClassNotFoundException | SQLException e) { e.printStackTrace(); } HttpSession session1=req.getSession(); session1.setAttribute("flag", flag);//保存方向 req.setAttribute("ditie",ditie);//保存地铁数组信息 req.getRequestDispatcher("huancheng.jsp").forward(req, resp); }
本来两条线路的我还专门给交换点建了一个表,然后想了一个很笨的办法,也实现不了,最后是参考大佬的方法,使用广度优先搜索的方法,不管在不在一个线路上都可以搞出来。虽然算法没看明白,但是了解到了java封装的一些集合框架,全部都封装在util的这个包里,像Hashmap,ArrayList这些 ,只是了解了,但是不会用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?