999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于RESTful的在線請假管理系統設計與實現

2019-01-23 08:16:02朱勇伏海旭
現代計算機 2018年36期
關鍵詞:頁面數據庫微信

朱勇,伏海旭

(南京工程學院計算機工程學院,南京 211167)

0 引言

當前受移動互聯網發展的影響,越來越多的學生事務處理開始通過電子化的手段實現,但是通過對高校的調查以及筆者自身的體會發現,依然有許多高校采用傳統手段,一般流程為學生打印紙質假條,前往輔導員處簽字蓋章,將假條交給任課教師。該流程存在效率低,浪費時間等問題,對學生生活影響很大。

針對上述問題,開發App或Web應用也是一種解決手段,但此方案存在終端適應復雜,開發周期長,用戶使用成本高,擴展性差等問題。對此,本文討論并設計了一種基于RESTful的在線請假系統,旨在解決目前高校存在的“請假難”痛點問題,基于借助微信小程序易用入口解決多終端適配和擴展性等問題,令用戶獲得良好體驗。

1 RESTful概述

REST(Representational State Transfer),中文意思是表述性狀態轉移,它將任何有被引用必要的事物定義為資源,包含實體和抽象概念,資源在網絡中以某種表現形式進行狀態轉移。Resource:資源,即數據,例如newsfeed、friends等;Representational:某種表現形式,例如用 JSON、XML、JPEG 等;State Transfer:狀態變化。通過HTTP動詞實現。每一個URI代表一種資源;客戶端和服務器之間,傳遞這種資源的某種表現層;客戶端通過四個HTTP方法(GET/POST/PUT/DELETE)對服務器端資源進行操作,其目標是創建具有良好擴展性的分布式系統。RESTful是一種針對網絡應用的設計和開發方式,可以降低開發的復雜性,提高系統的可伸縮性。

REST是設計風格而不是標準。REST通常基于使用HTTP、URI和XML(標準通用標記語言下的一個子集),以及HTML(標準通用標記語言下的一個應用)這些現有的廣泛流行的協議和標準。作為一種架構,其提出了以下架構級約束:

(1)使用客戶/服務器模型。客戶和服務器之間通過一個統一的接口來互相通訊。

(2)層次化的系統。在一個REST系統中,客戶端并不會固定地與一個服務器打交道。

(3)無狀態。在一個REST系統中,服務端并不會保存有關客戶的任何狀態,客戶端自身負責用戶狀態的維持,并在每次發送請求時提供足夠的信息。

(4)統一的接口。一個REST系統需要使用一個統一的接口來完成子系統之間以及服務與用戶之間的交互,這使得REST系統中的各個子系統可以獨自完成演化。

2 系統設計

2.1 系統架構

基于RESTful在線請假管理系統架構包含前端、后端和數據庫。前端分為三種角色(學生、輔導員、任課教師)三個模塊(主頁面、歷史記錄、個人信息及設置);后端使用Flask外暴露API響應前端HTTP請求并完成與數據庫交互和ORM(對象關系映射),通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中;數據庫中設三張表(請假表、學生表、教師表)。

用戶通過前端進行操作,前端JavaScript通過AJAX向后端發起請求,后端根據請求內容與數據庫交互,完成邏輯操作、ORM和數據持久化,返回JSON數據,前端解析JSON,異步刷新,呈現結果。

基于RESTful在線請假管理系統架構設計見圖1。

圖1 架構設計

2.2 數據庫設計

根據請假系統需求和特點,基于RESTful的在線請假系統數據庫(leaveDB)設計有三張表,分別為請假表(leave)、教師表(teacher)、學生表(student)。通過登錄號碼長度來區分用戶角色,學生學號為9位,教師工號為6位。教師表通過Boolean類型的role字段來區分輔導員和任課教師角色。密碼通過Varchar類型passwd字段存儲經SHA256加密后的密碼。

基于RESTful的在線請假系統數據庫設計見圖2。

圖2 數據庫設計

2.3 API設計

根據前后端交互過程中數據的情況特點,基于RESTful的在線請假系統API設計主要如下:

(1)資源標識

REST中使用資源的特定名詞作為資源的URI,并設計相應的控制器和模型類。控制器用于處理邏輯,模型類用于和數據庫交互。根據交互過程中涉及的資源。

(2)參數設計

為了增加前后端交互的便攜性,對于不同功能返回不同的JSON鍵值對,前后端事先約定JSON格式,便于解析。參數設計詳見圖3。

圖3 參數設計

3 系統實現

3.1 微信小程序

基于RESTful的在線請假系統前端采用微信小程序實現,相對于傳統的App應用,小程序可以在線熱更新,方便版本迭代和敏捷開發,同時降低了用戶使用成本。“用完即走”提供了優質的用戶體驗。

微信小程序分登錄功能、學生用戶功能和教師用戶功能,根據功能點包含不同數量的page,page由WXML、WXSS、JS和JSON構建。WXML構建頁面DOM,WXSS構建頁面樣式,JS負責獲取全局應用程序實例對象并創建頁面實例對象,同時內含生命周期函數用于監聽頁面加載、頁面初次渲染完成、頁面顯示、頁面隱藏、頁面卸載及頁面相關事件處理函數,包含用戶下拉動作和自定義點擊事件。程序啟動后,login頁面與用戶交互,將數據使用AJAX與后端并根據后端返回JSON解析提取后的結果跳轉用戶對應的page,異步刷新、渲染頁面,不需要整頁面重新刷新,減少了資源占用和用戶等待時間,提高了用戶體驗。

在圖片憑證保存的功能點上,目前業界通用做法一是使用存入后端文件系統并保存路徑至數據庫對應字段,加載時根據文件路徑下載;二是直接將圖片Base64轉碼后以JSON數據包格式傳入數據庫longtext或binary類型字段中。做法一需要單獨構建文件系統或使用在線圖床并從外鏈加載,提高了成本且降低了安全性;做法二占用資源過多且上傳時間過長,用戶體驗非常差。在這里本文使用微信官方提供的小程序云開發功能,在微信官方服務器上構建相互隔離的云環境,每個環境都包含獨立的數據庫實例、存儲空間等資源。通過對將環境構建單獨的內置云函數,處理上傳邏輯。上傳圖片時,調用該內置函數將圖片上傳至云環境儲存空間中,獲得唯一文件ID并將該ID存入數據庫leave表中ensure字段,讀取時根據RESTful后端返回JSON中ensure字段通過內置函數直接調用圖片,對上傳、下載文件明顯起到簡化加速作用,使用微信官方云開發環境,穩定性高,文件加載速度快,與小程序耦合程度高,調用簡單,開發迅速。

(1)學生請假功能

學生登錄后在“請假”界面選擇請假類別、時間等,提交請假請求,在“消息”界面查看請假歷史記錄,在“我”界面查看個人信息和修改密碼。學生請假功能見圖4。

(2)輔導員審批功能

輔導員登錄系統后,在“消息”界面查看今日待審批假條,選擇通過或不通過,在“批假”界面可查看已批假歷史記錄并可按學生姓名查找假條。輔導員審批功能見圖5。

圖4 請假功能

圖5 審批功能

(3)任課教師查看假條功能

任課教師在“消息”查看自己班級內學生的假條和狀態(待批準/已批準/不通過);在“我”界面查看個人信息和修改密碼。

基于RESTful的在線請假系統功能流程見圖6。

3.2 ORM 實現

本系統后端操作數據庫時,使SQLAlchemy作為ORM框架[3],創建 SQLAlchemy對象并定義 student、teacher、leave 對象,分別對應數據庫中 student、teacher、leave表。使用sessionmaker定義會話類,操作該會話類實例對象的操作方法進行數據庫操作,操作方法為add()、delete()、update()、query()。

圖6 功能流程

以“修改密碼”功能為例,部分代碼如下:

class teacher(db.Model):

#定義Model,用于ORM綁定數據

__tablename__='teacher'

teacher_id=db.Column(db.DECIMAL(65),primary_key=True)

#數據類型與數據庫中類型對應

name=db.Column(db.VARCHAR(255))

passwd=db.Column(db.VARCHAR(255))

role=db.Column(db.VARCHAR(2))

school=db.Column(db.VARCHAR(255))

def to_dict(self):

#轉字典方法用于方便與json交互

return{c.name:getattr(self,c.name,None)for c in self.__table__.columns}

@app.route("/change_pwd",methods=['GET','POST'])

#Flask對外暴露URL供前端JS調用

def change_pwd():

#處理json并與Controller交互

if(request.method=='POST'):

if not(request.json):

return jsonify('not json')

else:

data=request.get_json()

rec_id=data['userId']

rec_pwd=data['userPwd']

if(change_passwd(rec_id,rec_pwd)==True):

#調用Controller修改密碼

return jsonify("True")

else:

return jsonify("Flase")

else:

return jsonify('not POST method')

def change_pwd(userId,userPwd):

#Controller用于與數據庫和Model交互

print("用戶"+userId+"修改密碼")

data=db.session.query(teacher).filter_by(

teacher_id=userId).first()

#新建ORM實例查詢數據庫中對應的行

data.passwd=generate_password_hash(str(userPwd))

#對明文SHA256加密

db.session.commit()

#提交數據庫

db.session.close()

#關閉實例

print("用戶"+userId+"密碼修改成功")

return(True)

使用ORM技術可以節約與數據庫交互的步驟,有效提高開發效率,并解決面向對象與關系數據庫存在的互不匹配的問題。

4 結語

根據高校學生事務中“請假難”的痛點問題,主要表現在學生請假流程繁瑣,學校仍采用紙質假條不便于管理等方面。提出了基于RESTful的在線請假系統,旨在取代目前高校中采用傳統紙質假條請假的方式。本文對基于RESTful的在線請假系統進行了總體架構設計、數據庫設計、RESTful API設計,運用Python語言、ORM技術、Flask框架并以微信小程序的前端為例實現了該系統的主要功能。實際測試表明基于RESTful的在線請假系統速度快、功能完善、兼容性好、擴展性好、易于維護,達到了預期的效果。顯著提高了請假的效率,節約了教師和學生的時間,解決了“請假難”的問題。

猜你喜歡
頁面數據庫微信
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
微信
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
微信
微信
微信
主站蜘蛛池模板: www.日韩三级| 国产在线高清一级毛片| 91毛片网| 亚洲天堂精品视频| 亚洲区视频在线观看| 久久窝窝国产精品午夜看片| 婷婷五月在线视频| 国产成人精品免费av| 国产精品嫩草影院av| 日韩亚洲高清一区二区| 国产精品成人观看视频国产| 人人妻人人澡人人爽欧美一区| 亚洲第一页在线观看| 亚洲电影天堂在线国语对白| 精品超清无码视频在线观看| 国产va视频| 91最新精品视频发布页| 国产人成乱码视频免费观看| 99久久99这里只有免费的精品| 999国产精品永久免费视频精品久久| 精品久久久久久成人AV| 91精品啪在线观看国产| 成人国产小视频| 国产一区二区三区精品久久呦| 国产成人免费视频精品一区二区| 亚洲最大在线观看| 99热这里只有精品在线播放| 亚洲美女操| 丁香综合在线| 亚洲AV人人澡人人双人| 亚洲精品视频在线观看视频| 亚洲—日韩aV在线| 亚洲高清无码久久久| 综合亚洲网| 亚洲伦理一区二区| 国产女主播一区| 99999久久久久久亚洲| 欧美中文字幕在线播放| 国产精品制服| 国产精品欧美激情| 国产综合色在线视频播放线视| 97国产成人无码精品久久久| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲国产成人自拍| 国产肉感大码AV无码| 色婷婷色丁香| 亚洲αv毛片| 免费高清毛片| 国产香蕉在线视频| 国产成人精品2021欧美日韩| 日本久久免费| 国产成人精品第一区二区| 亚洲欧美另类久久久精品播放的| 国产成人做受免费视频| 免费国产高清精品一区在线| 自拍偷拍欧美日韩| 色网在线视频| 全裸无码专区| 国产精品美女网站| 青青久在线视频免费观看| 亚洲精品午夜无码电影网| 日本国产在线| 国产精品福利一区二区久久| 一级毛片不卡片免费观看| 免费高清自慰一区二区三区| 综合社区亚洲熟妇p| 四虎亚洲国产成人久久精品| 亚洲首页国产精品丝袜| 国产欧美精品午夜在线播放| 国产真实乱子伦视频播放| 亚洲人成网站在线观看播放不卡| 国产国模一区二区三区四区| 久久这里只有精品8| 青青青视频91在线 | 欧美国产中文| jizz国产视频| 嫩草国产在线| 久久久91人妻无码精品蜜桃HD| 午夜精品国产自在| 久久综合伊人 六十路| 国产91精选在线观看| 国产福利在线观看精品|