課程設(shè)計(jì)報(bào)告超市數(shù)據(jù)匯總_第1頁
課程設(shè)計(jì)報(bào)告超市數(shù)據(jù)匯總_第2頁
課程設(shè)計(jì)報(bào)告超市數(shù)據(jù)匯總_第3頁
課程設(shè)計(jì)報(bào)告超市數(shù)據(jù)匯總_第4頁
課程設(shè)計(jì)報(bào)告超市數(shù)據(jù)匯總_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)報(bào)告超市數(shù)據(jù)匯總系統(tǒng)課程:程序設(shè)計(jì)基礎(chǔ)班級: 150407 學(xué)號: 20152476姓名:黃志浩指導(dǎo)教師:孫旸2016年1月12日33 / 33文檔可自由編輯打印目錄設(shè)計(jì)題目3選題背景4設(shè)計(jì)內(nèi)容5設(shè)計(jì)思路6程序清單與運(yùn)行結(jié)果7程序清單7運(yùn)行結(jié)果截圖15總結(jié)、設(shè)計(jì)結(jié)果說明、設(shè)計(jì)體會19設(shè)計(jì)題目問題描述:在數(shù)據(jù)處理中經(jīng)常需要對大量數(shù)據(jù)進(jìn)行匯總,將相同關(guān)鍵字記錄的某些數(shù)據(jù)項(xiàng)的值疊加起來,生成一個分類匯總表。假設(shè)某超級市場銷售有m種商品(假設(shè)商品的編號為1,2,3,m),有n臺前臺收款機(jī)(假設(shè)收款機(jī)的編號為1,2,3,n)進(jìn)行收款,以記錄的形式提供給計(jì)算機(jī),每個記錄表示某臺收款機(jī)的一種商品一次

2、交易的數(shù)量和銷售額。記錄由4個域組成:收款機(jī)編號、商品編號、銷售數(shù)量、銷售金額。構(gòu)造一個結(jié)構(gòu)體類型,每次銷售數(shù)據(jù)以一個結(jié)構(gòu)體變量保存在一個數(shù)據(jù)文件中。實(shí)現(xiàn)要求: 編寫實(shí)現(xiàn)將數(shù)據(jù)記錄插入到數(shù)據(jù)文件的最后的函數(shù); 編寫以收款機(jī)為單位的數(shù)據(jù)分類處理函數(shù)。構(gòu)造n個單鏈表,每個鏈表保存一臺收款機(jī)的銷售記錄,這n個單鏈表的頭指針存放在一個指針數(shù)組中,通過數(shù)組的下標(biāo)就可以知道是哪臺收款機(jī)。讀取數(shù)據(jù)文件的記錄,將所有的銷售記錄(數(shù)據(jù)文件中的全部記錄)分解插入到n個單鏈表; 編寫以商品為單位的數(shù)據(jù)分類處理函數(shù)。構(gòu)造m個單鏈表,每個鏈表保存一種商品的銷售記錄,這m個單鏈表的頭指針存放在一個指針數(shù)組中,通過數(shù)組的下

3、標(biāo)就可以知道是哪種商品。讀取數(shù)據(jù)文件的記錄,將所有的銷售記錄(數(shù)據(jù)文件中的全部記錄)分解插入到m個單鏈表; 統(tǒng)計(jì)每臺收款機(jī)的銷售總額; 以收款機(jī)為單位,將所有收款機(jī)按銷售總額的非遞減順序構(gòu)造一個單鏈表并輸出; 以商品為單位,統(tǒng)計(jì)每種商品的銷售總額; 以商品為單位,將所有銷售的商品按銷售總額的非遞減順序構(gòu)造一個單鏈表并輸出; 設(shè)計(jì)一個菜單,具有上述要求的所有功能、退出系統(tǒng)等最基本的功能。選題背景隨著我國改革開放的不斷深入、經(jīng)濟(jì)飛速的發(fā)展,企業(yè)要想生存發(fā)展,要想在激烈的市場競爭中立于不敗之地,沒有現(xiàn)代化的管理是萬萬不行的。作為現(xiàn)代社會的一部分,超市必須適應(yīng)社會的發(fā)展,因此實(shí)現(xiàn)超市的信息化管理是很有

4、必要的。 在傳統(tǒng)的手工管理中,往往是用人工清點(diǎn)的方式來掌握超市中現(xiàn)有的商品,使用手工記賬的方式來掌握商品的進(jìn)貨和銷售情況。這種方式在商品數(shù)量較少、商品庫存變換少的情況下,不失為一種較好的方法。但是,在目前的大中型超市中,往往需要處理的商品種類數(shù)以千計(jì),而且每天所發(fā)生的進(jìn)貨和銷售情況紛繁復(fù)雜。如果要借助人工來實(shí)現(xiàn)這一系列數(shù)據(jù)的記錄和管理,工作量將非常巨大,而且容易出現(xiàn)錯誤,造成管理上的混亂,更何況還需要對商品的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和分析。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已被人們所認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對超市信息

5、進(jìn)行管理有著手工管理所無法比擬的優(yōu)點(diǎn),例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高超市管理的效率,也能使超市步入科學(xué)化、正規(guī)化的管理。基于這些問題,為了使超市管理工作規(guī)范化、系統(tǒng)化、程序化,避免超市管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時、準(zhǔn)確、有效地查詢和修改商品情況,建立一個超市管理系統(tǒng)是非常必要的。設(shè)計(jì)內(nèi)容1.實(shí)現(xiàn)將數(shù)據(jù)記錄插入到數(shù)據(jù)文件的最后;2.以收款機(jī)為單位的數(shù)據(jù)分類處理。構(gòu)造n個單鏈表,每個鏈表保存一臺收款機(jī)的銷售記錄,這n個單鏈表的頭指針存放在一個指針數(shù)組中,通過數(shù)組的下標(biāo)就可以知道是哪臺收款機(jī)。讀取數(shù)據(jù)文件的記錄,

6、將所有的銷售記錄(數(shù)據(jù)文件中的全部記錄)分解插入到n個單鏈表;3.統(tǒng)計(jì)每臺收款機(jī)的銷售總額;4.以收款機(jī)為單位,將所有收款機(jī)按銷售總額的非遞減順序構(gòu)造一個單鏈表并輸出;5.以商品為單位的數(shù)據(jù)分類處理。構(gòu)造m個單鏈表,每個鏈表保存一種商品的銷售記錄,這m個單鏈表的頭指針存放在一個指針數(shù)組中,通過數(shù)組的下標(biāo)就可以知道是哪種商品。讀取數(shù)據(jù)文件的記錄,將所有的銷售記錄(數(shù)據(jù)文件中的全部記錄)分解插入到m個單鏈表;6.以商品為單位,統(tǒng)計(jì)每種商品的銷售總額;7.以商品為單位,將所有銷售的商品按銷售總額的非遞減順序構(gòu)造一個單鏈表并輸出;設(shè)計(jì)思路1. 首先將數(shù)據(jù)通過程序存儲到文件中供程序提取并操作。2. 將文

7、件中的數(shù)據(jù)提取并做成一個單鏈表。3. 將上一步的單鏈表分成N個單鏈表,每個收款機(jī)為一個單鏈表。 N個單鏈表頭指針放在一個指針數(shù)組里。4. 查找N個單鏈表中的數(shù)據(jù)并計(jì)算總金額,同時把總金額存儲到一個數(shù)組中供下步使用。5. 根據(jù)總金額將指針數(shù)組排序并輸出。6. 以商品為單位,重復(fù)3-5步。程序清單與運(yùn)行結(jié)果程序清單#include"stdio.h"#include"malloc.h"#include"string.h"#include"stdlib.h"#define N 3 / 3個收款機(jī) #define M 9 /

8、 9種商品 char acount10="737701995"/管理員賬號 char password10="123456"/管理員密碼 struct Node* atmN; /存放收款機(jī)鏈表頭指針 struct Node* goodsM;/ 商品鏈表頭指針 char n1N='a','b','c'char n2M='1','2','3','4','5','6','7','8',&

9、#39;9'float m1N;/每臺收款機(jī)收款總額 float m2M;/每種商品銷售總額 struct shop/結(jié)構(gòu)體數(shù)據(jù) char ATM;/ 標(biāo)號為 a-cchar GOODS; /標(biāo)號為 1-9float num;float price;float total; ;struct Node/鏈表 struct shop content;struct Node *next;void add()struct shop data;FILE *fp=NULL;fp=fopen("data.txt","a");if(fp=NULL)printf(

10、"文件打開失??!");return;char flag='y'while(flag='y'|flag='Y')printf("輸入收款機(jī)號:(a-c) ");rewind(stdin);scanf("%c",&data.ATM);printf("輸入商品號:(1-9) "); rewind(stdin);scanf("%c",&data.GOODS);printf("輸入銷售商品數(shù)量:");scanf("

11、;%f",&data.num); printf("輸入銷售價格:");scanf("%f",&data.price);data.total=data.num*data.price;fprintf(fp,"%c%c%f %f %f",data.ATM,data.GOODS,data.num,data.price,data.total);fputc('n',fp);printf("是否繼續(xù) y/Y ");rewind(stdin);scanf("%c",&a

12、mp;flag); if(flag!='y'&&flag!='Y')fclose(fp);return;struct Node* creatNode() /提取文件數(shù)據(jù) 建成一個鏈表 char ch;FILE *fp=NULL;fp=fopen("data.txt","r");struct Node *h,*p1,*p2;p2=(struct Node*)malloc(sizeof(struct Node);h=p2;fscanf(fp,"%c%c",&p2->conten

13、t.ATM,&p2->content.GOODS);fscanf(fp,"%f%f%f",&p2->content.num,&p2->content.price,&p2->content.total);ch=fgetc(fp);while(!feof(fp)p1=(struct Node*)malloc(sizeof(struct Node);fscanf(fp,"%c%c",&p1->content.ATM,&p1->content.GOODS);fscanf(fp,&

14、quot;%f",&p1->content.num);fscanf(fp,"%f",&p1->content.price);fscanf(fp,"%f",&p1->content.total);ch=fgetc(fp);p2->next=p1;p2=p1;ch=fgetc(fp);fclose(fp);p2->next=NULL;if(h=NULL)printf("提取數(shù)據(jù)失??!");return 0;elsereturn h;void creatatm() /根據(jù)收款機(jī)

15、建立N個鏈表 int i=0;struct Node* h;h=creatNode();while(n1i!=NULL)struct Node *q,*p1=NULL,*p2,*H; p2=(struct Node*)malloc(sizeof(struct Node);H=p2;q=h;while(q) if(q->content.ATM=n1i) p1=(struct Node*)malloc(sizeof(struct Node);p1->content=q->content;p2->next=p1;p2=p1; q=q->next; p2->next

16、=NULL; H=H->next; atmi=H; i+;return;void addtotal() /計(jì)算各收款機(jī)收款總額并存儲總額數(shù)據(jù) int i=0;creatatm();float Total=0;struct Node *q;while(i<N)q=atmi;while(q)Total+=q->content.total;q=q->next;m1i=Total;i+;Total=0; printf("n");void ATMtotal() /每臺收款機(jī)銷售總額 addtotal();int i=0;while(i<N)if(m1i!

17、=0) /如果第i-1臺收款機(jī)沒有收到匯款,則不輸出printf("%c號收款機(jī)收款總額為%6.2fn",n1i,m1i);i+;void ATMsort()/將收款機(jī)按銷售總額排序 鏈表 addtotal();int j,k;float temp;struct Node *Temp;for(j=0;j<N;j+)for(k=j;k<N;k+)if(m1k<m1j)temp=m1k;/對各收款機(jī)總金額排序 m1k=m1j;m1j=temp;Temp=atmk;/對鏈表排序 atmk=atmj;atmj=Temp;k-;for(int i=0;i<N;

18、i+)if(m1i!=0)printf("%c號收款機(jī)總金額為%6.2f n",atmi->content.ATM,m1i); void creatgoods() /根據(jù)商品建立 M個鏈表 int i=0;struct Node* h;h=creatNode();while(n2i!=NULL)struct Node *q,*p1=NULL,*p2,*H; p2=(struct Node*)malloc(sizeof(struct Node);H=p2;q=h;while(q) if(q->content.GOODS=n2i) p1=(struct Node*)

19、malloc(sizeof(struct Node);p1->content=q->content;p2->next=p1;p2=p1; q=q->next; p2->next=NULL; H=H->next; goodsi=H; i+;return;void addtotal2() /計(jì)算每種商品銷售總額并存儲總額數(shù)據(jù) int i=0;creatgoods();float Total=0;struct Node *q;while(i<M)q=goodsi;while(q)Total+=q->content.total;q=q->next;

20、m2i=Total;i+;Total=0; printf("n");void GOODStotal() /每種商品銷售總額 addtotal2();int i=0;while(i<M)if(m2i!=0)/如果第i-1種商品沒有賣出過,則不輸出printf("%c號商品銷售總額為%6.2fn",n2i,m2i);i+;void GOODSsort()/將商品按銷售總額排序 鏈表 addtotal2();int j,k;float temp;struct Node *Temp;for(j=0;j<M;j+)for(k=j;k<M;k+)i

21、f(m2k<m2j)temp=m2k;/對各收款機(jī)總金額排序 m2k=m2j;m2j=temp;Temp=goodsk;/對鏈表排序 goodsk=goodsj;goodsj=Temp;k-;for(int i=0;i<M;i+)if(m2i!=0)printf("%c號商品銷售總金額為%6.2f n",goodsi->content.GOODS,m2i);void print()struct Node* h;h=creatNode();printf("收款機(jī) 商品 數(shù)量 單價 總金額n");while(h->next!=NULL

22、)printf("%c %c %6.2f",h->content.ATM,h->content.GOODS,h->content.num) ; printf(" %6.2f %6.2fn",h->content.price,h->content.total); h=h->next; void delate()FILE *fp=fopen("hzh.txt","a");remove("data.txt");fclose(fp);rename("hzh.

23、txt","data.txt");return;void menu()int flag;printf(" 歡迎使用超市數(shù)據(jù)分類匯總系統(tǒng)nn");while(1)printf("*n");printf("新增記錄 2統(tǒng)計(jì)每臺收款機(jī)的銷售總額 3將所有收款機(jī)按收款總額排序n"); printf("4統(tǒng)計(jì)每種商品的銷售總額 5將所有銷售的商品按銷售總額排序 n"); printf("6查看所有銷售數(shù)據(jù) 7刪除所有記錄 8退出n"); printf("*nn");scanf("%d",&flag);switch(flag)case 1:add();break;case 2:ATMtotal();break;case 3:ATMsort();break;case 4:GOODStotal();break;case 5:GOODSsort();b

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論