下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、有一個小型超市,出售 N (N>= 10)種商品,設(shè)計(jì)并實(shí)現(xiàn)一個系統(tǒng),完成下列功能:1 保存及輸出。 超市中的各種商品信息保存在指定文件中, 可以把它們輸出顯示。2 計(jì)算并排序。計(jì)算每類商品的總價(jià)值(sum,單精度)及平均價(jià)(aver,單精度,輸出一位小數(shù)),將每類商品按平均價(jià)從大到小的順序排序打印出來。3 統(tǒng)計(jì)。 統(tǒng)計(jì)輸出庫存量低于 100 的貨號及類別。 統(tǒng)計(jì)輸出有兩種以上 (含兩種)商品庫存量低于100 的商品類別。總體結(jié)構(gòu)本程序主要分為八個模塊: 主模塊、 信息輸出修改模塊、 新建信息模塊、 排序模塊、計(jì)算模塊、統(tǒng)計(jì)模塊 1 、統(tǒng)計(jì)模塊 2、打印模塊。1) 主模塊:通過調(diào)用各分模
2、塊實(shí)現(xiàn)功能;2) 信息輸出修改模塊:輸出顯示文件中商品信息內(nèi)容,添加商品信息,刪除商品信息,修改商品信息;3) 新建商品信息模塊:建立一個新結(jié)構(gòu)體,為鏈表存信息用,并且將信息保存在指定的文件中;4) 排序模塊:把文件中順序零亂的商品信息按單價(jià)的大小從高到低進(jìn)行排序,放到鏈表里存儲;5) 計(jì)算模塊:將所有商品的價(jià)格與庫存量進(jìn)行累加求和;6) 打印模塊:將商品信息按每類平均價(jià)格排序(從高到低)按順序打印出來;7) 統(tǒng)計(jì)模塊 1 :統(tǒng)計(jì)庫存量低于100 的貨名及類別;8) 統(tǒng)計(jì)模塊 2 :統(tǒng)計(jì)商品庫存量有2 種以上(含2 種)低于 100 的商品類別。定義文件指針類型*/定義整數(shù)類型*/*定義浮點(diǎn)類
3、型*/定義字符數(shù)組類型*/定義字符數(shù)組類型*/定義字符數(shù)組類型*/定義字符數(shù)組類型*/定義結(jié)構(gòu)體*/附 錄(程序清單)#include ""/*#include ""/*#include ""/*#include ""/*FILE *fp;int n=0;/*int i,j,a4,m;/*float aver4,sum4,g4,h;char c5="elec"/*char d5="comm"/*char e5="food"/*char f5="o
4、ffi"/*struct good /*int num; /*char name20;/*輸入,輸出頭文件*/申請空間頭文件*/對字符串加工頭文件*/清屏頭文件*/*/商品名稱 */char kind40;/*商品類型 */商品價(jià)格 */商品單位 */商品數(shù)量 */定義結(jié)構(gòu)體指針類型*/創(chuàng)建鏈表函數(shù)*/float price; /*char unit10;/*int quantity; /* struct good *next; /* *head,*p1,*p2;struct good *createlist()/*struct good *head1,*p1,*p2;/*定義結(jié)構(gòu)體
5、指針類型*/判斷能否打開文件 */申請頭結(jié)點(diǎn)空間if(fp=fopen("goods ","w")=NULL)/* printf("can not open the file");exit(0);/*結(jié)束程序 */head1=(struct good *)malloc(sizeof(struct good); /*/ p1=head1;p2=head1;printf(”*n");printf(" 請輸入信息 : 編號,名稱,類型,價(jià)格,單位,數(shù)目 n");printf(" (以輸入“ 1”表示結(jié)
6、束輸入) n");printf("*n");printf("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->nam
7、e,p1->kind,p1->price,p1->unit,p1->quantity);/* 將商品信息寫入文件 */while(1)p1=(struct good *)malloc(sizeof(struct good); /* 申請新空間*/printf("*n");printf(" 請輸入信息 : 編號,名稱,類型,價(jià)格,單位,數(shù)目 n");printf(" (以輸入“ 1”表示結(jié)束輸入) n");printf("*n");printf("n");scanf(&qu
8、ot;%d",&p1->num);if(p1->num=-1)/* 申請空間結(jié)束條件*/printf("nn");fprintf(fp,"%d",-1);fclose(fp);return head1; /*返回頭指針*/scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity); /* 輸入商品信息*/printf("n");fprintf(fp,
9、"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/* 將商品信息寫入文件 */p1->next=NULL;p2->next=p1;p2=p1;struct good *paixu(struct good*head2) /*鏈表排序函數(shù)*/ struct good *p6,*p7,*r,*s;/*定義結(jié)構(gòu)體指針類型*/for(i=0;i<=3;i+)/*賦初值值 */ ai=0; sumi=0; averi=0;
10、p6=(struct good *)malloc(sizeof(struct good); /* 申請新空間 */ p6->next=head2; head2=p6; while(p6->next!=NULL) /*判斷循環(huán)結(jié)束條件*/ p7=p6->next;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)
11、換 */r->next=s->next;s->next=p6->next;p6->next=s;p6=p6->next;p6=head2;head2=head2->next;free(p6);/*釋放第一個無效空間 */return head2;void jisuan()p1=head;doif(strcmp(p1->kind,c)=0) /* 判斷是否為電器類型*/sum0=sum0+(p1->price)*(p1->quantity); /* 求電器總價(jià)*/a0=a0+p1->quantity;/*求電器總件數(shù)*/if(st
12、rcmp(p1->kind,d)=0) /* 判斷是否為日用品類型*/求日用品總件數(shù)*/sum1=sum1+(p1->price)*(p1->quantity); /* 求日用品總價(jià)*/a1=a1+p1->quantity;/*if(strcmp(p1->kind,e)=0) /*判斷是否為辦公用品類型*/sum2=sum2+(p1->price)*(p1->quantity); /*求辦公用品總價(jià)*/a2=a2+p1->quantity;/*求辦公用品總件數(shù)*/if(strcmp(p1->kind,f)=0) /*判斷是否為食品類型*/s
13、um3=sum3+(p1->price)*(p1->quantity); /*求食品總價(jià)*/a3=a3+p1->quantity;/*求食品總件數(shù)*/p1=p1->next;while (p1!=NULL);/*遍歷鏈表結(jié)束條件*/for(i=0;i<4;i+)averi=sumi/ai; /*求每類商品平均價(jià)*/printf("*n");printf(" 商品類型t平均價(jià) t總庫存量 n");printf("*n");n");printf("printf(" 電器總價(jià)值:%
14、t 平均價(jià) :%t 總庫存量 :%dn",sum0,aver0,a0);printf("n");printf(" 日用品總價(jià)值:%t 平均價(jià) :%t 總庫存量 :%dn",sum1,aver1,a1);printf("n");printf(" 食品總價(jià)值:%t 平均價(jià) :%t 總庫存量 :%dn",sum2,aver2,a2);printf("n");printf(" 辦公用品總價(jià)值:%t 平均價(jià) :%t 總庫存量 :%dn",sum3,aver3,a3);prin
15、tf("n");void shuchu() /*輸出商品信息函數(shù)*/dostruct good *p3,*p4,*p5;/*定義結(jié)構(gòu)體指針類型*/int n=0,p=0,q=0,r=0;printf(" 所有商品信息: n");printf(" 編號,名稱,類型,價(jià)格,單位,數(shù)目 n");printf("*n");if(fp=fopen("goods ","rb+")=NULL) /*判斷能否打開文件*/printf("can not open the file&q
16、uot;);exit(0); /*結(jié)束程序 */head=(struct good *)malloc(sizeof(struct good); /* 申請頭結(jié)點(diǎn)空間 */p3=head;fscanf(fp,"%d %s %s %f %s %d",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity);/* 從文件中寫到鏈表*/while(1)p4=(struct good *)malloc(sizeof(struct good); /* 申請頭結(jié)點(diǎn)
17、空間 */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); /*從文件中寫到鏈表*/p4->next=NULL;p3->next=p4;p3=p4;elsep3->next=NULL;break;fclose(fp); /*關(guān)閉文件 */p3=head;wh
18、ile(p3!=NULL)printf(" %d %s %s % %s %dnn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);printf("n");p3=p3->next;printf("*n");printf("/n");while(n!=4)p3=head;printf("*n");printf("1添加商品信息n");printf("2刪除某
19、商品信息n");printf("3修改某商品信息n");printf("4返回(當(dāng)你完成了對某一商品的添加、刪除或者修改后請按4 返回)n");printf("*n");scanf("%d",&n);if(n=1)/*添加商品信息 */printf(" 請輸入商品 編號 名稱 類型 價(jià)格 單位 數(shù)目 n");printf("*n");*/p4=(struct good *)malloc(sizeof(struct good); /*scanf("%
20、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;if(fp=fopen("goods ","w")=NULL)/*判斷能否打開文件*/printf("can
21、not open the file");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;關(guān)閉文件 */fprintf(fp,"%d",-1);fclose(fp); /*printf(”*n");printf("n");prin
22、tf("請按 4 返回 n");printf("n");printf("*n");if(n=2)/*刪除商品 */printf(”*n");printf(" 請輸入需要刪除的商品編號n");printf(”*n");scanf("%d",&p);printf("*n");printf("1確認(rèn)刪除 n2取消刪除 n");printf("*n");scanf("%d",&r);if(
23、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)fprintf(fp,"%d %s %s %f %s %dp5=p3->next;free(p3); /*釋放空間 */p4->next=p5;break;p3=p3->next;p4=p4->next;if(fp=fopen("goods ","w")=NUL
24、L)/* 判斷能否打開文件*/printf("can not open the file");exit(0); /*結(jié)束程序 */p3=head;while(p3!=NULL) /*判斷循環(huán)結(jié)束條件*/",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/* 將商品信息寫入文件 */p3=p3->next;fprintf(fp,"%d",-1);fclose(fp); /*關(guān)閉文件 */if(r=2)continue; /*繼續(xù)循環(huán)
25、*/printf("*n");printf("n");printf("請按 4 返回 n");printf("n");printf("*n");if(n=3)/*修改某商品信息*/printf(" 請輸入需要修改的商品編號n");scanf("%d",&q);while(p3!=NULL) /* 判斷循環(huán)結(jié)束條件 */if(p3->num)=q)/* 判斷是否為所需要修改的商品 */printf(" 請輸入商品單價(jià)與庫存量 (如果單
26、價(jià)不變請輸入原來的單價(jià)) n");scanf("%f %d",&p3->price,&p3->quantity); /*輸入商品價(jià)格與庫存量*/p3=p3->next;if(fp=fopen("goods ","w")=NULL)/*判斷能否打開文件*/printf("can not open the file");exit(0); /*結(jié)束程序 */p3=head;while(p3!=NULL) /*判斷循環(huán)結(jié)束條件*/fprintf(fp,"%d %s %s
27、 %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/* 將商品信息寫入文件 */p3=p3->next;關(guān)閉文件 */fprintf(fp,"%d",-1);fclose(fp); /*printf("*n");printf("n");printf("請按 4 返回 n");printf("n");printf(”*n");退出 */if(n=4
28、)/*break;、f;c“/”*W-printf("1繼續(xù)修改 nn2返回 n");printf(”*n");scanf("%d",&p);if(p=1)continue; /* 繼續(xù)循環(huán) */if(p=2)break; /*跳出循環(huán) */while(n!=2);fclose(fp); /*關(guān)閉文件 */void printf0(struct good *p)/*遍歷鏈表并打印電器類商品函數(shù)*/struct good *p3;/*p3=p;while (p3!=NULL) /*定義結(jié)構(gòu)體指針類型*/判斷遍歷鏈表循環(huán)結(jié)束條件*/if(s
29、trcmp(p3->kind,c)=0)/*判斷商品類型是否為電器類型*/printf("%dt%st%st%t%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出電器類商品信息 */printf("n");p3=p3->next;return;void printf1(struct good *p)/*遍歷鏈表并打印日用品類商品函數(shù)*/struct good *p3;/*定義結(jié)構(gòu)體指針類型*/p3=p;while (
30、p3!=NULL)/*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(strcmp(p3->kind,d)=0)/*判斷商品類型是否為日用品類型*/printf("%dt%st%st%t%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出日用品類商品信息 */printf("n");p3=p3->next;return;void printf2(struct good *p)/*遍歷鏈表并打印辦公用品類商品函數(shù)*/struct go
31、od *p3;/*定義結(jié)構(gòu)體指針類型*/p3=p;while (p3!=NULL) /*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(strcmp(p3->kind,e)=0)/*判斷商品類型是否為辦公用品類型*/printf("%dt%st%st%t%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出辦公用品類商品信息 */printf("n");p3=p3->next;return;void printf3(struct go
32、od *p)/*遍歷鏈表并打印食品類商品函數(shù)*/struct good *p3;/*定義結(jié)構(gòu)體指針類型*/p3=p;while (p3!=NULL) /*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(strcmp(p3->kind,f)=0)/*判斷商品類型是否為食品類型*/printf("%dt%st%st%t%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*輸出食品類商品信息 */printf("n");p3=p3->next;
33、return;void shunxudayin()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");printf("編號t 名稱 t 類別 t 單價(jià) t 單位 t 數(shù)量n&quo
34、t;);printf("n");for(j=0;j<4;j+)for(i=0;i<4;i+)if (averi=gj) /* 判斷每類商品平均價(jià)格的先后順序 */switch(i)case 0:printf0(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)用遍歷鏈表并打印食品類商品函數(shù)*/bre
35、ak;void tongji1() p1=head;n");* n”printf(" 庫存量低于100 的貨名及類別 n");printf("*n");n");printf(" printf(" 商品名稱 t 商品類型 n");n");printf("while(p1!=NULL) /*判斷遍歷鏈表循環(huán)結(jié)束條件*/if(p1->quantity<100) /*判斷庫存量是否小于100*/輸出商品名稱及類別 */printf("%st%sn",p1->name,p1->kind); /*n");printf("p1=p1->next;void tongji2()printf("n*n");printf(" 商品庫存量有2種以上(含 2種)低于 100 的商品類別 :n");printf(”*n");printf("n");if
溫馨提示
- 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年財(cái)產(chǎn)分配:離婚股權(quán)清晰分割協(xié)議
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)生物試卷(含答案)
- 2024移動醫(yī)療APP開發(fā)與推廣合同
- 2025年度博物館樓頂觀光平臺租賃合同3篇
- 2025年度夜店娛樂DJ藝人簽約管理合同3篇
- 2025年水電站行業(yè)發(fā)展前景分析:我國共有水電站8600余座
- 2024版家庭護(hù)理保姆雇傭合同樣本
- 2024環(huán)境檢測合同
- 2024年學(xué)生宿舍消防安全管理協(xié)議3篇
- 2024年車站自助咖啡機(jī)投放與運(yùn)營合同3篇
- 綠色化學(xué)的研究現(xiàn)狀及進(jìn)展
- 泥結(jié)石路面施工設(shè)計(jì)方案
- 居家養(yǎng)老上門服務(wù)投標(biāo)方案(技術(shù)方案)
- 物理化學(xué)習(xí)題(含答案)
- 某公司廉潔自律管理規(guī)定全套
- 精密儀器設(shè)計(jì)基礎(chǔ)
- 2023年個股期權(quán)從業(yè)人員考試(二級)真題模擬匯編(共170題)
- 諾基亞4G基站配置及常見故障處理課件
- 施工升降機(jī)卸料平臺計(jì)算書
- 微信小程序開發(fā)完整全套教學(xué)課件
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)大賽案例精簡版PPT完整全套教學(xué)課件
評論
0/150
提交評論