结对开发:队友田昕可

大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作。这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现:

  1.数据库建表

  于我们自己习惯而言,我们写javaweb项目第一件事就是建库建表。六条线路,我们选择了分六个表存储,这样的话实际操作起来,分离的每一条线会使dao层写函数方便很多。

  每一个表中只有三列属性:id,name,nearline

建表完成后,就需要在dbutil中写数据库连接的代码,这部分代码是模板代码,只需要修改库名即可。

package dbutil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class DButil {
public static String url = "jdbc:mysql://localhost:3306/subway?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8";
public static String user = "root";
public static String password = "";
public static String driver = "com.mysql.cj.jdbc.Driver";
public static Connection getConn() {
Connection conn = null;
try {
Class.forName(driver); // 连续数据库
conn = DriverManager.getConnection(url, user, password); } catch (Exception e) {
e.printStackTrace();
}
return conn;
} public static void close(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 void close(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();
}
}
}
} 

下一步队友选择写Javabean,因为每个表只有三个属性,所以javabean也十分简单,只有三个属性,只需要写他们的get和set方法,以及有参数和无参数的构造函数即可。

package bean;

public class Bean {
private String name;
private int number;
private String nearline; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getNearline() {
return nearline;
}
public void setNearline(String nearline) {
this.nearline = nearline;
} public Bean() {};
public Bean(String name,int number,String nearline)
{
this.name=name;
this.number=number;
this.nearline=nearline;
} }

  到这里我们的前期准备工作就已经做完了,现在还剩下dao包,servlet和前端界面以及输出界面没有书写,因为是两人团队项目,我个人分配了前端页面,于是前端界面就交给我了。

  在我写前端的同时,他自己大概写了dao包中的几个常用函数,如果以后还有需求,再往上添加。select函数必备,还有一个检测输入的站点在几号线的函数checkstation(),还有一个带参数的select函数,方便通过参数调用select每条线的功能,简化代码量。除此之外,最重要的函数就是在一条线上给定两个参数,将他们之间站名全部输出的函数substation。

  

package dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList; import bean.Bean;
import dbutil.DButil; public class Dao { public String[] substation(Bean[] sub,String s1,String s2)
{
ArrayList<String> stationlist =new ArrayList<String>();
int start=0;
int end=0;
int money;
int i;
for(i=0;i<sub.length;i++)
{
if(sub[i].getName().equals(s1))
start=i;
}//确定起始站
for(i=0;i<sub.length;i++)
{
if(sub[i].getName().equals(s2))
end=i;
}//确定终点站 if(start<end)
{
for(i=start;i<=end;i++)
{
stationlist.add(sub[i].getName());
}//输出站点信息
}
else
{
for(i=start;i>=end;i--)
{
stationlist.add(sub[i].getName());
}//输出站点信息
}
return stationlist.toArray(new String[stationlist.size()]);
} public int checkstation(String start)
{
Dao dao=new Dao();
int i;
for(i=0;i<dao.selectno1().length;i++)
{
if(dao.selectno1()[i].getName().equals(start))
{
return 1;
}
}
for(i=0;i<dao.selectno2().length;i++)
{
if(dao.selectno2()[i].getName().equals(start))
{
return 2;
} }
for(i=0;i<dao.selectno3().length;i++)
{
if(dao.selectno3()[i].getName().equals(start))
{
return 3;
}
}
for(i=0;i<dao.selectno4().length;i++)
{
if(dao.selectno4()[i].getName().equals(start))
{
return 4;
}
}
for(i=0;i<dao.selectno5().length;i++)
{
if(dao.selectno5()[i].getName().equals(start))
{
return 5;
}
}
for(i=0;i<dao.selectno6().length;i++)
{
if(dao.selectno6()[i].getName().equals(start))
{
return 6;
}
}
return 0;
} public Bean[] select(int n)
{
Bean[] a=new Bean[] {};
Dao dao=new Dao();
if(n==1)
return dao.selectno1();
if(n==2)
return dao.selectno2();
if(n==3)
return dao.selectno3();
if(n==4)
return dao.selectno4();
if(n==5)
return dao.selectno5();
if(n==6)
return dao.selectno6();
else
return a;
} public Bean[] selectno1()
{
ArrayList<Bean> list=new ArrayList();
Connection connection = DButil.getConn();
Statement statement=null;
ResultSet rs = null;
try
{
statement = connection.createStatement(); // 要执行的SQL语句
String sql = "select * from no1 "; // 结果集
rs = statement.executeQuery(sql); while(rs.next())
{
Bean selectbean=new Bean();
String name = rs.getString("name");
int number = rs.getInt("id");
String nearline = rs.getString("nearline"); selectbean.setName(name);
selectbean.setNumber(number);
selectbean.setNearline(nearline);
list.add(selectbean);
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
DButil.close(rs, statement, connection);
}
return list.toArray(new Bean[list.size()]);
}//获取一号线的所有信息 public Bean[] selectno2()
{
ArrayList<Bean> list=new ArrayList();
Connection connection = DButil.getConn();
Statement statement=null;
ResultSet rs = null;
try
{
statement = connection.createStatement(); // 要执行的SQL语句
String sql = "select * from no2 "; // 结果集
rs = statement.executeQuery(sql); while(rs.next())
{
Bean selectbean=new Bean();
String name = rs.getString("name");
int number = rs.getInt("id");
String nearline = rs.getString("nearline"); selectbean.setName(name);
selectbean.setNumber(number);
selectbean.setNearline(nearline);
list.add(selectbean);
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
DButil.close(rs, statement, connection);
}
return list.toArray(new Bean[list.size()]);
}//获取二号线的所有信息 public Bean[] selectno3()
{
ArrayList<Bean> list=new ArrayList();
Connection connection = DButil.getConn();
Statement statement=null;
ResultSet rs = null;
try
{
statement = connection.createStatement(); // 要执行的SQL语句
String sql = "select * from no3 "; // 结果集
rs = statement.executeQuery(sql); while(rs.next())
{
Bean selectbean=new Bean();
String name = rs.getString("name");
int number = rs.getInt("id");
String nearline = rs.getString("nearline"); selectbean.setName(name);
selectbean.setNumber(number);
selectbean.setNearline(nearline);
list.add(selectbean);
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
DButil.close(rs, statement, connection);
}
return list.toArray(new Bean[list.size()]);
}//获取三号线的全部信息 public Bean[] selectno4()
{
ArrayList<Bean> list=new ArrayList();
Connection connection = DButil.getConn();
Statement statement=null;
ResultSet rs = null;
try
{
statement = connection.createStatement(); // 要执行的SQL语句
String sql = "select * from no4 "; // 结果集
rs = statement.executeQuery(sql); while(rs.next())
{
Bean selectbean=new Bean();
String name = rs.getString("name");
int number = rs.getInt("id");
String nearline = rs.getString("nearline"); selectbean.setName(name);
selectbean.setNumber(number);
selectbean.setNearline(nearline);
list.add(selectbean);
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
DButil.close(rs, statement, connection);
}
return list.toArray(new Bean[list.size()]);
}//获取四号线的全部信息 public Bean[] selectno5()
{
ArrayList<Bean> list=new ArrayList();
Connection connection = DButil.getConn();
Statement statement=null;
ResultSet rs = null;
try
{
statement = connection.createStatement(); // 要执行的SQL语句
String sql = "select * from no5 "; // 结果集
rs = statement.executeQuery(sql); while(rs.next())
{
Bean selectbean=new Bean();
String name = rs.getString("name");
int number = rs.getInt("id");
String nearline = rs.getString("nearline"); selectbean.setName(name);
selectbean.setNumber(number);
selectbean.setNearline(nearline);
list.add(selectbean);
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
DButil.close(rs, statement, connection);
}
return list.toArray(new Bean[list.size()]);
}//获取五号线的全部信息 public Bean[] selectno6()
{
ArrayList<Bean> list=new ArrayList();
Connection connection = DButil.getConn();
Statement statement=null;
ResultSet rs = null;
try
{
statement = connection.createStatement(); // 要执行的SQL语句
String sql = "select * from no6 "; // 结果集
rs = statement.executeQuery(sql); while(rs.next())
{
Bean selectbean=new Bean();
String name = rs.getString("name");
int number = rs.getInt("id");
String nearline = rs.getString("nearline"); selectbean.setName(name);
selectbean.setNumber(number);
selectbean.setNearline(nearline);
list.add(selectbean);
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
DButil.close(rs, statement, connection);
}
return list.toArray(new Bean[list.size()]);
}//获取六号线的全部信息 }

  与此同时,我已经将界面做好,给了他接口,完成基本功能。

  

结对开发_石家庄地铁查询web系统的更多相关文章

  1. 结对开发_石家庄地铁查询web系统_psp表

    结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/flw0322/p/10680172.html PSP0: PSP0 Personal Software Proce ...

  2. 结对开发项目--石家庄地铁web版

    一.功能要求 1.数据库设计:将石家庄地铁线路图的各个线路,各个站点,换乘信息等用数据库的形式保存起来,应该保存的信息有 {线路号,线路的各个站名,车站的换乘信息}. 2.站点查询:用户可以输入任一一 ...

  3. 两人团队项目-石家庄地铁查询系统(web版)psp表

    结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/Aduorisk/p/10652917.html 队友:冯利伟 PSP: PSP0 Personal Softwar ...

  4. 两人团队项目-石家庄地铁查询系统(web版)

    大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我自己习惯而言,我写javaweb项目 ...

  5. 石家庄地铁查询PSP0级

    一.需求   :地铁(石家庄地铁)线路查询 二.       学生:洪鼎淇 合作对象:宋子健 时间记录日志: 日期 开始时间 结束时间 中断时间 净时间 活动 2019/3/30 10:00 14:0 ...

  6. 团队项目成员与题目(本地地铁查询app)

    团队名称:Daydreaming团队成员及其特点:张运涛:能快速与团队成员中的每一位进行合作,能全面考虑遇到的问题,善于总结积累.能较好的理解老师与其他人员的想法要求.刘瑞欣:做事果断,善于领导,有想 ...

  7. java web开发_购物车功能实现

    java web开发_购物车功能实现 之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: ...

  8. PHP-学习大规模高并发Web系统架构及开发推荐书籍

    以下书籍内容涵盖大型网站开发中几个关键点:高可用.高性能.分布式.易扩展.如果想对大规模高并发Web系统架构及开发有很系统的学习,可以阅读以下书籍,欢迎补充! 一.<Linux企业集群—用商用硬 ...

  9. 四则运算4 WEB(结对开发)

    在第三次实验的基础上,teacher又对此提出了新的要求,实现网页版或安卓的四则运算. 结对开发的伙伴: 博客名:Mr.缪 姓名:缪金敏 链接:http://www.cnblogs.com/miaoj ...

随机推荐

  1. Unity 2018.3.0f 版本用C#编程启动VS时出现"Visual Studio 2010 Shell 无效的许可证数据"的解决办法

    C#编程时,启动VS出现的问题如图: 网上有提到用更改注册表的方式,亲测效果未发生改变,在不确定修改后效果如何时,尽量先将原有的数据备份下来: 本文介绍楼主用另外一种方式解决的: 由于脚本系统默认启动 ...

  2. checkbox,select,radio 选取值,设定值,回显值

    获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $(" ...

  3. Tensor基础实践

    Tensor基础实践 飞桨(PaddlePaddle,以下简称Paddle)和其他深度学习框架一样,使用Tensor来表示数据,在神经网络中传递的数据均为Tensor. Tensor可以将其理解为多维 ...

  4. TensorRT 7.2.1 开发概要(上)

    TensorRT 7.2.1 开发概要(上) Abstract 这个TysRR7.2.1开发者指南演示了如何使用C++和Python API来实现最常用的深层学习层.它展示了如何使用深度学习框架构建现 ...

  5. Django(55)GenericAPIView源码分析

    源码分析 GenericAPIView继承自APIView,也就是在APIView基础上再做了一层封装,源码如下: class GenericAPIView(views.APIView): query ...

  6. 「题解」agc031_e Snuke the Phantom Thief

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷 AT4695.AtCoder agc031_e. 题意简述 在二维平面上,有 \(n\) 颗珠宝,第 \(i\) 颗 ...

  7. 【C++】共用体\联合体(union)

    共用体的用法与结构体差不多,只不过将关键字由struct变成了union.共用体使不同的类型变量存放到同一段内存单元中,所以共用体在同一时刻只能存储一个数据成员的值,共用体的大小等于最大成员的大小(结 ...

  8. 10:ValueError: Cannot assign "'2'": "Comment.article" must be a "Article" instance

    报错中出现类似ValueError: Cannot assign "'XXX'": "Comment.article" must be a "XXX& ...

  9. 代码生成器:IDEA 强大的 Live Templates

    前言 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等.对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能. ...

  10. STM32学习笔记-NVIC中断知识点

    STM32学习笔记-NVIC中断知识点总结 中断优先级设置步骤 1. 系统运行后先设置中断优先级分组 函数:void NVIC_PriorityGroupConfig(uint32_tNVIC_Pri ...