结对开发_石家庄地铁查询web系统
结对开发:队友田昕可
大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作。这一次将线路加到了六条,并且要求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系统的更多相关文章
- 结对开发_石家庄地铁查询web系统_psp表
结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/flw0322/p/10680172.html PSP0: PSP0 Personal Software Proce ...
- 结对开发项目--石家庄地铁web版
一.功能要求 1.数据库设计:将石家庄地铁线路图的各个线路,各个站点,换乘信息等用数据库的形式保存起来,应该保存的信息有 {线路号,线路的各个站名,车站的换乘信息}. 2.站点查询:用户可以输入任一一 ...
- 两人团队项目-石家庄地铁查询系统(web版)psp表
结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/Aduorisk/p/10652917.html 队友:冯利伟 PSP: PSP0 Personal Softwar ...
- 两人团队项目-石家庄地铁查询系统(web版)
大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我自己习惯而言,我写javaweb项目 ...
- 石家庄地铁查询PSP0级
一.需求 :地铁(石家庄地铁)线路查询 二. 学生:洪鼎淇 合作对象:宋子健 时间记录日志: 日期 开始时间 结束时间 中断时间 净时间 活动 2019/3/30 10:00 14:0 ...
- 团队项目成员与题目(本地地铁查询app)
团队名称:Daydreaming团队成员及其特点:张运涛:能快速与团队成员中的每一位进行合作,能全面考虑遇到的问题,善于总结积累.能较好的理解老师与其他人员的想法要求.刘瑞欣:做事果断,善于领导,有想 ...
- java web开发_购物车功能实现
java web开发_购物车功能实现 之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: ...
- PHP-学习大规模高并发Web系统架构及开发推荐书籍
以下书籍内容涵盖大型网站开发中几个关键点:高可用.高性能.分布式.易扩展.如果想对大规模高并发Web系统架构及开发有很系统的学习,可以阅读以下书籍,欢迎补充! 一.<Linux企业集群—用商用硬 ...
- 四则运算4 WEB(结对开发)
在第三次实验的基础上,teacher又对此提出了新的要求,实现网页版或安卓的四则运算. 结对开发的伙伴: 博客名:Mr.缪 姓名:缪金敏 链接:http://www.cnblogs.com/miaoj ...
随机推荐
- Tengine Web服务器概述
Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...
- ADO.NET的五大对象
ADO.NET是一种数据访问技术,使得应用程序可以连接到数据库存储,并以各种方式操作存储在其中的数据.该技术基于.NETFramework,与.NET Framework类库的其余部分高度集成. 其中 ...
- WEB 页面认证
1:安装htpasswd工具生成加密文件 安装工具 # yum install httpd-tools # htpasswd -cm /etc/httpd/passwd/password useraN ...
- Redis的过期键删除策略
文章首发于公众号:蘑菇睡不着,欢迎来看看 前言 Redis 中都是键值对的存储形式,键都是字符串类型的,而值有很多种类型,如 string.list.hash.set.sorted set等类型.当设 ...
- CLR里的MethodTable,MethodDescChunk,MethodDesc,FixUpPreCode都是什么意思
一:看下面一些概念 1MethodTable MethodTable可以说在CLR里面无处不在,这个东西主要是作为对象的数据类型存在,主要包含了EEClass 模块地址,类型名称,模块路径等. 2.E ...
- 使用sign签名发送请求
import CryptoJS from "crypto-js"; import urlencode from "urlencode"; methods:{ a ...
- 深入理解Spring事务的那点事
Spring事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获 ...
- 65.QT-UDP组播实现多人共享桌面(同时支持收发显示)
这里我们只是简单学习下通过udp组播如何共享桌面demo.帧率上面比较低,毕竟没有用推流,只是简单的将图片发送到组播地址,而加入组播地址的客户端去取数据显示而已. 主要是为了学习UDP知识而写的,真的 ...
- C#调百度通用翻译API翻译HALCON的示例描述
目录 准备工作 参数简介 输入参数 输出参数 使用HttpClient 翻译工具类 应用:翻译HALCON的示例描述 准备工作 HALCON示例程序的描述部分一直是英文的,看起来很不方便.我决定汉化一 ...
- 《吃透微服务》 - 服务容错之Sentinel
大家好,我是小菜. 一个希望能够成为 吹着牛X谈架构 的男人!如果你也想成为我想成为的人,不然点个关注做个伴,让小菜不再孤单! 本文主要介绍 SpringCloud中Sentinel 如有需要,可以参 ...