最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

畢業(yè)設(shè)計:微信小程序健康管理系統(tǒng)的開發(fā)與實現(xiàn)

2022-08-17 16:36 作者:指南針畢業(yè)設(shè)計  | 我要投稿


項目編號:BS-XCX-006

一,項目簡介

信息化技術(shù)在目前的中國,己得到普遍應(yīng)用,涉及到民生的各個方面和角度,教育上的信息化應(yīng)用、醫(yī)療上的信息改革、交通上的信息化普及等等,業(yè)己顯示中國在向科技強國的方向前進。

?? ?中國經(jīng)濟水平的提升也讓中國人民的日子富裕起來了,富裕生活的開始也讓老百姓的健康生活日益重視起來了,對健康知識的渴求,對健康體檢的要求也越來越多。如何利用現(xiàn)代化技術(shù)手段,基于移動互聯(lián)網(wǎng)技術(shù),讓老百姓更加方便快捷的獲得健康知識,方便進行在線預(yù)約體檢,這就是本系統(tǒng)要著重解決的問題。

??? 經(jīng)過調(diào)查和走訪研發(fā)的這套在線健康管理系統(tǒng),采用微信小程序云開發(fā)實現(xiàn),基于Mongodb數(shù)據(jù)庫進行數(shù)據(jù)存儲,前端使用微信小程序開發(fā)實現(xiàn),后端基于Nodejs開發(fā)實現(xiàn)。系統(tǒng)前端用戶主要實現(xiàn)查看新聞通知、體檢知識、在線體檢預(yù)約、查看我的預(yù)約、修改個人資料等。后臺主要實現(xiàn)用戶管理、內(nèi)容管理、活動和預(yù)約管理、統(tǒng)計預(yù)約用戶數(shù)等功能。這套系統(tǒng)的上線對于人們健康的管理和體檢預(yù)約都有很大幫助。

經(jīng)過對微信小程序健康管理系統(tǒng)的需求分析,總結(jié)出了系統(tǒng)各類用戶角色需要的功能模塊,進行了基本的功能模塊設(shè)計,具體的各角色相關(guān)的功能模塊如下圖3-1所示。

編輯

圖3-1 健康管理功能結(jié)構(gòu)圖

? ?前端用戶可以通過分享的二維碼掃描登陸系統(tǒng),此時經(jīng)過用戶授權(quán)后會自動使用用戶的微信賬戶注冊登陸小程序。登陸小程序健康管理系統(tǒng)后可以進行如下功能操作:


  1. 個人資料維護:可以修改個人的相關(guān)資料信息,填寫姓名、手機號、城市等相關(guān)信息。


  2. 動態(tài)瀏覽:可以瀏覽后臺發(fā)布的健康新聞動態(tài)信息


  3. 體檢知識瀏覽:可以瀏覽后臺發(fā)布的體檢知識和健康知識信息。


  4. 體檢預(yù)約:可以根據(jù)自己的需要預(yù)約后臺發(fā)布的體檢,首先查詢可預(yù)約的時間段,然后預(yù)約指定的時間去進行體檢。


  5. 我的預(yù)約:可以查看自己的預(yù)約信息和記錄,并可以進行取消操作,預(yù)約會生成預(yù)約碼,去體檢時可以根據(jù)預(yù)約碼進行核銷。

??? 后臺用戶登陸后可以進行健康管理系統(tǒng)的業(yè)務(wù)數(shù)據(jù)管理操作,主要可以進行的功能操作如下:

??? 1、用戶管理:可以管理前端注冊的小程序用戶信息,進行相應(yīng)的數(shù)據(jù)查看和導(dǎo)出操作。

??? 2、內(nèi)容管理:在內(nèi)容管理查獲塊,主要進行動態(tài)新聞和體檢知識的發(fā)布、編輯、修改狀態(tài)、預(yù)覽和上首頁的操作,上首頁的功能類似于置頂操作。

??? 3、預(yù)約管理:可以發(fā)布新的預(yù)約信息,并可以對己發(fā)布的預(yù)約信息進行修改和狀態(tài)的設(shè)置,同時可以查看前端小程序用戶的預(yù)約信息,并可以進行預(yù)約核銷操作。

? ??4、管理員操作日志:主要查看管理員的操作日志信息。

??? 5、信息統(tǒng)計管理:主要統(tǒng)計并查看預(yù)約數(shù)、用戶數(shù)、文章數(shù)等相關(guān)信息。

?小程序健康管理系統(tǒng)的業(yè)務(wù)數(shù)據(jù)主要通過云開發(fā)平臺的mongodb 數(shù)據(jù)庫進行存儲,數(shù)據(jù)庫的結(jié)構(gòu)依據(jù)于業(yè)務(wù)需求分析抽像出相關(guān)的業(yè)務(wù)實體ER圖,然后根據(jù)實體模型圖轉(zhuǎn)換為具體的表結(jié)構(gòu),這是系統(tǒng)分析中很重要的一步,數(shù)據(jù)結(jié)構(gòu)的設(shè)計關(guān)系到系統(tǒng)后期數(shù)據(jù)存儲和查詢的性能,對整個體系統(tǒng)影響較大,所以在數(shù)據(jù)庫分析和設(shè)計要遵循基于的三大范式原則,下面來展示一下實體數(shù)據(jù)模型和具體的表結(jié)構(gòu)信息。

?? 3.3.1 概念數(shù)據(jù)模型

根據(jù)微信點餐系統(tǒng)的功能分析,抽象出其相關(guān)業(yè)務(wù)數(shù)據(jù)實體的實體數(shù)據(jù)模型,具體展示如下:

1、管理員信息實體:主要分析得出小程序后臺管理員的信息實體屬性,主要有主鍵,名字,電話等相關(guān)信息組成,具體結(jié)構(gòu)如下圖所示:

??????

編輯

3-2 管理員信息實體

???? 2、用戶信息實體:主要存儲前端注冊的用戶信息,前端小程序用戶使用微信注冊登陸后可以在系統(tǒng)中修改個人的基本信息,主要包含姓名、電話、城市等信息。

編輯

3-3 用戶信息實體

????? 3、新聞信息實體:主要存儲管理員在后臺發(fā)布的關(guān)于體檢動態(tài)的相關(guān)內(nèi)容,以及體檢知識的相關(guān)信息,便于居民快速通過手機獲得健康相關(guān)的知識和體檢知識,主要包含標題、內(nèi)容、狀態(tài)等信息。

編輯

3-4 新聞信息實體

????? 4、用戶預(yù)約體檢實體類:主要存儲用戶在線預(yù)約體檢信息,內(nèi)容包含用戶編號、預(yù)約日期、開始時間段、結(jié)束時間段、核驗碼等信息。

編輯

3-5 預(yù)約信息實體

???? 5、管理員操作日志信息:主要存儲管理員后臺操作的相關(guān)日志,以便于進行追蹤,主要包含用戶ID、操作類型、時間、IP信息等

編輯

3-6 管理員操作信息實體

??? 6、發(fā)布預(yù)約體檢信息實體:主要存儲管理員發(fā)布的預(yù)約體檢的設(shè)置信息,主要包含管理員編號,預(yù)約樣式設(shè)置,分類編號,狀態(tài)等信息。

編輯

3-7 發(fā)布預(yù)約信息實體



二,環(huán)境介紹

語言環(huán)境:Nodejs

數(shù)據(jù)庫:Mongodb數(shù)據(jù)庫

開發(fā)工具:IDEA或eclipse

微信小程序云開發(fā)


三,系統(tǒng)展示

3.1 前端用戶功能模塊的展示


3.1.1 前臺首頁展示


?? 健康管理系統(tǒng)的前端主要就是實現(xiàn)動態(tài)信息查詢、體檢知識學(xué)習(xí)、在線預(yù)約體檢的相關(guān)功能。具體操作界面展示如下圖4-1所示。

編輯

圖4-1 健康管理首頁界面


3.1.2 最新動態(tài)瀏覽模塊

前端用戶進入健康管理系統(tǒng)進入動態(tài)瀏覽菜單即可查看管理員在后臺發(fā)布的健康動態(tài)新聞信息,具體如下圖4-2所示:

編輯

圖4-2 動態(tài)新聞瀏覽界面


3.1.3體檢知識瀏覽模塊


??? 小程序健康管理系統(tǒng)前臺用戶登陸系統(tǒng)后可以點擊首頁或下面的體檢知識菜單進入體檢知識文章列表頁面。具體展示界面如下圖4-3所示。

編輯

圖4-3 體檢知識列表界面

3.1.4 體檢套餐列表模塊

??? 小程序健康管理系統(tǒng)前臺用戶登陸系統(tǒng)后,可以在首頁點擊進入體檢預(yù)約模塊進行在線預(yù)約。進入列表顯示當(dāng)前可以預(yù)約的體檢套餐。相關(guān)體檢展示操作界面如下圖4-4所示。

編輯

圖4-4體檢列表展示界面

3.1.5在線預(yù)約體檢功能模塊

??? 小程序健康管理前臺用戶在預(yù)約體檢的列表中選擇要預(yù)約的體檢套餐后進入預(yù)約界面,可以查看預(yù)約須知,然后進入預(yù)約時間選擇時間段進行預(yù)約。在線預(yù)約如下圖4-5、4-6、4-7所示。

編輯

圖4-5前臺用戶在線預(yù)約操作界面

編輯

圖4-6前臺用戶在線預(yù)約操作界面

??? 提交預(yù)約成功后,可顯示預(yù)約信息并展示二維碼,二維碼可以供體檢時管理員核銷預(yù)約使用,具體展示如下:

編輯

圖4-7預(yù)約成功信息界面

3.1.6個人信息管理功能模塊

???? 在我的功能模塊中主要可以進行個人信息的修改管理,個人預(yù)約信息的查詢管理等功能,具體展示如下圖4-8所示:

編輯

圖4-8我的功能模塊

?????? 點擊個人信息修改可以修改個人信息,具體如下圖4-9所示:

編輯

圖4-9個人資料修改功能模塊

點擊我的預(yù)約可以查看個人預(yù)約的體檢信息,可以查看詳情以及取消預(yù)約操作,具體展示如下圖4-10所示:

編輯

圖4-10我的預(yù)約查看模塊

3.2后臺功能模塊的展示


3.2.1用戶登錄功能


??? 小程序健康管理系統(tǒng)后臺用戶登陸后,方可授權(quán)進行相關(guān)信息的管理功能。登陸界面如下圖4-11所示。

編輯

圖4-11后臺用戶登錄操作界面

3.2.2后臺管理主界面


??? 小程序健康管理系統(tǒng)管理員用戶登陸系統(tǒng)后,可以進入后臺主界面管理菜單進行相應(yīng)信息管理。主要包含用戶管理、預(yù)約管理、內(nèi)容管理、信息統(tǒng)計等相關(guān)功能,后臺管理操作主界面如下圖4-12所示:

編輯

圖4-12后臺管理功能界面圖

3.2.3 用戶管理操作UI


??? 小程序健康管理員用戶登陸系統(tǒng)后,可以對前端注冊的用戶信息進行相應(yīng)的管理操作。其中主要包含用戶的查詢、刪除、導(dǎo)出資料、搜索信息等功能。用戶信息管理操作界面如下圖4-13所示。


編輯

圖4-13用戶管理功能UI界面

3.2.4 后臺餐品訂單管理操作UI


??? 小程序健康管理系統(tǒng)管理員用戶登陸系統(tǒng)后,可以對預(yù)約體檢信息進行管理。其中主要包含發(fā)布體檢預(yù)約、設(shè)置修改體檢預(yù)約、查看己預(yù)約名單、核銷預(yù)約名單、設(shè)置停用體檢預(yù)約等。體檢預(yù)約信息管理操作界面如下圖4-14所示。


編輯

圖4-14體檢預(yù)約管理功能UI界面


3.2.5 內(nèi)容管理操作UI


??? 小程序健康管理員用戶登陸系統(tǒng)后,可以對己發(fā)布的動態(tài)信息、體檢知識進行管理操作,也可以發(fā)布新的文章內(nèi)容并設(shè)置到首頁展示。內(nèi)容管理界面如下圖4-15所示。


編輯

圖4-15內(nèi)容管理功能UI界面


3.2.6 日志管理操作UI


??? 小程序健康管理員用戶登陸系統(tǒng)后,在后臺可以分類查看用戶的系統(tǒng)操作日志。日志操作管理界面如下圖4-16所示。


編輯

圖4-16日志查看功能UI界面


四,核心代碼展示

const AdminBiz = require('../../../../biz/admin_biz.js');const pageHelper = require('../../../../helper/page_helper.js');const cloudHelper = require('../../../../helper/cloud_helper.js');Page({ /** * 頁面的初始數(shù)據(jù) */ data: {}, /** * 生命周期函數(shù)--監(jiān)聽頁面加載 */ onLoad: async function (options) { if (!AdminBiz.isAdmin(this)) return; //設(shè)置搜索菜單 await this._getSearchMenu(); }, /** * 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成 */ onReady: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面顯示 */ onShow: async function () {}, /** * 生命周期函數(shù)--監(jiān)聽頁面隱藏 */ onHide: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面卸載 */ onUnload: function () { }, url: async function (e) { pageHelper.url(e, this); }, bindCommListCmpt: function (e) { pageHelper.commListListener(this, e); }, bindDelTap: async function (e) { if (!AdminBiz.isAdmin(this)) return; let id = pageHelper.dataset(e, 'id'); let params = { id } let callback = async () => { try { let opts = { title: '刪除中' } await cloudHelper.callCloudSumbit('admin/user_del', params, opts).then(res => { pageHelper.delListNode(id, this.data.dataList.list, 'USER_MINI_OPENID'); this.data.dataList.total--; this.setData({ dataList: this.data.dataList }); pageHelper.showSuccToast('刪除成功'); }); } catch (e) { console.log(e); } } pageHelper.showConfirm('確認刪除?刪除不可恢復(fù)', callback); }, bindStatusTap: async function (e) { if (!AdminBiz.isAdmin(this)) return; let id = pageHelper.dataset(e, 'id'); let status = pageHelper.dataset(e, 'status'); let params = { id, status } try { await cloudHelper.callCloudSumbit('admin/user_status', params).then(res => { pageHelper.modifyListNode(id, this.data.dataList.list, 'USER_STATUS', status, 'USER_MINI_OPENID'); this.setData({ dataList: this.data.dataList }); pageHelper.showSuccToast('設(shè)置成功'); }); } catch (e) { console.log(e); } }, _getSearchMenu: async function () { let sortItems = []; let sortMenus = [{ label: '全部', type: '', value: '' }, { label: '正常', type: 'status', value: 1 }, { label: '注冊時間正序', type: 'sort', value: 'newasc' }, { label: '注冊時間倒序', type: 'sort', value: 'newdesc' }, ] this.setData({ sortItems, sortMenus }) } })

const AdminNewsBiz = require('../../../../biz/admin_news_biz.js');const AdminBiz = require('../../../../biz/admin_biz.js');const pageHelper = require('../../../../helper/page_helper.js');const cloudHelper = require('../../../../helper/cloud_helper.js');Page({ /** * 頁面的初始數(shù)據(jù) */ data: {}, /** * 生命周期函數(shù)--監(jiān)聽頁面加載 */ onLoad: async function (options) { if (!AdminBiz.isAdmin(this)) return; //設(shè)置搜索菜單 await this._getSearchMenu(); }, /** * 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成 */ onReady: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面顯示 */ onShow: async function () {}, /** * 生命周期函數(shù)--監(jiān)聽頁面隱藏 */ onHide: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面卸載 */ onUnload: function () { }, url: async function (e) { pageHelper.url(e, this); }, bindCommListCmpt: function (e) { pageHelper.commListListener(this, e); }, bindSortTap: async function (e) { if (!AdminBiz.isAdmin(this)) return; let id = e.currentTarget.dataset.id; let sort = e.currentTarget.dataset.sort; if (!id || !sort) return; let params = { id, sort } try { await cloudHelper.callCloudSumbit('admin/news_sort', params).then(res => { pageHelper.modifyListNode(id, this.data.dataList.list, 'NEWS_HOME', sort); this.setData({ dataList: this.data.dataList }); }); } catch (e) { console.log(e); } }, _del: async function (id, that) { if (!AdminBiz.isAdmin(this)) return; if (!id) return; let params = { id } let callback = async () => { try { let opts = { title: '刪除中' } await cloudHelper.callCloudSumbit('admin/news_del', params, opts).then(res => { pageHelper.delListNode(id, that.data.dataList.list, '_id'); that.data.dataList.total--; that.setData({ dataList: that.data.dataList }); pageHelper.showSuccToast('刪除成功'); }); } catch (e) { console.log(e); } } pageHelper.showConfirm('確認刪除?刪除不可恢復(fù)', callback); }, bindReviewTap: function (e) { let id = pageHelper.dataset(e, 'id'); wx.navigateTo({ url: pageHelper.fmtURLByPID('/pages/news/detail/news_detail?id=' + id), }); }, bindStatusSelectTap: async function (e) { if (!AdminBiz.isAdmin(this)) return; let itemList = ['啟用', '停用', '刪除']; let id = pageHelper.dataset(e, 'id'); wx.showActionSheet({ itemList, success: async res => { switch (res.tapIndex) { case 0: { //啟用 await this._setStatus(id, 1, this); break; } case 1: { //停止 await this._setStatus(id, 0, this); break; } case 2: { //刪除 await this._del(id, this); break; } } }, fail: function (res) {} }) }, _setStatus: async function (id, status, that) { status = Number(status); let params = { id, status } try { await cloudHelper.callCloudSumbit('admin/news_status', params).then(res => { pageHelper.modifyListNode(id, that.data.dataList.list, 'NEWS_STATUS', status, '_id'); that.setData({ dataList: that.data.dataList }); pageHelper.showSuccToast('設(shè)置成功'); }); } catch (e) { console.log(e); } }, _getSearchMenu: async function () { let arr = await AdminNewsBiz.getCateList(); let sortItems = []; let sortMenus = [{ label: '全部', type: '', value: '' }, { label: '正常', type: 'status', value: 1 }, { label: '停用', type: 'status', value: 0 }, { label: '首頁推薦', type: 'home', value: 0 } ] sortMenus = sortMenus.concat(arr); this.setData({ sortItems, sortMenus }) } })


const AdminBiz = require('../../../../biz/admin_biz.js');const AdminMeetBiz = require('../../../../biz/admin_meet_biz.js');const pageHelper = require('../../../../helper/page_helper.js');const cloudHelper = require('../../../../helper/cloud_helper.js'); Page({ /** * 頁面的初始數(shù)據(jù) */ data: {}, /** * 生命周期函數(shù)--監(jiān)聽頁面加載 */ onLoad: async function (options) { if (!AdminBiz.isAdmin(this)) return; //設(shè)置搜索菜單 await this._getSearchMenu(); }, /** * 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成 */ onReady: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面顯示 */ onShow: async function () {}, /** * 生命周期函數(shù)--監(jiān)聽頁面隱藏 */ onHide: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面卸載 */ onUnload: function () { }, url: async function (e) { pageHelper.url(e, this); }, bindCommListCmpt: function (e) { pageHelper.commListListener(this, e); }, bindScanTap: function (e) { let meetId = pageHelper.dataset(e, 'id'); let title = encodeURIComponent(pageHelper.dataset(e, 'title')); wx.navigateTo({ url: '../scan/admin_meet_scan?meetId=' + meetId + '&title=' + title, }); }, bindRecordSelectTap: async function (e) { let itemList = ['預(yù)約名單', '導(dǎo)出名單Excel文件', '管理員核銷預(yù)約碼', '用戶自助簽到碼']; let meetId = pageHelper.dataset(e, 'id'); let title = encodeURIComponent(pageHelper.dataset(e, 'title')); wx.showActionSheet({ itemList, success: async res => { switch (res.tapIndex) { case 0: { //預(yù)約名單 wx.navigateTo({ url: '../record/admin_record_list?meetId=' + meetId + '&title=' + title, }); break; } case 1: { //導(dǎo)出 wx.navigateTo({ url: '../export/admin_join_export?meetId=' + meetId + '&title=' + title, }); break; } case 2: { //核驗 this.bindScanTap(e); break; } case 3: { //自助簽到碼 pageHelper.showModal('請進入「預(yù)約名單->名單」, 查看某一時段的「用戶自助簽到碼」') break; } } }, fail: function (res) {} }) }, bindMoreSelectTap: async function (e) { let itemList = ['預(yù)覽']; let meetId = pageHelper.dataset(e, 'id'); wx.showActionSheet({ itemList, success: async res => { switch (res.tapIndex) { case 0: { //預(yù)覽 wx.navigateTo({ url: pageHelper.fmtURLByPID('/pages/meet/detail/meet_detail?id=' + meetId), }); break; } } }, fail: function (res) {} }) }, bindStatusSelectTap: async function (e) { let itemList = ['啟用', '停止預(yù)約 (用戶可見)', '關(guān)閉 (用戶不可見)', '刪除', '置頂', '取消置頂']; let meetId = pageHelper.dataset(e, 'id'); wx.showActionSheet({ itemList, success: async res => { switch (res.tapIndex) { case 0: { //啟用 await this._setStatus(meetId, 1, this); break; } case 1: { //停止預(yù)約 await this._setStatus(meetId, 9, this); break; } case 2: { //關(guān)閉 await this._setStatus(meetId, 10, this); break; } case 3: { //刪除 await this._del(meetId, this); break; } case 4: { //置頂 await this._setSort(meetId, 0, this); break; } case 5: { //取消置頂 await this._setSort(meetId, 9999, this); break; } } }, fail: function (res) {} }) }, _setSort: async function (meetId, sort, that) { if (!AdminBiz.isAdmin(this)) return; if (!meetId) return; let params = { meetId, sort } try { await cloudHelper.callCloudSumbit('admin/meet_sort', params).then(res => { pageHelper.modifyListNode(meetId, that.data.dataList.list, 'MEET_ORDER', sort); that.setData({ dataList: that.data.dataList }); pageHelper.showSuccToast('設(shè)置成功'); }); } catch (e) { console.log(e); } }, _del: async function (meetId, that) { if (!AdminBiz.isAdmin(this)) return; if (!meetId) return; let params = { meetId } let callback = async function () { try { let opts = { title: '刪除中' } await cloudHelper.callCloudSumbit('admin/meet_del', params, opts).then(res => { pageHelper.delListNode(meetId, that.data.dataList.list, '_id'); that.data.dataList.total--; that.setData({ dataList: that.data.dataList }); pageHelper.showSuccToast('刪除成功'); }); } catch (e) { console.log(e); } } pageHelper.showConfirm('確認刪除?刪除不可恢復(fù)', callback); }, _setStatus: async function (meetId, status, that) { if (!AdminBiz.isAdmin(this)) return; if (!meetId) return; let params = { meetId, status } try { await cloudHelper.callCloudSumbit('admin/meet_status', params).then(res => { pageHelper.modifyListNode(meetId, that.data.dataList.list, 'MEET_STATUS', status, '_id'); that.setData({ dataList: that.data.dataList }); pageHelper.showSuccToast('設(shè)置成功'); }); } catch (e) { console.log(e); } }, _getSearchMenu: async function () { let arr = await AdminMeetBiz.getTypeList(); let sortItems = []; let sortMenus = [{ label: '全部', type: '', value: '' }, { label: '使用中', type: 'status', value: 1 }, { label: '已停止', type: 'status', value: 9 }, { label: '已關(guān)閉', type: 'status', value: 10 }, ]; sortMenus = sortMenus.concat(arr); this.setData({ sortItems, sortMenus }) } })

五,項目總結(jié)

5.1 微信小程序云開發(fā)應(yīng)用

微信云開發(fā)是微信團隊聯(lián)合騰訊云推出的專業(yè)的小程序開發(fā)服務(wù)。開發(fā)者可以使用云開發(fā)快速開發(fā)小程序、小游戲、公眾號網(wǎng)頁等,并且原生打通微信開放能力。開發(fā)者無需搭建服務(wù)器,可免鑒權(quán)直接使用平臺提供的 API 進行業(yè)務(wù)開發(fā)。使用微信小程序云開發(fā)需要先注冊然后使用。

??? 在開發(fā)者工具的工具欄左側(cè)上部,點擊 【云開發(fā)】 按鈕即可打開云開發(fā)控制臺,根據(jù)提示開通云開發(fā),并且創(chuàng)建一個新的云開發(fā)環(huán)境。

編輯

6-1云開發(fā)操作操作

??? 每個環(huán)境相互隔離,擁有唯一的環(huán)境 ID (拷貝此ID,后面配置會用到),包含獨立的數(shù)據(jù)庫實例、存儲空間、云函數(shù)配置等資源。

編輯

6-2云開發(fā)操作操作

開通過申請到了云開發(fā)環(huán)境的ID,即可在小程序中進行按官方文檔配置開發(fā)。

5.2微信小程序開發(fā)者工具應(yīng)用

騰訊為小程序開發(fā)人員提供了一個專業(yè)方便的快速構(gòu)建工具,也就是我們用到的這款小程序開發(fā)者工具。從微信小程序官網(wǎng)下載小程序開發(fā)者工具安裝后打開,需要使用開發(fā)者綁定小程序賬戶的微信掃描登錄后打開。打開后的界面如下:

編輯

6-3微信開發(fā)者工具操作

5.3 NODEJS技術(shù)開發(fā)應(yīng)用?

Nodejs技術(shù)最近幾年在前后端分離開發(fā)中用的比較多,特別是一些前端開發(fā)人員,更喜歡結(jié)合Nodejs來進行項目的開發(fā)。它是基于Chrom的V8引擎來運行JS端服務(wù)程序。原來JS主要定位于前端交互開發(fā)的腳本,現(xiàn)在卻可以像PHP,JSP一樣開發(fā)后臺服務(wù)程序。本項目中對應(yīng)的后臺管理功能就是基于Nodejs來開發(fā)的后臺程序。下面是后臺程序的目錄結(jié)構(gòu):

編輯

6-4后臺系統(tǒng)目錄結(jié)構(gòu)

??? 其中package.json是配置的系統(tǒng)依賴的庫,主要是在啟動時要加載一些js庫以便開發(fā)使用。其中project目錄下包含controller,model,service三個目錄,分別代表三層架構(gòu)中的控制器,數(shù)據(jù)模型層,業(yè)務(wù)層,系統(tǒng)采用三層架構(gòu)的方式來進行開發(fā)實現(xiàn)。

5.4 NPM包管理工具應(yīng)用

后臺開發(fā)基于Nodejs開發(fā)應(yīng)用時,需要下載相關(guān)的JS依賴庫,以便開發(fā)使用,我們常用NPM進行依賴庫的管理,需要在本地安裝配置NPM環(huán)境,它相當(dāng)于J ava中的Maven。本地安裝配置后可以使用命查看它是否安裝成功:

編輯

6-5 NPM版本查看

5.5 MongoDB數(shù)據(jù)庫應(yīng)用

本健康小程序管理系統(tǒng)的開發(fā)基于微信云開發(fā)實現(xiàn),使用了微信云服務(wù)器的數(shù)據(jù)庫服務(wù)來進行數(shù)據(jù)存儲,它使用的是Mongodb數(shù)據(jù)庫。點擊微信開發(fā)者工具上面的云開發(fā),可以進入自己申請的云服務(wù)列表,選擇數(shù)據(jù)庫,可以查看相關(guān)的數(shù)據(jù)庫表結(jié)構(gòu)及數(shù)據(jù):

編輯

6-6 云數(shù)據(jù)庫查看


畢業(yè)設(shè)計:微信小程序健康管理系統(tǒng)的開發(fā)與實現(xiàn)的評論 (共 條)

分享到微博請遵守國家法律
原阳县| 吉林省| 巩义市| 肥乡县| 建宁县| 无为县| 甘南县| 新营市| 余庆县| 淮滨县| 普陀区| 永宁县| 古丈县| 富锦市| 青海省| 灵台县| 大冶市| 昔阳县| 侯马市| 凉山| 长垣县| 灌阳县| 南和县| 南投县| 德州市| 酒泉市| 芜湖县| 台南县| 轮台县| 舒城县| 礼泉县| 阜宁县| 平武县| 朝阳区| 贞丰县| 积石山| 新巴尔虎左旗| 南投县| 德江县| 宁阳县| 佛山市|