设计思路等诸多问题都在上次的  石家庄地铁站项目进度总结  中给出高中,所以这次的总结报告主要写改进过后的代码。

代码如下:

DBYtil类代码如下:packageutil;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;/*** 数据库连接工具*@authorHu**/
public classDBUtil {public static String db_url = "jdbc:mysql://localhost:3306/subway?serverTimezone=UTC";public static String db_user = "root";public static String db_pass = "root";public staticConnection getConn () {Connection conn= null;try{Class.forName("com.mysql.jdbc.Driver");//加载驱动conn = DriverManager.getConnection(db_url, db_user, db_pass);//连接数据库} catch(Exception e) {e.printStackTrace();}returnconn;}/*** 关闭连接*@paramstate*@paramconn*/public static voidclose (Statement state, Connection conn) {if (state != null) {try{state.close();}catch(SQLException e) {e.printStackTrace();}}if (conn != null) {try{conn.close();}catch(SQLException e) {e.printStackTrace();}}}public static voidclose (ResultSet rs, Statement state, Connection conn) {if (rs != null) {try{rs.close();}catch(SQLException e) {e.printStackTrace();}}if (state != null) {try{state.close();}catch(SQLException e) {e.printStackTrace();}}if (conn != null) {try{conn.close();}catch(SQLException e) {e.printStackTrace();}}}}SubwayDao类代码如下:packagedao;//用于从数据库获取数据并以ZhanDian类的形式输出
importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;importentity.ZhanDian;importutil.DBUtil;public classSubwayDao {//通过id和表名获取对应表的对应站点public ZhanDian getCourseByBiaoId(String biao,intid){String sql= "select * from " + biao + " where id ='" + id + "'";Connection conn=DBUtil.getConn();Statement state= null;ResultSet rs= null;ZhanDian zhandian= null;try{state=conn.createStatement();rs=state.executeQuery(sql);while(rs.next()) {String name= rs.getString("name");zhandian= newZhanDian(id,name);}}catch(Exception e) {e.printStackTrace();}finally{DBUtil.close(rs, state, conn);}returnzhandian;}/*//通过id获取对应1的站点public ZhanDian getCourseById_1(int id){String sql = "select * from one where id ='" + id + "'";Connection conn = DBUtil.getConn();Statement state = null;ResultSet rs = null;ZhanDian zhandian = null;try {state = conn.createStatement();rs = state.executeQuery(sql);while (rs.next()) {String name = rs.getString("name");zhandian = new ZhanDian(id,name);}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.close(rs, state, conn);}return zhandian;}//通过id获取对应3的站点public ZhanDian getCourseById_3(int id){String sql = "select * from three where id ='" + id + "'";Connection conn = DBUtil.getConn();Statement state = null;ResultSet rs = null;ZhanDian zhandian = null;try {state = conn.createStatement();rs = state.executeQuery(sql);while (rs.next()) {String name = rs.getString("name");zhandian = new ZhanDian(id,name);}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.close(rs, state, conn);}return zhandian;}*///通过line获取jiedian表中的对应的中转站点public ZhanDian getCourseByLine(intline){String sql= "select * from jiedian where line ='" + line + "'";Connection conn=DBUtil.getConn();Statement state= null;ResultSet rs= null;ZhanDian zhandian= null;try{state=conn.createStatement();rs=state.executeQuery(sql);while(rs.next()) {String name= rs.getString("name");zhandian= newZhanDian(name);}}catch(Exception e) {e.printStackTrace();}finally{DBUtil.close(rs, state, conn);}returnzhandian;}//通过表名、站点名获取对应表中的对应idpublic intgetIdByBNName(String biao,String name) {String sql="select * from " + biao + " where name = '" + name + "'";Connection conn=DBUtil.getConn();Statement state= null;ResultSet rs= null;ZhanDian zhandian= null;try{state=conn.createStatement();rs=state.executeQuery(sql);while(rs.next()) {int id = rs.getInt("id");zhandian= newZhanDian(id);}}catch(Exception e) {e.printStackTrace();}finally{DBUtil.close(rs, state, conn);}returnzhandian.getId();}//通过中转站名字和line获取ZhanDian对象public ZhanDian getZhanDianByName(String name,intline) {String sql="select * from jiedian where name = '" + name + "' and line = '" + line + "' ";Connection conn=DBUtil.getConn();Statement state= null;ResultSet rs= null;ZhanDian zhandian= null;try{state=conn.createStatement();rs=state.executeQuery(sql);while(rs.next()) {String qidian= rs.getString("qidian");String zhongdian= rs.getString("zhongdian");zhandian= newZhanDian(qidian,zhongdian);}}catch(Exception e) {e.printStackTrace();}finally{DBUtil.close(rs, state, conn);}returnzhandian;}
}Javabean类的代码如下:packageentity;public classZhanDian
{private intid;private intline;privateString name;privateString qidian;privateString zhongdian;public intgetId() {returnid;}public void setId(intid) {this.id =id;}public intgetLine() {returnline;}public void setLine(intline) {this.line =line;}publicString getName() {returnname;}public voidsetName(String name) {this.name =name;}publicString getQidian() {returnqidian;}public voidsetQidian(String qidian) {this.qidian =qidian;}publicString getZhongdian() {returnzhongdian;}public voidsetZhongdian(String zhongdian) {this.zhongdian =zhongdian;}public ZhanDian(int id,intline,String name) {this.id=id;this.line=line;this.name=name;    }public ZhanDian(intid,String name) {this.id=id;this.name=name;}publicZhanDian(String qidian,String zhongdian) {this.qidian=qidian;this.zhongdian=zhongdian;}publicZhanDian(String name) {this.name=name;}public ZhanDian(intid) {this.id=id;}publicZhanDian() {}}Transform类的代码如下:packageassist;importdao.SubwayDao;public classTransform
{//判断输入的地点名在哪一个线路和对应线路上的对应表中对应idpublic inttransform(String name) {int line=0;intn;SubwayDao sd= newSubwayDao();//将数据库中one表中的数据存储到数组one中int id=1;//判断是否在第一条线for(n=0;n<29;n++) {if(name.equals(sd.getCourseByBiaoId("one",id).getName())){line=1;returnline;}id++;}id=1;for(n=0;n<37;n++) {if(name.equals(sd.getCourseByBiaoId("two",id).getName())){line=2;returnline;}id++;}id=1;for(n=0;n<34;n++) {if(name.equals(sd.getCourseByBiaoId("three",id).getName())){line=3;returnline;}id++;}id=1;for(n=0;n<18;n++) {if(name.equals(sd.getCourseByBiaoId("four",id).getName())){line=4;returnline;}id++;}id=1;for(n=0;n<21;n++) {if(name.equals(sd.getCourseByBiaoId("five",id).getName())){line=5;returnline;}id++;}id=1;for(n=0;n<18;n++) {if(name.equals(sd.getCourseByBiaoId("six",id).getName())){line=6;returnline;}id++;}returnline;}//通过起点所在线路的数组,起点和中转站的id和名字得到起点到中转站的站点名字数组public String[] zhongZhanQ(String [] zhongzhan,int id1,intid,String name1,String name) {String shuchu[]=newString [zhongzhan.length];int n=0;inti;//起点id1小于中转站id时if((id1-id)<0) {for(i=(id1-1);i<id;i++) {shuchu[n]=zhongzhan[i];n++;}}//起点id大于中转站id时else{for(i=(id1-1);i>(id-2);i--) {shuchu[n]=zhongzhan[i];n++;}}returnshuchu;}//将两个数字和并成一个数字public int HeBing(int line1,intline2) {String sline1=String.valueOf(line1);//将int型转化为String型String sline2=String.valueOf(line2);//将int型转化为String型
String sline3;sline3=sline1+sline2;int line3= Integer.parseInt(sline3); //将String型转化为int型returnline3;}//通过终点所在线路的数组,终点和中转站的id和名字得到起点到中转站的站点名字数组public String[] zhongZhanZ(String [] zhongzhan,int id,intid2,String name,String name2) {String shuchu[]=newString [zhongzhan.length];int n=0;inti;//终点id小于中转站id时if((id2-id)<0) {for(i=(id-2);i>(id2-2);i--) {shuchu[n]=zhongzhan[i];n++;}}//终点id大于中转站id时else{for(i=id;i<id2;i++) {shuchu[n]=zhongzhan[i];n++;}}returnshuchu;}//通过表名将其数组形式输出publicString[] zu(String biao) {String zu[]= new String[40];SubwayDao sd= newSubwayDao();//将数据库中表中的数据存储到数组中int id=1;int xunhuan=0;if(biao=="one") {xunhuan= 29;}else if(biao == "two"){xunhuan= 37;}else if(biao=="three") {xunhuan= 34;}else if(biao=="four") {xunhuan= 18;}else if(biao=="five") {xunhuan= 21;}else if(biao=="six") {xunhuan= 18;}for(int n=0;n<xunhuan;n++) {zu[n]=sd.getCourseByBiaoId(biao,id).getName();id++;}returnzu;}/*//将表one以数组的形式输出public String[] oneZu() {String onezu[] = new String[29];SubwayDao sd = new SubwayDao();//将数据库中one表中的数据存储到数组one中int id=1;for(int n=0;n<29;n++) {onezu[n]=sd.getCourseById_1(id).getName();id++;}return onezu;}            //将表three以数组的形式输出public String[] threeZu() {String threezu[] = new String[34];SubwayDao sd = new SubwayDao();//将数据库中one表中的数据存储到数组one中int id=1;for(int n=0;n<34;n++) {threezu[n]=sd.getCourseById_3(id).getName();id++;}return threezu;}*/    //判断起点和终点是否在一条线上public boolean tiaoShu(int qidian,intzhongdian) {if(qidian==zhongdian) {return true;}else{return false;}}//通过line获得对应的字符串public String[] biaoByLine(intline) {String biao[]=new String[40];switch(line) {case 1:{biao=zu("one");break;}case 2:{biao=zu("two");break;}case 3:{biao=zu("three");break;}case 4:{biao=zu("four");break;}case 5:{biao=zu("five");break;}case 6:{biao=zu("six");break;}}returnbiao;}//通过int型line获取string型的表名public String stringByLine(intline) {String biaoname=null;switch(line) {case 1:{biaoname= "one";break;}case 2:{biaoname= "two";break;}case 3:{biaoname= "three";break;}case 4:{biaoname= "four";break;}case 5:{biaoname= "five";break;}case 6:{biaoname= "six";break;}}returnbiaoname;}
}
Main类的代码如下:packagemain;importassist.Transform;//import assist.IntStringInt;
importdao.SubwayDao;public classMain {public String zhu(String qidian,String zhongdian/*,int qixian,int zhongxian*/) {String string="";//存储所要输出的字符串Transform tf = newTransform();SubwayDao sd= newSubwayDao();intid1,id2;String qibiao,zhongbiao;intqiid,zhongid;String qiname,zhongname;intqixian,zhongxian;//起始点名字qiname=qidian;//终点名字zhongname=zhongdian;qixian=tf.transform(qiname);zhongxian=tf.transform(zhongname);//得出起始站点id1id1=sd.getIdByBNName((tf.stringByLine(qixian)), qidian);//得出终点对应id2id2=sd.getIdByBNName((tf.stringByLine(zhongxian)), zhongdian);//如果两个点在一条线上if(tf.tiaoShu(qixian,zhongxian)) {String zhengzu[]=tf.zhongZhanQ(tf.biaoByLine(qixian), id1, id2, qiname, zhongname);string= string +"起点至终点的站点信息:开始 >> ";intmn;for(mn=0;mn<zhengzu.length&&zhengzu[mn]!=null;mn++) {string= string + mn + String.valueOf(zhengzu[mn]) + ">>";}string= string + "结束";string= string + "总共" + String.valueOf(mn-1) + "站";}//否则在两条线上else{//得出换站点的line及名字int line=tf.HeBing(qixian,zhongxian);String name=sd.getCourseByLine(line).getName();//通过名字获取所交的两个表名qibiao=sd.getZhanDianByName(name,line).getQidian();zhongbiao=sd.getZhanDianByName(name,line).getZhongdian();//通过表名和名字获取对应表里的id值qiid=sd.getIdByBNName(qibiao,name);zhongid=sd.getIdByBNName(zhongbiao,name);//输出前半段路程数组String qizu[] =tf.zhongZhanQ(tf.biaoByLine(qixian), id1, qiid, qiname, name);String zhongzu[]=tf.zhongZhanZ(tf.biaoByLine(zhongxian), zhongid, id2, name, zhongname);//输出中途站点信息string=string + "起点至终点的站点信息:开始";int m=0;int n=0;for(m=0;m<qizu.length&&qizu[m]!=null;m++) {string= string + ">>" + m +String.valueOf(qizu[m]);}string= string + "(在此站需要换到  " + zhongxian + "  号线)>>";for(n=0;n<zhongzu.length&&zhongzu[n]!=null;n++) {string= string + m + String.valueOf(zhongzu[n]) + ">>";m++;}string="总共经过 " + String.valueOf(m-1) + "站" +  string + "结束";}returnstring;}
}Servlet类的代码如下:packageservlet;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importmain.Main;@WebServlet("/Servlet")public class Servlet extendsHttpServlet{private static final long serialVersionUID = 1L;protected void service(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {req.setCharacterEncoding("utf-8");String method= req.getParameter("method");if ("lucheng".equals(method)) {lucheng(req, resp);}}//查找线路private void lucheng(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{Main zhu= newMain();req.setCharacterEncoding("utf-8");String qidian= req.getParameter("qidian");String zhongdian= req.getParameter("zhongdian");String string=zhu.zhu(qidian, zhongdian);req.setAttribute("message", string);req.getRequestDispatcher("lucheng.jsp").forward(req,resp);}
}

界面代码如下:

//face.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>石家庄地铁</title><style>
<%--最顶端的div样式--%>.tou{background-image:url(image/004_1.jpg);background-size:100% 100%;}.caidan{background-color:#669999;width:100%;heigh:100px;}</style></head><frameset rows="120px,*" frameborder="1" border="2" framespacing="0" >
<frame src="yemei.jsp" name="yemei"/>
<frame src="zhuti.jsp" name="zhuti"/>
</frameset><iframe>
<body>
<h1 align="center" style="color:red">该浏览器不支持frameset显示</h1>
</body>
</iframe></html>
//yeimei.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>页眉</title><style>
<%--最顶端的div样式--%>.tou{background-image:url(image/004_1.jpg);background-size:100% 100%;}.caidan{background-color:#669999;width:100%;}</style></head><body>
<%-- 顶端要显示的div --%><div class="tou" ><div><img src="data:image/sjzdt.jpg" style="height: 70px; width: 70px; margin-left:10px; margin-top: 2px;"/></div><%--  <div ><img src="data:image/bei.jpg" style="height: 70px; width: 35px; margin-left: 990px; margin-top: 2px;"/></div> --%><div class="caidan"><table width="30%"><tr><td align='center'><a href="zhuti.jsp" target="zhuti">首页</a></td><td align='center'><a href="jianjie.jsp" target="zhuti">公司简介</a></td><td align='center'><a href="shuoming.jsp" target="zhuti">使用说明</a></td ></tr></table></div></div>
</body>
</html>
//zhuti.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>页面主体</title>
<style>.zhuti{background-image:url(image/tu.jpg);background-repeat : repeat;}</style>
</head><body><div style="width:100%;height:700px;background:url(image/tu.jpg);background-size:100% 100%;"><iframe src="shuru.jsp" width="200px" height="170px"></iframe></div>
</body>
</html>
//shuru.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>石家庄地铁</title>
<style>.a{margin-top: 10px;}</style>
</head>
<body><div align="center" style="width:100%;background:url(image/003_2.jpg);background-size:100% 100%;"><form action="Servlet?method=lucheng" method="post" οnsubmit="return check()"><div class="a">起点站名字:<input type="text" id="qidian" name="qidian" style="width:60px;"/></div><div class="a">&nbsp;</div><div class="a">终点站名字:<input type="text" id="zhongdian" name="zhongdian" style="width:60px;"/></div><div class="a">&nbsp;</div><div class="a"><button type="submit" class="b">确&nbsp;&nbsp;&nbsp;定</button></div></form></div><script type="text/javascript">function check() {var qidian= document.getElementById("qidian");var zhongdian= document.getElementById("zhongdian");if(qidian.value=='') {alert('请填写起点站');return false;}else if(zhongdian.value==''){alert('请填写终点站');return false;}}</script>
</body>
</html>
//lucheng.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>路线显示</title>
</head>
<body>
<div style="width:100%"><p style="color:red"><%=request.getAttribute("message")%></p>
</div>
</body>
</html>
//jianjie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>公司简介</title>
</head>
<body>
<h1>暂无公司简介</h1>
</body>
</html>
//shuoming.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用说明</title>
</head>
<body>
<h1>暂无使用说明</h1>
</body>
</html>

以上为最终的项目的所有代码。

转载于:https://www.cnblogs.com/hwh000/p/10685607.html

石家庄地铁站项目最终总结报告相关推荐

  1. 范文:项目开发总结报告

    1引言 1.1编写目的 XXX公司业务管理系统的开发已经基本完成.写此项目开发总结报告,以方便我们在以后的项目开发中来更好的实施项目的订制开发; 让我在今后的项目开发中有更多的有据的资料来规范我们的开 ...

  2. 中国钢铁行业战略规划及项目建设动态分析报告2021-2027年

    中国钢铁行业战略规划及项目建设动态分析报告2021-2027年 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年10月 [搜索 ...

  3. 全球及中国航空发动机市场动态前景及十四五项目专项调研报告2021-2027年版

    全球及中国航空发动机市场动态前景及十四五项目专项调研报告2021-2027年版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订 ...

  4. 全球及中国皮肤癌药物行业深度研究及项目可行性调研报告2022-2027年

    全球及中国皮肤癌药物行业深度研究及项目可行性调研报告2022-2027年 [搜索鸿晟信合查看官网更多内容!]  皮肤癌药物用于治疗皮肤癌变,从多种方面来防止.抑制.消灭皮肤的癌细胞,从而使患者的症状得 ...

  5. 项目开发总结报告(GB8567——88)

    项目开发总结报告(GB8567--88) 1引言 1.1编写目的 说明编写这份项目开发总结报告的目的,指出预期的阅读范围. 1.2背景 说明: 本项目的名称和所开发出来的软件系统的名称: 此软件的任务 ...

  6. 北京XXX学院WLAN项目现场勘查报告

    北京XXX学院WLAN项目现场勘查报告 勘查人:乐伦.仲宝.刘贺(北分) 勘查时间:2010年11月21日 勘查地点:北京XXX学院学生宿舍楼A.B座 勘查中发现的问题及解决方案: 问题一:有24颗在 ...

  7. 耳挂式蓝牙耳机原理_耳挂式蓝牙耳机项目总结分析报告

    泓域咨询 MACRO/ 耳挂式蓝牙耳机项目总结分析报告 第一章 项目总体情况说明 一.经营环境分析 1 . 2 .从经济发展的国内条件来看,推进经济结构转换的基本推动性因素 仍需夯实,经济发展的不平衡 ...

  8. 螺栓检测项目 螺栓检测报告河南

    螺栓检测样品介绍:螺栓是一种常用的机械紧固件,与螺母配合使用.螺栓种类很多,有六角螺栓.膨胀螺栓.u形螺栓.螺母.螺帽.六角螺母.外六角螺栓.地脚螺栓.鱼尾螺栓.六角头螺栓.羊眼螺栓.螺栓球.双头螺栓 ...

  9. 软件工程课程实践-项目开发总结报告

    系统概述 该基金管理系统采用BS结构,由前端界面,后端,数据库组成.系统主要分为基金市场,基金查询,基金管理和用户管理四大功能模块.用户可通过建立个人账户,查看每日基金的各项指标,同时进行购买.抛售以 ...

  10. 全球及中国便捷式GNSS接收器行业供应需求及项目投资战略分析报告2022-2027年

    全球及中国便捷式GNSS接收器行业供应需求及项目投资战略分析报告2022-2027年 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--H ...

最新文章

  1. win10 环境变量配置 如何在命令行运行php文件
  2. 鸿蒙10.1升级机型,鸿蒙系统的前奏,华为EMUI10.1从底层掏空安卓,20款老机型升级...
  3. 《UNIXLinux程序设计教程》一第2章-2.0 标准输入输出
  4. Selenium webdriver定位iframe里面元素两种方法
  5. Linux 进程基础
  6. Codeforces Round #143 (Div. 2) C
  7. 单双目相机畸变校正--极线校正
  8. GoogLenet网络解读及代码实现(Pytorch)
  9. Java集合(一、HashMap)
  10. 毕啸南专栏 | 对话智联招聘CEO郭盛:未来的社会是透明的
  11. 【如何注销CSDN账号】说容易也容易,说难也难
  12. ZZULIOJ1010
  13. iOS 上传苹果商店失败记录
  14. the CBD process terminated
  15. 《变革中的思索》连载三:展望个人电脑的未来之路
  16. sigmoid和softmax
  17. 怎么使用讯捷CAD编辑器执行编辑命令?
  18. 005-电脑软件安装包20190408
  19. 计算机基本操作知识课本内容阅读,计算机基础知识及基本操作
  20. SDN in Action: Practice SDN/OpenFlow with LINC-Switch and OpenDaylight

热门文章

  1. RTKLIB(二)——RTKPOST
  2. python opencv 修改局部区域像素值
  3. linux怎么查看hwaddr_linux如何查看mac地址_查看linux的mac地址_linux 查看mac地址
  4. 问学计算机的同学买什么电脑,学生用的笔记本电脑什么样的好
  5. linux下TF卡测试寿命的测试程序编写
  6. 【20保研】中山大学2019年“人工智能与科学计算”优秀大学生夏令营活动报名通知...
  7. C#本地化国际化解决方案实现简介
  8. TPA6100A2DGKR立体声音频功率放大器
  9. Android中的Drawable(一)
  10. WPS 解决插入尾注后无法添加分节页符