




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
{店鋪管理}北大青鳥單元超市收銀管理系統(tǒng)包結(jié)構(gòu)四個包,九個類,一個資源文件客戶端類package.Client;/***客戶端界面*/import.SimpleDateFormat;import.ArrayList;import.Date;import.Scanner;import.;import.;import.;publicclassClient{//定義掃描器,用于鍵盤輸入publicstaticScannerinput=newScanner();//創(chuàng)建客戶端業(yè)務(wù)類對象,調(diào)用方法publicstaticClientBcb=newClientB();publicstaticvoidmain(String[]args){do{.println("***********歡迎使用青鳥超市系統(tǒng)*************");.println("1.登錄"+"\n2.退出");.println("***********請選擇1/2*************");Stringchoice=();if(("1")){//登錄視圖createLoginView();break;}elseif(("2")){//退出(0);}else{//輸入有誤,報錯.println("無此選項!");}}while(true);.println("***********謝謝使用青鳥超市系統(tǒng)*************");}/***登錄視圖*通過輸入的用戶名與密碼驗(yàn)證用戶身份,管理員則進(jìn)入管理界面,收銀員則進(jìn)入收銀界面,都不是則提示錯誤,并重新進(jìn)行輸入*/publicstaticvoidcreateLoginView(){do{//提示登錄信息.println("請輸入用戶名:");Stringname=();.println("請輸入密碼:");Stringpassword=();//調(diào)用客戶端登錄方法,接收返回值,判斷登錄者的身份Datasdatas=(name,password);//判斷是管理員還是收銀員if(().equals(_ADMIN)){createAdminView();break;}elseif(().equals(_CASHIER)){createCashierView();break;}else{.println("用戶名或密碼有誤,請重新輸入");}}while(true);}/***管理員菜單*實(shí)現(xiàn)管理員功能:*1.商品入庫2.商品出庫3.新增商品4.查詢?nèi)可唐?.按編號查詢商品6.退出*/privatestaticvoidcreateAdminView(){//循環(huán)操作//管理員菜單.println("管理員登錄成功,進(jìn)入管理員界面");do{.println("***********歡迎進(jìn)入青鳥超市庫存管理系統(tǒng)*************");.println("1.商品入庫\t2.商品出庫\t3.新增商品\t4.查詢?nèi)可唐穃t5.按序號查詢商品\t6.退出");//提示用戶選擇.println("請輸入您的選擇");intchoice=();switch(choice){//商品入庫,調(diào)入庫方法case1://提示輸入要入庫的編號.println("請輸入入庫商品編號:");//定義變量接收輸入的編號Stringgoodnum=();//調(diào)用方法判斷庫存中是否有要入庫的商品if((goodnum).getFlag().equals(_SUCCESS)){.println("請輸入入庫數(shù)量:");intcount=();if(count>=0){Datasdatas=(goodnum,count);if(().equals(_SUCCESS)){.println("入庫成功!");showList(());}}else{.println("入庫數(shù)量必須大于0");}}else{.println("無此商品,請選擇3新增");}break;//商品出庫,調(diào)出庫方法case2:do{//提示輸入出庫商品編號.println("請選擇出庫商品編號:");//定義變量接收編號Stringgoodid=();//先查詢是否由此商品if((goodid).getFlag().equals(_SUCCESS)){//提示輸入出庫數(shù)量.println("請輸入出庫數(shù)量:");intcount=();if(count>0){Datasdatas=(goodid,count);if(().equals(_LACK)){.println("庫存不足!");showGood(datas);break;}else{.println("出庫成功!");showList(datas);break;}}else{.println("出庫數(shù)量必須大于0!");}}else{.println("庫存中無此商品,請選擇3新增");break;}}while(true);break;case3://新增商品,調(diào)新增方法do{//提示輸入新增商品編號.println("請輸入新增商品的編號:");Stringnewgoodid=();if((newgoodid).getFlag().equals(_SUCCESS)){.println("商品已存在");break;}else{.println("請輸入商品名稱:");Stringname=();.println("請輸入商品單價:");doubleprice=();.println("請輸入商品單位:");Stringunit=();.println("請輸入商品數(shù)量:");intcount=();Goodsgood=newGoods(newgoodid,(name+"\t"),price,unit,count);//把要新增的商品通過調(diào)用方法傳給業(yè)務(wù)類,并接收返回值Datasdatas=(good);.println("新增商品成功!");//打印商品列表showList(());break;}}while(true);break;//查詢?nèi)可唐返姆椒╟ase4://查詢商品,調(diào)用showList方法參數(shù)為Datas類型,是FindAll傳回來的showList(());break;//按編號查詢商品,調(diào)按編號查詢方法case5://提示輸入編號.println("請輸入要查詢的編號:");//定義變量接收輸入Stringid=();//判斷庫存中是否存在編號為goodid的商品Datasdatas=(id);//如果存在,調(diào)用方法,打印商品if(().equals(_SUCCESS)){showGood(datas);}else{.println("沒有此商品");}break;case6://退出.println("管理員退出成功!");(0);default://提示無此選項.println("無此選項,請重新輸入:");}}while(true);}/***收銀員管理界面.*實(shí)現(xiàn)收銀員的功能:*1.掃描商品2.修改購買商品的數(shù)量3.結(jié)賬4.退出*///收銀員管理界面privatestaticvoidcreateCashierView(){//循環(huán)操作收銀界面while(true){.println("收銀員登錄成功,進(jìn)入收銀員界面");.println("***********歡迎進(jìn)入青鳥超市收銀管理系統(tǒng)*************");.println("1.掃描商品\t2.修改數(shù)量\t3.結(jié)賬\t4.退出");//提示用戶輸入操作選項.println("請輸入您的選擇:");intchoice=();switch(choice){case1://調(diào)用掃描方法do{//提示輸入掃描編號.println("請輸入要掃描的商品編號:");Stringscannum=();//如果查詢到編號,說明商品存在,否則商品不存在if((scannum).getFlag().equals(_SUCCESS)){//如果商品存在,調(diào)用掃描的方法Datasdatas=(scannum);//判斷返回的標(biāo)識if(().equals(_SUCCESS)){.println("掃描成功");showScan(datas);break;}else{.println("掃描失敗");//showScan(datas);break;}}else{.println("商品不存在!");break;}}while(true);break;case2://修改數(shù)量的方法//判斷購買列表是否為空if(().getFlag().equals(_ERROR)){.println("購買列表中還沒有購買物品!");continue;}//循環(huán)操作數(shù)據(jù)do{//提示用戶輸入要修改的編號,并判斷購買列表中是否存在此編號.println("請輸入要修改的商品編號:");Stringchangeid=();Datasdatas=newDatas();//調(diào)用方法判斷是否存在商品編號if(hasid(changeid)){//存在,提示修改數(shù)量.println("請輸入修改后的數(shù)量");intchangenum=();if(changenum>1){datas=(changeid,changenum);if(().equals(_LACK)){.println("數(shù)量不足,請確認(rèn)!");showGood((changeid));continue;}else{.println("修改成功!");showScan(());break;}}else{.println("購買數(shù)量必須大于0!");break;}}//如果包含,提示修改數(shù)量.println("購買列表中無此商品,請核實(shí)");continue;}while(true);break;case3://調(diào)用結(jié)賬方法creatOver();break;case4://退出.println("收銀員退出系統(tǒng)成功!");(0);default://錯誤提示.println("輸入有問題,請重新輸入:");}}}/***打印商品列表的方法,參數(shù)是Datas類型,無返回值*通過調(diào)用客戶端業(yè)務(wù)類的方法得到返回值,打印商品列表*@paramdatas*///打印商品列表privatestaticvoidshowList(Datasdatas){.println("------------------------------------------------------------------------------------------------");.println("商品編號\t\t商品名稱\t\t\t\t商品單價\t\t單位\t\t數(shù)量");for(Goodsgood:()){.println(()+"\t\t"+()+"\t\t"+()+"\t\t"+()+"\t\t"+());}.println("------------------------------------------------------------------------------------------------");}/***按編號查詢商品的方法.得到返回值,直接打印返回值中的商品*@paramdatas*///打印單個商品privatestaticvoidshowGood(Datasdatas){.println("------------------------------------------------------------------------------------------------");.println("商品編號\t\t商品名稱\t\t\t\t商品單價\t\t單位\t\t數(shù)量");.println(().getGoodid()+"\t\t"+().getGoodname()+"\t\t"+().getGoodprice()+"\t\t"+().getGoodunit()+"\t\t"+().getGoodcount());.println("------------------------------------------------------------------------------------------------");}/***收銀員菜單中的掃描商品的方法后打印掃描商品列表的方法**@paramdatas*///打印掃描商品列表privatestaticvoidshowScan(Datasdatas){if(().equals(_SUCCESS)){//定義列表接收掃描后的購買列表ArrayList<Goods>scanlist=();//輸出商品列表.println("商品編號\t商品名稱\t\t\t\t數(shù)量\t\t單價\t\t金額");.println("------------------------------------------------------------------------------------------------");for(Goodsgood:scanlist){.println(()+"\t"+()+"\t\t"+()+"\t\t"+()+"\t\t"+(()*()));}.println("------------------------------------------------------------------------------------------------");}}/***查詢購買列表中是否存在要修改數(shù)量的商品*參數(shù)為商品編號,如果存在,返回true.不存在則返回false*@paramid*@return*///查詢購買列表中是否存在要修改數(shù)量商品的編號privatestaticbooleanhasid(Stringid){Datasdatas=newDatas();(().getBuylist());for(Goodsgood:()){if(().equals(id)){returntrue;}}returnfalse;}/***結(jié)賬方法,分為普通結(jié)賬和會員結(jié)賬*普通結(jié)賬和會員結(jié)賬,分別調(diào)用普通結(jié)賬方法和會員結(jié)賬方法*///結(jié)賬方法privatestaticvoidcreatOver(){//首先打印購買列表,算出總金額.調(diào)用普通結(jié)賬,或vip結(jié)賬doublemoney=sum(());//.println("您的消費(fèi)金額是:"+money);//提示選擇結(jié)賬方法if(money!=0){.println("請選擇結(jié)賬方法:");.println("1.普通結(jié)賬\t2.會員結(jié)賬");intchoice=();if(choice==1){//普通會員結(jié)賬方法.println("您的消費(fèi)金額是:"+money);do{.println("請輸入金額:");intpay=();if(pay<0){.println("請輸入正確金額!");}elseif(pay<money){.println("金額不足,請確認(rèn)!");}elseif(pay>=money){//.println();//結(jié)賬成功.調(diào)用結(jié)賬方法,打印小票,并跳出結(jié)賬.Over(money,pay);break;}else{.println("請輸入正確格式:");}}while(true);}elseif(choice==2){//vip會員結(jié)賬方法,會員卡號2011..println("您的消費(fèi)金額是:"+money);.print("請輸入您的會員卡號:");do{intvip=();if(vip==2013){.print("會員卡號正確,請輸入您要支付的金額:");intvippay=();if(vippay>0){if(vippay>money){//金額足夠時調(diào)用vip結(jié)賬方法VipOver(money,vippay);break;}else{.println("付款金額不足");}}else{.println("付款金額必須大于0!");}}else{.println("您的會員卡號不正確:");}}while(true);}else{.println("無此結(jié)賬方法");}}else{.println("您還沒有掃描商品");}}/***結(jié)賬時用到的計算購買金額的方法,如果buylist不為空,則返回購買金額.否則返回0.**@paramresult*@return*///算出購買總金額的方法privatestaticdoublesum(Datasresult){//首先判斷購買列表是否為空,不為空則算出購買金額if(().getFlag().equals(_SUCCESS)){ArrayList<Goods>list=().getBuylist();doublesum=0;//購買總額for(inti=0;i<();i++){sum+=(i).getGoodprice()*(i).getGoodcount();}returnsum;}elsereturn0;}//計算購買數(shù)量的方法privatestaticintsumBuyListCount(Datasresult){if(().getFlag().equals(_SUCCESS)){ArrayList<Goods>list=().getBuylist();intgoodscount=0;for(inti=0;i<();i++){goodscount+=(i).getGoodcount();}returngoodscount;}else{return0;}}/***普通結(jié)賬方法.返回結(jié)賬視圖,并清空購買菜單*@parammoney*@parampay*///普通用戶結(jié)賬的方法privatestaticvoidOver(doublemoney,intpay){//首先打印,小票的表頭.println("***************************************************************************************************");.println("\t\t\t\t青鳥超市");.println("收銀員:1001\t小票號:"+ticket());//顯示購買列表showbuylist();//顯示購買金額和購買的數(shù)量,結(jié)賬提示.println("總數(shù)量:"+sumBuyListCount(())+"\t\t\t應(yīng)收:"+money);.println("實(shí)收:"+pay+"\t\t找零:"+(pay-money));.println(Date());.println("此小票是您退換貨及核對積分的憑證,請妥善保存!");.println("***************************************************************************************************");//購買列表清空();}/***Vip會員結(jié)賬方法.返回結(jié)賬視圖,累計會員積分,并清空購買菜單*@parammoney*@parampay*///vip用戶結(jié)賬方法privatestaticvoidVipOver(doublemoney,intvippay){//首先打印,小票的表頭.println("***************************************************************************************************");.println("\t\t\t\t青鳥超市");.println("收銀員:1001\t小票號:"+ticket());//顯示購買列表showbuylist();//顯示購買金額和購買的數(shù)量,結(jié)賬提示.println("總數(shù)量:"+sumBuyListCount(())+"\t\t\t應(yīng)收:"+money);.println("實(shí)收:"+vippay+"\t\t找零:"+(vippay-money));//Vip積分提示.println("本次累計積分成功\t\t卡號:2011");.println("消費(fèi)前積分+本次消費(fèi)積分=消費(fèi)后積分");.println(2000+"+"+(int)money+"="+(2000+(int)money));.println(Date());.println("此小票是您退換貨及核對積分的憑證,請妥善保存!");.println("***************************************************************************************************");//購買列表清空();}/***打印購買菜單的方法.*///打印購買列表的方法privatestaticvoidshowbuylist(){ArrayList<Goods>buylist=().getBuylist();.println("序\t\t商品名稱(單位)\t\t\t\t數(shù)量\t\t單價\t\t金額");.println("------------------------------------------------------------------------------------------------");for(inti=0;i<();i++){.println((i+1)+"\t\t("+(i).getGoodid()+")"+(i).getGoodname()+(i).getGoodunit()+"\t\t\t"+(i).getGoodcount()+"\t\t"+(i).getGoodprice()+"\t\t"+(i).getGoodcount()*(i).getGoodprice());}.println("------------------------------------------------------------------------------------------------");}/***得到日期的方法,在結(jié)賬時顯示日期用*@return*///顯示日期的方法privatestaticStringDate(){Datedate=newDate();SimpleDateFormatsdf=newSimpleDateFormat("yyyydd/hh:mm:ss");Stringpaydate=(date);returnpaydate;}/***得到小票號的方法.日期+(1-1000)的隨機(jī)數(shù)*@return*///打印票據(jù)的方法privatestaticStringticket(){Datedate=newDate();SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddhhmm");Stringticket=(date)+(int)(()*1000);returnticket;}}客戶端業(yè)務(wù)類package.Client;/***客戶端業(yè)務(wù)類.*功能:客戶端調(diào)用業(yè)務(wù)類的方法,實(shí)現(xiàn)和服務(wù)器端的數(shù)據(jù)交互*/import.IOException;import.ObjectInputStream;import.ObjectOutputStream;import.Socket;import.UnknownHostException;import.;import.;import.;import.;import.;publicclassClientB{//創(chuàng)建Socket實(shí)例Socketsocket=null;//創(chuàng)建輸入輸出流ObjectOutputStreamoos=null;ObjectInputStreamois=null;/***初始化輸入輸出流的方法,每次調(diào)用方法時都要初始化輸入輸出流*///初始化流的方法publicvoidinitSocket(){try{//socket=newSocket(localhost,8888)socket=newSocket((_HOSTNAME),((_LISTENERPORT)));//獲得輸入輸出流oos=newObjectOutputStream(());ois=newObjectInputStream(());}catch(NumberFormatExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(UnknownHostExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}}/***關(guān)閉輸入輸出流的方法.*每次調(diào)用方法之后都要關(guān)閉輸入輸出流*/publicvoidcloseSocket(){//關(guān)閉流的方法try{();();();}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}}/***客戶端登錄方法.*接收客戶端發(fā)送參數(shù),發(fā)送到服務(wù)器端驗(yàn)證,并接收服務(wù)器端返回的數(shù)據(jù)信息*@paramname*@parampassword*@return*///登錄方法publicDatasdoLogin(Stringname,Stringpassword){initSocket();Useruser=newUser();(name);(password);Datasdatas=newDatas();(_LOGIN);(user);//寫入流try{(datas);//接收服務(wù)器返回值datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端查詢?nèi)可唐返姆椒?@return*///查詢?nèi)可唐返姆椒╬ublicDatasFindAll(){initSocket();Datasdatas=newDatas();(_FINDALL);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端實(shí)現(xiàn)按編號查詢商品的方法*功能:接收編號,到服務(wù)器查詢,接收返回值*@paramgoodid*@return*///按編號查詢商品的方法publicDatasFind(Stringgoodid){initSocket();Goodsgood=newGoods();(goodid);Datasdatas=newDatas();(_FIND);(good);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端管理員實(shí)現(xiàn)入庫商品的方法*@paramgoodid*@paramcount*@return*///入庫方法publicDatasRuKu(Stringgoodid,intcount){initSocket();Goodsgood=newGoods();(goodid);(count);Datasdatas=newDatas();(_RUKU);(good);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端管理員實(shí)現(xiàn)商品出庫的方法*@paramgoodid*@paramcount*@return*/publicDatasChuKu(Stringgoodid,intcount){initSocket();//接收參數(shù)Goodsgood=newGoods();(goodid);(count);Datasdatas=newDatas();(_CHUKU);(good);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端管理員實(shí)現(xiàn)商品新增的方法*@paramgood*@return*///新增商品方法publicDatasAdd(Goodsgood){initSocket();Datasdatas=newDatas();(_ADD);(good);try{(datas);datas=(Datas)();}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端收銀員實(shí)現(xiàn)掃描商品的方法*@paramscannum*@return*///掃描方法publicDatasscan(Stringscannum){//TODO自動生成的方法存根initSocket();Goodsgood=newGoods();(scannum);Datasdatas=newDatas();(good);(_SCAN);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端收銀員實(shí)現(xiàn)結(jié)賬時返回購買列表的方法*@return*///結(jié)賬方法.返回購買列表publicDatasresult(){initSocket();Datasdatas=newDatas();(_RESULT);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端收銀員實(shí)現(xiàn)修改數(shù)量的方法*@paramchangeid*@paramchangenum*@return*///收銀員,修改數(shù)量的方法publicDatasChangeCount(Stringchangeid,intchangenum){initSocket();Goodsgood=newGoods();(changeid);(changenum);Datasdatas=newDatas();(_UPDATA);(good);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}/***客戶端收銀員實(shí)現(xiàn)清空購買列表的方法*@return*/publicDatasclear(){//TODO自動生成的方法存根initSocket();Datasdatas=newDatas();(_CLEAR);try{(datas);datas=(Datas)();returndatas;}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();}finally{closeSocket();}returnnull;}}商品類package.entity;/***商品類*實(shí)現(xiàn)序列化*屬性:Stringgoodid商品編號*Stringgoodname商品名稱*Stringgoodprice商品單價*Stringgoodunit商品單位*Stringgoodcount商品庫存(數(shù)量)*商品屬性和Set/Get方法*有參和無參的構(gòu)造方法*/import.Serializable;publicclassGoodsimplementsSerializable{privateStringgoodid;//商品編號privateStringgoodname;//商品名稱privatedoublegoodprice;//商品單價privateStringgoodunit;//商品單位privateintgoodcount;//商品數(shù)量//商品無參數(shù)構(gòu)造方法publicGoods(){}//商品有參數(shù)構(gòu)造方法publicGoods(Stringgoodid,Stringgoodname,doublegoodprice,Stringgoodunit,intgoodcount){=goodid;=goodname;=goodprice;=goodunit;=goodcount;}publicStringgetGoodid(){returngoodid;}publicvoidsetGoodid(Stringgoodid){=goodid;}publicStringgetGoodname(){returngoodname;}publicvoidsetGoodname(Stringgoodname){=goodname;}publicdoublegetGoodprice(){returngoodprice;}publicvoidsetGoodprice(doublegoodprice){if(goodprice>0){=goodprice;}else{.println("價格必須大于0");}}publicStringgetGoodunit(){returngoodunit;}publicvoidsetGoodunit(Stringgoodunit){=goodunit;}publicintgetGoodcount(){returngoodcount;}publicvoidsetGoodcount(intgoodcount){=goodcount;}}用戶類package.entity;/***用戶類*實(shí)現(xiàn)序列化*屬性:用戶名和密碼*方法:Set和Get方法*/import.Serializable;publicclassUserimplementsSerializable{privateStringusername;//用戶名privateStringpassword;//密碼/*publicUser(){//無參數(shù)構(gòu)造方法}//有參數(shù)構(gòu)造方法publicUser(Stringusername,Stringpassword){=username;=password;
}*///Set和Get方法publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){=password;}}服務(wù)器類package.Server;/***服務(wù)器*繼承線程類,創(chuàng)建ServerService接口,監(jiān)聽客戶端請求*判斷客戶端傳遞的標(biāo)識,通過標(biāo)識調(diào)用服務(wù)端業(yè)務(wù)類操作數(shù)據(jù)的方法,并給與客戶端響應(yīng)*/import.IOException;import.ObjectInputStream;
import.ObjectOutputStream;
import.ServerSocket;import.Socket;import.;import.;import.;publicclassServerListenerextendsThread{publicstaticvoidmain(String[]args){//TODO自動生成的方法存根newServerListener().start();
}@Overridepublicvoidrun(){//服務(wù)器啟動.println("服務(wù)器啟動");//創(chuàng)建ServerSocket,Socket服務(wù)器socket初始化ServerSocketserversocket=null;Socketsocket=null;ObjectOutputStreamoos=null;ObjectInputStreamois=null;try{//實(shí)例化ServerSocketsocket端口號8888serversocket=newServerSocket(((_LISTENERPORT)));//死循環(huán)監(jiān)聽請求while(true){socket=();oos=newObjectOutputStream(());
ois=newObjectInputStream(());
//接受客戶請求的對象Datasdatas=(Datas)();Stringflag=();//創(chuàng)建服務(wù)器服務(wù)類的對象ServerServicess=newServerService();
//判斷客戶端傳過來的標(biāo)識是想調(diào)用什么方法
if(().equals(_LOGIN)){datas=(datas);}elseif((_ADD)){datas=(datas);//商品出庫}elseif((_CHUKU)){datas=(datas);//商品入庫}elseif((_RUKU)){datas=(datas);//編號查看}elseif((_FIND)){datas=(datas);//查看所有}elseif((_FINDALL)){datas=(datas);//掃描商品}elseif((_SCAN)){datas=(datas);//修改商品}elseif((_UPDATA)){datas=(datas);//商品結(jié)賬}elseif((_RESULT)){datas=(datas);//商品清空}elseif((_CLEAR)){datas=();}else{(_ERROR);}//把datas作為返回值寫入客戶端(datas);();();}}catch(NumberFormatExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}catch(ClassNotFoundExceptione){//TODO自動生成的catch塊e.printStackTrace();
}finally{//關(guān)閉流try{();();();}catch(IOExceptione){//TODO自動生成的catch塊e.printStackTrace();}}.println("服務(wù)器終止服務(wù)!");}}服務(wù)器業(yè)務(wù)類package.Server;import.ArrayList;import.;import.;import.;import.;/***服務(wù)業(yè)務(wù)類.*用來初始化商品列表,創(chuàng)建管理員和收銀員對象
*存放服務(wù)器端調(diào)用的方法*@authorAdministrator**/publicclassServerService{/***初始化管理員對象和收銀員對象*管理員對象:用戶名:admin密碼:admin*收銀員對象:用戶名:user密碼:user*初始化商品列表和購買列表*/privatestaticUserstockman;//庫管對象privatestaticUsercashier;//收銀對象privatestaticArrayList<Goods>goodslist=newArrayList<Goods>();//商品列表privatestaticArrayList<Goods>buylist=newArrayList<Goods>();//購買列表static{//初始化庫管和收銀stockman=newUser();("1101");("1111");cashier=newUser();("1001");("0000");//初始化商品列表goodslist=newArrayList<Goods>();(newGoods("1001","吉百芝麻油\t",9.5,"125ml",200));(newGoods("1002","雀巢奶香咖啡\t",1.5,"13g",200));(newGoods("1003","脈動水蜜桃\t",7.0,"1.5l",500));(newGoods("1004","旺仔蘋果Q糖\t",2.5,"70g",700));(newGoods("1005","桃李熟切片\t",6.5,"400g",150));(newGoods("1006","白玉黃豆芽\t",2.4,"350g",200));(newGoods("1007","白如內(nèi)酯豆腐\t",1.0,"400g",100));}/***登錄方法驗(yàn)證客戶端傳過來的信息,判斷登錄人員身份
*管理員,返回管理員標(biāo)識*收銀員,返回收銀員標(biāo)識*都不是則返回錯誤標(biāo)識*@paramdatas*@return*///登錄方法.驗(yàn)證是管理員還是收銀員登錄,如果錯誤,返回錯誤標(biāo)識publicDatasdoLogin(Datasdatas){if(().getUsername().equals(())&&().getPassword().equals(())){
(_ADMIN);}elseif(().getUsername().equals(())&&().getPassword().equals(())){(_CASHIER);}else{(_ERROR);}returndatas;}/***倉庫管理員的方法*//***管理員新增商品的方法,*@paramdatas*@return*///新增商品publicDatasadd(Datasdatas){//TODO自動生成的方法存根(());(_SUCCESS);//(goodslist);returndatas;}/***管理員商品出庫的方法*判斷商品列表中是否存在,如果存在判斷庫存是否充足,充足,返回成功標(biāo)識,并操作商品列表中的數(shù)量*如果庫存不充足,返回缺貨標(biāo)識*如果商品列表中沒有此商品,返回失敗標(biāo)識*@paramdatas*@return*///出庫方法publicDatasdown(Datasdatas){//TODO自動生成的方法存根for(inti=0;i<();i++){if((i).getGoodid().equals(().getGoodid())){if((i).getGoodcount()>=().getGoodcount()){(i).setGoodcount((i).getGoodcount()-().getGoodcount());(goodslist);(_SUCCESS);returndatas;}else{(_LACK);returndatas;}}}(_ERROR);returndatas;}/***管理員商品入庫方法*在商品列表中查詢到商品的位置,并修改數(shù)量*@paramdatas*@return*///入庫的方法publicDatasup(Datasdatas){//TODO自動生成的方法存根for(inti=0;i<();i++){if((i).getGoodid().equals(().getGoodid())){(i).setGoodcount((i).getGoodcount()+().getGoodcount());(goodslist);(_SUCCESS);returndatas;}
}returnnull;}/***管理員按編號查找商品的方法*查詢到返回成功標(biāo)識*否則返回錯誤標(biāo)識*@paramdatas*@return*///按編號查找商品publicDatasfind(Datasdatas){//TODO自動生成的方法存根for(inti=0;i<();i++){if((i).getGoodid().equals(().getGoodid())){(_SUCCESS);((i));returndatas;}}(_ERROR);returndatas;}/***管理員查詢?nèi)可唐返姆椒?@paramdatas*@return*///查詢?nèi)可唐妨斜淼姆椒╬ublicDatasfindAll(Datasdatas){//設(shè)置標(biāo)識為success,并設(shè)置商品列表.返回datas數(shù)據(jù)(_SUCCESS);(goodslist);returndatas;
}/***收銀員調(diào)用的方法*@paramdatas*@return*//***管理員掃描商品的方法*首先查詢購買列表中是否存在掃描的商品,如果沒有則從商品列表中找到,修改數(shù)量后添加到購買列表*如果購買列表中存在掃描商品,則數(shù)量加1,商品列表中相對應(yīng)的商品數(shù)量-1;*@paramdatas*@return*///管理員掃描商品的方法publicDatasscan(Datasdatas){//TODO自動生成的方法存根for(inti=0;i<();i++){//如果購買列表中存在商品說明已經(jīng)掃描過了,數(shù)量加一并返回,商品列表中數(shù)量-1
if((i).getGoodid().equals(().getGoodid())){
(i).setGoodcount((i).getGoodcount()+1);
(_SUCCESS);(buylist);(i).setGoodcount((i).getGoodcount()-1);
//(buylist);returndatas;}}//遍歷之后如果沒有,說明商品還沒有掃描,在商品列表中掃描,并加入到購買列表for(intj=0;j<();j++){//如果編號正確,判斷數(shù)量if((j).getGoodid().equals(().getGoodid())){if((j).getGoodcount()>0){//如果商品數(shù)量大于1,則掃描成功,把掃描的商品加入購買列表,把商品列表中的數(shù)量-1,返
回datas.Goodsgood=newGoods();((j).getGoodid());((j).getGoodname());((j).getGoodprice());((j).getGoodunit());(1);(good);(_SUCCESS);(buylist);(j).setGoodcount((j).getGoodcount()-1);returndatas;}else{(_LACK);returndatas;}}}(_ERROR);returndatas;}/***收銀員修改商品數(shù)量的方法*首先在商品列表中找到商品,判斷數(shù)量是否足夠,夠則操作數(shù)量,返回成功標(biāo)識
*不夠則返回缺乏標(biāo)識*如果不存在則返回錯誤標(biāo)識*@paramdatas*@return*/publicDatasupData(Datasdatas){//遍歷購買列表得到購買商品idfor(inti=0;i<();i++){if((i).getGoodid().equals(().getGoodid())){//得到id判斷庫存數(shù)量是否足夠if(().getGoodcount()<=(i).getGoodcount()+1){
(i).setGoodcount(().getGoodcount());(i).setGoodcount((i).getGoodcount()+1-().getGoodcount());(_SUCCESS);(buylist);returndatas;}else{(_LACK);returndatas;}}}//遍歷購買列表后沒找到商品編號,返回錯誤標(biāo)識(_ERROR);returndatas;}/***收銀員返回購買列表的方法*如果購買列表不為空,返回列表和成功標(biāo)識*如果為空,返回錯誤標(biāo)識*@paramdatas*@return*///產(chǎn)生購買列表用以查詢
publicDatasresult(Datasdatas){
//TODO自動生成的方法存根
if(()!=0){(buylist);(_SUCCESS);returndatas;}(_ERROR);re
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣西城市職業(yè)大學(xué)單招職業(yè)技能考試題庫及完整答案一套
- 2025年廣元中核職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫a4版
- 2025年貴州財經(jīng)職業(yè)學(xué)院單招職業(yè)技能考試題庫新版
- 2025年滁州城市職業(yè)學(xué)院單招職業(yè)技能考試題庫及完整答案一套
- 2025年廣東茂名農(nóng)林科技職業(yè)學(xué)院單招綜合素質(zhì)考試題庫及參考答案
- 2025年貴州省六盤水市單招職業(yè)傾向性測試題庫有答案
- 2025年廣州科技貿(mào)易職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫參考答案
- 2025年廣東嶺南職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及答案一套
- 綠色物流配送信息平臺-深度研究
- 超市營銷策略創(chuàng)新-深度研究
- 小學(xué)生春耕教學(xué)課件
- 2025年個人投資合同電子版模板
- 車輛掛靠協(xié)議書
- 2025年湖南交通職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 2017年公務(wù)員多省聯(lián)考《申論》真題(吉林甲級卷)及參考答案(含詳細(xì)解析)
- 《水利工程質(zhì)量檢測管理規(guī)定》知識培訓(xùn)
- 一年級下冊健康成長教案
- 2025年02月貴州省司法廳所屬事業(yè)單位公開招聘2人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年校長春季開學(xué)思政第一課講話稿1720字例文【供參考】
- 2025至2030年中國單板電磁制動器數(shù)據(jù)監(jiān)測研究報告
- 鹽酸安非他酮合成工藝優(yōu)化-洞察分析
評論
0/150
提交評論