一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情。
系统实体类设计
1.登录界面 login
此界面是用户输入用户名,密码的界面;
2.注册界面register
用户注册用户名,用户密码的界面。
3.主要界面 pages
主要储存主界面和分界面的设计
系统接口设计
1.数据库中数据操作
(1)“数据库操作”接口:wx.swtichtab
2.程序中的数据操作
(1)“图书的功能操作”接口:pages
该接口具有的方法如下:
Login()方法用于检查管理员输入的用户名与密码是否匹配数据库中的管理员信息,从而确定能否登录系统。
系统接口实现类设计
1.用户使用登录层接口:login,用户使用登录层接口类是login / login.wxml。
2.用户使用注册层接口:regieter,用户使用注册层接口类是index/index.wxml。
3.用户使用主层接口:pages,用户使用注册层接口类是pages
系统测试
为了更好的完成每个模块的功能测试,运用到了单元测试等一系列的方法。本系统的测试主要采用黑盒测试中的功能测试,测试用例设计采用等价类划分进行设计。
功能测试结果
员工登录
员工登录功能测试如表4-1、表4-2、表4-3所示:
表4-1 登录描述
| 用例编号 | 101 |
|---|---|
| 功能名称 | 员工登录 |
| 功能描述 | 用于判断、员工登录信息 |
| 测试方法 | 黑盒测试 |
表4-2登录等价类划分
| 输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
|---|---|---|---|---|
| 用户名 | 用户名正确 | 1 | 用户名有误 | 3 |
| 密码 | 密码输入正确 | 2 | 密码输入有误 | 4 |
表4-3测试用例设计
| 用例编号 | 测试数据 | 预期结果 | 覆盖范围 | 是否通过 |
|---|---|---|---|---|
| 1.1 | 123456、123456 | 登录成功 | 1、2 | P |
| 1.2 | 789、123456 | 系统提示输入错误 | 1、4 | P |
| 1.3 | 456、123456 | 系统提示输入错误 | 2、3 | P |
| 1.4 | 666、999999 | 系统提示输入错误 | 3、4 | P |
员工功能界面
员工功能界面测试如表4-4所示:
表4-4员工功能界面测试
| 用例编号 | 102 | 功能名称 | 查看各个功能 | |
|---|---|---|---|---|
| 功能描述 | 是否能查看到各个功能 | |||
| 测试步骤 | 登录主页面 | 输入用户名、密码进行登录 | ||
| 浏览 | 是否能查看到各个功能 | |||
| 测试结果 | 通过 | 发现问题 | 无 | |
添加预订
添加预订功能测试如表4-5所示:
表4-5添加预订功能测试
| 用例编号 | 103 | 功能名称 | 添加预订 | |
|---|---|---|---|---|
| 功能描述 | 员工在添加界面添加预订 | |||
| 测试步骤 | 登录主页面 | 输入用户名、密码进行登录 | ||
| 添加预订 | 能否在数据库里查询到该预订 | |||
| 测试结果 | 通过 | 发现问题 | 无 | |
查询预订信息
查询预订信息界面测试如表4-6所示:
表4-6查询所有预订功能测试
| 用例编号 | 104 | 功能名称 | 查询所有预订信息 |
|---|---|---|---|
| 功能描述 | 员工查询数据库中的所有预订信息 | ||
| 测试步骤 | 登录主页面 | 输入用户名、密码进行登录 | |
| 输出 | 界面显示所有数据库中存储预订的信息 | ||
| 测试结果 | 通过 | 发现问题 | 无 |
修改预订
修改预订功能界面测试如表4-7、表4-8、表4-9所示:
表4-7修改预订信息功能测试
| 用例编号 | 105 | 功能名称 | 员工修改预订 |
|---|---|---|---|
| 功能描述 | 员工修改数据库中的预订 | 测试方法 | 黑盒测试 |
表4-8等价类划分****
| 输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
|---|---|---|---|---|
| 要修改的预订时间 | 输入要修改的预订编号 | 1 | 编号输入错误 | 3 |
| 修改后的预订时间 | 输入修改后的预订时间 | 2 |
表4-9测试用例设计
| 用例编号 | 测试数据 | 预期结果 | 覆盖范围 | 是否通过 |
|---|---|---|---|---|
| 1.1 | 2020.10.1-上午 | 未查找到该预订 | 1、3 | P |
| 1.2 | 2020.10.2.-下午 | 修改成功 | 1、2、4、5、6 | P |
代码实现:
database.java
package com.vdy.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.vdy.entity.NavInfo;
import com.vdy.entity.ShopInfo;
public class DataBase {
public static String url="jdbc:mysql:///cpxs?characterEncoding=utf-8";
public static String user="root";
public static String password="root";
public static String driver="com.mysql.jdbc.Driver";
public static Connection conn=null;
public static PreparedStatement ps=null;
public static ResultSet rs=null;
public DataBase(){
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ResultSet getResult(String sql){
try {
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
public void executeDML(String sql){
try {
ps=conn.prepareStatement(sql);
ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ResultSet getResult(String sql, Object[] param){
try {
ps = conn.prepareStatement(sql);
if(param != null){
for(int i=0;i<param.length;i++){
ps.setObject(i+1, param[i]);
}
}
rs=ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public void exeuteDml(String sql,Object[] param){
try {
ps = conn.prepareStatement(sql);
if(param != null){
for(int i=0;i<param.length;i++){
ps.setObject(i+1, param[i]);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void closeDd(){
try {
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<NavInfo> getNav() {
// TODO Auto-generated method stub
return null;
}
public ArrayList<ShopInfo> addCart(String id) {
// TODO Auto-generated method stub
return null;
}
}
UserInfo.java
package com.vdy.entity;
public class UsersInfo {
private int usersid;
private String usersname;
private String userspwd;
private String nickname;
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getUsersid() {
return usersid;
}
public void setUsersid(int usersid) {
this.usersid = usersid;
}
public String getUsersname() {
return usersname;
}
public void setUsersname(String usersname) {
this.usersname = usersname;
}
public String getUserspwd() {
return userspwd;
}
public void setUserspwd(String userspwd) {
this.userspwd = userspwd;
}
}
UserInfoDao.java
package com.vdy.dao;
import com.vdy.entity.UsersInfo;
public interface UsersInfoDAO {
public UsersInfo login(String name, String pwd) throws Exception;
/**
*
* @param loginname
* @param pwd
* @param nickname
* @return
*/
public int reg(String loginname, String pwd,String nickname);
}
UserInfoDaoImpl.java
package com.vdy.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.vdy.dao.BaseDAO;
import com.vdy.dao.UsersInfoDAO;
import com.vdy.entity.UsersInfo;
public class UsersInfoDAOImpl implements UsersInfoDAO {
BaseDAO bdao = new BaseDAO();
public static void main(String[] args) {
try {
System.out.println(new UsersInfoDAOImpl().login("vnndy", "123"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public UsersInfo login(String name, String pwd) throws Exception {
UsersInfo usersinfo = null;
try {
Connection conn = bdao.getConnection();
String sql = "select * from usersinfo where usersname=? and userspwd=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1, name);
ps.setObject(2, pwd);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
usersinfo = new UsersInfo();
usersinfo.setUsersid(rs.getInt("usersid"));
usersinfo.setUsersname(rs.getString("usersname"));
usersinfo.setUserspwd(rs.getString("userspwd"));
usersinfo.setNickname(rs.getString("nickname"));
}
bdao.close(rs, ps, conn);
} catch (Exception ex) {
throw ex;
}
return usersinfo;
}
@Override
public int reg(String loginname, String pwd, String nickname) {
int r = -1;
try {
Connection conn = bdao.getConnection();
String sql = "insert into usersinfo(UsersName,UsersPwd,nickname) values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1, loginname);
ps.setObject(2, pwd);
ps.setObject(3, nickname);
r = ps.executeUpdate();
// bdao.close(null, ps, conn);
} catch (Exception ex) {
ex.printStackTrace();
}
return r;
}
}
UserServlet.java
package com.vdy.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 com.vdy.dao.UsersInfoDAO;
import com.vdy.dao.impl.UsersInfoDAOImpl;
import com.vdy.entity.UsersInfo;
@WebServlet("/UsersServlet")
public class UsersServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String op = request.getParameter("op");
String nickname = request.getParameter("nickname");
System.out.println("nickname:------"+nickname);
switch (op) {
case "login":
login(request, response);
break;
case "reg":
reg(request, response);
break;
}
}
UsersInfoDAO udao = new UsersInfoDAOImpl();
// 901 //902 //903
public void login(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("username");
String pwd = request.getParameter("password");
try {
UsersInfo u = udao.login(name, pwd);
if (u != null) {
out.print("{\"msg\":\"OK\",\"usersid\":\"" + u.getUsersid()
+ "\",\"nickname\":\"" + u.getNickname() + "\"}");
} else {
out.print("{\"msg\":\"ERROR\"}");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void reg(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String loginname = request.getParameter("loginname");
String pwd = request.getParameter("loginpwd");
String nickname = request.getParameter("nickname");
System.out.println(loginname);
System.out.println(pwd);
System.out.println(nickname);
int r = udao.reg(loginname, pwd, nickname);
if (r > 0) {
out.print("{\"msg\":\"OK\"}");
} else {
out.print("{\"msg\":\"ERROR\"}");
}
}
}
课程设计总结
本文按照移动开发技术设计方法,实现了一个会议室预订管理系统,本系统采用JDBC技术[14],数据库MySQL,开发工具MyEclipse,实现了公司员工对预订的添加、查询、修改、取消等具体功能的操作。所有功能全部都了通过测试。
预订管理系统的主要目的是促进预订管理的信息化发展。不同于以往的人工管理、纸质记录等方式,预订管理系统能够更加快捷、高效地对预订进行增删改查的操作,能及时有效地掌握预订信息,具有极强的实用价值。
心得体会
第一次接触到微信小程序代码的编写。。。。
尾言
这是课设的后端设计以及部分代码,至此,整个简单的小程序课设的设计就完成了,如果觉得还不错的话,欢迎点赞收藏哦。