數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-超市商品管理_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-超市商品管理_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-超市商品管理_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-超市商品管理_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-超市商品管理_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

頁腳內(nèi)容頁腳內(nèi)容1.需求分析商品價(jià)格,庫存數(shù)量,每種商品總數(shù),生產(chǎn)日期等基本信息,假設(shè)三個(gè)超市的商品信息L1,L2L3取存儲的,請寫一個(gè)程序?qū)崿F(xiàn)下列任務(wù)要求:知識點(diǎn):線性表操作【任務(wù)要求】當(dāng)超市有新的商品購入是能添加到單鏈表中;能查找出三個(gè)超市中具有相同商品名稱的商品信息;L1中刪除那些與其他兩個(gè)超市都有的商品信息;能修改各超市商品基本信息,如價(jià)格等。額。能輸出每個(gè)超市的所有商品信息;【測試數(shù)據(jù)】自行設(shè)定,注意測試將活區(qū)刪空等特殊情況。概要設(shè)計(jì)必要算法當(dāng)超市有新的商品購入是添加到單鏈表中算法概要:運(yùn)用單鏈表的基本操作——插入一個(gè)新結(jié)點(diǎn),即分配一個(gè)新的儲存空間,然后依次輸入結(jié)點(diǎn)所含的數(shù)據(jù),再插入到原結(jié)點(diǎn)的尾部即可。此算法時(shí)間復(fù)雜度為O(1)。查找出三個(gè)超市中具有相同商品名稱的商品信息算法概要:1.尋找相同商品名稱算法:先比較前兩個(gè)鏈表(超市)l1,l2,運(yùn)用比較字符串strcmp()方法找出兩個(gè)鏈表中含有相同的商品名稱,然后將兩個(gè)鏈表fsfsl1,l2,l3中都具有相同商品名稱的商品,將其商品fsO(n)。fs中每個(gè)結(jié)點(diǎn)中的商品名稱,根據(jù)商品名l1,l2,l3的商品信息找出原結(jié)點(diǎn),然后將其信息輸出。此O(n)。L1中刪除那些與其他兩個(gè)超市都有的商品信息l1l1,找出其結(jié)點(diǎn)刪除并釋放——單鏈表O(n)。修改各超市商品基本信息,如價(jià)格等算法概要:首先交互輸入需要修改信息的商品號,排除超市中沒有的商品后,定位到改商品的結(jié)點(diǎn),然后選擇需要修改的信息,比如價(jià)格,庫存數(shù)量等,或者全部修改即可修改信息。此算法時(shí)間復(fù)雜度為O(1)。查找比較超市中相同商品的銷售情況,統(tǒng)計(jì)每個(gè)超市中每種商品的銷售量及銷售額。若有(多個(gè))3個(gè)鏈表中的相應(yīng)結(jié)點(diǎn)然后輸出其銷售信息,包括銷售量和銷售額,統(tǒng)計(jì)每個(gè)超市中每種商品O(n)。輸出每個(gè)超市的所有商品信息算法概要:遍歷3個(gè)鏈表的所有結(jié)點(diǎn),然后分別輸出每個(gè)結(jié)點(diǎn)的所有信息。此算法時(shí)間復(fù)雜度為O(n)。輔助程序37next息的初始化。定位到鏈表中的相應(yīng)結(jié)點(diǎn),然后輸入銷售數(shù)量保存但結(jié)點(diǎn)中,同時(shí)該結(jié)點(diǎn)O(1)。主程序3通過交互式輸入選擇所要進(jìn)行的操作,直到輸入退出程序按鈕。1.詳細(xì)設(shè)計(jì)3.1必要算法當(dāng)超市有新的商品購入時(shí)添加到單鏈表中l(wèi)inklist*purchase(linklist*l,ints)//超市有新的商品購入是添加到單鏈表中{linklist*p,*q,*r,*head;intn;head=l;r=l;p=l->next;//輸入購入商品的基本信息q=(linklist*)malloc(sizeof(linklist));printf("%d此次購入新商品的商品號、商品名稱(出售)價(jià)格、購入量、生產(chǎn)日期:\n",s);scanf("%d",&q->gno);scanf("%s",&q->name);scanf("%f",&q->price);scanf("%d",&q->amount);scanf("%d",&q->date);q->QuantityInStock=q->amount;q->sold=0;printf("購入成功!\n");//將新結(jié)點(diǎn)插入到表尾q->next=NULL;while(p!=NULL){r=p;p=p->next;}r->next=q;r=r->next;returnhead;}13個(gè)鏈表中具有相同商品名稱的商品linklist*findSame(linklist*l1,linklist*l2,linklist*l3)//尋找3個(gè)鏈表中具有相同商品名稱的商品{linklist*p1=l1->next,*p2,*p3,*fs,*q,*p;fs=(linklist*)malloc(sizeof(linklist));//分配一個(gè)新的存儲空間用來保存相同商品的信息fs->next=NULL;q=fs;intflag;//尋找l1,l2中具有相同商品名稱的商品while(p1){p2=l2->next;while(p2){flag=strcmp(p1->name,p2->name);if(flag==0){p=(linklist*)malloc(sizeof(linklist));strcpy(p->name,p1->name);p->next=NULL;q->next=p;q=q->next;}p2=p2->next;}p1=p1->next;}//尋找l2,l3中具有相同商品名稱的商品p=fs;while(p->next){p3=l3;while(p3->next){flag=strcmp(p->next->name,p3->next->name);if(flag==0)break;if(p3->next==NULL){q=p->next;p->next=q->next;}p3=p3->next;}p=p->next;}returnfs;}算法2:輸出3個(gè)鏈表中具有相同商品名稱的商品信息voidoutputSame(linklist*l1,linklist*l2,linklist*l3)//輸出3個(gè)鏈表中具有相同商品名稱的商品信息{linklist*p1=l1->next,*p2=l2->next,*p3=l3->next,*fs,*p;intflag;fs=findSame(l1,l2,l3);p=fs->next;printf("************************************3個(gè)超市中具有相同名稱的商品信息***********************************\n");while(p){//遍歷鏈表l1while(p1){flag=strcmp(p1->name,p->name);if(flag==0){printf(" 商品號\t\t\t庫存數(shù)量\t\t\t\n");printf("超市1:%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t\t%d\n",p1->gno,p1->name,p1->price,p1->QuantityInStock,p1->amount,p1->amount-p1->QuantityInStock,p1->date);}p1=p1->next;}//遍歷鏈表l2while(p2){flag=strcmp(p2->name,p->name);if(flag==0){printf("超市2:%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t\t%d\n",p2->gno,p2->name,p2->price,p2->QuantityInStock,p2->amount,p2->amount-p2->QuantityInStock,p2->date);}p2=p2->next;}//遍歷鏈表l3while(p3){flag=strcmp(p3->name,p->name);if(flag==0){printf("超市3:%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t\t%d\n",p3->gno,p3->name,p3->price,p3->QuantityInStock,p3->amount,p3->amount-p3->QuantityInStock,p3->date);}p3=p3->next;}p=p->next;}}L1中刪除那些與其他兩個(gè)超市都有的商品信息voiddelSame(linklist*l1,linklist*l2,linklist*l3)//L1中刪除那些與其他兩個(gè)超市都有的商品信息{intflag;linklist*p,*s,*q,*fs;fs=findSame(l1,l2,l3);p=fs;while(p->next){q=l1;while(q->next){flag=strcmp(q->next->name,p->next->name);if(flag==0){s=q->next;q->next=s->next;free(s);printf("\n1return;}q=q->next;}p=p->next;}}能修改各超市商品基本信息,如價(jià)格等voidupdate(linklist*l)//修改商品信息{linklist*p=l,*q=l,*s=l->next;intgno,m,price,QuantityInStock,amount,date,n=0,location=0,flag=0;if(l==NULL){//鏈表為空printf("鏈表為空!\n");return;}printf("請輸入需要修改價(jià)格的商品號:");scanf("%d",&gno);while(s){if(s->gno==gno){flag=1;}s=s->next;}if(!flag){//找不到此商品printf("沒有此商品!\n");return;}}printf("請選擇需要修改的商品信息:\n");printf("1.商品價(jià)格2.庫存數(shù)量3.商品總數(shù)4.生產(chǎn)日期5.全部修改\n");//選擇需要修改的信息scanf("%d",&m);switch(m){case1:printf("請輸入新的價(jià)格:");scanf("%d",&price);while(p){if(location==n){p->price=price;return;}else{p=p->next;n++;}}break;case2:printf("請輸入新的庫存數(shù)量:");scanf("%d",&QuantityInStock);while(p){if(location==n){p->QuantityInStock=QuantityInStock;return;}else{p=p->next;n++;}}break;case3:printf("請輸入新的商品總數(shù):");scanf("%d",&amount);while(p){if(location==n){p->amount=amount;return;}else{p=p->next;n++;}}break;case4:printf("請輸入新的生產(chǎn)日期:");scanf("%d",&date);while(p){if(location==n){p->date=date;return;}else{p=p->next;n++;}}break;case5:printf("請輸入新的價(jià)格:");scanf("%d",&price);printf("請輸入新的庫存數(shù)量:");scanf("%d",&QuantityInStock);printf("scanf("%d",&date);printf("scanf("%d",&date);while(p){if(location==n){p->price=price;p->QuantityInStock=QuantityInStock;p->amount=amount;p->date=date;return;}else{p=p->next;n++;}}break;}}查找比較超市中相同商品的銷售情況voidsoldInformation(linklist*l1,linklist*l2,linklist*l3)//查找比較超市中相同商品的銷售情況{linklist*q1=l1,*p1=l1,*q2=l2,*p2=l2,*q3=l3,*p3=l3,*s;intgno,n1=0,location1=0,n2=0,location2=0,n3=0,location3=0;s=findSame(l1,l2,l3);if(s->next==NULL){printf("3個(gè)超市沒有相同商品!");return;}printf("請輸入需要查詢銷售信息的商品號:");scanf("%d",&gno);while(q1->gno!=gno){location1++;q1=q1->next;}//遍歷l1while(p1){if(location1==n1){while(q2->gno!=gno){location2++;q2=q2->next;}//遍歷l2while(p2){if(location2==n2){while(q3->gno!=gno){location3++;q3=q3->next;}//遍歷l3while(p3){if(location3==n3){printf("************商%s的銷售信**************\n",q1->name);printf("\t 商品\t銷售\t銷售額\n");printf("\t超市1:%s\t%d\t%5.0f\n",q1->name,q1->sold,q1->sold*q1->price);printf("\t超市2:%s\t%d\t%5.0f\n",q2->name,q2->sold,q2->sold*q2->price);printf("\t超市3:%s\t%d\t%5.0f\n",q3->name,q2->sold,q3->sold*q3->price);return;}else{p3=p3->next;n3++;}}if(!p3){printf("沒有此商品!");return;}}else{p2=p2->next;n2++;}}if(!p2){printf("沒有此商品!");return;}}else{p1=p1->next;n1++;}}if(!p1){printf("沒有此商品!");return;}}輸出每個(gè)超市的所有商品信息(包括銷售量、銷售額)voidoutput(linklist*l)//輸出每個(gè)超市的所有商品信息(包括銷售量、銷售額){linklist*p;p=l->next;printf("*********************************************商品信息輸出***************************************************\n");printf("商品號\t商品名稱\t商品價(jià)格\t庫存數(shù)量\t商品總數(shù)\t銷售量\t銷售額\t生產(chǎn)日期\n");while(p){printf("%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t%5.2f\t%d\n",p->gno,p->name,p->price,p->QuantityInStock,p->amount,p->sold,p->sold*p->price,p->date);p=p->next;}}調(diào)試分析問題描述:問題描述:頁腳內(nèi)容頁腳內(nèi)容初始數(shù)據(jù)圖1調(diào)試過程分析:直接分別按順序輸入每個(gè)超市的每個(gè)商品的商品號、商品名稱、商品價(jià)格、庫存數(shù)量、生產(chǎn)日期即可存在的問題:在這里遇到的問題在于輸入數(shù)據(jù)的時(shí)候非常繁瑣,一不小心輸入錯(cuò)誤就要重新運(yùn)行程序重新輸入,而且一下子輸入商品所有信息容易出現(xiàn)類型錯(cuò)誤或者不能對應(yīng)的上相應(yīng)的信息。改進(jìn)設(shè)想:本來想改成一次輸入一個(gè)數(shù)據(jù),但是這樣在初始化數(shù)據(jù)時(shí)會有很長的一段程序,于是否決了這個(gè)想法。各模塊測試當(dāng)超市有新的商品購入時(shí)添加到單鏈表中232113所示,新1中。存在的問題:這里所說的問題是后面所有調(diào)試程序中都存在的問題,就是每次操作中都所有的操作選項(xiàng)都會出現(xiàn),這樣會占用大量的位置,用戶體驗(yàn)不佳。改進(jìn)設(shè)想:在主程序中選擇需要的操作時(shí)不帶上操作選項(xiàng),操作選項(xiàng)僅在第一次出現(xiàn)。查找出三個(gè)超市中具有相同商品名稱的商品信息圖4調(diào)試過程分析:根據(jù)初始數(shù)據(jù),3a43a的商品的商品信息。存在的問題:無改進(jìn)設(shè)想:無L1中刪除那些與其他兩個(gè)超市都有的商品信息l15l1中已刪除商品a。圖5存在的問題:無改進(jìn)設(shè)想:無修改各超市商品基本信息,如價(jià)格等。圖6調(diào)試過程分析:如圖6,在超市1中修改商品號為2的商品信息,在這里僅修改價(jià)格,再顯示超市1中的商品信息,可見2號商品價(jià)格已經(jīng)改變。存在的問題:這個(gè)算法非常冗長,每一個(gè)修改信息都占據(jù)幾行代碼。改進(jìn)設(shè)想:構(gòu)建一個(gè)函數(shù)專門用于修改一個(gè)信息,這樣每次修改信息之需調(diào)用該函數(shù)即可,不過暫時(shí)未能實(shí)現(xiàn)此想法。查找比較超市中相同商品的銷售情況78圖9圖107,8,91,2,3進(jìn)行售1a。再顯示每個(gè)超市中商品a10所示。存在的問題:輸出需要查詢的銷售信息的商品號時(shí)并不知道有哪些商品是3個(gè)超市都有的,一旦有許多商品時(shí)容易混亂。改進(jìn)設(shè)想:在此算法中插入輸出3個(gè)超市具有相同商品的商品信息算法即可解決,但考慮到這里所測試的信息量少,沒有插入的必要。輸出每個(gè)超市的所有商品信息,統(tǒng)計(jì)每個(gè)超市中每種商品的銷售量及銷售額。圖11調(diào)試過程分析:對超市1進(jìn)行操作,選擇輸出所有商品信息的選項(xiàng),即可顯示所有商品信息,包括銷售量和銷售額。存在的問題:無改進(jìn)設(shè)想:無總結(jié)課程設(shè)計(jì)過程的收獲問題描述:問題描述:頁腳內(nèi)容頁腳內(nèi)容3個(gè)鏈表及指針來完成,但是在慢慢琢磨之后,覺得完全可以用一個(gè)鏈表即可,只要3個(gè)超市在初始化商品時(shí)調(diào)用whiledo—whilewhile,因?yàn)檫壿嫼唵?,?dāng)然缺點(diǎn)就是每次都會出現(xiàn)所有操作的選項(xiàng),顯得冗長繁瑣。這次的程序?qū)嵲O(shè)計(jì)實(shí)驗(yàn)是對我們進(jìn)入大學(xué)以來學(xué)習(xí)程序設(shè)計(jì)語言結(jié)果的一次大檢我相信在以后的學(xué)習(xí)能夠解決好它們。總的來說,收獲還是不小的,我不僅對C語言的操作有了進(jìn)一步的掌握,還了解到了程序設(shè)計(jì)的書寫風(fēng)格及其注釋的格式,可以說,這是我第一次為程序?qū)懽⑨?。程序調(diào)試能力的思考在程序調(diào)試方面,這次的課程設(shè)計(jì)中,我最主要是感悟到了一種調(diào)試程序的方法,就是逐行分析,原理很簡單,在出現(xiàn)錯(cuò)誤的函數(shù)中插入一個(gè)printf語句,從頭開始,一行一行或者在每個(gè)循環(huán)中插入printf語句,如果printf語句的信息難的是邏輯上的錯(cuò)誤,在這里程序調(diào)試最大的問題就是不知道問題出在哪里了,所以這不失為一種好方法。對數(shù)據(jù)結(jié)構(gòu)課程的認(rèn)識與思考這個(gè)學(xué)期數(shù)據(jù)結(jié)構(gòu)主要學(xué)習(xí)了,線性結(jié)構(gòu)(包括棧和隊(duì)列這個(gè)學(xué)期數(shù)據(jù)結(jié)構(gòu)主要學(xué)習(xí)了,線性結(jié)構(gòu)(包括棧和隊(duì)列線性結(jié)構(gòu)包括順序表、鏈表、棧、隊(duì)列等,棧和隊(duì)列是操作受限的線性表,表中的數(shù)據(jù)元素本身也是一個(gè)數(shù)據(jù)結(jié)構(gòu)。除了線性表以外,棧是重點(diǎn),因?yàn)闂:瓦f歸緊密相連,遞歸是程序設(shè)計(jì)中很重要的一種工具。樹狀結(jié)構(gòu)中的重點(diǎn)自然是二叉樹和哈弗曼樹了。對數(shù)據(jù)結(jié)構(gòu)是一門既重視理論,又重視實(shí)踐的課程,而在我的學(xué)習(xí)中,理論占了絕大這點(diǎn)在這次課程設(shè)計(jì)中就暴露了許多問題。因此以后學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的時(shí)候一定要舉一反三,對一個(gè)算法,不僅僅只弄懂這個(gè)算法是怎么來的,也要思考用其他方法實(shí)現(xiàn)此算法數(shù)據(jù)結(jié)構(gòu)是一門既重視理論,又重視實(shí)踐的課程,而在我的學(xué)習(xí)中,理論占了絕大這點(diǎn)在這次課程設(shè)計(jì)中就暴露了許多問題。因此以后學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的時(shí)候一定要舉一反三,對一個(gè)算法,不僅僅只弄懂這個(gè)算法是怎么來的,也要思考用其他方法實(shí)現(xiàn)此算法的功能,這樣才會讓自己的編程能力和解決問題能力得到提高。程序源代碼#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#defineMAXNUM20typedefstructnode{intgno;charname[MAXNUM];floatprice;intQuantityInStock;intamount;intdate;intsold;structnode*next;}linklist;linklist*create(ints)//初始化商品信息{linklist*head,*p,*r;inti,n;head=(linklist*)malloc(sizeof(linklist));head->next=NULL;r=head;printf("\n*********************超市%d商品初始化**********************\n",s);printf("\n請輸入超市%d初始的商品種類數(shù):",s);scanf("%d",&n);for(i=0;i<n;i++){p=(linklist*)malloc(sizeof(linklist));printf("請依次輸入超市%d初始商品%d的商品號、商品名稱、(出售)價(jià)格、庫存數(shù)量、生產(chǎn)日期:\n",s,i+1);scanf("%d",&p->gno);scanf("%s",&p->name);scanf("%f",&p->price);scanf("%d",&p->amount);scanf("%d",&p->date);p->QuantityInStock=p->amount;p->sold=0;p->next=NULL;r->next=p;r=r->next;}returnhead;}linklist*purchase(linklist*l,ints)//超市有新的商品購入是添加到單鏈表中{linklist*p,*q,*r,*head;intn;head=l;r=l;p=l->next;//輸入購入商品的基本信息q=(linklist*)malloc(sizeof(linklist));printf("%d此次購入新商品的商品號、商品名稱(出售)價(jià)格、購入量、生產(chǎn)日期:\n",s);scanf("%d",&q->gno);scanf("%s",&q->name);scanf("%f",&q->price);scanf("%d",&q->amount);scanf("%d",&q->date);q->QuantityInStock=q->amount;q->sold=0;printf("購入成功!\n");//將新結(jié)點(diǎn)插入到表尾q->next=NULL;while(p!=NULL){r=p;p=p->next;}r->next=q;r=r->next;returnhead;}voidsold(linklist*l){linklist*p=l,*q=l;intgno,sold,n=0,location=0;if(l==NULL){printf("return;}printf("請輸入售出的商品號:");scanf("%d",&gno);while(q->gno!=gno){location++;q=q->next;}printf("請輸入售出數(shù)量:");scanf("%d",&sold);if(p->QuantityInStock<=sold){printf("此商品庫存量不足!");return;}while(p){if(location==n){p->sold+=sold;p->QuantityInStock-=sold;printf("售出成功!\n");return;}else{p=p->next;n++;}if(p->QuantityInStock==0){printf("此物品已售完!");return;}}}linklist*findSame(linklist*l1,linklist*l2,linklist*l3)//尋找3個(gè)鏈表中具有相同商品名稱的商品{linklist*p1=l1->next,*p2,*p3,*fs,*q,*p;fs=(linklist*)malloc(sizeof(linklist));//分配一個(gè)新的存儲空間用來保存相同商品的信息fs->next=NULL;q=fs;intflag;//尋找l1,l2中具有相同商品名稱的商品while(p1){p2=l2->next;while(p2){flag=strcmp(p1->name,p2->name);if(flag==0){p=(linklist*)malloc(sizeof(linklist));strcpy(p->name,p1->name);p->next=NULL;q->next=p;q=q->next;}p2=p2->next;}p1=p1->next;}//尋找l2,l3中具有相同商品名稱的商品p=fs;while(p->next){p3=l3;while(p3->next){flag=strcmp(p->next->name,p3->next->name);if(flag==0)break;if(p3->next==NULL){q=p->next;p->next=q->next;}p3=p3->next;}p=p->next;}returnfs;}voidoutputSame(linklist*l1,linklist*l2,linklist*l3)//輸出3個(gè)鏈表中具有相同商品名稱的商品信息{linklist*p1=l1->next,*p2=l2->next,*p3=l3->next,*fs,*p;intflag;fs=findSame(l1,l2,l3);p=fs->next;printf("************************************3個(gè)超市中具有相同名稱的商品信息***********************************\n");while(p){//遍歷鏈表l1while(p1){flag=strcmp(p1->name,p->name);if(flag==0){printf(" 商品號\t\t\t庫存數(shù)量\t\t\t\n");printf("超市1:%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t\t%d\n",p1->gno,p1->name,p1->price,p1->QuantityInStock,p1->amount,p1->amount-p1->QuantityInStock,p1->date);}p1=p1->next;}//遍歷鏈表l2while(p2){flag=strcmp(p2->name,p->name);if(flag==0){printf("超市2:%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t\t%d\n",p2->gno,p2->name,p2->price,p2->QuantityInStock,p2->amount,p2->amount-p2->QuantityInStock,p2->date);}p2=p2->next;}//遍歷鏈表l3while(p3){flag=strcmp(p3->name,p->name);if(flag==0){printf("超市3:%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t\t%d\n",p3->gno,p3->name,p3->price,p3->QuantityInStock,p3->amount,p3->amount-p3->QuantityInStock,p3->date);}p3=p3->next;}p=p->next;}}voiddelSame(linklist*l1,linklist*l2,linklist*l3)//L1中刪除那些與其他兩個(gè)超市都有的商品信息{intflag;linklist*p,*s,*q,*fs;fs=findSame(l1,l2,l3);p=fs;while(p->next){q=l1;while(q->next){flag=strcmp(q->next->name,p->next->name);if(flag==0){s=q->next;q->next=s->next;free(s);printf("\n1!");return;}q=q->next;}p=p->next;}}voidupdate(linklist*l)//修改商品信息{linklist*p=l,*q=l,*s=l->next;intgno,m,price,QuantityInStock,amount,date,n=0,location=0,flag=0;if(l==NULL){//鏈表為空printf("鏈表為空!\n");return;}printf("請輸入需要修改價(jià)格的商品號:");scanf("%d",&gno);while(s){if(s->gno==gno){flag=1;}s=s->next;}if(!flag){//找不到此商品printf("沒有此商品!\n");return;}location++;q=q->next;}printf("請選擇需要修改的商品信息:\n");printf("1.商品價(jià)格2.庫存數(shù)量3.商品總數(shù)4.生產(chǎn)日期5.全部修改\n");//選擇需要修改的信息scanf("%d",&m);switch(m){case1:printf("請輸入新的價(jià)格:");scanf("%d",&price);while(p){if(location==n){p->price=price;return;}else{p=p->next;n++;}}break;case2:printf("請輸入新的庫存數(shù)量:");scanf("%d",&QuantityInStock);while(p){if(location==n){p->QuantityInStock=QuantityInStock;return;}else{p=p->next;n++;}}break;case3:printf("請輸入新的商品總數(shù):");scanf("%d",&amount);while(p){if(location==n){p->amount=amount;return;}else{p=p->next;n++;}}break;case4:printf("請輸入新的生產(chǎn)日期:");scanf("%d",&date);while(p){if(location==n){p->date=date;return;}else{p=p->next;n++;}}break;case5:printf("請輸入新的價(jià)格:");scanf("%d",&price);printf("請輸入新的庫存數(shù)量:");scanf("%d",&QuantityInStock);printf("scanf("%d",&date);printf("scanf("%d",&date);while(p){if(location==n){p->price=price;p->QuantityInStock=QuantityInStock;p->amount=amount;p->date=date;return;}else{p=p->next;n++;}}break;}}voidsoldInformation(linklist*l1,linklist*l2,linklist*l3)//查找比較超市中相同商品的銷售情況{linklist*q1=l1,*p1=l1,*q2=l2,*p2=l2,*q3=l3,*p3=l3,*s;intgno,n1=0,location1=0,n2=0,location2=0,n3=0,location3=0;s=findSame(l1,l2,l3);if(s->next==NULL){printf("3個(gè)超市沒有相同商品!");return;}printf("請輸入需要查詢銷售信息的商品號:");scanf("%d",&gno);}//遍歷l1while(p1){if(location1==n1){while(q2->gno!=gno){location2++;q2=q2->next;}//遍歷l2while(p2){if(location2==n2){while(q3->gno!=gno){location3++;q3=q3->next;}//遍歷l3while(p3){if(location3==n3){printf("************商%s的銷售信息**************\n",q1->name);printf("\t 商品\t銷售\t銷售\n");printf("\t超市1:%s\t%d\t%5.0f\n",q1->name,q1->sold,q1->sold*q1->price);printf("\t超市2:%s\t%d\t%5.0f\n",q2->name,q2->sold,q2->sold*q2->price);printf("\t超市3:%s\t%d\t%5.0f\n",q3->name,q3->sold,q3->sold*q3->price);return;}else{p3=p3->next;n3++;}}if(!p3){printf("沒有此商品!");return;}}else{p2=p2->next;n2++;}}if(!p2){printf("沒有此商品!");return;}}else{p1=p1->next;n1++;}}if(!p1){printf("沒有此商品!");return;}}voidoutput(linklist*l)//輸出每個(gè)超市的所有商品信息(包括銷售量、銷售額){linklist*p;p=l->next;printf("***************************************商品信息輸出********************************************\n");printf("商品號\t商品名稱\t商品價(jià)格\t庫存數(shù)量\t商品總數(shù)\t銷售量\t銷售額\t生產(chǎn)日期\n");while(p){printf("%d\t%s\t\t%5.2f\t\t%d\t\t%d\t\t%d\t%5.2f\t%d\n",p->gno,p->name,p->price,p->QuantityInStock,p->amount,p->sold,p->sold*p->price,p->date);p=p->next;}}intmain(){ints,c;linklist*L1,*L2,*L3,*same;//初始化3個(gè)鏈表L1=create(1);L2=create(2);L3=create(3);while(1){printf("\n請選擇你要管理的超市序號:scanf("%d",&s);switch(s){//管理超市1case1:printf("\n********************超市%d商品管理***********************\n",s);printf("| |\n");printf("| 1.購入商品 |\n");printf("| 2.售出商品 |\n");printf("| 3.查找3個(gè)超市中具有的相同商品名稱的商品信息 printf("| 4.刪除l1中與其他兩個(gè)超市都有的商品信息 |\n");printf("| 5.修改商品信息 |\n");printf("| 6.比較各超市相同商品的銷售情況 |\n");printf("| 7.輸出超市所有商品的信息 |\n");printf("|

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論