结对开发:队友田昕可

大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作。这一次将线路加到了六条,并且要求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. MySQL 基础、安装、配置

    1. MySQL 基础 1.1 什么是数据库? 1.2 数据库的类型 1.3 关系型数据库的优点 1.4 MySQL 简介 1.5 MySQL 数据类型 1.6 Mysql 存储引擎 1.7 MySQ ...

  2. Tengine AIFramework框架

    Tengine AIFramework框架 在开源大势下,以数据.算力.算法为三驾马车的人工智能实现了初级阶段的产业化落地.任何一个技术领域成熟的标志是从应用到平台的成功迭代,AI 也不例外,最终引导 ...

  3. 智能物联网(AIoT,2020年)(中)

    智能物联网(AIoT,2020年)(中) 05 中国AIoT产业图谱 06 中国AIoT商业模式 标准程度越低人力和时间成本投入越多,2B2C模式附加值高 07 中国AIoT玩家分布简介 四类玩家,优 ...

  4. ES5中的类

    之前小编对于类和类的基本特征(所谓的封装.继承.多态)理解一直不是很到位,同时在实际项目应用中也用的比较少,今天小编就结合ES5中的基本用法和大家聊聊,希望小伙伴会在这篇文章有属于自己的收获,并能够在 ...

  5. 【NX二次开发】UF_CSYS_map_point()函数,绝对坐标,工作坐标,部件之间坐标转换。

    UF_CSYS_map_point用来变换点的坐标,比较简单且实用.例如工作坐标系与绝对坐标系转换,一个部件的坐标与另一个部件坐标系之间的转换.下面的例子是在三个坐标下创建三个点相对坐标为{10,50 ...

  6. 迁移Report Server DataBase时遇到的坑

    1.项目背景 由于历史原因,公司部分系统的Report是基于SQL Server Report Service搭建的,且Reporting Services 和Report Server DataBa ...

  7. 注解式项目开发!详细解析Java中各个注解的作用和使用方式

    @Target 作用: 指明了修饰的这个注解的使用范围, 即被描述的注解可以用在哪里 @Target(ElementType.Type) ElementType取值的类型: TYPE: 类,接口或者枚 ...

  8. SQL Prompt快捷键

    1. DF DELETE FROM  2. ssf SELECT * FROM  3. be BEGIN  END 4. ij INNER JOIN  5. ap ALTER PROCEDURE  6 ...

  9. el-upload上传列表实现 展开 收起

    # el-upload上传列表实现 展开 收起 #### 无图言*,所以先上最终效果图(想参考代码的可以直接滑到最后) ### 具体实现思路 注意: 每个人的项目环境以及需求,都不尽相同,所以这里仅仅 ...

  10. [HNOI2006]公路修建问题题解

    题目 题目描述 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了, ...