今天是复习这个项目的第一天,从开机开始能利用的时间还有4个小时,直接开始干!
首先分析项目的需求,先从用户端开始
登录与注册:
用户登录/注册需要输入手机号以及密码并且需要向管理员展示真实姓名那我们新建一个user表字段分别为name、pnumber以及password其中pnumber为主键
用户的汽车管理中心:
用户需要查看自己的汽车、保养记录、以及管理员给出的保养建议并且可以向管理员发送消息,这里我们新建四个表分别为car、suggest_info、history_info、history_msg
car表:
car表中包含carid(用来查找车)、carname(用来展示给用户)、meter(里程数)、volume(排量)、protime(生产时间)、buytime(购买日期)、owner(用于匹配车主的手机号)
suggest_info表:
suggest_info表包含suggest_id(建议的id)、suggest_car_id(用于匹配车辆)、suggest(建议的内容)、suggest_time(建议的时间)
history_info表:
history_info表包含history_id(历史记录的id)、history_car_id(用于匹配车辆的id)、histroy(保养记录内容)、history_maintime(保养时间)
history_msg表:
history_msg表包含history_msg_id(消息的id)、history_user_id(用于匹配用户的id)、history_message_admin(管理员给用户的消息)、history_message_user(用户给管理员的消息)、history_msgtime(消息时间)、available_user(用户是否查看)、available_admin(管理员是否查看)
管理员部分:
管理员也需要登录,这里只需要建一张admin表给一个account字段和一个password字段即可
管理员对公告的管理:
公告需要分四个栏目,每个栏目有不同的内容,那么这里就需要两张表notice、以及column_info
notice表:
notice表包括notice_id(公告的id)、column_id(用于匹配公告栏目)、title(标题)、content(内容)、time(发布日期)
column_info表:
column_info表包括id_column(公告栏目的id)、column_name(公告栏目名)
那么到这里表的建立工作就完成了(本人才疏学浅,这里只用了很普通的联表查询甚至没给外键。。。。)
那么我们来看一下表结构
接下来是激动人心的新建文件夹环节:
首先在Eclipse里面新建一个动态web项目并且引入tomcat8.0
把写好的JDBC文件并将jar包导入到WEB-INF/lib目录下
在WebContent目录下新建一个名为resouce的文件并在里面建立三个文件夹js、css、images,随后在WEB-INF目录下新建一个page文件夹
在Java Resouces的src下新建com.carmanage.db、com.carmanage.filter、com.carmanage.servlet三个包
到这里我们的项目结构就完善了
接下来在WebContent目录下新建一个index.html文件并启动服务器看看效果
成功启动,开始完善首页
个人不喜欢前端的内容,当时做这些页面也挺折磨的,这里直接Copy了,主要写jquery和servlet的逻辑
在js文件夹中导入jquery
由于这个页面后续会根据是否登录来判断是否可以进入个人中心和去掉注册和登录选项并改成登出,所以这里top中的内容都用jquery拼接进去
代码如下
$(function(){
$(".top").append(
"汽车保养管家系统"+
"个人中心"+
"登录"+
"注册"
)
})
效果展示如下:
接下来要完成的是MysqlUtils以及DBConnection两个java文件其中关于json的方法是直接复制的(也是今天最后一个内容,剩下的时间还要做别的事)
首先是DBConnection
1、定义需要的属性
package com.carmanage.db;
import java.sql.Connection;
public class DBConnection {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/carmanage?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false";
String user = "root";
String password = "2020";
public Connection conn;
}
写一个连接数据库的方法
public DBConnection() {
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
还有一个关闭连接的方法
public void close() {
try {
this.conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
这样我们的DBConnection文件就完成了
下面是MysqlUtils
添加方法
public static int add(String sql) {
int i=0;
//数据库连接
DBConnection db = new DBConnection();
try {
PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(sql);
preStmt.executeUpdate();
preStmt.close();
db.close();//关闭连接
i = 1;
//用于记录和查看错误
System.out.println("数据插入成功,sql语句是:" + sql);
} catch (Exception e) {
e.printStackTrace();
}
return i;//返回影响的行数,1为执行成功;
}
修改方法
public static int update(String sql) {
int i =0;
DBConnection db = new DBConnection();
try {
PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(sql);
preStmt.executeUpdate();
preStmt.close();
db.close();
i = 1;
System.out.println("数据更新成功,sql语句是:" + sql);
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
删除方法
public static int del(String delstr) {
int i=0;
DBConnection db = new DBConnection();
try {
PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(delstr);
preStmt.executeUpdate();
preStmt.close();
db.close();
i = 1;
System.out.println("数据删除成功,sql语句是:" + delstr);
} catch (SQLException e){
e.printStackTrace();
}
return i;
}
查询数量方法
public static int getCount(String sql) {
int sum = 0;
DBConnection db = new DBConnection();
try {
Statement stmt = (Statement) db.conn.createStatement();
ResultSet rs = (ResultSet) stmt.executeQuery(sql);
while (rs.next()) {
sum += rs.getInt(1);
}
rs.close();
db.close();
} catch (Exception e) {
// TODO: handle exception
}
return sum;
}
获取Json的方法
public static String getJsonBySql(String sql,String[] colums){
System.err.println("标红信息展示sql:" + sql);
ArrayList result = new ArrayList();
DBConnection db = new DBConnection();
try {
Statement stmt = (Statement) db.conn.createStatement();
ResultSet rs = (ResultSet) stmt.executeQuery(sql);
while(rs.next()){
String[] dataRow = new String[colums.length];
for( int i = 0; i < dataRow.length; i++ ) {
dataRow[i] = rs.getString( colums[i] );
}
result.add(dataRow);
}
rs.close();
db.close();
} catch (SQLException e) {
e.printStackTrace();
}
return listToJson(result,colums);
}
public static String listToJson( ArrayList list,String[] colums) {
String jsonStr = "{"code":0,"msg":"成功了","data":[";
for(int i = 0; i < list.size(); i++) {
String arr = "{";
for( int j = 0; j < list.get(0).length; j++) {
if( list.get(i)[j] == null || "NULL".equals(list.get(i)[j])) {
arr += """ + colums[j] + "":""";
}else {
arr += """ + colums[j] + """+":" ;
arr += """ + list.get(i)[j].replace(""","\"") + """;
}
if( j < list.get(0).length - 1 ) {
arr += ",";
}
}
arr += "}";
if( i < list.size() - 1 ) {
arr += ",";
}
jsonStr += arr;
}
jsonStr += "]}";
return jsonStr;
}
查询方法
public static ArrayListshowUtil( String sql, String[] colums){ ArrayList result = new ArrayList (); DBConnection db = new DBConnection(); try { Statement stmt = (Statement) db.conn.createStatement(); ResultSet rs = (ResultSet) stmt.executeQuery(sql); while(rs.next()){ String[] dataRow = new String[colums.length]; for( int i = 0; i < dataRow.length; i++ ) { dataRow[i] = rs.getString( colums[i] ); } result.add(dataRow); } rs.close(); db.close();// } catch (SQLException e) { e.printStackTrace(); } return result; }
到这里就完成了DBConnection和MysqlUtils
以上就是今天的全部进度,还有六天时间,接下来四天时间比较少,有的时候只能写一两个功能,尽量按时完成!!



