(微信小程序毕业设计)护肤品商城的设计与实现(附源码+论文)

大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:微信小程序毕业设计
精彩专栏推荐👇🏻👇🏻👇🏻
🎀 安卓app毕业设计
🌎Java毕业设计

一、项目简介

本课题题目是基于微信平台的护肤品商城小程序设计与实现。本文从系统开发环境、系统目标、设计流程、功能设计等几个方面进行系统的总体设计,详细阐述了一个功能较完善的护肤品商城系统的前后台开发、操作流程和涉及的一些关键技术。介绍了系统的需求分析,系统分析,具体完成了数据流分析,数据字典功能模块的划分,数据库的设计和界面设计。最后对系统进行了测试分析,以保证其性能的稳定性和功能的完整性。

二、系统设计

2.1软件功能模块设计

系统架构图属于系统设计阶段,系统架构图只是这个阶段一个产物,系统的总体架构决定了整个系统的模式,是系统的基础。基于微信小程序的项目设计的整体结构设计如图4-7所示。
在这里插入图片描述

2.2数据库设计

数据库中需要存储用户及各个模块子功能等基本信息以及用户的历史行为信息,这些信息将会被展示在应用端的用户界面上并且会被用于进行数据分析。在该数据概念设计过程中,我们使用了实体联系模型(EntityRelationship Model,简称ER模型)来确定系统实体(Entity)、实体的属性(attribute)以及实体间的联系(relationship)

三、系统项目部分截图

3.1系统主界面

用户进入小程序后,便可看到程序的主界面,具体如图5-1所示。界面中首先展示的主题图画,中间部分可以选择分类,用户还可以进行关键字搜索。下部是具体商品的展示。底部是标签页。在这里插入图片描述

3.2商品展示界面

在商品展示界面中,当用户点击某一项具体商品信息时,将进入商品的具体界面,包含商品名,图片,商品介绍,价格等信息,如图5-2所示。用户可以加入购物车,可以收藏,可以进行评论。在这里插入图片描述

购物车管理界面
在购物车管理界面中,用户可以看到自己加入购物车的内容,有数量和总价显示,用户可以增减,也可以最终提交,如图5-3所示。在这里插入图片描述

3.3订单管理界面

在订单管理界面,显示各个订单信息,其中订单状态包含:待付款、待发货、已发货、待评价、已完成等,对各类订单可以分类展示,如图5-4所示。在这里插入图片描述

3.4 后台管理界面

在后台管理界面,包含信息分类管理、商品管理、订单管理、资讯管理、优惠券管理等,如图5-6所示。在这里插入图片描述

四、论文目录

1 概述 1
1.1课题背景及意义 1
1.2 国内外研究现状 2
1.3 本论文组织结构 4
2 系统开发环境 5
2.1微信小程序相关技术 5
2.2微信小程序文件目录 6
2.3小程序页面文件构成 9
2.4微信小程序 API 接口 9
3 系统分析 11
3.1 可行性分析 11
3.1.1 技术可行性 11
3.1.2操作可行性 11
3.1.3 经济可行性 11
3.1.4 法律可行性 12
3.2系统流程分析 12
3.2.1系统开发流程 12
4 开发环境和系统设计 12
4.1系统开发环境搭建 13
4.1.1 微信小程序的注册 13
4.1.2 微信小程序开发工具的安装 14
4.1.3 微信小程序开发工具的安装 15
4.2 系统概述 16
4.2.1 系统结构设计 17
4.3数据库设计 18
5统详细设计 19
5.1系统主界面 19
5.2商品展示界面 19
5.3购物车管理界面 20
5.4订单管理界面 21
5.5个人信息管理界面 22
5.6后台管理界面 23
6系统测试 25
6.1系统测试的意义 25
6.2 测试方法 26
6.3测试分析 26
结 论 27
致 谢 28
参考文献 29

五、部分核心代码

4.1 项目配置文件

{
	"description": "项目配置文件。",
	"setting": {
		"urlCheck": false,
		"es6": true,
		"enhance": false,
		"postcss": true,
		"preloadBackgroundData": false,
		"minified": true,
		"newFeature": true,
		"coverView": true,
		"nodeModules": false,
		"autoAudits": false,
		"showShadowRootInWxmlPanel": true,
		"scopeDataCheck": false,
		"uglifyFileName": false,
		"checkInvalidKey": true,
		"checkSiteMap": true,
		"uploadWithSourceMap": true,
		"compileHotReLoad": false,
		"useMultiFrameRuntime": true,
		"useApiHook": true,
		"babelSetting": {
			"ignore": [],
			"disablePlugins": [],
			"outputPath": ""
		},
		"enableEngineNative": false,
		"useIsolateContext": true,
		"useCompilerModule": true,
		"userConfirmedUseCompilerModuleSwitch": false,
		"packNpmManually": false,
		"packNpmRelationList": [],
		"minifyWXSS": true,
		"bundle": false,
		"useApiHostProcess": true
	},
	"compileType": "miniprogram",
	"libVersion": "1.9.1",
	"appid": "wxccfbd7e35d025f9b",
	"projectname": "wechatapp",
	"isGameTourist": false,
	"simulatorType": "wechat",
	"simulatorPluginLibVersion": {},
	"condition": {
		"search": {
			"list": []
		},
		"conversation": {
			"list": []
		},
		"game": {
			"currentL": -1,
			"list": []
		},
		"miniprogram": {
			"list": []
		}
	}
}

4.2 服务器端部分

<?php
namespace app\index\controller;
use think\Db;
use think\facade\Env;

class Client
{
    public function hello()
    {
        $list = Db::name('user')->select();
        return json_encode($list);
    }

    /************************************************************通用数据库操作**********************************/
    public function listPageObj(){
        //Load('extend');
        $table =$_REQUEST['table'];
        $model = Db::name($table);
        $page=$_REQUEST["page"];
        $rows=10;
        if (array_key_exists("limit",$_REQUEST)){
            $rows = $_REQUEST['limit'];
        }
        if (array_key_exists("rows",$_REQUEST)){
            $rows = $_REQUEST['rows'];
        }
        $orderarray = array("id"=>"desc");
        if (array_key_exists("order",$_REQUEST)){
            $order = $_REQUEST['order'];
            $sort = $_REQUEST['sort'];
            if ($sort){
                $orderarray = array($sort=>$order);
            }
        }

        $condition = $this->getCondition($model,true);
        $count = $model->where($condition)->count(); //计算总数
        //$p = new Page($count,$rows);order($sort+','+$order)->
        $resobj['code'] = 0;
        if($count > 0){
            $list = $model->where($condition)->page($page,$rows)->order($orderarray)->select();
            //dump($list);
            $resobj['rows'] = $list;
            $resobj['data'] = $list;
            $resobj['total'] = $count;
        }
        //$resobj['esql'] = $model->getLastSql();
        return $resobj;
    }

    public function listPage(){
        $this->renderObj($this->listPageObj());
    }


    function saveJ(){
        $this->render($this->saveObj());
    }

    function save(){
        echo $this->saveObj();
    }

    function saveObj(){
        $table = $_REQUEST['table'];
        $model = Db::name($table);
        $data = $this->getData4Request($model);
        if (array_key_exists("ndate",$data)){
            $ndate = $data['ndate'];
            if (!$ndate){
                $data['ndate'] = date('Y-m-d H:mm:ss');
            }
        }
        if (array_key_exists("id",$data)){
            $id = $_REQUEST['id'];
            if ($id){
                $model->update($data);
            }
        } else{
            $id = $model->insertGetId($data);
        }
        return $id;
    }

    function saveWithFile(){
        $table = $_REQUEST['table'];
        $model = Db::name($table);
        $data = $this->getData4Request($model);
        $data['img'] = $this->uploadFile();
        if (array_key_exists("id",$data)){
            $id = $_REQUEST['id'];
            if ($id){
                $model->update($data);
            }
        } else{
            $id = $model->insertGetId($data);
        }
        return $id;
    }

    function deleteJ(){
        $this->deleteObj();
        $this->render("0");
    }

    function delete(){
        $this->deleteObj();
        echo "0";
    }

    function deleteObj(){
        $table = $_REQUEST['table'];
        $model = Db::name($table);
        if (array_key_exists("id",$_REQUEST)){
            $id = $_REQUEST['id'];
            if ($id){
                $condition['id'] = $id;
                $model->where($condition)->delete();
            }
        }

    }

    function listObj(){
        $table = $_REQUEST['table'];
        $model = Db::name($table);
        $condition = $this->getCondition($model);
        $orderarray = array("id"=>"desc");
        if (array_key_exists("order",$_REQUEST)&&array_key_exists("sort",$_REQUEST)){
            $order = $_REQUEST['order'];
            $sort = $_REQUEST['sort'];
            $orderarray = array($sort=>$order);
        }
        $list = $model->where($condition)->order($orderarray)->select();
        return $list;

    }

    function listSqlObj(){
        $sql = $_REQUEST['sql'];
        $result = Db::query($sql);
        return $result;
    }

    function listSqlJ(){
        $this->renderJsonpObj($this->listSqlObj());
    }

    function listSql(){
        echo json_encode($this->listSqlObj());
    }

    function updateSqlObj(){
        $sql = $_REQUEST['sql'];
        $result = Db::execute($sql);
        return $result;
    }

    function updateSqlJ(){
        $this->render($this->updateSqlObj());
    }

    function updateSql(){
        echo $this->updateSqlObj();
    }

    function listJ(){
        $this->renderJsonpObj($this->listObj());
    }

    function listAll(){
        echo json_encode($this->listObj());
    }

    function getCondition($model,$islike=true){
        $fields = $model->getTableFields();
        $condition = array();
        for ($i=0;$i<count($fields);$i++){
            $field = $fields[$i];
            if(array_key_exists($field,$_REQUEST)){
                $v = $_REQUEST[$field];
                if ($v){
                    if ($islike && $field!='id'){
                        array_push($condition,[$field,'like','%'.$v.'%']);
                    }else{
                        //$condition[$field] = $v;
                        array_push($condition,[$field,'eq',$v]);
                    }
                }
            }
        }
        return $condition;
    }

    function getData4Request($model){
        $fields = $model->getTableFields();
        $condition = array();
        for ($i=0;$i<count($fields);$i++){
            $field = $fields[$i];
            if(array_key_exists($field,$_REQUEST)){
                $v = $_REQUEST[$field];
                if ($v){
                    $condition[$field] = $v;
                }
            }
            if ($field=="ndate"){
                $condition[$field] = date('Y-m-d H:m:s');
            }
        }
        return $condition;
    }

    function findJ(){
        $this->renderJsonpObj($this->findObj());
    }

    function find(){
        $this->renderObj($this->findObj());
    }

    function findObj(){
        $table = $_REQUEST['table'];
        $model = Db::name($table);
        $condition = $this->getCondition($model);
        $obj = $model->where($condition)->find();
        return $obj;
    }

    public function upload(){
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('file');
        // 移动到框架应用根目录/uploads/ 目录下
        $info = $file->rule('uniqid')->move( '../public/static/upload');
        if($info){
            // 成功上传后 获取上传信息
            // 输出 jpg
            //echo $info->getExtension();
            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            //echo $info->getSaveName();
            // 输出 42a79759f284b767dfcb2a0197904287.jpg
            echo $info->getFilename();
        }else{
            // 上传失败获取错误信息
            echo $file->getError();
        }
    }

    public function uploadFile(){
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('file');
        if ($file){
            // 移动到框架应用根目录/uploads/ 目录下
            $info = $file->rule('uniqid')->move( '../public/static/upload');
            if($info){
                // 成功上传后 获取上传信息
                // 输出 jpg
                //echo $info->getExtension();
                // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
                //echo $info->getSaveName();
                // 输出 42a79759f284b767dfcb2a0197904287.jpg
                return $info->getFilename();
            }
        }
        return null;

    }

    public function editorUpload(){
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('file');
        // 移动到框架应用根目录/uploads/ 目录下
        $info = $file->rule('uniqid')->move( '../public/static/upload');
        $robj['errno'] = 0;

        if($info){
            // 成功上传后 获取上传信息
            // 输出 jpg
            //echo $info->getExtension();
            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            //echo $info->getSaveName();
            // 输出 42a79759f284b767dfcb2a0197904287.jpg
            $fileName =  $info->getFilename();
            $data = array();
            array_push($data,"upload/".$fileName);
            $robj['data'] = $data;
            $this->renderObj($robj);
        }else{
            // 上传失败获取错误信息
            echo $file->getError();
        }
    }

    public function download()
    {
        $fileName = $_REQUEST['fileName'];
        $filepath = '../public/static/upload/'.$fileName;
        if(file_exists($filepath)){
            header("Content-type:application/octet-stream");
            header("Content-Disposition:attachment;filename = ".$fileName);
            header("Accept-ranges:bytes");
            header("Accept-length:".filesize($filepath));
            readfile($filepath);
        }else{
            $this->success("下载失败");
        }

    }
    /************************************************************通用数据库操作end**********************************/


    public function render($msg){
        $result['info'] = $msg;
        $result = json_encode($result);
        $callback = $_GET['callback'];
        echo $callback."($result)";
    }

    public function renderJsonpObj($obj){
        $result = json_encode($obj);
        $callback = $_GET['callback'];
        echo $callback."($result)";
    }

    function renderObj($obj){
        echo json_encode($obj);
    }

    public function getWeather(){
        $city = $_REQUEST['city'];
        //$city = utf8_encode($city);
        $url = "http://api.map.baidu.com/telematics/v3/weather?location=$city&output=json&ak=W6eQXHTZjNf7QTG9k9Mpboez";
        $html = file_get_contents($url);
        $this->render($html);
    }

    public function httpGet($url) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 500);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_URL, $url);
        $res = curl_exec($curl);
        curl_close($curl);
        return $res;
    }

    public function createQrcode(){
        $qrCode = new \Endroid\QrCode\QrCode();
        $qrCode->setText("我是你老公");
        $qrCode ->setSize(300);
        $qrCode ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0));
        $qrCode->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0));
        //$qrCode->setLabel('ToBeWithYou');
        $qrCode ->setLabelFontSize(16);

        //建立一个存放二维码路径 我在public下建立文件夹er

        $qrCode->writeFile(Env::get('ROOT_PATH').'public/static/upload/testqrcode.jpg');
    }
}


获取源码或论文

如需对应的源码,可以评论或者私信都可以。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值