首先说出我的思路,当时自己在学校社团任职,需要每一周为社团活动占领教室以供于社团成员进行教学活动,每次申请教室的步骤比较麻烦,我就希望需要一个软件或者是一个小程序可以比较的容易申请到教室,就在老师布置作业的时候就想做一个简单的占领教室的小程序,以简单步骤就可以占领教室,也避免资源浪费。对于下列很多的想法,还未付诸实践,只是先记录自己的想法
一.一定要明确自己的思路,首先,分级,根据如下图所示,这只是简单等级划分,一次申请,需要至少三等权限的同意,才允许申请request会向更上一级传递,最后上层触发查询,产生回应response,从而达到准确教室信息
二,验证登录人身份信息,每个学校都会有全体教职工和师生的身份信息,实行学号和密码登录,学号为个人所拥有学号,原始密码为自己身份证信息后六位,登录验证后台数据库时,得到后台反应为正确方可允许登录到首页页面,这是我设定的简单数据库,no和pwd为了方便都是Varchar类型,对应后端类型String,只有在小程序登录界面中,输入正确的账号加密码,才可以实现登录
数据库名称:test 表名称:shows
输入错误账号密码,显示弹窗,输入有误!!!
三,登录操作后端代码
编码常用:因为这次设立简单,没有创多数层,但有需要可以参照以下的方式
第一步连接本机数据库,我的账号密码时root,123456;有区别的需要改
package sxdx;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseBAO {
private static Connection conn;
// private String driver = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
private ResultSet cs = null;
static{
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
System.out.println("连接成功");
}
}
public static Connection getConn(){
try {
conn= DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (Exception e) {
}
return conn;
}
public static void closeConn(){
if(BaseBAO.conn !=null){
try {
BaseBAO.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
第二步,根据自己所创建的表,设立对应的字段
package sxdx;
public class Product {
private String no;
private String pwd;
public Product(){
}
public String getNo(){
return no;
}
public void setNo(String no){
this.no=no;
}
public String getPassword(){
return pwd;
}
public void setPassword(String password){
this.pwd=password;
}
}
第三步,这一步是收到微信小程序的申请,并向数据库后端发送收到数据并验证
package sxdx;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Writer;
@WebServlet("/Servlet01")
public class Servlet01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/json;charset=utf-8");
BaseDAO user = new BaseDAO();
String no=request.getParameter("no");
System.out.println("学号="+no);
String pwd=request.getParameter("pwd");
System.out.println("密码="+pwd);
Writer out = response.getWriter();
//loginUser注册用户
if(user.loginUser(no, pwd)){//前段发送过来的账号密码如果在数据库中查询得到,返回{'code':10000},
out.write("{'code':10000}");
out.flush();
out.close();
}
else{//没有查询到数据,返回F
out.write("F");
}
}
}
第四步,这一步大概也许是查询,时间久了,忘记了
package sxdx;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDAO {
public static boolean loginUser(String no, String pwd) {
Connection conn = BaseBAO.getConn();
String sql = "select * from `shows` where no=? and pwd=?";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,no);
ps.setString(2,pwd);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
return true;
} else {
System.out.println();
return false;
}
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
BaseBAO.closeConn();
}
}
//这个方法接受的是一个String数组,对于int类型的对象不给予接受,甚至报错
public static void main(String[] args) { loginUser("","");
}
}
以上大概就是登录页面的设计
三,程序页面的设计,首先分为四个板块:首页,申请,消息,个人中心
1,首页的设计,要做的比较亮眼,最好是一眼就能吸引人的那种,最好能有印象,当时设计比较喜欢古风,分别沿用古风的文字字体与图标,背景图片采用梅兰竹菊
2,第二页面,是查询,就是本微信小程序最难的地方,需要连接大量数据库(这个版面,还未完善,这是个静态界面,只能点击,没有响应)
3,消息,只要发出申请后,得到回应就会有消息,显示上级允许或者不允许,或者允许后,教室的安排
4,个人中心,包含个人照片,权限等级等等信息
大概到这里,有想法之后会继续来补充
微信小程序代码,我会放到git仓库,有需要的可以下载,界面设计不咋样,看看就行
github地址:https://github.com/ct02-hue/test12