顏杰群
(泉州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院信息技術(shù)系,福建泉州362000)
隨著網(wǎng)絡(luò)的興起,“互聯(lián)網(wǎng)+”技術(shù)已經(jīng)在我們的工作、生活中扮演著越來越重要的角色。它在原先兩化融合的基礎(chǔ)上進(jìn)一步提升內(nèi)涵,將互聯(lián)網(wǎng)技術(shù)全面融合到工業(yè)、商業(yè)、金融業(yè)等各行各業(yè)中。李克強(qiáng)總理在2015年第十二屆全國(guó)人大三次會(huì)議的政府工作報(bào)告中首次提出“互聯(lián)網(wǎng)+”行動(dòng)計(jì)劃,并于當(dāng)年7月4日由國(guó)務(wù)院印發(fā)《國(guó)務(wù)院關(guān)于積極推進(jìn)“互聯(lián)網(wǎng)+”行動(dòng)的指導(dǎo)意見》文件,明確了“互聯(lián)網(wǎng)+”的行動(dòng)綱領(lǐng),推進(jìn)移動(dòng)互聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等新興技術(shù)與現(xiàn)代制造業(yè)全面結(jié)合,促進(jìn)電子商務(wù)、工業(yè)互聯(lián)網(wǎng)和互聯(lián)網(wǎng)金融的健康發(fā)展[1]。
在國(guó)內(nèi),藥店是指面向消費(fèi)者銷售醫(yī)院產(chǎn)品和各類健康產(chǎn)品的零售門店。它位居醫(yī)藥產(chǎn)業(yè)鏈的下游,是醫(yī)藥零售的重要終端。據(jù)智研咨詢發(fā)布的《2017-2023年中國(guó)零售藥店行業(yè)前景預(yù)測(cè)與投資戰(zhàn)略分析報(bào)告》中指出[2]:中國(guó)藥店渠道僅占藥品總銷售約2成,而同期美日均超60%。如將我們的藥品銷售分為醫(yī)院、藥店和基層醫(yī)療機(jī)構(gòu)三大終端,藥品在藥店渠道銷售占比約為22.5%,遠(yuǎn)不及醫(yī)院終端68.4%的銷售占比。同醫(yī)院相比,零售藥店無論是在購(gòu)藥的經(jīng)濟(jì)性還是便利性上都更具優(yōu)勢(shì),因此開發(fā)新技術(shù)下的中小藥店管理系統(tǒng)前景是相當(dāng)廣闊的。
同時(shí)調(diào)查中我們也發(fā)現(xiàn),當(dāng)前仍有很多藥店管理軟件采用單機(jī)系統(tǒng)或傳統(tǒng)C/S方案的客戶機(jī)/服務(wù)器系統(tǒng)。它們?cè)跀?shù)據(jù)聯(lián)網(wǎng)管理、系統(tǒng)更新等方面存在諸多不便,不利于適應(yīng)當(dāng)前瞬息萬變的“互聯(lián)網(wǎng)+”藥店行業(yè)的發(fā)展。因此開發(fā)出一個(gè)基于Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu)的藥店管理系統(tǒng)來促進(jìn)中小藥店企業(yè)進(jìn)行技術(shù)升級(jí)有著積極的意義。
B/S結(jié)構(gòu)也叫瀏覽器/服務(wù)器(Browser/Server)結(jié)構(gòu),是為了克服C/S結(jié)構(gòu)缺陷而改進(jìn)的應(yīng)用于Web技術(shù)的體系結(jié)構(gòu)。在該結(jié)構(gòu)下,可以通過瀏覽器技術(shù)結(jié)合多種Script語(yǔ)言來實(shí)現(xiàn)原先需要復(fù)雜軟件才能開發(fā)的用戶界面,而把主要邏輯事務(wù)放在后臺(tái)服務(wù)器進(jìn)行,形成Browser界面層-業(yè)務(wù)邏輯層-數(shù)據(jù)訪問層的三層體系結(jié)構(gòu)[3]。它的開發(fā)成本更加合理,利用瀏覽器而無需安裝前端軟件的特性使系統(tǒng)的擴(kuò)展性更好,可以無縫接入各種設(shè)備(PC、手機(jī)、智能電視等)、各種系統(tǒng)平臺(tái)。同時(shí)由于主要的邏輯事務(wù)都在服務(wù)器上運(yùn)行,后期也僅需對(duì)服務(wù)器進(jìn)行維護(hù),管理上也更為便利。系統(tǒng)的結(jié)構(gòu)圖如圖1。
通過圖1可以看出,B/S結(jié)構(gòu)比傳統(tǒng)單機(jī)或C/S結(jié)構(gòu)有著以下的優(yōu)點(diǎn):
(1)“瘦”客戶端,“胖”服務(wù)器的模式將系統(tǒng)的邏輯事務(wù)都放在服務(wù)器,更方便系統(tǒng)的管理和維護(hù)。
(2)客戶端僅需提供Browser瀏覽器,不受操作系統(tǒng)局限,系統(tǒng)更易于擴(kuò)展。無論是手機(jī)android、蘋果 OS,電腦 Windows、Linux 等系統(tǒng)都可以操作使用該系統(tǒng),系統(tǒng)成本大為降低。
(3)突破時(shí)空局限,只要能連上互聯(lián)網(wǎng),隨時(shí)隨地都可以接入系統(tǒng),實(shí)現(xiàn)無縫辦公。
圖1 B/S三層體系結(jié)構(gòu)圖
系統(tǒng)主要定位為線下實(shí)體店和線上購(gòu)物提供技術(shù)支撐的解決方案??蛻艨梢灾苯舆M(jìn)入實(shí)體店購(gòu)買藥品,或者注冊(cè)一個(gè)會(huì)員通過線上端口(如手機(jī)、平板、臺(tái)式PC等)進(jìn)行購(gòu)物,再由系統(tǒng)的物流管理模塊進(jìn)行派發(fā)貨管理。線上、線下兩種銷售模式銷售的商品再由藥品庫(kù)存管理模塊進(jìn)行統(tǒng)一調(diào)度,實(shí)現(xiàn)無縫鏈接。系統(tǒng)的軟件結(jié)構(gòu)圖如圖2。
圖2 系統(tǒng)功能模塊結(jié)構(gòu)圖
用戶管理:主要實(shí)現(xiàn)顧客用戶(普通用戶)和藥店店員(管理員)的管理。顧客可以自行注冊(cè)用戶、修改用戶信息,管理員的信息及權(quán)限由超級(jí)管理員進(jìn)行設(shè)定,管理員也可以對(duì)普通用戶的信息進(jìn)行更新維護(hù)。
藥品庫(kù)存管理:主要實(shí)現(xiàn)藥品的入庫(kù)信息登記、出庫(kù)信息登記,及時(shí)備案缺貨藥品信息并進(jìn)行補(bǔ)貨管理。實(shí)時(shí)追蹤藥品有效使用期限,在臨近過期的預(yù)留期內(nèi)提醒進(jìn)行過期處理,對(duì)于已過期藥品進(jìn)行銷貨處理。
線下銷售管理:主要實(shí)現(xiàn)實(shí)體店的銷售管理。由管理員登錄線下銷售管理模塊,新增顧客購(gòu)買訂單、修改訂單、刪除訂單,以及對(duì)訂單金額進(jìn)行結(jié)算的管理。同時(shí)對(duì)顧客購(gòu)買的藥品提供退換貨管理功能。
線上銷售管理:提供藥品在線商城功能,顧客根據(jù)需要即時(shí)進(jìn)行網(wǎng)上下單購(gòu)買,并由店員或物流公司提供派貨上門業(yè)務(wù)。模塊提供購(gòu)物車管理(新增購(gòu)物車、修改購(gòu)物車及購(gòu)物車轉(zhuǎn)為訂單結(jié)算)、物流管理及藥品退換貨處理功能。
數(shù)據(jù)庫(kù)作為后臺(tái)存儲(chǔ)數(shù)據(jù)的地方,是系統(tǒng)開發(fā)要完成的另一項(xiàng)重要工作。顧客登錄系統(tǒng)后可以瀏覽藥品商品,并將中意商品添至購(gòu)物車?yán)铩T谕瓿蛇x購(gòu)后,可以將購(gòu)物車轉(zhuǎn)成商品訂單,等待物流配送。管理員登錄系統(tǒng)后可以管理商品,包括上架新商品、修改商品及對(duì)過期商品進(jìn)行處理。在線下銷售時(shí),管理員可以替顧客下單中意商品,并完成結(jié)算。
E-R圖也稱實(shí)體-聯(lián)系圖,通過實(shí)體類型、屬性和聯(lián)系的繪制來描述現(xiàn)實(shí)世界關(guān)系概念模型。在對(duì)數(shù)據(jù)庫(kù)需求分析后,描繪出系統(tǒng)的E-R圖如圖3。
圖3 系統(tǒng)E-R圖
該模塊作為用戶的入口,主要實(shí)現(xiàn)合法用戶的身份驗(yàn)證。為了防止用戶輸入錯(cuò)誤,可以為用戶名和密碼兩個(gè)文本框添加數(shù)據(jù)驗(yàn)證RequiredFireldValidator和RegularExpressionValidator控件進(jìn)行必填和文本規(guī)則的驗(yàn)證。模塊的核心代碼如下:
SqlConnection conn=new SqlConnection(ConfigurationManager.ConnectionStrings[“InternetSystem”].ConnectionString); //建立數(shù)據(jù)庫(kù)連接
SqlCommand cmd=new SqlCommand(“Select* from user Where user=@user And password=@password”,conn); //定義操作命令
cmd.Parameters.AddWithValue(“@user”,TextBox1.Text.ToString()); //傳參
cmd.Parameters.AddWithValue(“@password”,TextBox2.Text.ToString()); //傳參
conn.Open(); //打開數(shù)據(jù)庫(kù)連接
SqlDataReader dr=cmd.ExcuteReader(); //建立 DataReader對(duì)象
If(dr.Read()){Session[“userId”]=dr[“userId”];Response.Redirect(“user.aspx”);} //如果輸入正確則跳轉(zhuǎn)用戶頁(yè)面
else{Response.Redirect(“l(fā)ogin.aspx”);} //輸入錯(cuò)誤則重新定位本登錄頁(yè)面
conn.Close; //關(guān)閉數(shù)據(jù)庫(kù)連接
用戶登錄后,首次添加商品會(huì)自動(dòng)生成一張臨時(shí)的購(gòu)物車二維表,并將本商品添加到該表中,部分主要代碼如下:
…… //參考上面,連接數(shù)據(jù)庫(kù)省略
SqlCommand cmd=new SqlCommand(“insert into shopping_trolley(name,number,price,total_price)Values”)(@name,@number,@price,@total_price)”,conn); //定義操作命令
…… //傳參省略
conn.Open(); //打開數(shù)據(jù)庫(kù)
cmd.ExcuteNonQuery(); 執(zhí)行操作,插入記錄
conn.Close(); //關(guān)閉數(shù)據(jù)庫(kù)連接
當(dāng)用戶想查看購(gòu)物車清單或選購(gòu)?fù)戤呄虢Y(jié)賬時(shí),可以點(diǎn)擊購(gòu)物車鏈接,打開購(gòu)物車shopping_trolley.aspx頁(yè)面進(jìn)行修改購(gòu)物車清單或者結(jié)賬,主要核心代碼如下:
…… //參考上面,連接數(shù)據(jù)庫(kù)省略
SqlCommand cmd=new SqlCommand(“Select* from shopping_trolley”,conn); //定義操作命令
conn.Open(); //打開數(shù)據(jù)庫(kù)連接
SqlDataReader dr=cmd.ExecuteReader(); //建立 DataReader對(duì)象
Label1.Text=”<table align=’center’width=’90%’border=’1’><tr bgcolor=’#87a4ef’><td>序號(hào)</td><td>商品名稱</td><td>數(shù)量</td><td>單價(jià)</td><td>總價(jià)</td><td>操作</td></tr>”
while(dr.Read()) //臨時(shí)表如果有記錄,逐項(xiàng)生成購(gòu)物商品表格及內(nèi)容
{
Label1.Text+=”<tr>”;
Label1.Text+=”<td>”+dr[“Id”]+”</td>”;
Label1.Text+=”<td>”+dr[“name”]+”</td>”;
Label1.Text+=”<td>”+dr[“number”]+”</td>”; //備注:為了節(jié)省編排代碼,將數(shù)量下拉菜單DropDownList暫用 dr[“number”]代替
Label1.Text+=”<td>”+dr[“price”]+”</td>”;
Label1.Text+=”<td>”+dr[“total_price”]+</td>;
Label1.Text+=”<td><img src=’images/delete.png’></td>”;
} Lable1.Text+=”</table>”;
conn.Close(); //關(guān)閉數(shù)據(jù)庫(kù)連接
系統(tǒng)開發(fā)完成后,能否適用企業(yè)實(shí)際需求并符合當(dāng)前主流技術(shù)規(guī)范也是該項(xiàng)目能否成功的關(guān)鍵因素。在這里,我們采用LoadRunner來預(yù)測(cè)系統(tǒng)行為和性能負(fù)載測(cè)試。通過模擬一定量的用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)的方式來對(duì)整個(gè)網(wǎng)站架構(gòu)進(jìn)行測(cè)試,并預(yù)估系統(tǒng)性能。其主要指標(biāo)如下[4-5]:
(1)響應(yīng)時(shí)間:是指從客戶端瀏覽器發(fā)出請(qǐng)求到服務(wù)器獲取響應(yīng)并呈現(xiàn)頁(yè)面所消耗的時(shí)間。對(duì)于本系統(tǒng)來說,涵蓋了網(wǎng)絡(luò)傳輸時(shí)間、Web服務(wù)器處理時(shí)間和數(shù)據(jù)庫(kù)服務(wù)器處理時(shí)間。參考國(guó)外的3/5/10原則,系統(tǒng)綜合響應(yīng)時(shí)間應(yīng)該在3S內(nèi),最長(zhǎng)不超過5S。
(2)并發(fā)用戶數(shù):是指在某一時(shí)刻同時(shí)在線與服務(wù)器交互的用戶數(shù)量。其中C是平均的并發(fā)用戶數(shù),Cp是并發(fā)用戶數(shù)峰值,n是login session的數(shù)量,login session為用戶登錄系統(tǒng)到退出系統(tǒng)的時(shí)間段,L是login session的平均長(zhǎng)度,T為考察長(zhǎng)度。公式如下:
平均并發(fā)用戶數(shù)C=nL/T;
按照中小藥店管理規(guī)模預(yù)估,C應(yīng)能達(dá)到1 000以上,Cp應(yīng)能達(dá)到1 100。
(3)吞吐量:是指系統(tǒng)在單位時(shí)間內(nèi)請(qǐng)求的數(shù)量。一個(gè)系統(tǒng)的吞吐量(承壓能力)與request對(duì)CPU的消耗、外部借口、IO等緊密關(guān)聯(lián),它是衡量系統(tǒng)處理能力的重要指標(biāo)。
QPS(TPS)=并發(fā)數(shù)/平均響應(yīng)時(shí)間
系統(tǒng)的TPS應(yīng)該越大越好,表明系統(tǒng)抗壓能力越強(qiáng)。
(4)CPU使用率及內(nèi)存使用量:是指系統(tǒng)對(duì)硬件資源的消耗量,其中CPU使用率最大上限應(yīng)控制在60%~70%之間,系統(tǒng)內(nèi)存使用量盡可能控制在物理內(nèi)存的70%以下。
系統(tǒng)開發(fā)完成后,通過測(cè)試發(fā)現(xiàn)軟件的有效性及可用性表現(xiàn)良好,基于B/S三層體系結(jié)構(gòu)的軟件架構(gòu)在系統(tǒng)可擴(kuò)展性及后期維護(hù)性方面也表現(xiàn)出其技術(shù)上的優(yōu)越性。隨著手機(jī)移動(dòng)互聯(lián)網(wǎng)絡(luò)的興起,今后也可以在手機(jī)端(比如微信、支付寶)方面進(jìn)一步擴(kuò)展,融合手機(jī)支付開拓系統(tǒng)覆蓋面,有效提升中小藥店企業(yè)的競(jìng)爭(zhēng)力。