




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、有一個(gè)小型超市,出售N(N>=10)種商品,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)系統(tǒng),完成下列功能:1 .保存及輸出。超市中的各種商品信息保存在指定文件中,可以把它們輸出顯示。2 .計(jì)算并排序。計(jì)算每類商品的總價(jià)值(sum,單精度)及平均價(jià)(aver,單精度,輸出一位小數(shù)),將每類商品按平均價(jià)從大到小的順序排序打印出來(lái)。3 .統(tǒng)計(jì)。統(tǒng)計(jì)輸出庫(kù)存量低于100的貨號(hào)及類別。統(tǒng)計(jì)輸出有兩種以上(含兩種)商品庫(kù)存量低于100的商品類別。1.2總體結(jié)構(gòu)本程序主要分為八個(gè)模塊:主模塊、信息輸出修改模塊、新建信息模塊、排序模塊、計(jì)算模塊、統(tǒng)計(jì)模塊1、統(tǒng)計(jì)模塊2、打印模塊。1)主模塊:通過(guò)調(diào)用各分模塊實(shí)現(xiàn)功能;2)信息輸出修
2、改模塊:輸出顯示文件中商品信息內(nèi)容,添加商品信息,刪除商品信息,修改商品信息;3)新建商品信息模塊:建立一個(gè)新結(jié)構(gòu)體,為鏈表存信息用,并且將信息保存在指定的文件中;4)排序模塊:把文件中順序零亂的商品信息按單價(jià)的大小從高到低進(jìn)行排序,放到鏈表里存儲(chǔ);5)計(jì)算模塊:將所有商品的價(jià)格與庫(kù)存量進(jìn)行累加求和;6)打印模塊:將商品信息按每類平均價(jià)格排序(從高到低)按順序打印出來(lái);7)統(tǒng)計(jì)模塊1:統(tǒng)計(jì)庫(kù)存量低于100的貨名及類別;8)統(tǒng)計(jì)模塊2:統(tǒng)計(jì)商品庫(kù)存量有2種以上(含2種)低于100的商品類別附錄(程序清單)#include"stdio.h"#include"stdli
3、b.h"#include"string.h"#include"conio.h"FILE*fp;/*輸入,輸出頭文件*/*申請(qǐng)空間頭文件*/*對(duì)字符串加工頭文件*/*清屏頭文件*/intn=0;/*定義文件指針類型*/inti,j,a4,m;/*定義整數(shù)類型*/floataver4,sum4,g4,h;/*定義浮點(diǎn)類型*/charc5="elec"chard5="comm"chare5="food"charf5="offi"/*定義字符數(shù)組類型*/*定義字符數(shù)組類型*
4、/*定義字符數(shù)組類型*/*定義字符數(shù)組類型*/structgood/*定義結(jié)構(gòu)體*/intnum;/*商品編號(hào)*/charname20;/*商品名稱*/charkind40;/*商品類型*/floatprice;/*商品價(jià)格*/charunit10;/*商品單位*/intquantity;/*商品數(shù)量*/structgood*next;/*定義結(jié)構(gòu)體指針類型*/*head,*p1,*p2;structgood*createlist()/*創(chuàng)建鏈表函數(shù)*/struct good *head1,*p1,*p2;/*定義結(jié)構(gòu)體指針類型*/if(fp=fopen("goodsmessage.
5、txt","w")=NULL)printf("cannotopenthefile");/*判斷能否打開文件*/exit(0);/*結(jié)束程序*/head1=(structgood*)malloc(sizeof(structgood);/*申請(qǐng)頭結(jié)點(diǎn)空間*/p1=head1;p2=head1;printf('I*n");printf("請(qǐng)輸入信息:編號(hào),名稱,類型,價(jià)格,單位,數(shù)目n");printf("(以輸入,1”表示結(jié)束輸入)n");printf('I*n");pri
6、ntf("n");scanf("%d%s%s%f%s%d”,&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity);/*輸入商品信息*/printf("n");p1->next=NULL;fprintf(fp,"%d%s%s%f%s%d”,p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/*將商品信
7、息寫入文件*/while(1)/*申請(qǐng)新空間*/p1=(structgood*)malloc(sizeof(structgood);printf("I*n");printf("請(qǐng)輸入信息:編號(hào),名稱,類型,價(jià)格,單位,數(shù)目n");printf("(以輸入-1”表示結(jié)束輸入)n");printf('I*n");printf("n");scanf("%d”,&p1->num);if(p1->num=-1)/*申請(qǐng)空間結(jié)束條件*/printf("nn")
8、;fprintf(fp,"%d",-1);fclose(fp);returnheadl;/*返回頭指針*/scanf("%s%s%f%s%d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity);/*輸入商品信息*/printf("n");fprintf(fp,"%d%s%s%f%s%d”,p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->qu
9、antity);/*將商品信息寫入文件*/p1->next=NULL;p2->next=p1;p2=p1;structgood*paixu(structgood*head2)/*鏈表排序函數(shù)*/structgood*p6,*p7,*r,*s;/*定義結(jié)構(gòu)體指針類型*/for(i=0;i<=3;i+)/*賦初值值*/ai=0;sumi=0;averi=0;/*申請(qǐng)新空間*/p6=(structgood*)malloc(sizeof(structgood);p6->next=head2;head2=p6;while(p6->next!=NULL)/*判斷循環(huán)結(jié)束條件*
10、/p7=p6->next;r=p6;while(p7->next!=NULL)/*判斷循環(huán)結(jié)束條件*/if(p7->next->price)>(r->next->price)/*判斷是否調(diào)換*/r=p7;p7=p7->next;if(p6!=r)/*判斷循環(huán)結(jié)束條件*/s=r->next;/*指針調(diào)換*/r->next=s->next;s->next=p6->next;p6->next=s;p6=p6->next;p6=head2;head2=head2->next;free(p6);/*釋放第一個(gè)
11、無(wú)效空間*/returnhead2;voidjisuan()p1=head;doif(strcmp(p1->kind,c)=0)/*判斷是否為電器類型*/sum0=sum0+(p1->price)*(p1->quantity);/*求電器總價(jià)*/a0=a0+p1->quantity;/*求電器總件數(shù)*/if(strcmp(p1->kind,d)=0)/*判斷是否為日用品類型*/sum1=sum1+(p1->price)*(p1->quantity);/*求日用品總價(jià)*/a1=a1+p1->quantity;/*求日用品總件數(shù)*/if(strcmp
12、(p1->kind,e)=0)/*判斷是否為辦公用品類型*/sum2=sum2+(p1->price)*(p1->quantity);/*求辦公用品總價(jià)*/a2=a2+p1->quantity;/*求辦公用品總件數(shù)*/if(strcmp(p1->kind,f)=0)/*判斷是否為食品類型*/sum3=sum3+(p1->price)*(p1->quantity);/*求食品總價(jià)*/a3=a3+p1->quantity;/*求食品總件數(shù)*/p1=p1->next;while(p1!=NULL);/*遍歷鏈表2束條件*/for(i=0;i<
13、;4;i+)averi=sumi/ai;/*求每類商品平均價(jià)*/printf("I *n");printf("商品類型t平均價(jià)t總庫(kù)存量n");printf("I*n");printf("n");printf("電器總價(jià)值:0.1%平均價(jià):0.1付總庫(kù)存量:dn”,sum0,aver0,a0);printf("n");printf("日用品總價(jià)值:0.1付平均價(jià):0.1付總庫(kù)存量:dn",sum1,aver1,a1);printf("n");.n
14、)printf("食品總價(jià)值:%0.1%平均價(jià):0.1付總庫(kù)存量:%dn",sum2,aver2,a2);printf("printf("辦公用品總價(jià)值:0.1付平均價(jià):0.1%總庫(kù)存量:%dn",sum3,aver3,a3);printf("n");voidshuchu()/*輸出商品信息函數(shù)*/dostructgood*p3,*p4,*p5;/*定義結(jié)構(gòu)體指針類型*/intn=0,p=0,q=0,r=0;printf("所有商品信息:n");printf("編號(hào),名稱,類型,價(jià)格,單位,數(shù)目
15、n");printf("*n");if(fp=fopen("goodsmessage.txt","rb+")=NULL)/*判斷能否打開文件*/printf("cannotopenthefile");exit(0);/*結(jié)束程序*/head=(structgood*)malloc(sizeof(structgood);/*申請(qǐng)頭結(jié)點(diǎn)空間*/p3=head;fscanf(fp,"%d%s%s%f%s%d”,&p3->num,p3->name,p3->kind,&p
16、3->price,p3->unit,&p3->quantity);/*從文件中寫到鏈表*/while(1)p4=(structgood*)malloc(sizeof(structgood);/*申請(qǐng)頭結(jié)點(diǎn)空間*/fscanf(fp,"%d",&p4->num);if(p4->num!=-1)/*判斷循環(huán)結(jié)束條件*/fscanf(fp,"%s%s%f%s%d”,p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity);/*從文件
17、中寫到鏈表*/p4->next=NULL;p3->next=p4;p3=p4;elsep3->next=NULL;break;fclose(fp);/*關(guān)閉文件*/p3=head;while(p3!=NULL)printf("%d%s%s%0.1f%s%dnn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);printf("n");p3=p3->next;printf("I*n");printf(”/八n
18、");while(n!=4)p3=head;printf("I*n");printf("1添加商品信息n");printf("2刪除某商品信息n");printf("3修改某商品信息n");printf("4返回(當(dāng)你完成了對(duì)某一商品的添加、刪除或者修改后請(qǐng)按4返回)n");printf("I*n");scanf("%d'',&n);if(n=1)/*添加商品信息*/printf("請(qǐng)輸入商品編號(hào)名稱類型價(jià)格單位數(shù)目n&q
19、uot;);printf("I*n");/*申請(qǐng)空間*/p4=(structgood*)malloc(sizeof(structgood);scanf("%d%s%s%f%s%d”,&p4->num,p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity);/*輸入商品信息*/p4->next=NULL;while(p3->next!=NULL)/*判斷循環(huán)結(jié)束條件*/p3=p3->next;p3->next=p4;p3=head;/
20、*判斷能if(fp=fopen("goodsmessage.txt","w")=NULL)否打開文件*/printf("cannotopenthefile");exit(0);/*結(jié)束程序*/while(p3!=NULL)fprintf(fp,"%d%s%s%f%s%d”,p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity)/*將商品信息寫入文件*/p3=p3->next;fprintf(fp,"%d"
21、;,-1);fclose(fp);/*關(guān)閉文件*/printf("I*n");printf("n");printf("請(qǐng)按 4 返回n");printf("n");printf("I*n");if(n=2)/*刪除商品*/printf("I*n");printf(”請(qǐng)輸入需要?jiǎng)h除的商品編號(hào)n");printf("I*n");scanf("%d",&p);printf("I*n");printf(&q
22、uot;1確認(rèn)刪除n2取消刪除n");printf("I*n");scanf("%d",&r);if(r=1)if(head->num)=p)head=head->next;free(p3);/*釋放空間*/elsep4=head;p3=p4->next;while(p3!=NULL)/*判斷循環(huán)結(jié)束條件*/if(p3->num)=p)p5=p3->next;free(p3);/*釋放空間*/p4->next=p5;break;p3=p3->next;p4=p4->next;if(fp=f
23、open("goodsmessage.txt","w")=NULL)/*判斷能否打開文件*/printf("cannotopenthefile");exit(0);/*結(jié)束程序*/p3=head;while(p3!=NULL)/*判斷循環(huán)結(jié)束條件*/fprintf(fp,"%d %s %s %f %s %d”,p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*將商品信息寫入文件*/p3=p3->next;fpri
24、ntf(fp,"%d",-1);fclose(fp);/* 關(guān)閉文件 */if(r=2)continue;/*繼續(xù)循環(huán) */printf("I*n");printf("n");printf("請(qǐng)按 4 返回n");printf("n");printf("I*n");if(n=3)/*修改某商品信息*/printf(”請(qǐng)輸入需要修改的商品編號(hào)n");scanf("%d",&q);while(p3!=NULL)/*判斷循環(huán)結(jié)束條件*/if(p
25、3->num)=q)/*判斷是否為所需要修改的商品*/printf("請(qǐng)輸入商品單價(jià)與庫(kù)存量(如果單價(jià)不變請(qǐng)輸入原來(lái)的單價(jià))n");/*輸入商品價(jià)scanf("%f%d",&p3->price,&p3->quantity);格與庫(kù)存量*/p3=p3->next;if(fp=fopen("goodsmessage.txt","w")=NULL)/*判斷能否打開文件*/printf("cannotopenthefile");exit(0);/*結(jié)束程序*/p3
26、=head;while(p3!=NULL)/*判斷循環(huán)結(jié)束條件*/fprintf(fp,"%d%s%s%f%s%d”,p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*將商品信息寫入文件*/p3=p3->next;fprintf(fp,"%d",-1);fclose(fp);/*關(guān)閉文件*/printf("*n");printf("n");printf("請(qǐng)按4返回n");printf(&qu
27、ot;n");printf("I*n");/*退出*/if(n=4)break;printf("I*n");printf("1繼續(xù)修改nn2返回n");printf("I*n");scanf("d'',&p);if(p=1)continue;if(p=2)break;while(n!=2);fclose(fp);/*繼續(xù)循環(huán)*/*跳出循環(huán)*/*關(guān)閉文件*/voidprintf0(structgood*p)/*遍歷鏈表并打印電器類商品函數(shù)*/structgood*p3;/*
28、定義結(jié)構(gòu)體指針類型*/p3=p;while(p3!=NULL)/*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(strcmp(p3->kind,c)=0)/*判斷商品類型是否為電器類型*/printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出電器類商品信息*/printf("n");p3=p3->next;return;voidprintf1(structgood*p)/*遍歷鏈表并打印
29、日用品類商品函數(shù)*/structgood*p3;/*定義結(jié)構(gòu)體指針類型*/P3=P;while(p3!=NULL)/*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(strcmp(p3->kind,d)=0)/*判斷商品類型是否為日用品類型*/printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出日用品類商品信息*/printf("n");p3=p3->next;return;voidpr
30、intf2(structgood*p)/*遍歷鏈表并打印辦公用品類商品函數(shù)*/structgood*p3;/*定義結(jié)構(gòu)體指針類型*/p3=p;while(p3!=NULL)/*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(strcmp(p3->kind,e)=0)/*判斷商品類型是否為辦公用品類型*/printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出辦公用品類商品信息*/printf("n"
31、;);p3=p3->next;return;voidprintf3(structgood*p)/*遍歷鏈表并打印食品類商品函數(shù)*/structgood*p3;/*定義結(jié)構(gòu)體指針類型*/p3=p;while(p3!=NULL)/*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(strcmp(p3->kind,f)=0)/*判斷商品類型是否為食品類型*/printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出食品類
32、商品信息*/printf("n");p3=p3->next;return;voidshunxudayin()for(i=0;i<4;i+)gi=averi;/*將平均價(jià)賦給新數(shù)組*/for(j=0;j<3;j+)/*將新數(shù)組用冒泡排序法排序*/for(i=j+1;i<4;i+)if(gj<gi)h=gj;gj=gi;gi=h;printf("n*n");printf("商品平均價(jià)格排序表(從高到低)n");printf("*n");printf("n");print
33、f("編號(hào)t名稱t類別t單價(jià)t單位t數(shù)量n");printf("n");for(j=0;j<4;j+)for(i=0;i<4;i+)if(averi=gj)/*判斷每類商品平均價(jià)格的先后順序*/switch(i)case0:printfO(head);/*調(diào)用遍歷鏈表并打印電器類商品函數(shù)*/break;case 1:printf1(head);/*調(diào)用遍歷鏈表并打印日用品類商品函數(shù)*/break;case 2:printf2(head);/*調(diào)用遍歷鏈表并打印辦公用品類商品函數(shù)*/break;case 3:printf3(head);/*調(diào)用
34、遍歷鏈表并打印食品類商品函數(shù)*/break;voidtongji1()p1=head;printf("n*n");printf("庫(kù)存量低于100的貨名及類別n");printf("*n");printf("n");printf("商品名稱t商品類型n");printf("n");while(p1!=NULL)/*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(p1->quantity<100)/*判斷庫(kù)存量是否小于100*/printf("%st%sn",p1->name,p1->kind);/*輸出商品名稱及類別*/printf("n");p1=p1->next;voidtongji2()printf("n*n");printf("商品庫(kù)存量有2種以上(含2種)低于100的商品類別:n");printf("I*n");print
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年11月異形招牌三維建模與數(shù)控切割施工標(biāo)準(zhǔn)
- 學(xué)科教學(xué)質(zhì)量分析
- 管理學(xué)組織的要素
- 2024年6月校園劇場(chǎng)外圍聲屏障綠化降噪養(yǎng)護(hù)合同
- 安防設(shè)備采購(gòu)分包合同(2篇)
- 神經(jīng)外科護(hù)理查房詳解
- 移動(dòng)號(hào)碼管理員面試
- 外科氧療護(hù)理操作流程
- 新聞?dòng)浾甙肽旯ぷ骺偨Y(jié)
- 班級(jí)衛(wèi)生管理論壇
- 綜合錄井儀工作原理演示教學(xué)課件
- 小學(xué)三年級(jí)詩(shī)詞大會(huì)初賽比賽題目課件
- 房建監(jiān)理大綱(共114)
- 國(guó)際工程招投標(biāo)流程圖
- 城市環(huán)境衛(wèi)生工作物資消耗定額
- 液化氣站三級(jí)安全教育培訓(xùn)試題
- 經(jīng)濟(jì)法實(shí)用教程(理論部分)(第八版)(何辛)案例分析及參考答案
- 532近代前夜的危機(jī)
- 病原微生物實(shí)驗(yàn)室生物安全備案專家意見(jiàn)表
- (精心整理)朱德熙_說(shuō) “的”
- 《雷鋒叔叔,你在哪里》說(shuō)課稿(附優(yōu)質(zhì)教案)
評(píng)論
0/150
提交評(píng)論