版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 程序設(shè)計(jì)超市管理系統(tǒng) 學(xué)院: 專業(yè): 班級(jí): 姓名: 學(xué)號(hào): 指導(dǎo)老師: 超市管理系統(tǒng)課程設(shè)計(jì)1)需求分析:設(shè)計(jì)題目:超市管理系統(tǒng)設(shè)計(jì)要求:有一個(gè)小型超市,出售N(N>10)種商品,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)系統(tǒng)系統(tǒng)功能需求分析:1 保存及輸出:超市中的各種商品信息保存在指定文件中,可以把它們輸出顯示。2 計(jì)算并排序:計(jì)算每類商品的總價(jià)值(sum,單精度)及平均價(jià)(aver,單精度,輸出一位小數(shù)),將每類商品按平均價(jià)從大到小的順序排序打印出來。3 統(tǒng)計(jì):統(tǒng)計(jì)輸出庫(kù)存量低于100的貨號(hào)及類別。統(tǒng)計(jì)輸出有兩種以上(含兩種)商品庫(kù)存量低于100的商品類別。2)概要設(shè)計(jì):系統(tǒng)總體設(shè)計(jì)框架:主模塊信息輸出修
2、改模塊新建信息模塊排序模塊計(jì)算模塊統(tǒng)計(jì)模塊1統(tǒng)計(jì)模塊2打印模塊系統(tǒng)功能模塊圖:主模塊信息輸出修改模塊新建信息模塊排序模塊統(tǒng)計(jì)模塊1統(tǒng)計(jì)模塊2打印模塊添加商品主模塊商品價(jià)格(從高到低)刪除某商品信息修改某商品信息主模塊信息輸出計(jì)算模塊商品信息平均價(jià)3)詳細(xì)設(shè)計(jì):主要功能模塊的算法設(shè)計(jì)思路:本程序主要分為八個(gè)模塊:主模塊、信息輸出修改模塊、新建信息模塊、排序模塊、計(jì)算模塊、統(tǒng)計(jì)模塊1、統(tǒng)計(jì)模塊2、打印模塊。1) 主模塊:通過調(diào)用各分模塊實(shí)現(xiàn)功能;2) 信息輸出修改模塊:輸出顯示文件中商品信息內(nèi)容,添加商品信息,刪除商品信息,修改商品信息;3) 新建商品信息模塊:建立一個(gè)新結(jié)構(gòu)體,為鏈表存信息用,并
3、且將信息保存在指定的文件中;4) 排序模塊:把文件中順序零亂的商品信息按單價(jià)的大小從高到低進(jìn)行排序,放到鏈表里存儲(chǔ);5) 計(jì)算模塊:將所有商品的價(jià)格與庫(kù)存量進(jìn)行累加求和;6) 打印模塊:將商品信息按每類平均價(jià)格排序(從高到低)按順序打印出來;7) 統(tǒng)計(jì)模塊1:統(tǒng)計(jì)庫(kù)存量低于100的貨名及類別;8) 統(tǒng)計(jì)模塊2:統(tǒng)計(jì)商品庫(kù)存量有2種以上(含2種)低于100的商品類別工作流程圖:開始輸出商品信息或修改商品信息新建商品信息(刪除原有信息)統(tǒng)計(jì)商品信息退出輸入商品信息(編號(hào)、名稱、類型、價(jià)格、單位、數(shù)目)結(jié)束輸入添加商品信息修改某商品信息刪除某商品信息確認(rèn)或取消輸入商品單價(jià)和庫(kù)存量返回輸出(商品類型、
4、平均價(jià)、總庫(kù)存量)排序(按價(jià)格從高到低)4)主要源程序代碼:#include "stdio.h" /*輸入,輸出頭文件*/ #include "stdlib.h" /*申請(qǐng)空間頭文件*/ #include "string.h" /*對(duì)字符串加工頭文件*/ #include "conio.h" /*清屏頭文件*/ FILE *fp;int n=0; /*定義文件指針類型*/int i,j,a4,m; /*定義整數(shù)類型*/ float aver4,sum4,g4,h; /*定義浮點(diǎn)類型*/ char c5="
5、elec" /*定義字符數(shù)組類型*/char d5="comm" /*定義字符數(shù)組類型*/char e5="food" /*定義字符數(shù)組類型*/char f5="offi" /*定義字符數(shù)組類型*/struct good /*定義結(jié)構(gòu)體*/ int num; /*商品編號(hào)*/ char name20; /*商品名稱*/ char kind40; /*商品類型*/ float price; /*商品價(jià)格*/ char unit10; /*商品單位*/ int quantity; /*商品數(shù)量*/ struct good *ne
6、xt; /*定義結(jié)構(gòu)體指針類型*/*head,*p1,*p2;struct good *createlist() /*創(chuàng)建鏈表函數(shù)*/ struct good *head1,*p1,*p2; /*定義結(jié)構(gòu)體指針類型*/ if(fp=fopen("goods message.txt","w")=NULL) /*判斷能否打開文件*/ printf("can not open the file"); exit(0); /*結(jié)束程序*/ head1=(struct good *)malloc(sizeof(struct good); /*申請(qǐng)
7、頭結(jié)點(diǎn)空間*/ p1=head1; p2=head1; printf("*n"); printf("請(qǐng)輸入信息:編號(hào),名稱,類型,價(jià)格,單位,數(shù)目n"); printf(" (以輸入“1”表示結(jié)束輸入)n"); printf("*n"); printf("_n"); scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p1-&g
8、t;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); /*將商品信息寫入文件*/ while(1) p1=(struct good *)malloc(sizeof(struct good); /*申請(qǐng)新空間*/ printf("*n"); printf(&quo
9、t;請(qǐng)輸入信息:編號(hào),名稱,類型,價(jià)格,單位,數(shù)目n"); printf(" (以輸入“1”表示結(jié)束輸入)n"); printf("*n"); printf("_n"); scanf("%d",&p1->num); if(p1->num=-1) /*申請(qǐng)空間結(jié)束條件*/ printf("_nn"); fprintf(fp,"%d",-1); fclose(fp); return head1; /*返回頭指針*/ scanf("%s %s
10、 %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->quantity); /*將商品信息寫入文件*/ p1->next=NULL; p2->next=p1; p2=p
11、1; 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; p6=(struct good *)malloc(sizeof(struct good); /*申請(qǐng)新空間*/ p6->next=head2; head2=p6; while(p6->next!=NULL) /*判斷循環(huán)結(jié)束條件*/ p7=p6->next; r=p6; while(p7-&
12、gt;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è)無效空間*/ return
13、head2; void jisuan() p1=head; do if(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(s
14、trcmp(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); /*遍歷
15、鏈表結(jié)束條件*/ for(i=0;i<4;i+) averi=sumi/ai; /*求每類商品平均價(jià)*/ printf("*n"); printf("商品類型 t 平均價(jià)t 總庫(kù)存量n"); printf("*n"); printf("_n"); printf("電器總價(jià)值:%0.1ft平均價(jià):%0.1ft總庫(kù)存量:%dn",sum0,aver0,a0); printf("_n"); printf("日用品總價(jià)值:%0.1ft平均價(jià):%0.1ft總庫(kù)存量:%d
16、n",sum1,aver1,a1); printf("_n"); printf("食品總價(jià)值:%0.1ft平均價(jià):%0.1ft總庫(kù)存量:%dn",sum2,aver2,a2); printf("_n"); printf("辦公用品總價(jià)值:%0.1ft平均價(jià):%0.1ft總庫(kù)存量:%dn",sum3,aver3,a3); printf("_n");void shuchu() /*輸出商品信息函數(shù)*/ do struct good *p3,*p4,*p5; /*定義結(jié)構(gòu)體指針類型*/ in
17、t n=0,p=0,q=0,r=0; printf("所有商品信息:n"); printf("編號(hào),名稱,類型,價(jià)格,單位,數(shù)目n"); printf("*n"); if(fp=fopen("goods message.txt","rb+")=NULL) /*判斷能否打開文件*/ printf("can not open the file"); exit(0); /*結(jié)束程序*/ head=(struct good *)malloc(sizeof(struct good);
18、/*申請(qǐng)頭結(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); /*申請(qǐng)頭結(jié)點(diǎn)空間*/ fscanf(fp,"%d ",&p4->num); if(p4->num!=-1) /*
19、判斷循環(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; else p3->next=NULL; break; fclose(fp); /*關(guān)閉文件*/ p3=head; while(p3!=NULL) printf(" %d %s %s %0.1f %s %dnn",p
20、3->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 刪除某商品信息n"); printf("3 修改某商品信息n&quo
21、t;); printf("4 返回(當(dāng)你完成了對(duì)某一商品的添加、刪除或者修改后請(qǐng)按4返回)n"); printf("*n"); scanf("%d",&n); if(n=1) /*添加商品信息*/ printf("請(qǐng)輸入商品 編號(hào) 名稱 類型 價(jià)格 單位 數(shù)目n"); printf("*n"); p4=(struct good *)malloc(sizeof(struct good); /*申請(qǐng)空間*/ scanf("%d %s %s %f %s %d",&p
22、4->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 message.txt","w")=NULL) /*判斷能否打開文件*/ printf("can not open the
23、 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; fprintf(fp,"%d",-1); fclose(fp); /*關(guān)閉文件*/ printf("*n"); printf("_n"); p
24、rintf("-請(qǐng)按4返回-n"); printf("_n"); printf("*n"); if(n=2) /*刪除商品*/ printf("*n"); printf("請(qǐng)輸入需要?jiǎng)h除的商品編號(hào)n"); printf("*n"); scanf("%d",&p); printf("*n"); printf("1 確認(rèn)刪除n2 取消刪除n"); printf("*n"); scanf(&qu
25、ot;%d",&r); if(r=1) if(head->num)=p) head=head->next; free(p3); /*釋放空間*/ else p4=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=fopen("goods message.txt",&qu
26、ot;w")=NULL) /*判斷能否打開文件*/ printf("can not open the file"); 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; fprintf(fp,"%d&
27、quot;,-1); fclose(fp); /*關(guān)閉文件*/ if(r=2) continue; /*繼續(xù)循環(huán)*/ printf("*n"); printf("_n"); printf("-請(qǐng)按4返回-n"); printf("_n"); printf("*n"); if(n=3) /*修改某商品信息*/ printf("請(qǐng)輸入需要修改的商品編號(hào)n"); scanf("%d",&q); while(p3!=NULL) /*判斷循環(huán)結(jié)束條件*/ i
28、f(p3->num)=q) /*判斷是否為所需要修改的商品*/ printf("請(qǐng)輸入商品單價(jià)與庫(kù)存量(如果單價(jià)不變請(qǐng)輸入原來的單價(jià))n"); scanf("%f %d",&p3->price,&p3->quantity); /*輸入商品價(jià)格與庫(kù)存量*/ p3=p3->next; if(fp=fopen("goods message.txt","w")=NULL) /*判斷能否打開文件*/ printf("can not open the file");
29、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; fprintf(fp,"%d",-1); fclose(fp); /*關(guān)閉文件*/ printf("*n"); printf("_n&qu
30、ot;); printf("-請(qǐng)按4返回-n"); printf("_n"); printf("*n"); if(n=4) /*退出*/ break; printf("*n"); printf("1 繼續(xù)修改n-n2 返回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)閉
31、文件*/void printf0(struct good *p) /*遍歷鏈表并打印電器類商品函數(shù)*/ struct good *p3; /*定義結(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); /*輸出電器類商品信息*
32、/ printf("_n"); p3=p3->next; return;void printf1(struct good *p) /*遍歷鏈表并打印日用品類商品函數(shù)*/ struct good *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->p
33、rice,p3->unit,p3->quantity); /*輸出日用品類商品信息*/ printf("_n"); p3=p3->next; return;void printf2(struct good *p) /*遍歷鏈表并打印辦公用品類商品函數(shù)*/ struct good *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
34、",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*輸出辦公用品類商品信息*/ printf("_n"); p3=p3->next; return;void printf3(struct good *p) /*遍歷鏈表并打印食品類商品函數(shù)*/ struct good *p3; /*定義結(jié)構(gòu)體指針類型*/ p3=p; while (p3!=NULL) /*判斷遍歷鏈表循環(huán)結(jié)束條件*/ if(strcmp(p3->kind,f)=0) /*判斷商
35、品類型是否為食品類型*/ 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;void shunxudayin() for(i=0;i<4;i+) gi=averi; /*將平均價(jià)賦給新數(shù)組*/ for(j=0;j<3;j+) /*將新數(shù)組用冒泡排序法排序*/ for(i=j+1
36、;i<4;i+) if(gj<gi) h=gj; gj=gi; gi=h; printf("n*n"); printf("商品平均價(jià)格排序表(從高到低)n"); printf("*n"); printf("_n"); printf("編號(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)
37、 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ù)*/ break; void tongji1() p1=head; printf("n*n"); printf("庫(kù)存量低于100的貨名及類別n"); printf(
38、"*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; void tongji2() print
39、f("n*n"); printf("商品庫(kù)存量有2種以上(含2種)低于100的商品類別:n"); printf("*n"); printf("_n"); if(a0<100)&&(a0>=2) /*判斷電器類庫(kù)存量是否為2種以上(含2種)低于100*/ printf("電器n"); printf("_n"); if(a1<100)&&(a1>=2) /*判斷日用品類庫(kù)存量是否為2種以上(含2種)低于100*/ printf("日用品n"); printf("_n"); if(a2<100)&&(a2>=2)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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【投資合作協(xié)議合同范本】關(guān)于餐飲合作協(xié)議合同范本
- 起重機(jī)維保合同
- 2025屆新教材高考地理一輪復(fù)習(xí)課時(shí)規(guī)范練14外力作用與地表形態(tài)含解析魯教版
- 山東專用2024年高考生物二輪復(fù)習(xí)第一篇專題2考向5細(xì)胞呼吸和光合作用的綜合考查學(xué)案
- 品牌代理合同
- 項(xiàng)目船舶設(shè)備采購(gòu)合同
- 2024年度定制化信息化服務(wù)協(xié)議版
- 2024-2030年資產(chǎn)證券化行業(yè)市場(chǎng)深度分析及競(jìng)爭(zhēng)格局與投資價(jià)值研究報(bào)告
- 電子商務(wù)行業(yè)跨境電商平臺(tái)開發(fā)合同
- 2024-2030年藍(lán)光驅(qū)動(dòng)器行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2021《外國(guó)文學(xué)史》題庫(kù)及答案
- DB63-T 2109-2023 湟水流域水生植物繁育技術(shù)規(guī)程
- 中藥煎藥質(zhì)量評(píng)估檢查表
- 組態(tài)軟件技術(shù)課程設(shè)計(jì)報(bào)告書
- 北京市城鄉(xiāng)居民養(yǎng)老保險(xiǎn)發(fā)展評(píng)估研究報(bào)告
- 節(jié)能標(biāo)識(shí)使用管理規(guī)定
- 戴姆勒產(chǎn)品開發(fā)質(zhì)量體系
- 通過全球化與世界空間學(xué)習(xí)的收獲
- GB 17675-2021汽車轉(zhuǎn)向系基本要求
- 窗邊的小豆豆-好書推薦
- 交互設(shè)計(jì)-課件
評(píng)論
0/150
提交評(píng)論