1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。
2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善
开发环境:
代码已经上传github,下载地址:https://github.com/21503882/airplane-ticket
Eclipse ,MYSQL,JDK1.8,Tomcat 7
涉及技术点:
MVC模式、SpringMvc、Mybatis、Spring、bootstrap、HTML、JavaScript、CSS、JQUERY、log4j、Ajax、maven等
系统采用Mybatis框架实现ORM对象关系映射,前台JSP实现,后台springMvc映射,使用Spring框架进行整合。适合学习J2EE的一段时间的熟手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat7,JDK版本1.8. 编程软件Eclispe J2EE版本。是典型MVC架构,并且前后台分离
主要功能界面:
下图分别为:
新会员注册——登录——预定飞机票——查看预定信息
会员中心:
后台管理员登录:
4.1.1系统功能模块的划分
根据航空公司的需要,系统应当包含基本的功能有:用户注册、用户登录和管理员登录,航班查看等。用户则划分为基本乘客和管理员两大类,管理员还兼具有管理职能。功能模块图如下:
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.Charset;
import java.sql.*;
import java.util.*;
import java.util.regex.Pattern;
/**
* mybatisgen generate core.
*
* @author bleedfly.
*/
public class MyBatisGenCore {
private static String dbLocation = "db.config";
/**
* 根据表名获取字段信息
*
* @param cn
* @param table
* @return
* @throws Exception
*/
public static List<Map<String, String>> getColInfoList(Connection cn, String table) throws Exception {
String sql = "select * from " + table + " where 1>2";
Statement stmt = null;
ResultSet rs = null;
try {
// 获取数据库元数据信息
DatabaseMetaData dbmd = cn.getMetaData();
ResultSet primaryKeys = dbmd.getPrimaryKeys(null, null, table);
String pks =getstrPimaryKeys(primaryKeys);
stmt = cn.createStatement();
rs = stmt.executeQuery(sql);
// 获取结果集元数据信息
ResultSetMetaData rsmd = rs.getMetaData();
int num = rsmd.getColumnCount();
Map<String, String> map;
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
for (int i = 1; i <= num; i++) {
map = new HashMap<String, String>();
map.put(MyBatisGenConst.RSMD_COLUMN_NAME, rsmd.getColumnName(i));
map.put(MyBatisGenConst.RSMD_COLUMN_CLASS_NAME, rsmd.getColumnClassName(i));
map.put(MyBatisGenConst.RSMD_COLUMN_TYPE_NAME, rsmd.getColumnTypeName(i));
map.put(MyBatisGenConst.RSMD_COLUMN_PRECISION, rsmd.getPrecision(i) + "");
map.put(MyBatisGenConst.RSMD_COLUMN_SCALE, rsmd.getScale(i) + "");
list.add(map);
}
//主键串放入list
map = new HashedMap();
map.put(MyBatisGenConst.RSMD_COLUMN_PRIMARY_KEY,pks);
list.add(map);
return list;
} catch (Exception e) {
throw new Exception(e + ",table=" + table, e);
} finally {
try {
stmt.close();
} catch (Exception e2) {
e2.printStackTrace();
}
try {
rs.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
/**
* 获取列信息。
*
* @param table