前言
前期准备请参考开发Windows物流管理系统——(一)前期准备
要特别指出的是,本项目是团队合作项目,在此仅展示自己完成的部分,剩下的请移步其它组员处:
SertonRy
马农1024
从0学习1024
实现目标
作为后端,首先需要处理前端的需求,根据需要判断逻辑,连接数据库并操作,最后返回操作的结果或者状态给前端。
数据库端的组员提供了数据库的结构,有三张表,分别是买家表,字段是UID、Password和Address;还有卖家表,字段和买家相同;最后有物流表,字段有ID、sellerID、customerID。
我主要负责数据库的删除部分,根据前端组员的需要,细化为登录方法、注册方法、查询物流表方法、更新个人信息方法。
具体代码
函数名 ResponseState delete()
public static ResponseState delete(
int role, String UID){
if((UID == null || (UID.length() != 11)) ){
return ResponseState.IncorrectUID;
}
else if(role == 1){
try {
return DatabaseOperation.deleteID("sellers", UID);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
else if(role == 0){
try {
return DatabaseOperation.deleteID("customers", UID);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return ResponseState.Error;
}
函数作用
判断商家还是用户,根据输入参数调用删除函数,实现删除功能
函数名 Response.ResponseState deleteID()
static public Response.ResponseState deleteID(String table, String UID) throws SQLException{
Connection databaseConnection = null;
PreparedStatement databaseStatement = null;
ResultSet databaseResult = null;
Response.ResponseState processState = Response.ResponseState.Error;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
databaseConnection = DriverManager.getConnection(DatabaseURL, "SA", "LMSC615");
String SQL = "delete from " + table + " where UID = ?";
databaseStatement = databaseConnection.prepareStatement(SQL,databaseResult.TYPE_SCROLL_INSENSITIVE, databaseResult.CONCUR_UPDATABLE);
databaseStatement.setString(1, UID);
databaseStatement.executeUpdate();
if ("sellers".equals(table)) {
return deletePack(UID,"sellers");
} else {
return deletePack(UID,"customers");
}
}
catch (SQLException e) {
processState = Response.ResponseState.DatabaseError;
}
catch (ClassNotFoundException e) {
processState = Response.ResponseState.DriverNotFound;
}
finally {
try {
assert databaseResult != null;
databaseResult.close();
assert databaseStatement != null;
databaseStatement.close();
assert databaseConnection != null;
databaseConnection.close();
}
catch(Exception e){
}
}
return processState;
}
static private Response.ResponseState deletePack(String UID, String type) throws SQLException{
Connection databaseConnection2 = null;
PreparedStatement databaseStatement2 = null;
ResultSet databaseResult2 = null;
Response.ResponseState processState = Response.ResponseState.Error;
try{
Class.forName("com.mysql.cj.jdbc.Driver")
databaseConnection2 = DriverManager.getConnection(DatabaseURL, "SA", "LMSC615");
String SQL2;
if ("sellers".equals(type)) {
SQL2 = "delete from packages where SellerID = ?";
}
else {
SQL2 = "delete from packages where CustomerID = ?";
}
databaseStatement2 = databaseConnection2.prepareStatement(SQL2,databaseResult2.TYPE_SCROLL_INSENSITIVE, databaseResult2.CONCUR_UPDATABLE);
databaseStatement2.setString(1, UID);
databaseStatement2.executeUpdate();
processState = Response.ResponseState.Done;
}
catch (SQLException e) {
processState = Response.ResponseState.DatabaseError;
}
catch (ClassNotFoundException e) {
processState = Response.ResponseState.DriverNotFound;
}
finally {
try {
assert databaseResult2 != null;
databaseResult2.close();
assert databaseStatement2 != null;
databaseStatement2.close();
assert databaseConnection2 != null;
databaseConnection2.close();
}
catch(Exception e){
}
}
return processState;
}
函数作用
连接数据库MySQL,根据前端的响应删除数据库表中的ID号
项目总体实现结果
注册页面
修改页面
存在的问题
这次仍旧时间紧张,整体开发流程相对复杂,但是分工合作效率较高,相对完成度较好。尤其是数据库部署在云端,方便了数据的同步,极大地提高了应用的实用性。后续可以完善物流管理系统,引入商品类型,引入更多的物流种类等等,本次项目只能实现对运单号的处理。没有其他的亮点,GUI设计还要改进。