一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。
点餐小程序的设计与实现(二)
第二章 系统设计
§2.1 系统设计方法三原则
人类在复杂的工程技术系统如能源、交通等建设方面,积累了丰富的经验,为研究复杂系统如管理系统提供了科学的指导性方法论,其主要原则如下:
(1)整体性原则。系统是相互联系,相互作用的诸要素组成的综合体。我们必须从整体和各组成部分的相互关系来考察事物,从整体目标和功能出发,正确处理系统各组成部分之间的相互关系和相互作用。
(2)分解—协调原则。就是把复杂问题化成若干相对简单的子问题以方便求解。若子系统的问题比较复杂,还可以再分。但在处理各类子问题时,必须根据系统的整体功能和目标,协调各子系统的行为、功能与目标,以保证整体功能目标的实现。
(3)目标优化原则。所谓目标优化原则对简单的系统来说,是求最优解,对复杂系统来说,求的是满意解。一定要注意,目标优化原则并不简单是求最优解的问题。
这里最需要指出的是:以上三原则是系统方法中处理复杂系统问题的三个主要原则,并非是全部原则。在处理实际问题时,还需要在这些原则的指导下,根据问题的特点,确定求解的具体方法和策略。
§2.2 系统的功能模块
点餐微信小程序主要分为登录、注册、忘记密码、首页、每日推荐、分类、门店地址、我的八大页面部分。用户可以在登录注册页面进行登录注册功能,若忘记密码可在忘记密码页面来找回密码。登陆成功后进入主页,可实现背景音乐的播放和停止。每日推荐可看到推荐的菜品,点击菜品可查看商品详情和商品加购等功能。分类包括所有商品列表,可点击进行加购。门店地址可查看门店的详细地址。我的包括我的订单、待付款、待发货、待收货、已完成、购物车等功能,点击购物车可查看自己加购的菜品以及价格。系统的功能模块图如图2-1所示。
§2.3 框架接口、组件及API
1、data:页面第一次渲染使用的初始数据。页面加载时,data将会以JSON字符串的形式由逻辑层传至渲染层,因此data中的数据必须是可以转成JSON的类型。
2、onLoad:页面加载时触发。一个页面只会调用一次,可以在onLoad的参数中获取打开当前页面路径中的参数。
3、onReady:页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
4、onShow:监听页面显示。
5、onHide:监听页面隐藏。
6、onUnload:生命周期回调—监听页面卸载。
7、getApp:获取到小程序全局唯一的App实例。
8、wx:for:控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为item 。
9、sitemap:配置小程序根目录下的sitemap.json文件用来配置小程序及其页面是否允许被微信索引。
10、window:用于设置小程序的状态栏、导航条、标题、窗口背景色。
11、pagePath:页面路径,必须在pages中先定义。
12、navigator:页面链接。
13、Success接口:调用成功的回调函数。
14、Fail接口:调用失败的回调函数。
15、setData函数:用于将数据从逻辑层发送到视图层(异步),同时改变对应的this.data的值(同步)。
16、PageObject[] getCurrentPages():获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。
17、entryPagePath:小程序默认启动首页。
18、iconPath:图片路径,icon大小限制为40kb,建议尺寸为81px*81px,当postion为top时,此参数无效。
19、selectedIconPath:选中时的图片路径,icon大小限制为40kb,建议尺寸为 81px*81px,当 postion为top时,此参数无效。
20、navigationBarFit:默认自动调整,若原页面是自定义导航栏,则为float,否则为squeezed。
21、navigationBarBackgroundColor:导航栏背景颜色。
22、navigationBarTextStyle:导航栏标题颜色。
23、navigationBarTitleText:导航栏标题文字内容。
24、selectedColor:tab上的文字选中时的颜色。
25、onShareAppMessage:用户点击右上角转发。
26、wx.navigateTo:保留当前页面,跳转到应用内的某个页面,但是不能跳到tabbar页面。
27、wx.openLocation:使用微信内置地图查看位置。
28、wx.getStorageSync:wx.getStorage的同步版本,从本地缓存中异步获取指定key的内容
29、wx.canIUse:判断小程序的API,回调,参数,组件等是否在当前版本可用。
30、wx.getSetting:获取用户的当前设置,返回值中只会出现小程序已经向用户请求过的权限。
31、wx.getUserInfo:获取用户信息。
32、wx.login:调用接口获取登录凭证。
§2.4 系统数据库设计
数据库是由多个相互关联的数据表组成,本数据库利用MySQL实现并完成数据库的设计,在本系统中包括如下:确定数据库内所有数据表的名称及表内所含字段的名称、类型、长度、主键及是否为空;确定数据库文件是否需要建立索引、是否具有外键等等。
§2.4.1 数据库表设计
推荐用户信息表(role)用于存储用户的相关信息内容,如下表所示:
| 序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
|---|---|---|---|---|---|
| 1 | username | 推荐编号 | int | 11 | 必填,非空,主键 |
| 2 | password | 推荐标题 | varchar | 32 | 必填,非空 |
| 3 | phone | 推荐简介 | varchar | 32 | 必填,非空 |
/*
SQLyog Ultimate v12.08 (64 bit)
MySQL - 8.0.18 : Database - user
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`user` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `user`;
/*Table structure for table `role` */
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `role` */
insert into `role`(`username`,`password`,`phone`) values ('zhangsan','123','7890'),('lisi','aaa','1234'),('zhengxiaoyu','123456','8703'),('zhenghuiyun','123456','1234');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
尾言
这是课设的系统设计以及部分数据库,如果觉得还不错的话,欢迎点赞收藏哦