实验五 机票录入和查询管理的设计与实现
一、实验目的
学习 BS 模式的机票录入和查询管理界面和业务逻辑设计与实现。
二、实验内容
1.反复熟悉 Servlet 容器、web 服务器、应用服务器等软件和硬件概念,以及 tomcat 的
安装、设置、文件层次和结构。
2.通过机票录入和查询管理的设计与实现反复练习 BS 模式的界面和业务逻辑的设计与
实现,反复练习 UML 建模、数据库设计和通过 JDBC 访问数据库。
3.熟习 web 程序的发布与运行。
三、机票录入管理界面示例
四、机票查询管理界面示例
五、机票录入管理的主要参考代码
Bean 文件,操作数据库:TicketData.java
1:
package data;
2:
3:
import java.sql.*;
4:
import java.text.DateFormat;
5:
6:
public class TicketData {
7:
Connection conn = null;
8:
9:
// 取得数据库连接的方法
10:
public void setupConn() {
11:
try {
12:
if (conn == null) {
13:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
14:
// 定义SQLServer数据库的连接地址,如果是默认端口,不用定义端口
15:
String url =
"jdbc:microsoft:sqlserver://localhost:1433;databaseName=TicketC3";
16:
//
使用DriverManager类的getConnection()方法建立连接
17:
conn = DriverManager.getConnection(url, "sa", "test");
18:
System.out.println("数据库连接成功!");
19:
}
20:
} catch (Exception e) {
21:
e.printStackTrace();
22:
}
23:
}
24:
25:
// 创建飞机票的方法
26:
public int createTicket(String[] ticketArray) {
27:
int result = 0;
28:
if (ticketArray.length != 11) {
29:
return result;
30:
}
31:
// 建立连接
32:
setupConn();
33:
try {
34:
String sql = "INSERT INTO ticket VALUES(?, ?, ?, ?, ?, ?, "
35:
+ "?, ?, ?, ?, ?)";
36:
// 创建PreparedStatement接口
37:
PreparedStatement insertTicket = conn.prepareStatement(sql);
38:
// 设置添加飞机票的11个参数
39:
for (int i = 0; i < 11; i++) {
40:
insertTicket.setString(i + 1, ticketArray[i]);
41:
}
42:
// 成功添加记录,返回1
43:
result = insertTicket.executeUpdate();
44:
} catch (Exception ex) {
45:
ex.printStackTrace();
46:
}
47:
return result;
48:
}
49:
50:
// 更新飞机票的方法
51:
public int updateTicket(String[] ticketArray) {
52:
int result = 0;
53:
if (ticketArray.length != 11) {
54:
return result;
55:
}
56:
// 建立连接
57:
setupConn();
58:
try {
59:
// 第1个SCROLL_SENSITIVE参数表示反映其它用户的更新操作
60:
// 第2个CONCUR_UPDATABLE参数表示数据集可更新
61:
Statement stmt =
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
62:
ResultSet.CONCUR_UPDATABLE);
63:
String sql = "select * from ticket where airLineNumber = '"
64:
+ ticketArray[0] + "'";
65:
// 取得要修改的记录
66:
ResultSet rs = stmt.executeQuery(sql);
67:
// 不修改主键
68:
if (rs.next()) {
69:
for (int i = 1; i < 11; i++) {
70:
rs.updateString(i + 1, ticketArray[i]);
71:
}
72:
// 向数据库提交更新记录
73:
rs.updateRow();
74:
result = 1;
75:
}
76:
} catch (Exception ex) {
77:
ex.printStackTrace();
78:
}
79:
return result;
80:
}
81:
82:
// 删除飞机票的方法
83:
public int deleteTicket(String airLineNumber) {
84:
int result = 0;
85:
// 建立连接
86:
setupConn();
87:
try {
88:
Statement stmt = conn.createStatement();
89:
String sql = "delete from ticket where airLineNumber = '" +
airLineNumber
90:
+ "'";
91:
// 删除记录
92:
result = stmt.executeUpdate(sql);
93:
} catch (Exception ex) {
94:
ex.printStackTrace();
95:
}
96:
return result;
97:
}
98:
99:
// 取得全部记录的方法
100:
public String[][] getTickets() {
101:
String[][] detail = new String[0][11];
102:
// 建立连接
103:
setupConn();
104:
try {
105:
// CONCUR_READ_ONLY表示数据集不可更新
106:
Statement stmt =
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
107:
ResultSet.CONCUR_READ_ONLY);
108:
String sqlCount = "select count(*) from ticket";
109:
String sql = "select * from ticket";
110:
// 取得飞机票数据表的记录总数
111:
ResultSet rs = stmt.executeQuery(sqlCount);
112:
int count = 0;
113:
if (rs.next()) {
114:
count = rs.getInt(1);
115:
}
116:
// 重新创建数组
117:
detail = new String[count][11];
118:
// 取得飞机票数据表的全部记录
119:
rs = stmt.executeQuery(sql);
120:
int i = 0;
121:
// 将记录加入数组
122:
while (rs.next()) {
123:
for (int j = 0; j < 11; j++) {
124:
detail[i][j] = rs.getString(j + 1);
125:
}
126:
// 删除微秒
127:
detail[i][3] = detail[i][3].substring(0,
detail[i][3].indexOf("."));
128:
detail[i][4] = detail[i][4].substring(0,
detail[i][4].indexOf("."));
129:
i++;
130:
}
131:
} catch (Exception ex) {
132:
ex.printStackTrace();
133:
}
134:
return detail;
135:
}
136:
137:
// 检查日期的方法
138:
public int checkDateTime(String dateStr) {
139:
int result = 0;
140:
// 创建日期格式的DateFormat类
141:
DateFormat dateFormat1 = DateFormat.getDateInstance();
142:
// 创建日期时间格式的DateFormat类
143:
DateFormat datetimeFormat1 = DateFormat.getDateTimeInstance();
144:
try {
145:
if (dateStr.length() < 11) {
146:
dateFormat1.parse(dateStr);
147:
} else {
148:
datetimeFormat1.parse(dateStr);
149:
}
150:
result = 1;
151:
} catch (Exception ex) {