版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
超市收銀系統(tǒng)設(shè)計分析 ▲系統(tǒng)整體架構(gòu) ▲系統(tǒng)整體架構(gòu)、方法,操作對象為商品。但本系統(tǒng)要求使用C/S框架結(jié)構(gòu)來設(shè)計。C/S框架介紹:C/S結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。C/S結(jié)構(gòu)的基本原則是將計算機(jī)應(yīng)用任務(wù)分解成多個子任務(wù),由多臺計算機(jī)分工完成,即采用“功能分布”原則。客戶端完成數(shù)據(jù)處理,數(shù)據(jù)表示以及用戶接口功能;服務(wù)器端完成DBMS(數(shù)據(jù)庫管理系統(tǒng))的核心功能。這種客戶請求服務(wù)、服務(wù)器提供服務(wù)的處理方式是一種新型的計算機(jī)應(yīng)用模式。Client和Server常常分別處在相距很遠(yuǎn)的兩臺計算機(jī)上,Client程序的任務(wù)是將用戶的要求提交給Server程序,再將Server程序返回的結(jié)果以特定的形式顯示給用戶;Server程序的任務(wù)是接收客戶程序提出的服務(wù)請求,進(jìn)行相應(yīng)的處理,再將結(jié)果返回給客戶程序。鑒于超市收銀系統(tǒng)的特性,本系統(tǒng)不牽扯多個客戶端,不需要線程同步。二、代碼設(shè)計框架因為使用C/S框架設(shè)計程序,因此有固定的設(shè)計步驟:.項目包的設(shè)計:-"27SupqyM!it_ketfibdiLagySsm-■d白m—日9c口面.it.clientQ-JjClisritMain.j=iv:x由…J]ClientOiit.java[日田[!um.it.entity由…?Goods,j4V4.0\1]Ueers.java-山c:om.it.server0J]ServerOpt.java0-J]ServerTlLfeid-j:iv:i0--由c-iffi.it.util:由…J]Datas._iava&J]SysCiiirist:ELTlt5_j:±_V:i0JjToolz.java-[Blzys.properties+5加系統(tǒng)庫[JarsSE-1.7]圖2client包:主要由客戶端操作界面類和客戶端業(yè)務(wù)類組成,客戶端操作類也就是客戶端main方法類,主要負(fù)責(zé)引導(dǎo)用戶操作,提供系統(tǒng)界面信息提示操作,包括:初始化登錄視圖、商品庫存管理視圖和收銀管理視圖;客戶端業(yè)務(wù)類主要包括處理客戶端請求并將客戶端請求打包發(fā)送給服務(wù)器的方法和一些輔助操作方法。處理庫存管理員請求方法為:商品入庫、商品出庫、新增商品、查詢?nèi)可唐泛桶淳幪柌樵兩唐?;處理收銀員請求方法為:掃描商品、修改購買數(shù)量商品和結(jié)賬。entity包:主要由系統(tǒng)所涉及的實體類組成,根據(jù)操作視圖可以確定為用戶類和商品類Clint[JiKFiLAp?licatifiijC;聲ikTi MnaYijiwur*****喊*****箕儂使用青電超市管理系統(tǒng)4wk*★事★★★.整鞋.退出家拓*****-l-++-k**4k***數(shù)字],2***£**A*****d****£*用尸名將:Lie1用戶備碼:000J用戶名或者密碼輸入懵逞?號錄先用尸名稱二11Q1 工月尸茶碼:1111圖3用戶信息[Jw?Apflicttin-A]C:\PropanFile3-\J?>-i\jd(klB.0J.8''b;ii'jit-swuku(2D】11L-10下午03:1G:06;-*歡包置錄音鳥苗市跖有冒理系恭荔石-卡選棒由行笨期作:1.百品AJE2,百品出庫 3.新地君旦看.再詢合都商品 S,將哥詛尋普詢用品石.溜出E'商品癇號:二L一一及香此喀3,請近段標(biāo)號3;新第冏品!商品融南品名葡南那黃單位數(shù)量10J3脈動水型挑7"1,SLS0二”4旺仔革累匚幡2.57g7Cirm言百芝辟地9.S■|.25mJ201002越臬朗言啕引1.513g200_皿白玉內(nèi)的豆限1.J400g1510苜百藝肆油9.51.25ml2D10D5桃李熟切片6.5400910:.1J6白玉黃豆芽2.1【5叱2口諳選擇進(jìn)行的附作:1.也品人掌 向?qū)С鰪U3.蝦培有晶,.查詢室聞裔品5.珍查陋■查詢周品6.Hit慟入用品制號:1003圖4商品信息server包:主要由服務(wù)器主流程類(線程類)和服務(wù)器(數(shù)據(jù)處理)業(yè)務(wù)類組成,服務(wù)器主流程類也即main方法類,主要負(fù)責(zé)接收客戶端請求,并根據(jù)請求標(biāo)志信息分配相應(yīng)操作,最后再將處理數(shù)據(jù)發(fā)送給客戶端;服務(wù)器數(shù)據(jù)處理業(yè)務(wù)類主要由處理客戶端請求的方法和商品信息庫組成。util包:util包為實用工具包,主要包括項目中一些工具類,主要包括數(shù)據(jù)處理類(加密、解密、數(shù)據(jù)轉(zhuǎn)換、特殊文件操作和數(shù)據(jù)打包)和常量類。本項目主要包括數(shù)據(jù)打包類、常量類和proprties文件操作類perties文件:Properties文件是一個文本文件;properties文件的語法有兩種,一種是注釋,一種是屬性配置;注釋:前面加上#號;屬性配置:以“鍵=值”的方式書寫一個屬性的配置信息。Properties類本身表示了對一種Map結(jié)構(gòu)的操作,properties文件本身就表示一個“鍵值對”的集合,因此,Properties類屬于集合容器的家族,在使用前應(yīng)該創(chuàng)建一個Properties的容器,實際上就是創(chuàng)建一個默認(rèn)不帶參數(shù)的Properties對象,通過別的方式給里面添加“鍵值對”。perties在本項目的作用主要用來配置服務(wù)器信息:主機(jī)名和端口號。2、項目設(shè)計知識點本項目主要設(shè)計關(guān)鍵知識點:類和對象,封裝,繼承,異常,集合和泛型,輸入/輸出,多線程和網(wǎng)絡(luò)編程。3、代碼編寫思路1)創(chuàng)建項目2)創(chuàng)建Java包:客戶端包,服務(wù)器包,實體包,實用工具包。3)創(chuàng)建配置文件:.properties文件或.xml文件。4)創(chuàng)建各Java包中的類文件:客戶端包:客戶端操作界面類和客戶端業(yè)務(wù)類;服務(wù)器包:服務(wù)器主流程類(線程類)和服務(wù)器業(yè)務(wù)類(數(shù)據(jù)處理);實體包:根據(jù)具體項目情況創(chuàng)建;實用工具包:數(shù)據(jù)包類:主要儲存客戶端和服務(wù)器之間交互的關(guān)鍵數(shù)據(jù),包括實體對象和邏輯判斷標(biāo)志等;
?常量類:客戶端和服務(wù)器之間需要共同使用的狀態(tài)常量,一般為業(yè)務(wù)操作標(biāo)識符和系統(tǒng)信息常量(正確、錯誤狀態(tài)常量,配置信息常量)。?工具類:一般為配置文件的操作類。編寫個項目文件(由簡入繁:單個功能實現(xiàn)到全部功能拓展)。項目調(diào)試。三、具體代碼分析perties文件編寫該文件主要用戶配置socket套接字屬性:主機(jī)名和端口號,在此配置信息為:JClientMain.javaJServerOptiivaIServerThreid.iaya Batas.javaI[=)sys.projertieE織[j1HOST=1ocalho.st2PCJRT=S8883I圖5sys信息實體類編寫根據(jù)entity包分析可知:Goods類和Users類。Goods類:SSuppressWarning-s(,pseriaLr,)publicclassGqqg.sprivateStriag-privateStringpublicclassGqqg.sprivateStriag-privateStringpriva-tedoubleg■口口3導(dǎo)Nmmef/V商品名稱goodsPrize;商品單價privateprivateStringgoodsUnit//商品單位|/V商品數(shù)量priva.teint/V商品數(shù)量圖6Goods類Users類:@SuppiressWarnings(T,seiriaL11)publicclassUsersimpIsments£eriaLizalble{
privateStringuserName; //用戶名稱privateStringug已EPms占0口工//用戶密碼圖7Users類注:因為涉及到socket編程,因此兩實體類均需要序列化實用工具包類編寫1)數(shù)據(jù)包類(Datas類):因為該項目為超市收銀系統(tǒng),根據(jù)項目效果圖可知,主要設(shè)計對象為:商品對象(goods),用戶對象5$6=);為便于商品信息操作,創(chuàng)建商品集合,又因為牽扯到庫存管理和收銀兩個類,進(jìn)而創(chuàng)建庫存商品集合和購買商品集合;又因為牽扯到客戶端和服務(wù)器端業(yè)務(wù)請求操作,因此創(chuàng)建業(yè)務(wù)操作標(biāo)識變量:flag。具體內(nèi)容如下:
?SuppressWarniags(T,serz_^L,r,)piiblicclassDatasijnplements£er£aL£zable{piivateStringflag;//業(yè)務(wù)■操作標(biāo)識privateGoodsg-Qods彳//商品對象piiva.teUsersuser;用尸對象pzrium七曰ArrayLLst<Goods>suinGooc.sList.;//庫存商品集合privateArrayList<Goods>buyGcadsList;//購買商品集合|SCmsdl?|皆|SCmsdl?|皆S工知助隨卒到“里■「彳=OClitui[JivsApplbc&t.i<in.]C:\Pr>>grwFiles\Jtv^jdkl wr.cke(2011-11-10下的⑶桿回,*****就通皆錄訐鳥鑿而匹亡苜理親段***請it勖桁的探性:L茴品入庫2.商品出庠3.蝌曲是4.吉詢?nèi)咳馄?.按疊汽號杏詢商品 后.追出商品端號咫晶名和磨:始價單位1DQ3融蜀力牢柱7.□1.51401D04旺F草果,糖2.S70g7D1口。1吉百芝酢淮9.512Smi201002在職妨香如峰1.513g2001007白玉佗的豆腐1.0400g151U08百百芝麻油12Smi201005穗李燕切U6.5400g101006白玉港豆芽2.435Qg201D10住f崩制淀褂4.2200g40情匡并進(jìn)仃的朋作:1-冏晶人奉工-商品出庫3?聃噌商品4一善何全花前品£.抵查閏號遁詢商晶后-退出J 圖9庫存商品集合應(yīng)用需求單的遇量單的.57.n 35.0.57.n 35.02.E 2.5gOM)旺仔蘋果QTTQg后連舞琳片的修柞二1.歸汽商品Z,峰區(qū)翻每3.港味4.退出3忠孟甌是:3*7,5.管調(diào)經(jīng)瓶W.臺員第此 圖10購買商品集合應(yīng)用需求注:因為涉及到socket編程,Datas類需要序列化。2)工具類(Tools類文件):Tools文件主要用于操作perties文件,對perties文件操作之前,首先需要加載源文件(鑒于加載操作特殊性(提前操作),使用static塊來封裝),然后才能讀取perties文件中鍵對應(yīng)的值。該類主要是用于讀取socket參數(shù)信息(host,port)。puJ>LlcclassTools{privatestaticPropercieap=newProperr.i&e[)//M..prcpsrt,白與文件CsraLX-c^>百光賽盯)try(p.1oad(Tools.口Lelsls_getCLa3sLoader(|.get=?.=sourzeRsStream(SysConstants.SfS_FEOjHEJETnwUfE])}ciatcih.I-Exceptiong-}In.printSt1J;//H?keyl1J5Bh-paluepublicstaticStringqetValue(Stringkeir){retucnp.gerProperty(ley}:
圖11Propertis方法:voidload(InputStreaminStream)從輸入流中讀取屬性列表(鍵和元素對)。ClassLoader類:類加載器是負(fù)責(zé)加載類的對象。InputStreamgetResourceAsStream(Stringname):返回讀取指定資源的輸入流。3)常量類:由代碼編寫思路分析可知:常量類列表主要由以下幾個部門組成:系統(tǒng)配置常量,系統(tǒng)信息反饋常量,系統(tǒng)操作常量,管理員操作常量,收銀員操作常量。publioalaasSy3constants{〃系癱超常量publiostaticfinalptiijlicst-atxcfinalpubliostatid.finalpublioalaasSy3constants{〃系癱超常量publiostaticfinalptiijlicst-atxcfinalpubliostatid.final//系疣信.息反饋裁星publiostatics,finalpiuiblicstaticfinal門賓成iLHmpidb-licstaticfinalstringStringstringstringStringStringCYS2SERVERPQRT=,hP?F.Z,h;1;戰(zhàn)各這三SYS_HQSTKAr^E=F,HOSTr,; //眼^§由口離量SYS_SUCCESS="SUCCE.ES";U正曬曜作亮母=YSLOGIN="LOGZNHrpiiblic耳上ai.icpublicstatic=YSLOGIN="LOGZNHrpiiblic耳上ai.icpublicstatic官室髭講publicstaticpublicsLaticpublicstaticpiiblicstaticpublicstatic//l?銀儲陛]|■宗衛(wèi)publicstaticpiiblicstaticpubliciitStlCfinalStringSYS_ADMIN="ArM-KH;finalstringSYSuser="二二er";finalstring¥S_1MPQST-n;finalString.:YS_SXPdRT=^EXPORT";finalstringi'YS_AC^-"n二二finalString^YS_-TNDA:^="7-K?A7.L";finalstring 二M二”;//L年官M字和常岳//出用區(qū)%空七軍司//淅電白:磔當(dāng)定量//亙詞打巨面品攔十耳房//待如三嚀r荀昆明作篇后工itimltina1Xitialst-rlngsys_scp^=''scan"fStringUPDATE=nU?D^TA"; //St-ring=YS_FZNDEUY=irFZNLB^Yir;U圖12常量列表注:具體常量參數(shù)可以在具體編程中增加或刪減。客戶端類編寫1)客戶端操作界面類:客戶端操作界面類主要完成如下工作:(1)用戶登錄(2)用戶操作用戶登錄有兩個選項:管理員和收銀員;用戶操作也分別按照管理員和收銀員來展開。哨』fisc& .即步匚Cl]?nt[JtvtApTlicitionlC:\Froa-inF 6,Q」6\binXj的iwtxt(Z01J^l:-LD下午QZ5654)_***********曬使用音鳥超情理系統(tǒng)*****0**+*.登陸.退出廉蛻+*±*士看士*上M*+***請選擇數(shù)宇1/2****±+±±*/****★4土土士用戶名輸:11口工用戶祁嗎;口口口用戶名或者密碼嗡入惜謁,登錄失敗9用戶名粉:11口1 I用「密即11.二工★★★土士歡迎登家寺翼超市雷存普理系藐沙****話選掾進(jìn)行的用作:1.商品入庫2.商品出庫3.新增商品4.追詢?nèi)可唐?.按空海弓杳詢商品日.退出且Cciksola聲' 國■二?曰-回房曰/21,口口―TOC\o"1-5"\h\zClient[JavaApplication]C:\Frogra/tFilts\JivaXjdlcl,6.O_lfYbin\j(2011-1F*********旃癡庾用青鳥超市管理家統(tǒng)女工夫工******* 二_11.登陸2.退出系統(tǒng)去去去去大去太太太去去去去去去太大請選擇數(shù)字1/2六去去去去去去大去去去去去去太太太去■去用戶名稱:1口口工 I用尸密㈣:口口口口卜去*太六旗迎登錄春鳥超市收銀系統(tǒng)去夫一請選擇進(jìn)行的操作:1.掃描商品2.修改數(shù)量3.結(jié)賬4,退出IL1 」圖14收銀員登錄成功視圖鑒于登錄操作只有兩個選項,采用if-else編寫較為快捷。具體代碼截圖如下://幽心錄視圉pidbliavoidlogin(){while-(-true){EystQ琬■心Ut.pfin七:111(?"***.聶****北速使用吉鳥頡苜理不.統(tǒng)鼻***.費#***#1');Systsm.cut-print.ln(1P1.登陸\七2.退出芟款14);system.ouc.pKintlnf0*^********* *************11};intch.=input-aJiextInt()"if(ch==1){while(true)■{System-out.printf”用戶名稱:"};q名比白=input.iiext,();system,dui,◎工int「'用戶范碼:0);p^d-input.i\ext();Dataadatas=opt-doLogin(namejpwd];if(SysConstants.SYSADILIN,equals(datas.getFlag())){EzreateAdnn.inViefjf(}jbraak;}Glseif(SysConstints. equals(datas.getFlag()}>{craateuserviaw[)fbreak;}else{System,out.println("用尸密或音變嗎單1入錯課?登錄失眼!")7}Q1£Q±f(Ch==2){日了:31;號111???谄?口七上11七111("謝謝使用車程序!T"}『Systern..exit(0);7elset圖15登錄操作代碼管理員操作和業(yè)務(wù)員操作選擇較多,因此采用switch來實現(xiàn)較為合適,具體代碼截圖如下://獨幣肆存看出點妖現(xiàn)的piihlicvoidcrsateAdminview(1{SyctHm..口ui=.p匚:letLn(h#**y*海里疑/為超市赤百營臣軍嫉**我我**1*****1□};wti1le[true)(System.out.「匚intihL『港選拚避行的助怛;3「育昌Rt2.陪品出庫3,舒W肉品4,直iti生靛由呂5?指宓后捕號自由點呂由.1E出Dintch.-input_nextInt()jBlhlitcn{UlU{case1:Eystam.out^pvirrtf1r向融耳:")?StringnurnboE1=input.najct(J;iF{goodsJudge[nunitae-rI-){Systeffi.out?print["AFife>:;intstock=input.nextInti.)?DatsiEdatae=opt,daImport(n.ajnjaerPstock);if(£^=Can=tant=.SY£_Sl?CCFSS. |dhtas.gsatFljg()]){SpsTi已ni-口112:.pritiTLn「''宦盅功,"];±howAlLGoods[];}else{5ystsm,aut-printLn("入庫先觸」厝宜$.映1Et")『>else{3ystem.ou£Bprintin("也有*藺品.B速推的號3:漸喻品i”);Bhawa.llGoods0/break;case2teptview()■break?□ass3"::addVLew();break;cas&4:showAllGocds()了圖16管理員操作代碼//臼TT7或防等堂主進(jìn)現(xiàn)國publicvoidcreiteUserView(){intflag=0"Sy三七信皿.ou匕.口匚工口七1rL('2山*?*山“*山**歡迎電錄百鳥超市收*艮系?統(tǒng)計謫由#%許*中偏”);while(tru-a){6£3七巳加?口口t,pr:Ln七工nl”語選擇進(jìn)行的操作:1.掃描商品3,御t4打艮出”};intch=input.nextInt()j;switch(ch){case1:System.out.print("輸人姜才甜的商品怎嗎;");StringscanNo=input.iLext[)?if(goodsJudge(scanNo}){GoodsscanGoods—nswGoods()■;sc^nGoods.£et.GoodsNuiriloerCscanNo);Datasdatas=opt,doScan(scanGoods)?x£(SywConataiit^s:,SYS_SUCCESS■equals(datasagetFla.g())}{Eys七日m?ou匚.pEint;lJi「■掃描成功t"}:flag=1;ArrayList<Goods>與匚m口口[5七二da.tas.getBuyGaodsList()scanShow;}else{Eyw七曰m.門口七?9匚工11士工11("掃描:?珈11|};}else{Systeni.outaprintln對不起一投書比商品,三引趺(fitbreak;case2;if(£lag==1){■updat&Viewl)-;}else-{£蕈片七臺111,口11七?口上士111;:1口(“您還幔有掃描商品?e)fbrea.k;白口片白3:if(flag==1){CkeckoutVi.ew():
main()方法:原則上main()越簡單越好,具體代碼截圖如下:// 法piiblicstaticvoidmain(String[-args){newCL.ientMairL().二cig士n();圖18main()方法代碼注:代碼編寫按如上模塊來進(jìn)行編寫(登錄方法,管理員操作方法,收銀員方法),具體方法的實現(xiàn)依靠客戶端業(yè)務(wù)類,本類中主要負(fù)責(zé)視圖的引導(dǎo)和顯示,可以分模塊來進(jìn)行編寫和調(diào)試,遵循由簡入繁原則。2)客戶端業(yè)務(wù)類:〃登陸puhlicDatas〃登陸puhlicDatasdoLogin(Stringnamer£trin.q//而即、庫pLltiliCDdLisdoimport.(Stringnmiibtirf//而即、庫pLltiliCDdLisdoimport.(Stringnmiibtirfititatock){口//商男巴庫publicrat?doExport(St.rJngnmniberrintstock}[匚//查看臼有商品publicEatasdO±'±TLQA__(J{□//棺扁母者看商昌puikilicGoodspublicEatasdO±'±TLQA__(J{□//棺扁母者看商昌puikilicGoodsdoPLnd(Stringnunnh^r)[口//新噌商品publicDatasdoAdd(Goo3legooasj{口//掃邪商品puJolicDat311sdoScan(Goodsgoods)[口//叁何購票商晶川去publicArrayList<Goods>findBiiY-i-=t(){||//修/購巨商品數(shù)量puJolicDatasdoT7pdate{31.r.Lngrminkier,intatock){口圖19客戶端業(yè)務(wù)方法因為需要使用socket編程來實現(xiàn)客戶端與服務(wù)器的數(shù)據(jù)通信,因此需要socket的初始化和socket的關(guān)閉操作。具體代碼如下:
//初始化publicvoidinit(}{try(this.socket=ngw1sock&t(Tools.getvslue(SysConstants.$宓}integer.j2drseznt(Tools,g-etVsiue(SysConstants.S¥S_6ERVERP0RT)}}this.objQut=newDbjectzOutputStream(socket.netQlltputStr-=ani()};this.otojin=n6wcbjsctlnput.Strs^m(.socket..gotlnpuLtstrs3m()>;}catch(Exceptione)t-e.printStackTrace()///關(guān)闈publicvoidclossAl1()《try{|this.objIn?close();this.objQut.close()■this,socket.close()|!|catch(Exceptione)fe,printStackTraceO圖20socket的初始化和關(guān)閉操作注:客戶端業(yè)務(wù)類的調(diào)試應(yīng)該在服務(wù)器類的框架搭好之后進(jìn)行(可以完成基本的通信應(yīng)答操作)。客戶端編程關(guān)鍵點:客戶端發(fā)送數(shù)據(jù)編寫原則,通過Datas類中的屬性參數(shù)作為載體,即對客戶信息,商品信息和業(yè)務(wù)操作常量標(biāo)識符進(jìn)行數(shù)據(jù)打包,統(tǒng)統(tǒng)將需要發(fā)送的關(guān)鍵信息封裝到Datas對象內(nèi),然后將這個對象發(fā)送給服務(wù)器,具體代碼截圖如下://商品入庫publicDatasdoImport(Stringnumb日亡.intstock){Datasciatas=null;try(this.Lnit();Goodsgoods=newGoods()jgoods.setGoodsNumber(TLumber);goods.setGoodsStock(stock^;datas=newDatas();datas.setQoods(goods);datas.setFLag(SysConstants.SYSIMPORT)://寫出 一this.objOut.writeObject(datae);this.socket.shutdownQutput();U詼進(jìn)來datas={Datas)abjZn.readobject{)}卜oa_tch{Exceptione){e.printStackTracs()r}finally{this.closeALL{)iretnmdatasi圖21商品入庫關(guān)鍵信息Datas打包發(fā)送代碼
同時讀取服務(wù)器端返回的Datas數(shù)據(jù),提取需要的信息進(jìn)行處理和判斷,其中包括狀態(tài)常量信息(success或error),具體代碼截圖如下:ca.sc1:SysteirL.out.print{“播人商品編號:11j;3tringnunnLer=z_npnt.n^Kt()ri£(qoodoJudge(,riLUTifct;x)) {sya一t二..c?u『.二工二i:L「'A,車婁i量:F1;intstcck=input.nextlrt(};DAta.=:catas=opt.doCmporttnumberjRtock];it(^ysCoTLS-^nt9.SYSSUCCESS.^qiiA.ss.gptF.ag-(}}){System.ou七.三上三口二二n.(,;.、庫成功?T,);nhowAL1Goodc[);}else{System,ulit-口工士n?二el「'八庠先敗,準(zhǔn)亙新探作T")i!■else{Sy^-em.r>i37.prJnt.口「售咕此若品,字比擇端wv:新國荀品,'■】;showA..(^oonr();break;圖22讀取服務(wù)器返回數(shù)據(jù)并處理5.服務(wù)器類編寫1)服務(wù)器主流程類:服務(wù)器主流程類也即線程類,本線程類采用繼承Thread父類來實現(xiàn)。run()方法主要負(fù)責(zé)讀取客戶端發(fā)送過來的數(shù)據(jù),提取業(yè)務(wù)操作常量標(biāo)識,然后分別進(jìn)行相應(yīng)的操作,具體的數(shù)據(jù)處理依靠服務(wù)器業(yè)務(wù)類來實現(xiàn),然后在將處理好的數(shù)據(jù)打包(Datas)發(fā)送給客戶端,具體代碼截圖如下:try(Server£ocketserverSocket=newServerSocket(IiLteger-pairseZnt(lools.getvalu&f.sysConstants.SYS^ERVERPORT't});Socketsocket=null;Objectrnputstisaniobjm=null;objectOutputStreamobjOut=null;while[true){sockez=serverSocket:?accepT();//宓SIf?.在??^內(nèi)cbjIn-newObjectliLputStreanL(socket.getInputStream());objOut=newObject.Outpiit;St;reain(socketsgetoutputstream//報收客戶場傳遢來虢據(jù) " ^ ^Datasd^tdLS=(Datas}objIn-readobject[);//new般弱期業(yè)務(wù)對裝ServerOptopt-newServerOpt();LT(SysCon.'^ants.5rs_---iNreji;s'1;(datasrge;-',,g()}}{邛學(xué)哥日:,營二:晅仃intt=opt.serverLc-gLn(datas.qetUser(}.getUserNarne(}1rdatas-getus&r(>.gotueerPasswordO);//蜩七i£ft==1)《datas-setFlag(SysConstanta.SXS_ADMI7^;}elsei±(t==2J1|datas?setFlag(SysConstants.S¥S_J75ER〉:習(xí)else{ddit.as.setFlag(SysConstants.SXS_ERRQR);}elseif[SysCcnstants J-equals(datas.getFlag(}}}{//商品入國春作DatasiptDatas=apt.impart(datas,getGaods()}?if(i.ptDatas==null){圖23讀取客戶端數(shù)據(jù)并進(jìn)行相應(yīng)的操作代碼
}else±f(Sysconstants.srs_findsuy.equals(datas.getElag())}{Arraylis^<Goods>list=inullrlist二opt.findBuy()7if(list二二null}《datas?sstElag(Sysconstants.sys_errqb};}else(datas.setFlag(SysConstants.jd3tas-setEuLyGoodsLiet(list);//JI」住ohjOutawxitsofcjset(datas};cijout-close(>;objin.close()?socket_closs(1;}oatcJi(Exceptiana){e,prijitStackTracet);|圖24將處理好的數(shù)據(jù)打包發(fā)送給客戶端操作代碼2)服務(wù)器業(yè)務(wù)類:服務(wù)器業(yè)務(wù)類主要包括兩部分:基礎(chǔ)數(shù)據(jù):用戶信息(管理員和收銀員的賬號、密碼-ROM型),庫存商品信息加。乂型),購買商品信息上人乂型);處理客戶端請求的數(shù)據(jù)處理方法?;A(chǔ)數(shù)據(jù)以后可用數(shù)據(jù)庫來保存處理。ROM型數(shù)據(jù)初始化采用static塊實現(xiàn),一次執(zhí)行,最先執(zhí)行。具體代碼截圖如下:privatestaticprivatestatloprivatest-atiaprivatestatia//服勞器數(shù)據(jù)初始化Usersuser"privatestaticprivatestatloprivatest-atiaprivatestatia//服勞器數(shù)據(jù)初始化Usersactoln;//營理員ArrayList<GDads>sirnrlist—newArrayList<Goads>()7//所有商品集
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度云南省高校教師資格證之高等教育心理學(xué)題庫練習(xí)試卷A卷附答案
- 2024年度云南省高校教師資格證之高等教育法規(guī)題庫與答案
- 2024年度云南省高校教師資格證之高校教師職業(yè)道德全真模擬考試試卷A卷含答案
- 低空經(jīng)濟(jì)產(chǎn)業(yè)機(jī)遇與挑戰(zhàn)
- 2024年醫(yī)用材料制造項目資金需求報告代可行性研究報告
- 贛南師范大學(xué)《地理科學(xué)導(dǎo)論》2021-2022學(xué)年第一學(xué)期期末試卷
- 江西省宜春市上高二中2025屆高三上學(xué)期10月月考試題 物理 含答案
- 阜陽師范大學(xué)《書法》2022-2023學(xué)年第一學(xué)期期末試卷
- 汽車修理工(高級)試題題庫及答案
- 福建師范大學(xué)《組織行為與人際技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 公開課聽課教師簽到表
- 開展新技術(shù)、新項目科室內(nèi)討論記錄
- 主題班會-同學(xué)情教學(xué)課件
- 道德與法治《健康看電視》優(yōu)秀課件
- 泌尿系統(tǒng)完整結(jié)構(gòu)培訓(xùn)課件
- 規(guī)培體表腫物切除術(shù)
- 新教材北師大版高中數(shù)學(xué)必修一 2.3函數(shù)的單調(diào)性和最值 課時練(課后作業(yè)設(shè)計)
- DB32∕T 943-2006 道路聲屏障質(zhì)量檢驗評定
- 四年級(上冊)綜合實踐活動課教學(xué)案(貴州科學(xué)技術(shù)出版社)
- 腹瀉教學(xué)課件
- 中考體育籃球運球考試規(guī)則與練習(xí)方法(附場地圖)
評論
0/150
提交評論