两人团队项目-石家庄地铁查询系统(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();elsereturn 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()]);}//獲取六號線的全部信息}
與此同時,我的隊友已經將界面做好,給了我接口,我很佩服隊友的功力,因為這個界面不套模板做成這樣,已經是很不錯了。
?
?
轉載于:https://www.cnblogs.com/Aduorisk/p/10652917.html
總結
以上是生活随笔為你收集整理的两人团队项目-石家庄地铁查询系统(web版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caffe学习(1) ubunu 16.
- 下一篇: Linux:入门基础