倉庫管理系統(tǒng)設(shè)計(jì)培訓(xùn)_第1頁
倉庫管理系統(tǒng)設(shè)計(jì)培訓(xùn)_第2頁
倉庫管理系統(tǒng)設(shè)計(jì)培訓(xùn)_第3頁
倉庫管理系統(tǒng)設(shè)計(jì)培訓(xùn)_第4頁
倉庫管理系統(tǒng)設(shè)計(jì)培訓(xùn)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

倉庫管理系統(tǒng)設(shè)計(jì)培訓(xùn)(共46頁)PAGEPAGE1————————————————————————————————作者:————————————————————————————————日期: *******************實(shí)踐教學(xué)*******************蘭州理工高校計(jì)算機(jī)與通信學(xué)院2011年秋季學(xué)期面對對象課程設(shè)計(jì)題目:倉庫管理系統(tǒng)專業(yè)班級:計(jì)算機(jī)科學(xué)與技術(shù)四班姓名:武高生學(xué)號:10240402指導(dǎo)老師:朱紅蕾成績:________(dá)__(dá)_____

目錄TOC\o"1-3"\h\zTO(shè)C\o"1-3"\h\zHYPERLINK\l"_Toc266348344"摘要--------------------------------------------1HYPERLINK\l"_Toc266348345"序言-------------------------------------2HYPERLINK\l"_Toc266348348"1.接受類c++語言定義相關(guān)的數(shù)據(jù)類型---------------5HYPERLINK\l"_Toc139329922"2.各模塊的偽碼算法.-----------------------------------------5HYPERLINK\l"_Toc266348349"3.函數(shù)的調(diào)用關(guān)系圖------------------------------------------12HYPERLINK\l"_Toc266348350"4.調(diào)試分析------------------------------------13HYPERLINK\l"_Toc266348351"5.測試結(jié)果--------------------13HYPERLINK\l"_Toc266348352"總結(jié)-----------------------------------------------------------17HYPERLINK\l"_Toc266348353"參考文獻(xiàn)------------------------------------------------19HYPERLINK\l"_Toc266348354"致謝-------------------------------------20摘要本程序主要介紹了小型倉庫貨品管理的設(shè)計(jì)與基本功能的實(shí)現(xiàn)。通過對倉庫基本功能的分析,該程序?qū)崿F(xiàn)了對小型倉庫管理的基本操作。設(shè)計(jì)要求主要是貨品入庫、出庫、增加、刪除、查找及顯示庫存量等最基本功能操作。在課程設(shè)計(jì)過程中,對問題的所接受的數(shù)據(jù)結(jié)構(gòu)和算法分析,及程序設(shè)計(jì)語言接受VC++,程序運(yùn)行的平臺(tái)WindowsXP(visualC++6.0),逐步對基本要求進(jìn)行分布實(shí)現(xiàn),在設(shè)計(jì)中接受單鏈表和文件對錄入的基本數(shù)據(jù)進(jìn)行存儲(chǔ),最終對產(chǎn)品進(jìn)行的基本操作如產(chǎn)品入庫、出庫及查找都基本以實(shí)現(xiàn)。關(guān)鍵字:c++,結(jié)構(gòu)體,軟件,插入;序言現(xiàn)代科學(xué)技術(shù)的飛速進(jìn)展,轉(zhuǎn)變了世界,也轉(zhuǎn)變了人類的生活,作為新世紀(jì)的高校生,應(yīng)當(dāng)站在時(shí)代進(jìn)展的前列,把握現(xiàn)代科學(xué)技術(shù)學(xué)問,調(diào)整自己的學(xué)問結(jié)構(gòu)和力量結(jié)構(gòu),以適應(yīng)社會(huì)進(jìn)展的要求。把握計(jì)算機(jī)學(xué)問和應(yīng)用,無疑是培育新型人才的一個(gè)重要環(huán)節(jié)。對于我們計(jì)算機(jī)專業(yè)的同學(xué)來說,想要把所學(xué)學(xué)問用于實(shí)踐,課程設(shè)計(jì)是一個(gè)很好的環(huán)節(jié),課程設(shè)計(jì)不僅提高了我們的設(shè)計(jì)力量和操作力量,加深理解了數(shù)據(jù)的規(guī)律結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu),把握線性表上基本運(yùn)算的實(shí)現(xiàn),進(jìn)一步理解和嫻熟把握課本中所學(xué)的各種數(shù)據(jù)結(jié)構(gòu),而且學(xué)會(huì)了如何把學(xué)到的學(xué)問用于解決實(shí)際問題。通過本次課程設(shè)計(jì)的制作,能讓我們對數(shù)據(jù)結(jié)構(gòu)以及程序設(shè)計(jì)有更深的體會(huì),流程圖的建立能提高我們系統(tǒng)分析問題的力量,從而機(jī)敏的駕馭整個(gè)程序的運(yùn)行,對于具體問題,找出具體的解決方案或是多種解決方案,增加我們的創(chuàng)新力量。接受類c++語言定義相關(guān)的數(shù)據(jù)類型menu_init()+新建倉庫newstore()+打開倉庫openstore()+添加貨物addproduct()+修改貨物editproduct()+刪除貨物delproduct()+庫存管理menu_store()-貨物出庫instore()?-貨物進(jìn)庫outstore()+貨物查詢menu_check()?+按編號查詢bynumber()?+按名稱查詢byname()+儲(chǔ)存數(shù)據(jù)savedata()+全部貨物listall()+退出系統(tǒng)exit()1.2數(shù)據(jù)設(shè)計(jì)商品結(jié)構(gòu)體設(shè)計(jì):structProduct{intnum;?charname[20];floatprice;?intamount;?charfac[50];charbuss[50];struct*next;};2各模塊的偽碼算法:2.1菜單類:menu_init();說明:初始化界面menu_store();說明:庫存管理界面menu_check();說明:貨物查詢界面menuexit();說明:退出界面2.2貨物管理類:addproduct(structProduct*head);說明:structProduct*head為要添加節(jié)點(diǎn)的鏈表功能:添加貨物流程圖:editproduct(structProduct*head);說明:structProduct*head為要修改節(jié)點(diǎn)的鏈表功能:修改貨物流程圖:delproduct(structProduct*head);說明:structProduct*head為要修改節(jié)點(diǎn)的鏈表功能:刪除貨物流程圖:instore(structProduct*head);說明:structProduct*head為要修改節(jié)點(diǎn)的鏈表功能:修改貨物outstore(structProduct*head);說明:structProduct*head為要修改節(jié)點(diǎn)的鏈表功能:修改貨物outinstore(structProduct*head,intouin);說明:structProduct*head為要修改節(jié)點(diǎn)的鏈表功能:出庫進(jìn)庫綜合操作類2.3貨物查詢類:bynumber(structProduct*head,intnum);說明:structProduct*head為要修改節(jié)點(diǎn)的鏈表,num為商品編號功能:按編號查詢商品byname(structProduct*head,char*name);說明:structProduct*head為要修改節(jié)點(diǎn)的鏈表,name為商品名稱功能:按名稱查詢商品listall(structProduct*head);說明:structProduct*head為要顯示鏈表功能:顯示全部商品2.4倉庫管理類openstore();說明:打開倉庫數(shù)據(jù)文件到鏈表功能:打開倉庫文件NS流程圖:structProduct*h=NULL;structProduct*h=NULL;filename01.21.41.61.71.81.91.102.12.43.13.23.54.14.24.35.15.25.35.46.26.3輸入文件名filenamefilename01.21.41.61.71.81.91.102.12.43.13.23.54.14.24.35.15.25.35.46.26.3輸入文件名filenamefp=fopen(filename,fp=fopen(filename,”rb”)TFTFwhile(!feof(fp))while(!feof(fp))fread(pd,Length,1,fp)fread(pd,Length,1,fp)FFreturnh;returnh;returnh;returnh;q=pd;q=pd;pd=pd->next;break;break;q->next;returnh;q->next;returnh;savedata();說明:寫倉庫鏈表數(shù)據(jù)到文件功能:儲(chǔ)存貨品數(shù)據(jù)2.5幫助類:cls();說明:換行功能:換行函數(shù)的調(diào)用關(guān)系圖4,5、調(diào)試分析與結(jié)果:1程序運(yùn)行時(shí)初始界面2新建倉庫用鍵盤輸入1,程序調(diào)用新建倉庫功能函數(shù),要求用戶輸入貨物編號,貨物名稱,貨物價(jià)格等。3打開倉庫文件用鍵盤輸入2,程序調(diào)用打開倉庫文件功能函數(shù),要求用戶輸入倉庫數(shù)據(jù)文件名,數(shù)據(jù)文件存在,顯示打開成功。4添加貨物用鍵盤輸入3,程序調(diào)用添加貨物功能函數(shù),要求用戶輸入貨物編號,貨物名稱,貨物價(jià)格等。5修改貨物用鍵盤輸入4,程序調(diào)用修改貨物功能函數(shù),要求用戶輸入貨物編號,貨物存在,顯示貨物具體信息,按任意鍵后,要求用戶輸入新貨物名稱,貨物價(jià)格等。6刪除貨物用鍵盤輸入5,程序調(diào)用刪除貨物功能函數(shù),要求用戶輸入貨物編號,貨物存在,顯示貨物具體信息,按任意鍵后,刪除貨物。7庫存管理:用鍵盤輸入6,程序調(diào)用庫存管理功能函數(shù),顯示庫存管理子頁面,選擇2,貨物出庫,要求用戶輸入貨物編號,貨物存在,顯示貨物具體信息,要求用戶輸入進(jìn)庫數(shù)量。8貨物查詢用鍵盤輸入7,程序調(diào)用貨物查詢功能函數(shù),顯示貨物查詢子頁面,選擇1,按編號查詢,要求用戶輸入貨物編號,貨物存在,顯示貨物具體信息。貨若物不存在,顯示“沒有該編號貨物”。9儲(chǔ)存數(shù)據(jù)用鍵盤輸入8,程序調(diào)用儲(chǔ)存數(shù)據(jù)功能函數(shù),要求用戶輸入文件名,將數(shù)據(jù)儲(chǔ)存在指定文件中。10全部貨物用鍵盤輸入9,程序調(diào)用全部貨物功能函數(shù),顯示倉庫內(nèi)全部貨物。11退出系統(tǒng)用鍵盤輸入0,程序調(diào)用貨退出系統(tǒng)功能函數(shù),顯示提示保存信息。6.總結(jié)課程設(shè)計(jì)是一個(gè)相當(dāng)好的實(shí)踐環(huán)節(jié),通過這短短的三個(gè)星期的課程設(shè)計(jì),我覺得從中獲得到的東西,比上了整個(gè)學(xué)期的課程學(xué)的東西還多,實(shí)踐是一個(gè)有效提高自己編程力量的方法。在這個(gè)課程設(shè)計(jì)項(xiàng)目中,我運(yùn)用了鏈表和文件的讀寫等學(xué)問點(diǎn),而這些都是老師還沒有教的,在課程設(shè)計(jì)實(shí)習(xí)周中,我用了前半部分的時(shí)間認(rèn)真了看了鏈表和文件讀寫的章節(jié),了解其功能設(shè)計(jì),通過不斷的調(diào)試總結(jié)出鏈表的規(guī)律與使用方法。將鏈表和指針的應(yīng)用提高到另一個(gè)層次。在這一次課程設(shè)計(jì)中,我學(xué)會(huì)了怎么去寫好一個(gè)規(guī)范的設(shè)計(jì)文檔,生疏流程圖的制作過程。在調(diào)試的過程中,消滅了一些不行以預(yù)料的程序錯(cuò)誤,這又讓我學(xué)會(huì)了如何去設(shè)置斷點(diǎn),進(jìn)行單步調(diào)試,分析清楚錯(cuò)誤消滅的緣由,及其找到解決錯(cuò)誤的方法。同時(shí),本次課程設(shè)計(jì)我分別用了不用的C編譯器去編譯代碼,發(fā)覺不同編譯器編譯效果的不同,以及庫文件等的不同。學(xué)會(huì)在不同的編譯環(huán)境中使用不同的函數(shù)。5.參考文獻(xiàn)1]初小璐.完全把握SQLServer2000[M]機(jī)械工業(yè)出版社,2004[2]JeraodV.Post.數(shù)據(jù)庫管理系統(tǒng)(英文版.第三版)[美]清華高校出版社,2006.1[3]張海藩.軟件工程導(dǎo)論[M].北京:清華高校出版社,1998.1[4]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(其次版)[M].北京:電子工業(yè)出版社,2003.6[5]戴志誠,趙國峰.JSP信息化系統(tǒng)建設(shè)案例[M].北京:人民郵電出版社,2006.12[6]成曉靜,畢靖.網(wǎng)頁設(shè)計(jì)三劍客完全學(xué)習(xí)手冊[M].北京:中國電力出版社,2004.11[7]趙強(qiáng).精通JSP編程[M].北京:電子工業(yè)出版社,2006.3[8]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社,2002.2[9]張海藩,李勁,謝兆陽.SQLServer2000數(shù)據(jù)庫設(shè)計(jì)與系統(tǒng)管理[M].北京:清華高校出版社,2000.9[10]劉禾,蔡鋒.Web數(shù)據(jù)庫假設(shè)技巧[M].北京:科技技術(shù)出版社,1999.4[11]徐建波.Internet與Web設(shè)計(jì)教程[M].北京:中國礦業(yè)高校出版社,2000.12[12]于書舉,許向眾.數(shù)據(jù)庫設(shè)計(jì)與開發(fā)教程[M].北京:電子工業(yè)出版社,2003.11[13]安海忠,李文斌,林旭新.商業(yè)網(wǎng)站建設(shè)與管理[M].北京:人民交通出版社,2006.8[14]T.UmedaanddatabaseforEPRcentersinsemiconductors[J].BPhysicaB:CondensedMatter,3(7),249-252,2006.3[15]Yih-LingHedley,MuhammadYounas.Sampling,informationextractionandsummarisationofHiddenWebdat(yī)abases[J].Data&KnowledgeEngineering,InPress,UncorrectedProof,Availableonline10March2006.2致謝我在此向全部關(guān)懷我的及掛念我的朱老師和同學(xué)們致以最真誠的感謝。在本次課程設(shè)計(jì)中,我從指導(dǎo)老師及同學(xué)身上學(xué)到了很多東西。她認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我受益匪淺。無論在理論上還是在實(shí)踐中,都給與我很大的掛念,使我得到很大的提高,這對于我以后的工作和學(xué)習(xí)都有一種巨大的掛念,在此感謝指導(dǎo)老師急躁,認(rèn)真的的輔導(dǎo)。附錄:源代碼#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#defineLengthsizeof(structProduct)structProduct//定義貨品結(jié)構(gòu)體{intnum;//編號charname[20];//名稱floatprice;//價(jià)格intamount;//庫存數(shù)量?charfac[50];//生產(chǎn)廠家?charbuss[50];//供應(yīng)商家structProduct*next;};voidcls(void){inti;for(i=0;i<1;i++)printf("\n");}//打開倉庫,從把文件數(shù)據(jù)讀入鏈表返回鏈表structProduct*openstore(){charfilename[255];structProduct*h,*pd,*q;FILE*fp;h=NULL;printf("請輸入要打開的倉庫數(shù)據(jù)文件(如:D://store.txt):\n");scanf("%s",&filename);if(filename[0]=='0')returnh;if((fp=fopen(filename,"rb"))==NULL){printf("打開文件出錯(cuò)\n");//getch();returnh;}printf("正在打開文件\n");pd=(structProduct*)malloc(Length);if(pd==NULL){printf("內(nèi)存溢出\n");//getch();return(h);}h=pd;while(!feof(fp)){if(fscanf(fp,"%d\t%s\t%f\t%d\t%s\t%s\n",&pd->num,&pd->name,&pd->price,&pd->amount,&pd->fac,&pd->buss)==NULL)???break;pd->next=(structProduct*)malloc(Length);if(pd->next==NULL){printf("內(nèi)存溢出\n");//getch();return(h);}q=pd;pd=pd->next;}q->next=NULL;fclose(fp);printf("成功打開倉庫數(shù)據(jù)文件\n");//getch();return(h);}intsavedata(structProduct*head){charfilename[255];structProduct*pd;FILE*fp;pd=head;printf("請輸入要保存的倉庫數(shù)據(jù)文件名(如:D://store.txt,0取消):\n");scanf("%s",&filename);if(filename[0]=='0')??return1;if((fp=fopen(filename,"wb"))==NULL){printf("儲(chǔ)存文件出錯(cuò)\n");//getch();return1;}printf("正在儲(chǔ)存數(shù)據(jù)...\n");while(pd!=NULL){fprintf(fp,"%d\t%s\t%f\t%d\t%s\t%s\n",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);pd=pd->next;}fclose(fp);printf("倉庫數(shù)據(jù)保存成功\n");//getch();return0;}//創(chuàng)建鏈表,新建一個(gè)倉庫,并輸入數(shù)據(jù)//返回鏈表structProduct*newstore(){structProduct*h=NULL,*pd;for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出!\n");//getch();returnNULL;}printf("請輸入貨品編號(0退出):\n");scanf("%d",&pd->num);if(pd->num==0) ??break;printf("請輸入貨品名稱:\n");scanf("%s",&pd->name);printf("請輸入貨品價(jià)格:\n");scanf("%f",&pd->price);printf("請輸入貨品庫存量:\n");scanf("%d",&pd->amount);??printf("請輸入貨品的生產(chǎn)廠家:\n");??scanf("%s",&pd->fac);??printf("請輸入貨品的供應(yīng)商家:\n");??scanf("%s",&pd->buss);printf("\n");pd->next=h;h=pd;}return(h);}//添加貨品,向鏈表末尾添加貨品//參數(shù):*head鏈表指針//返回添加貨品的鏈表structProduct*addproduct(structProduct*head){structProduct*h,*pd;if(!head){printf("請先創(chuàng)建或打開倉庫\n");??returnhead;}else{h=head;}for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出!\n");//getch();break;}printf("請輸入貨品編號(0退出):\n");scanf("%d",&pd->num);if(pd->num==0)?? break;printf("請輸入貨品名稱:\n");scanf("%s",&pd->name);printf("請輸入貨品價(jià)格:\n");scanf("%f",&pd->price);printf("請輸入貨品庫存量:\n");scanf("%d",&pd->amount);???printf("請輸入貨品的生產(chǎn)廠家:\n");??scanf("%s",&pd->fac); ?printf("請輸入貨品的供應(yīng)商家:\n"); ?scanf("%s",&pd->buss);printf("\n");while(h->next!=NULL){h=h->next;}h->next=pd;pd->next=NULL;}return(h);}//按編號查找貨品//參數(shù):*head鏈表指針,*num貨品編號//返回:鏈表結(jié)點(diǎn)structProduct*bynumber(structProduct*head,intnum){floattotal;intn=num;structProduct*pd;pd=head;while(pd!=NULL&&pd->num?。剑?{pd=pd->next;}if(pd==NULL){printf("沒有該編號貨品。\n");//getch();}else{printf("********************按編號查詢貨品**************************************\n");printf("|編號|名稱|價(jià)格|庫存|生產(chǎn)廠家|供應(yīng)商家|價(jià)值量|\n");printf("|---|-------|----|-----|---|----|-------|\n");printf("|%6d|%-13s|%-9.3f|%-8d|%-10s|%-10s|",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);total=pd->price*pd->amount;printf("%-10.3f|\n",total);printf("************************************************************************\n");//getch();}return(pd);}//按名稱查找貨品//參數(shù):*head鏈表指針,*name貨品名稱//返回:鏈表結(jié)點(diǎn)structProduct*byname(structProduct*head,charname[20]){float(yī)total;structProduct*pd;pd=head;while(pd!=NULL&&strcmp(pd->name,name)?。剑?//查找貨品{pd=pd->next;}if(pd==NULL){printf("沒有該名稱貨品。\n");//getch();}else{printf("*********************按名稱查詢貨品**************************************\n");printf("|編號|名稱|價(jià)格|庫存|生產(chǎn)廠家|供應(yīng)商家|價(jià)值量|\n");printf("|------|---------|--|---|-----|------|---------|\n");printf("|%6d|%-13s|%-9.3f|%-8d|%-10s|%-10s|",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);total=pd->price*pd->amount;printf("%-10.3f|\n",total);printf("************************************************************************\n");//getch();}return(pd);}void*checkbynumber(structProduct*head){structProduct*h=head;intnum;printf("請輸入查詢編號(0退出):\n");scanf("%d",&num);returnbynumber(h,num);}void*checkbyname(structProduct*head){structProduct*h=head;charname[20];printf("請輸入貨品名稱(0退出):\n");scanf("%s",&name);returnbyname(h,name);}//修改貨品//參數(shù):*head鏈表指針//返回:鏈表結(jié)點(diǎn)structProduct*editproduct(structProduct*head){intnum;structProduct*h,*pd;h=head;for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出?。埽?);//getch();break;}printf("請輸入要修改的貨品編號:(0退出)\n");scanf("%d",&num);if(num==0)?? break;pd=bynumber(h,num);if(pd==NULL)?? break;printf("請輸入貨品新名稱:\n");scanf("%s",&pd->name);printf("請輸入貨品新價(jià)格:\n");scanf("%f",&pd->price);printf("\n");}return(h);}structProduct*delproduct(structProduct*head){intnum;//charconfirm;structProduct*h,*q,*pd;pd=q=h=head;for(;;){printf("請輸入要?jiǎng)h除的貨品編號:(0退出)\n");scanf("%d",&num);if(num==0)???break;while(pd!=NULL&&pd->num!=num){q=pd;pd=pd->next;}if(pd==NULL){printf("沒有該編號貨品!!\n");}else{bynumber(h,num);//getch();if(pd==h)//假如p==h,說明被刪結(jié)點(diǎn)是頭結(jié)點(diǎn)?h=pd->next;//修改頭指針指向下一條記錄else?q->next=pd->next;printf("刪除成功\n");}}return(h);}//貨品進(jìn)庫出庫//參數(shù):*head鏈表指針,*outin為進(jìn)庫出庫類型,0表示出庫//返回:鏈表結(jié)點(diǎn)structProduct*outinstore(structProduct*head,intoutin){intnum,outnum;structProduct*h,*pd;h=head;for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出!\n");//getch();break;}printf("請輸入要修改的貨品編號:(0退出)\n");scanf("%d",&num);if(num==0)???break;pd=bynumber(h,num);if(!pd)???break;if(outin==0){printf("請輸入貨品出庫數(shù)量:\n");scanf("%d",&outnum);pd->amount=pd->amount-outnum;}else{printf("請輸入貨品進(jìn)庫數(shù)量:\n");scanf("%d",&outnum);pd->amount=pd->amount+outnum;}printf("\n");}return(h);}//貨品出庫structProduct*outstore(structProduct*head){structProduct*h=head;returnoutinstore(h,0);}//貨品進(jìn)庫structProduct*instore(structProduct*head){structProduct*h=head;returnoutinstore(h,1);}voidlistall(structProduct*head){floattotal=0,all=0;structProduct*pd;pd=head;if(pd==NULL){cls();printf("錯(cuò)誤:當(dāng)前未打開任何倉庫\n");//getch();return;}cls();printf("**************************倉庫內(nèi)全部貨品*******************************\n");printf("|編號|名稱|價(jià)格|庫存|生產(chǎn)廠家|供應(yīng)商家|價(jià)值量|\n");printf("|------|-------------|---|--------|-------|--|-------|\n");do{printf("|%6d|%-13s|%-9.3f|%-8d|%-10s|%-10s|",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);total=pd->price*pd->amount;all+=total;printf("%-10.3f|\n",total);pd=pd->next;}while(pd!=NULL);printf("**************************************************************\n");printf("倉庫貨品總價(jià)值量為:%12.3f元\n",all);printf("**************************************************************\n");//getch();}voidmenu_store(structProduct*head){intselect;for(;;){printf("\t*******************************************************\n");printf("\t\tC++面對對象技術(shù)課程設(shè)計(jì)-倉庫貨品管理\n");printf("\t*******************************************************\n");printf("\t\t\t\t1.貨品出庫\n");printf("\t\t\t\t2.貨品進(jìn)庫\n");printf("\t\t\t\t0.返回\n");printf("\t*******************************************************\n");printf("請選擇操作:");scanf("%d",&select);switch(select){case0:return;case1:head=outstore(head);?? break;case2:head=instore(head);}}}voidmenu_check(structProduct*head){intselect;for(;;){printf("\t*******************************************************\n");printf("\t\tC++面對對象技術(shù)課程設(shè)計(jì)-倉庫貨品管理\n");printf("\t*******************************************************\n");printf("\t\t\t\t1.按編號查詢\n");printf("\t\t\t\t2.按名稱查詢\n");printf("\t\t\t\t0.返回\n");printf("\t*******************************************************\n");printf("請選擇操作:");scanf("%d",&select);switch(select){case0:return;case1:checkbynumber(head);?? break;case2:checkbyname(head);}}}void*menu_exit(structProduct*head){intselect;printf("\t*******************************************************\n");printf("\t\tC++面對對象技術(shù)課程設(shè)計(jì)-倉庫貨品管理\n");printf("\t*******************************************************\n");printf("退出時(shí)是否保存數(shù)據(jù)?0:保存;1:不保存");scanf("%d",&select);switch(select){case0:???savedata(head);???exit(0);?? break;case1:???exit(0);}?return0;}structProduct*menu_init(structProduct*head){intselect;printf("\t*************************************************************\n");printf("\t\tC++面對對象技術(shù)課程設(shè)計(jì)-倉庫貨品管理\n");printf("\t*************************************************************\n");printf("\t\t\t\t1.新建倉庫\n");printf("\t\t\t\t2.打開倉庫\n");printf("\t\t\t\t3.添加貨品\n");printf("\t\t\t\t4.修改貨品\n");printf("\t\t\t\t5.刪除貨品\n");printf("\t\t\t\t6.庫存管理\n");printf("\t\t\t\t7.貨品查詢\n");printf("\t\t\t\t8.儲(chǔ)存數(shù)據(jù)\n");printf("\t\t\t\t9.全部貨品\n");printf("\t\t\t\t0.退出系統(tǒng)\n");printf("\t*************************************************************\n");?printf("留意:在選擇操作之前,若沒建立倉庫,請先進(jìn)行1和8操作!!!\n");printf("請選擇操作:");scanf("%d",&select);switch(select){case0:menu_exit(head);???break;case1:head=newstore();???break;case2:head=openstore();???break;case3:addproduct(head);???break;case4:editproduct(head);???break;case5:head=delproduct(head);???break;case6:menu_store(head);???break;case7:menu_check(head);? ?break;case8:savedata(head);???break;case9:listall(head);}returnhead;}//程序主函數(shù)intmain(){structProduct*head;head=NULL;for(;;){head=menu_init(head);}return0;}?#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#defineLengthsizeof(structProduct)structProduct//定義貨品結(jié)構(gòu)體{intnum;//編號charname[20];//名稱floatprice;//價(jià)格intamount;//庫存數(shù)量?charfac[50];//生產(chǎn)廠家?charbuss[50];//供應(yīng)商家structProduct*next;};voidcls(void){inti;for(i=0;i<1;i++)printf("\n");}//打開倉庫,從把文件數(shù)據(jù)讀入鏈表返回鏈表structProduct*openstore(){charfilename[255];structProduct*h,*pd,*q;FILE*fp;h=NULL;printf("請輸入要打開的倉庫數(shù)據(jù)文件(如:D://store.txt):\n");scanf("%s",&filename);if(filename[0]=='0')returnh;if((fp=fopen(filename,"rb"))==NULL){printf("打開文件出錯(cuò)\n");//getch();returnh;}printf("正在打開文件\n");pd=(structProduct*)malloc(Length);if(pd==NULL){printf("內(nèi)存溢出\n");//getch();return(h);}h=pd;while(!feof(fp)){if(fscanf(fp,"%d\t%s\t%f\t%d\t%s\t%s\n",&pd->num,&pd->name,&pd->price,&pd->amount,&pd->fac,&pd->buss)==NULL)???break;pd->next=(structProduct*)malloc(Length);if(pd->next==NULL){printf("內(nèi)存溢出\n");//getch();return(h);}q=pd;pd=pd->next;}q->next=NULL;fclose(fp);printf("成功打開倉庫數(shù)據(jù)文件\n");//getch();return(h);}intsavedata(structProduct*head){charfilename[255];structProduct*pd;FILE*fp;pd=head;printf("請輸入要保存的倉庫數(shù)據(jù)文件名(如:D://store.txt,0取消):\n");scanf("%s",&filename);if(filename[0]=='0')??return1;if((fp=fopen(filename,"wb"))==NULL){printf("儲(chǔ)存文件出錯(cuò)\n");//getch();return1;}printf("正在儲(chǔ)存數(shù)據(jù)...\n");while(pd!=NULL){fprintf(fp,"%d\t%s\t%f\t%d\t%s\t%s\n",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);pd=pd->next;}fclose(fp);printf("倉庫數(shù)據(jù)保存成功\n");//getch();return0;}//創(chuàng)建鏈表,新建一個(gè)倉庫,并輸入數(shù)據(jù)//返回鏈表structProduct*newstore(){structProduct*h=NULL,*pd;for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出!\n");//getch();returnNULL;}printf("請輸入貨品編號(0退出):\n");scanf("%d",&pd->num);if(pd->num==0)???break;printf("請輸入貨品名稱:\n");scanf("%s",&pd->name);printf("請輸入貨品價(jià)格:\n");scanf("%f",&pd->price);printf("請輸入貨品庫存量:\n");scanf("%d",&pd->amount);??printf("請輸入貨品的生產(chǎn)廠家:\n");??scanf("%s",&pd->fac);??printf("請輸入貨品的供應(yīng)商家:\n"); ?scanf("%s",&pd->buss);printf("\n");pd->next=h;h=pd;}return(h);}//添加貨品,向鏈表末尾添加貨品//參數(shù):*head鏈表指針//返回添加貨品的鏈表structProduct*addproduct(structProduct*head){structProduct*h,*pd;if(!head){printf("請先創(chuàng)建或打開倉庫\n");??returnhead;}else{h=head;}for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出!\n");//getch();break;}printf("請輸入貨品編號(0退出):\n");scanf("%d",&pd->num);if(pd->num==0)???break;printf("請輸入貨品名稱:\n");scanf("%s",&pd->name);printf("請輸入貨品價(jià)格:\n");scanf("%f",&pd->price);printf("請輸入貨品庫存量:\n");scanf("%d",&pd->amount);???printf("請輸入貨品的生產(chǎn)廠家:\n");??scanf("%s",&pd->fac); ?printf("請輸入貨品的供應(yīng)商家:\n"); ?scanf("%s",&pd->buss);printf("\n");while(h->next!=NULL){h=h->next;}h->next=pd;pd->next=NULL;}return(h);}//按編號查找貨品//參數(shù):*head鏈表指針,*num貨品編號//返回:鏈表結(jié)點(diǎn)structProduct*bynumber(structProduct*head,intnum){float(yī)total;intn=num;structProduct*pd;pd=head;while(pd!=NULL&&pd->num!=n){pd=pd->next;}if(pd==NULL){printf("沒有該編號貨品。\n");//getch();}else{printf("********************按編號查詢貨品**************************************\n");printf("|編號|名稱|價(jià)格|庫存|生產(chǎn)廠家|供應(yīng)商家|價(jià)值量|\n");printf("|--|----------|---------|--------|-|----------|----------|\n");printf("|%6d|%-13s|%-9.3f|%-8d|%-10s|%-10s|",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);total=pd->price*pd->amount;printf("%-10.3f|\n",total);printf("************************************************************************\n");//getch();}return(pd);}//按名稱查找貨品//參數(shù):*head鏈表指針,*name貨品名稱//返回:鏈表結(jié)點(diǎn)structProduct*byname(structProduct*head,c[20]){floattotal;structProduct*pd;pd=head;while(pd!=NULL&&strcmp(pd->name,name)!=0)//查找貨品{pd=pd->next;}if(pd==NULL){printf("沒有該名稱貨品。\n");//getch();}else{printf("*********************按名稱查詢貨品**************************************\n");printf("|編號|名稱|價(jià)格|庫存|生產(chǎn)廠家|供應(yīng)商家|價(jià)值量|\n");printf("|-|----------|---|-|-|------|---------|\n");printf("|%6d|%-13s|%-9.3f|%-8d|%-10s|%-10s|",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);total=pd->price*pd->amount;printf("%-10.3f|\n",total);printf("************************************************************************\n");//getch();}return(pd);}void*checkbynumber(structProduct*head){structProduct*h=head;intnum;printf("請輸入查詢編號(0退出):\n");scanf("%d",&num);returnbynumber(h,num);}void*checkbyname(structProduct*head){structProduct*h=head;charname[20];printf("請輸入貨品名稱(0退出):\n");scanf("%s",&name);returnbyname(h,name);}//修改貨品//參數(shù):*head鏈表指針//返回:鏈表結(jié)點(diǎn)structProduct*editproduct(structProduct*head){intnum;structProduct*h,*pd;h=head;for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出!\n");//getch();break;}printf("請輸入要修改的貨品編號:(0退出)\n");scanf("%d",&num);if(num==0)???break;pd=bynumber(h,num);if(pd==NULL)???break;printf("請輸入貨品新名稱:\n");scanf("%s",&pd->name);printf("請輸入貨品新價(jià)格:\n");scanf("%f",&pd->price);printf("\n");}return(h);}structProduct*delproduct(structProduct*head){intnum;//charconfirm;structProduct*h,*q,*pd;pd=q=h=head;for(;;){printf("請輸入要?jiǎng)h除的貨品編號:(0退出)\n");scanf("%d",&num);if(num==0)???break;while(pd!=NULL&&pd->num!=num){q=pd;pd=pd->next;}if(pd==NULL){printf("沒有該編號貨品!!\n");}else{bynumber(h,num);//getch();if(pd==h)//假如p==h,說明被刪結(jié)點(diǎn)是頭結(jié)點(diǎn)?h=pd->next;//修改頭指針指向下一條記錄else?q->next=pd->next;printf("刪除成功\n");}}return(h);}//貨品進(jìn)庫出庫//參數(shù):*head鏈表指針,*outin為進(jìn)庫出庫類型,0表示出庫//返回:鏈表結(jié)點(diǎn)structProduct*outinstore(structProduct*head,intoutin){intnum,outnum;structProduct*h,*pd;h=head;for(;;){pd=(structProduct*)malloc(Length);if(!pd){printf("內(nèi)存溢出!\n");//getch();break;}printf("請輸入要修改的貨品編號:(0退出)\n");scanf("%d",&num);if(num==0) ??break;pd=bynumber(h,num);if(!pd)???break;if(outin==0){printf("請輸入貨品出庫數(shù)量:\n");scanf("%d",&outnum);pd->amount=pd->amount-outnum;}else{printf("請輸入貨品進(jìn)庫數(shù)量:\n");scanf("%d",&outnum);pd->amount=pd->amount+outnum;}printf("\n");}return(h);}//貨品出庫structProduct*outstore(structProduct*head){structProduct*h=head;returnoutinstore(h,0);}//貨品進(jìn)庫structProduct*instore(structProduct*head){structProduct*h=head;returnoutinstore(h,1);}voidlistall(structProduct*head){floattotal=0,all=0;structProduct*pd;pd=head;if(pd==NULL){cls();printf("錯(cuò)誤:當(dāng)前未打開任何倉庫\n");//getch();return;}cls();printf("**************************倉庫內(nèi)全部貨品*******************************\n");printf("|編號|名稱|價(jià)格|庫存|生產(chǎn)廠家|供應(yīng)商家|價(jià)值量|\n");printf("|------|-------------|-----|----|------|----|-|\n");do{printf("|%6d|%-13s|%-9.3f|%-8d|%-10s|%-10s|",pd->num,pd->name,pd->price,pd->amount,pd->fac,pd->buss);total=pd->price*pd->amount;all+=total;printf("%-10.3f|\n",total);pd=pd->next;}while(pd?。絅ULL);printf("**************************************************************\n");printf("倉庫貨品總價(jià)值量為:%12.3f元\n",all);printf("**************************************************************\n");//getch();}void

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論