客戶消費(fèi)積分管理系統(tǒng)_第1頁(yè)
客戶消費(fèi)積分管理系統(tǒng)_第2頁(yè)
客戶消費(fèi)積分管理系統(tǒng)_第3頁(yè)
客戶消費(fèi)積分管理系統(tǒng)_第4頁(yè)
客戶消費(fèi)積分管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄一、系統(tǒng)開發(fā)的背景1二、系統(tǒng)分析與設(shè)計(jì)1(一)系統(tǒng)功能要求1(二)系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)1三、系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)2(一)添加客戶: GETELEM(CNODE*HEAD)2(二)修改客戶AMEND(CNODE*HEAD,CHAR NAME)5(三)刪除客戶DELETE(CNODE*HEAD,CHAR NAME)8(四)顯示客戶VOID SHOWALL(CNODE*HEAD)10四、系統(tǒng)測(cè)試12(一)測(cè)試VOID NAIN ()函數(shù)12(二)部分調(diào)用函數(shù)的測(cè)試13五、總結(jié)14六、附件(代碼)14 客戶消費(fèi)積分管理系統(tǒng)一、 系統(tǒng)開發(fā)的背景為了能夠快速根據(jù)客戶的消費(fèi)積分計(jì)算打折后的價(jià)格,以及優(yōu)惠后的價(jià)格

2、,給客戶以心理上的刺激,激發(fā)客戶的消費(fèi)欲望。并且減輕收銀員的工作負(fù)擔(dān);因此,我特別編寫了一套有關(guān)客戶消費(fèi)積分管理的系統(tǒng),來方便在日常生活中的使用。二、 系統(tǒng)分析與設(shè)計(jì)(一) 系統(tǒng)功能要求針對(duì)客戶的消費(fèi)情況,進(jìn)行客戶管理,根據(jù)客戶的消費(fèi)積分對(duì)客戶實(shí)行不同程度的打折優(yōu)惠。1、對(duì)客戶的信息可以進(jìn)行修改、刪除、添加;2、能夠根據(jù)消費(fèi)情況進(jìn)行客戶積分的計(jì)算;3、根據(jù)積分情況實(shí)行不同程度的打折優(yōu)惠;(二) 系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)通過對(duì)系統(tǒng)功能的分析,客戶消費(fèi)積分管理系統(tǒng)功能如圖(1)所示??蛻粝M(fèi)積分管理系統(tǒng)添加函數(shù)修改函數(shù) 刪除函數(shù)顯示函數(shù)圖(1)客戶消費(fèi)管理系用統(tǒng)圖通過上圖的功能分析,首先定義了一個(gè)數(shù)據(jù)域,

3、來存儲(chǔ)客戶的基本信息;其次,基本函數(shù)成員有姓名,消費(fèi)卡號(hào),消費(fèi)價(jià)格以及折扣后的價(jià)格。最主要的是運(yùn)用While語句和switch語句的套用來實(shí)現(xiàn),此外,就是要用到malloc函數(shù)來存儲(chǔ)客戶的信息分配內(nèi)存。把整個(gè)系統(tǒng)主要?jiǎng)澐譃?個(gè)模塊:1、 添加客戶信息:該模塊主要實(shí)現(xiàn),客戶基本信息(姓名、消費(fèi)卡號(hào)、消費(fèi)金額)的添加,借助函數(shù)Getelem(cnode*head)來實(shí)現(xiàn);2、 修改客戶信息:該模塊主要實(shí)現(xiàn),對(duì)消費(fèi)者的基本信息的修改功能,借助函數(shù)Amend(cnode*head,char name)來實(shí)現(xiàn);3、 刪除客戶信息:此模塊的功能是,刪除所要確定的客戶信息,而達(dá)到從整個(gè)系統(tǒng)清除的目的,借助函

4、數(shù)Delete(cnode*head,char name)來實(shí)現(xiàn);4、 顯示客戶信息:此模塊的主要作用是顯示消費(fèi)者的相關(guān)信息,借助函數(shù)Showall(cnode*head)來實(shí)現(xiàn)。三、 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(一) 添加客戶: Getelem(cnode*head)分析:首先選擇的添加客戶的指令,然后輸入客戶的基本信息。客戶的姓名,客戶的ID消費(fèi)卡號(hào),如果輸入的不正確則需要提示重輸,還有就是客戶的消費(fèi)金額,這樣才能計(jì)算后面的積分優(yōu)惠折扣。最后就顯示該添加客戶的信息。流程圖如圖(2)所示。運(yùn)行結(jié)果如圖(a)所示。 客戶姓名消費(fèi)卡ID號(hào)消費(fèi)金額積分折扣圖(2)-1模塊分析圖開始輸入客戶姓名及ID號(hào)(正確

5、)輸出客戶相關(guān)信息相關(guān)信息結(jié)束(錯(cuò)誤)重新輸入客戶相關(guān)信息(正確)輸出客戶相關(guān)信息圖(2)添加客戶信息流程圖該模塊的具體代碼如下所示:#include<stdio.h>/標(biāo)準(zhǔn)的輸入輸出庫(kù)函數(shù)#include<stdlib.h>/動(dòng)態(tài)存儲(chǔ)分配函數(shù)#include<string.h>/字符串函數(shù)struct cnodechar name20;/客戶姓名char ID4;/客戶ID號(hào)double consume;/客戶消費(fèi)double integer;/客戶積分cnode*next;double display_discount(double points)/客戶

6、積分折扣函數(shù)double discount;if(points=0)discount=0;else if (points>0&&points<=50)discount=9.8;else if (points>50&&points<=100)discount=9.5;else if (points>100&&points<=200)discount=9.0;else if (points>200&&points<=300)discount=8.0;else if (points>

7、300)discount=7.0; return discount;void Initstack(cnode*&head)head=(cnode*)malloc(sizeof(cnode);/malloc函數(shù)開辟內(nèi)存單元,分配cnode長(zhǎng)度字節(jié)的存儲(chǔ)區(qū)head->next=NULL;void Getelem(cnode*head)/添加客戶函數(shù)cnode*p;double y;p=(cnode*)malloc(sizeof(cnode);printf("請(qǐng)輸入姓名:");scanf("%s",&p->name);printf(

8、"請(qǐng)輸入ID(4位):");scanf("%s",&p->ID);while(strlen(p->ID)!=4)printf("ID有誤,請(qǐng)重新輸入(4位):");scanf("%s",p->ID);printf("請(qǐng)輸入消費(fèi)金額:");scanf("%lf",&p->consume);p->integer=p->consume/100;y=display_discount(p->integer);printf(&qu

9、ot;折扣:%llf折n",y);p->next=head->next;head->next=p;system("pasue");void main()cnode*head;int choice;char name10;Initstack(head);doprintf("n");printf(" n");printf(" $ 客戶消費(fèi)積分管理系統(tǒng) $n");printf(" n");printf("n *");printf("n * *&

10、quot;);printf("n * <<主菜單>> *");printf("n * 1.添加客戶 *");printf("n * 2.查找客戶 *");printf("n * 3.修改客戶 *");printf("n * 4.刪除客戶 *");printf("n * 5.顯示客戶 *");printf("n * 6.統(tǒng)計(jì)客戶 *");printf("n * 7.退出 *");printf("n *&q

11、uot;);printf("n 請(qǐng)輸入您的選擇(1,2,3,4,5,6,7):"); Getelem(head);break;system("cls");/程序運(yùn)行后自動(dòng)清屏while(choice<=7); 圖(a)(二) 修改客戶Amend(cnode*head,char name)分析:首先要確定該客戶消費(fèi)積分系統(tǒng)有沒有客戶,在有客戶的條件下對(duì)所在客戶的相關(guān)信息進(jìn)行修改。第一步要輸入所要修改客戶的姓名,第二步是選擇修改客戶的姓名、ID消費(fèi)卡號(hào)、還是消費(fèi)金額。然而對(duì)消費(fèi)金額的修改有可以選擇是續(xù)加金額和覆蓋原有的金額兩種操作。最后結(jié)果顯示在屏幕上

12、。流程圖 如圖(3)所示。運(yùn)行結(jié)果如圖(b)所示。開始修改客戶的相關(guān)信息輸出修改后的信息結(jié)束沒有客戶結(jié)束有客戶如圖(3)修改客戶信息流程圖該模塊的具體代碼如下所示:void Amend(cnode*head,char name)/修改客戶函數(shù)cnode*p;double y,z;int choose, x;p=head;if(p->next=NULL)printf("n沒有客戶!");elsewhile(p->next!=NULL)p=p->next;if(strcmp(name,p->name)=0)printf("姓名:%sn"

13、;,p->name); printf("ID:%sn",p->ID); printf("消費(fèi):%.2lf",p->consume); printf("積分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);printf("n請(qǐng)選擇您要修改的資料:1.姓名 2.ID 3.消費(fèi)金額n");scanf("%d",&choose);switch(cho

14、ose)case 1: printf("請(qǐng)輸入修改后的姓名:"); scanf("%s",p->name);break;case 2: printf("請(qǐng)輸入修改后的ID:"); scanf("%s",p->ID);break; while(strlen(p->ID)!=4) printf("ID有誤,請(qǐng)重輸(4位):"); scanf("%s",p->ID); break;case 3: printf("請(qǐng)選擇:1覆蓋以前的消費(fèi). 2續(xù)加上

15、現(xiàn)在的消費(fèi)."); scanf("%d",&x);switch(x)case 1:printf("請(qǐng)輸入修改后的消費(fèi):"); scanf("%lf",&p->consume);break;case 2:printf("請(qǐng)輸入續(xù)加金額:");scanf("%lf",&z);p->consume+=z;break;printf("姓名:%sn",p->name);printf("ID:%sn",p->I

16、D);printf("消費(fèi)額:%.2lf",p->consume);p->integer=p->consume/100;printf("積分:%lf",p->integer);y=display_discount(p->integer);printf("折扣:%.llf折n",y);system("pasue");圖(b)(三) 刪除客戶Delete(cnode*head,char name)分析:首先也是要確定該客戶消費(fèi)積分系統(tǒng)有沒有客戶,在有客戶的條件下對(duì)所在客戶的相關(guān)信息進(jìn)行刪除

17、。第一步要輸入所要?jiǎng)h除的客戶的姓名,第二步是就是對(duì)所選定的客戶進(jìn)行刪除,在刪除結(jié)束時(shí),會(huì)出現(xiàn)是否刪除成功的提示語,以便進(jìn)行慎重的刪除操作。流程圖如圖(4)所示。運(yùn)行結(jié)果如圖(c)所示。開始要?jiǎng)h除的客戶是否刪除成功結(jié)束沒有客戶結(jié)束有客戶圖(4)刪除客戶信息流程圖該模塊的具體代碼如下所示:void Delete(cnode*head,char name)/刪除客戶函數(shù)cnode*p;int x;double y;p=head;if(p->next=NULL)printf("n沒有客戶!");elsewhile(p->next!=NULL)head=p;p=p->

18、;next;if(strcmp(name,p->name)=0) printf("姓名:%sn",p->name); printf("ID:%sn",p->ID); printf("消費(fèi):%.2lf",p->consume); printf("積分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y); printf("確認(rèn)刪除? 1確認(rèn) 2取消 請(qǐng)選擇:&q

19、uot;);scanf("%d",&x);if(x=1)head->next=p->next;printf("刪除成功!"); elseprintf("刪除失敗!"); printf("n");system("pause");圖(c)(四) 顯示客戶void Showall(cnode*head)分析:首先還是要確定該客戶消費(fèi)積分系統(tǒng)有沒有客戶,在有客戶的條件下對(duì)所有客戶的相關(guān)信息進(jìn)行顯示。最終將所有客戶的相關(guān)信息顯示在屏幕上。流程圖如圖(5)所示。運(yùn)行結(jié)果如圖(d)所示。圖

20、(5)顯示客戶信息流程圖該模塊的具體代碼如下所示:void Showall(cnode*head)/顯示客戶函數(shù)cnode*p;double y;p=head;if(p->next=NULL)printf("沒有客戶!");elsewhile(p->next!=NULL)p=p->next; printf("姓名:%sn",p->name); printf("ID:%sn",p->ID); printf("消費(fèi):%.2lf",p->consume); printf("積

21、分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);system("pause");圖(d)四、 系統(tǒng)測(cè)試(一) 測(cè)試void nain ()函數(shù)測(cè)試該函數(shù)使用的測(cè)試方法,測(cè)試的具體步驟,測(cè)試用例的選取,測(cè)試的結(jié)果。首先,通過編譯,運(yùn)行兩步的操作,排除了該程序中的基本語法錯(cuò)誤,鏈接進(jìn)一步的檢查了程序的正確性與合法性,完全排除了程序中的邏輯錯(cuò)誤,使得程序可以正確的運(yùn)行出來。然后檢驗(yàn)程序的可實(shí)用性,通過操作者自己輸入一些對(duì)客戶操作要求,來完

22、成檢驗(yàn)這一步。最后,還要看顯示的結(jié)果是否正確可靠。這樣,一個(gè)客戶消費(fèi)積分系統(tǒng)的程序就完成了。所以,下圖(6)就是主函數(shù)測(cè)試的結(jié)果。圖(6)主函數(shù)測(cè)試結(jié)果(二) 部分調(diào)用函數(shù)的測(cè)試如圖(4)是查找函數(shù)的測(cè)試,如圖(5)是統(tǒng)計(jì)函數(shù)的測(cè)試。如圖(4)查找函數(shù)的測(cè)試結(jié)果 如圖(5)是統(tǒng)計(jì)函數(shù)的測(cè)試結(jié)果五、 總結(jié)系統(tǒng)完成了對(duì)一個(gè)消費(fèi)商店內(nèi)部,進(jìn)行的一次優(yōu)惠打折活動(dòng),根據(jù)顧客在本商店所進(jìn)行的消費(fèi)情況,對(duì)相關(guān)消費(fèi)客戶的信息進(jìn)行了增加、刪除和修改等的操作。并且運(yùn)用switch語句完成用戶自行選擇的要求,使得程序變得更加友善和諧,讓用戶根據(jù)每一步的提示來完成所需的操作,進(jìn)而達(dá)到對(duì)有關(guān)消費(fèi)客戶的操作,并且與此次活

23、動(dòng)的優(yōu)惠積分規(guī)定相一致,來計(jì)算顧客所得的積分及其相應(yīng)的折扣。并且完成了對(duì)消費(fèi)客戶信息的增加,刪除,添改功能。此外充分利用C語言的語法結(jié)構(gòu)(順序機(jī)構(gòu)、循環(huán)結(jié)構(gòu)及其選擇機(jī)構(gòu)),對(duì)整個(gè)程序進(jìn)行了合理編寫與調(diào)試。盡量做到程序的簡(jiǎn)單、合理明白,加一些適當(dāng)?shù)淖⑨屨f明部分。系統(tǒng)不足:這個(gè)系統(tǒng)的不足在于他不能的將客戶的信息資料存儲(chǔ)于磁盤中,只能在完整的一次操作中,不退出此界面一直能有效正確的執(zhí)行命令。但是退出一次之后,重新操作時(shí),以前的客戶信息就不再存在了。因此,這是還有待于我不斷改進(jìn)完善的地方。我的收獲:在此次的C+課程設(shè)計(jì)中,通過設(shè)計(jì)掌握了C+課程及其數(shù)據(jù)結(jié)構(gòu)在以后學(xué)習(xí)C課程中的重要性。數(shù)據(jù)機(jī)構(gòu)中的基本理

24、論和算法的綜合應(yīng)用是解決實(shí)際問題的重要手段。在做這次課程設(shè)計(jì)中最讓我得到提高的是自己的獨(dú)立思考及實(shí)踐能力,在完成此項(xiàng)設(shè)計(jì)的過程中,我利用各種和C有關(guān)的工具書、相關(guān)的網(wǎng)絡(luò)信息完成了一個(gè)關(guān)于客戶消費(fèi)積分管理系統(tǒng)的程序,讓我從中更多的了解了C這門語言及其有關(guān)知識(shí),更讓我對(duì)最初學(xué)C態(tài)度有了一個(gè)強(qiáng)烈轉(zhuǎn)變C中的奧秒就在于自己的不斷探索與積累。六、 附件(代碼)#include<stdio.h>/標(biāo)準(zhǔn)的輸入輸出庫(kù)函數(shù)#include<stdlib.h>/動(dòng)態(tài)存儲(chǔ)分配函數(shù)#include<string.h>/字符串函數(shù)struct cnodechar name20;/客戶姓

25、名char ID4;/客戶ID號(hào)double consume;/客戶消費(fèi)double integer;/客戶積分cnode*next;void Count(cnode*head)/統(tǒng)計(jì)客戶函數(shù)cnode *p;int i=0;p=head;if(p->next=NULL)printf("n沒有客戶!");elsewhile(p->next!=NULL)p=p->next; i+;printf("n現(xiàn)有客戶數(shù)量為%d位n",i);system("pause");double display_discount(doubl

26、e points)/客戶積分折扣函數(shù)double discount;if(points=0)discount=0;else if (points>0&&points<=50)discount=9.8;else if (points>50&&points<=100)discount=9.5;else if (points>100&&points<=200)discount=9.0;else if (points>200&&points<=300)discount=8.0;else if

27、 (points>300)discount=7.0; return discount;void Initstack(cnode*&head)head=(cnode*)malloc(sizeof(cnode);/malloc函數(shù)開辟內(nèi)存單元,分配cnode長(zhǎng)度字節(jié)的存儲(chǔ)區(qū)head->next=NULL;void Getelem(cnode*head)/添加客戶函數(shù)cnode*p;double y;p=(cnode*)malloc(sizeof(cnode);printf("請(qǐng)輸入姓名:");scanf("%s",&p->n

28、ame);printf("請(qǐng)輸入ID(4位):");scanf("%s",&p->ID);while(strlen(p->ID)!=4)printf("ID有誤,請(qǐng)重新輸入(4位):");scanf("%s",p->ID);printf("請(qǐng)輸入消費(fèi)金額:");scanf("%lf",&p->consume);p->integer=p->consume/100;y=display_discount(p->integer

29、);printf("折扣:%llf折n",y);p->next=head->next;head->next=p;system("pasue");void Search(cnode*head,char name)/查找客戶函數(shù) cnode*p;double y;int flag=false;p=head;if(p->next=NULL)printf("n沒有客戶!");elsewhile(p->next!=NULL)p=p->next;if(!strcmp(name,p->name)printf

30、("姓名:%sn",p->name);printf("ID:%sn",p->ID);printf("消費(fèi):%.2lf",p->consume);printf("積分:%lf",p->integer);printf("折扣:%.llf折n",y);flag=true;if(!flag)printf("該客戶不存在!n");system("pasue");void Amend(cnode*head,char name)/修改客戶函數(shù)cn

31、ode*p;double y,z;int choose, x;p=head;if(p->next=NULL)printf("n沒有客戶!");elsewhile(p->next!=NULL)p=p->next;if(strcmp(name,p->name)=0)printf("姓名:%sn",p->name); printf("ID:%sn",p->ID); printf("消費(fèi):%.2lf",p->consume); printf("積分:%lf",p

32、->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);printf("n請(qǐng)選擇您要修改的資料:1.姓名 2.ID 3.消費(fèi)金額n");scanf("%d",&choose);switch(choose)case 1: printf("請(qǐng)輸入修改后的姓名:"); scanf("%s",p->name);break;case 2: printf("請(qǐng)輸入修改后的ID:");

33、scanf("%s",p->ID);break; while(strlen(p->ID)!=4) printf("ID有誤,請(qǐng)重輸(4位):"); scanf("%s",p->ID); break;case 3: printf("請(qǐng)選擇:1覆蓋以前的消費(fèi). 2續(xù)加上現(xiàn)在的消費(fèi)."); scanf("%d",&x);switch(x)case 1:printf("請(qǐng)輸入修改后的消費(fèi):"); scanf("%lf",&p-&g

34、t;consume);break;case 2:printf("請(qǐng)輸入續(xù)加金額:");scanf("%lf",&z);p->consume+=z;break;printf("姓名:%sn",p->name);printf("ID:%sn",p->ID);printf("消費(fèi)額:%.2lf",p->consume);p->integer=p->consume/100;printf("積分:%lf",p->integer);y=d

35、isplay_discount(p->integer);printf("折扣:%.llf折n",y);system("pasue");void Delete(cnode*head,char name)/刪除客戶函數(shù)cnode*p;int x;double y;p=head;if(p->next=NULL)printf("n沒有客戶!");elsewhile(p->next!=NULL)head=p;p=p->next;if(strcmp(name,p->name)=0) printf("姓名:%

36、sn",p->name); printf("ID:%sn",p->ID); printf("消費(fèi):%.2lf",p->consume); printf("積分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);printf("確認(rèn)刪除? 1確認(rèn) 2取消 請(qǐng)選擇:");scanf("%d",&x);if(x=1)head->nex

37、t=p->next;printf("刪除成功!");elseprintf("刪除失敗!");printf("n");system("pause");void Showall(cnode*head)/顯示客戶函數(shù)cnode*p;double y;p=head;if(p->next=NULL)printf("沒有客戶!");elsewhile(p->next!=NULL)p=p->next; printf("姓名:%sn",p->name); printf("ID:%sn",p->ID); printf("消費(fèi):%.2lf",p->consume); printf("積分:%lf"

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論