小程序课设:万科会议室小程序的设计与实现(三)

211 阅读7分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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.1123456、123456登录成功1、2P
1.2789、123456系统提示输入错误1、4P
1.3456、123456系统提示输入错误2、3P
1.4666、999999系统提示输入错误3、4P

员工功能界面

       员工功能界面测试如表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.12020.10.1-上午未查找到该预订1、3P
1.22020.10.2.-下午修改成功1、2、4、5、6P

代码实现:

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,实现了公司员工对预订的添加、查询、修改、取消等具体功能的操作。所有功能全部都了通过测试。

       预订管理系统的主要目的是促进预订管理的信息化发展。不同于以往的人工管理、纸质记录等方式,预订管理系统能够更加快捷、高效地对预订进行增删改查的操作,能及时有效地掌握预订信息,具有极强的实用价值。

心得体会

       第一次接触到微信小程序代码的编写。。。。

尾言

       这是课设的后端设计以及部分代码,至此,整个简单的小程序课设的设计就完成了,如果觉得还不错的话,欢迎点赞收藏哦。