客户消费积分管理系统_第1页
客户消费积分管理系统_第2页
客户消费积分管理系统_第3页
客户消费积分管理系统_第4页
客户消费积分管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、系统开发的背景1二、系统分析与设计1(一)系统功能要求1(二)系统模块结构设计1三、系统的设计与实现2(一)添加客户: GETELEM(CNODE*HEAD)2(二)修改客户AMEND(CNODE*HEAD,CHAR NAME)5(三)删除客户DELETE(CNODE*HEAD,CHAR NAME)8(四)显示客户VOID SHOWALL(CNODE*HEAD)10四、系统测试12(一)测试VOID NAIN ()函数12(二)部分调用函数的测试13五、总结14六、附件(代码)14 客户消费积分管理系统一、 系统开发的背景为了能够快速根据客户的消费积分计算打折后的价格,以及优惠后的价格

2、,给客户以心理上的刺激,激发客户的消费欲望。并且减轻收银员的工作负担;因此,我特别编写了一套有关客户消费积分管理的系统,来方便在日常生活中的使用。二、 系统分析与设计(一) 系统功能要求针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。1、对客户的信息可以进行修改、删除、添加;2、能够根据消费情况进行客户积分的计算;3、根据积分情况实行不同程度的打折优惠;(二) 系统模块结构设计通过对系统功能的分析,客户消费积分管理系统功能如图(1)所示。客户消费积分管理系统添加函数修改函数 删除函数显示函数图(1)客户消费管理系用统图通过上图的功能分析,首先定义了一个数据域,

3、来存储客户的基本信息;其次,基本函数成员有姓名,消费卡号,消费价格以及折扣后的价格。最主要的是运用While语句和switch语句的套用来实现,此外,就是要用到malloc函数来存储客户的信息分配内存。把整个系统主要划分为4个模块:1、 添加客户信息:该模块主要实现,客户基本信息(姓名、消费卡号、消费金额)的添加,借助函数Getelem(cnode*head)来实现;2、 修改客户信息:该模块主要实现,对消费者的基本信息的修改功能,借助函数Amend(cnode*head,char name)来实现;3、 删除客户信息:此模块的功能是,删除所要确定的客户信息,而达到从整个系统清除的目的,借助函

4、数Delete(cnode*head,char name)来实现;4、 显示客户信息:此模块的主要作用是显示消费者的相关信息,借助函数Showall(cnode*head)来实现。三、 系统的设计与实现(一) 添加客户: Getelem(cnode*head)分析:首先选择的添加客户的指令,然后输入客户的基本信息。客户的姓名,客户的ID消费卡号,如果输入的不正确则需要提示重输,还有就是客户的消费金额,这样才能计算后面的积分优惠折扣。最后就显示该添加客户的信息。流程图如图(2)所示。运行结果如图(a)所示。 客户姓名消费卡ID号消费金额积分折扣图(2)-1模块分析图开始输入客户姓名及ID号(正确

5、)输出客户相关信息相关信息结束(错误)重新输入客户相关信息(正确)输出客户相关信息图(2)添加客户信息流程图该模块的具体代码如下所示:#include<stdio.h>/标准的输入输出库函数#include<stdlib.h>/动态存储分配函数#include<string.h>/字符串函数struct cnodechar name20;/客户姓名char ID4;/客户ID号double consume;/客户消费double integer;/客户积分cnode*next;double display_discount(double points)/客户

6、积分折扣函数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函数开辟内存单元,分配cnode长度字节的存储区head->next=NULL;void Getelem(cnode*head)/添加客户函数cnode*p;double y;p=(cnode*)malloc(sizeof(cnode);printf("请输入姓名:");scanf("%s",&p->name);printf(

8、"请输入ID(4位):");scanf("%s",&p->ID);while(strlen(p->ID)!=4)printf("ID有误,请重新输入(4位):");scanf("%s",p->ID);printf("请输入消费金额:");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(" $ 客户消费积分管理系统 $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.统计客户 *");printf("n * 7.退出 *");printf("n *&q

11、uot;);printf("n 请输入您的选择(1,2,3,4,5,6,7):"); Getelem(head);break;system("cls");/程序运行后自动清屏while(choice<=7); 图(a)(二) 修改客户Amend(cnode*head,char name)分析:首先要确定该客户消费积分系统有没有客户,在有客户的条件下对所在客户的相关信息进行修改。第一步要输入所要修改客户的姓名,第二步是选择修改客户的姓名、ID消费卡号、还是消费金额。然而对消费金额的修改有可以选择是续加金额和覆盖原有的金额两种操作。最后结果显示在屏幕上

12、。流程图 如图(3)所示。运行结果如图(b)所示。开始修改客户的相关信息输出修改后的信息结束没有客户结束有客户如图(3)修改客户信息流程图该模块的具体代码如下所示:void Amend(cnode*head,char name)/修改客户函数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("消费:%.2lf",p->consume); printf("积分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);printf("n请选择您要修改的资料:1.姓名 2.ID 3.消费金额n");scanf("%d",&choose);switch(cho

14、ose)case 1: printf("请输入修改后的姓名:"); scanf("%s",p->name);break;case 2: printf("请输入修改后的ID:"); scanf("%s",p->ID);break; while(strlen(p->ID)!=4) printf("ID有误,请重输(4位):"); scanf("%s",p->ID); break;case 3: printf("请选择:1覆盖以前的消费. 2续加上

15、现在的消费."); scanf("%d",&x);switch(x)case 1:printf("请输入修改后的消费:"); scanf("%lf",&p->consume);break;case 2:printf("请输入续加金额:");scanf("%lf",&z);p->consume+=z;break;printf("姓名:%sn",p->name);printf("ID:%sn",p->I

16、D);printf("消费额:%.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)分析:首先也是要确定该客户消费积分系统有没有客户,在有客户的条件下对所在客户的相关信息进行删除

17、。第一步要输入所要删除的客户的姓名,第二步是就是对所选定的客户进行删除,在删除结束时,会出现是否删除成功的提示语,以便进行慎重的删除操作。流程图如图(4)所示。运行结果如图(c)所示。开始要删除的客户是否删除成功结束没有客户结束有客户图(4)删除客户信息流程图该模块的具体代码如下所示:void Delete(cnode*head,char name)/删除客户函数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("消费:%.2lf",p->consume); printf("积分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y); printf("确认删除? 1确认 2取消 请选择:&q

19、uot;);scanf("%d",&x);if(x=1)head->next=p->next;printf("删除成功!"); elseprintf("删除失败!"); printf("n");system("pause");图(c)(四) 显示客户void Showall(cnode*head)分析:首先还是要确定该客户消费积分系统有没有客户,在有客户的条件下对所有客户的相关信息进行显示。最终将所有客户的相关信息显示在屏幕上。流程图如图(5)所示。运行结果如图(d)所示。图

20、(5)显示客户信息流程图该模块的具体代码如下所示:void Showall(cnode*head)/显示客户函数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("消费:%.2lf",p->consume); printf("积

21、分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);system("pause");图(d)四、 系统测试(一) 测试void nain ()函数测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测试的结果。首先,通过编译,运行两步的操作,排除了该程序中的基本语法错误,链接进一步的检查了程序的正确性与合法性,完全排除了程序中的逻辑错误,使得程序可以正确的运行出来。然后检验程序的可实用性,通过操作者自己输入一些对客户操作要求,来完

22、成检验这一步。最后,还要看显示的结果是否正确可靠。这样,一个客户消费积分系统的程序就完成了。所以,下图(6)就是主函数测试的结果。图(6)主函数测试结果(二) 部分调用函数的测试如图(4)是查找函数的测试,如图(5)是统计函数的测试。如图(4)查找函数的测试结果 如图(5)是统计函数的测试结果五、 总结系统完成了对一个消费商店内部,进行的一次优惠打折活动,根据顾客在本商店所进行的消费情况,对相关消费客户的信息进行了增加、删除和修改等的操作。并且运用switch语句完成用户自行选择的要求,使得程序变得更加友善和谐,让用户根据每一步的提示来完成所需的操作,进而达到对有关消费客户的操作,并且与此次活

23、动的优惠积分规定相一致,来计算顾客所得的积分及其相应的折扣。并且完成了对消费客户信息的增加,删除,添改功能。此外充分利用C语言的语法结构(顺序机构、循环结构及其选择机构),对整个程序进行了合理编写与调试。尽量做到程序的简单、合理明白,加一些适当的注释说明部分。系统不足:这个系统的不足在于他不能的将客户的信息资料存储于磁盘中,只能在完整的一次操作中,不退出此界面一直能有效正确的执行命令。但是退出一次之后,重新操作时,以前的客户信息就不再存在了。因此,这是还有待于我不断改进完善的地方。我的收获:在此次的C+课程设计中,通过设计掌握了C+课程及其数据结构在以后学习C课程中的重要性。数据机构中的基本理

24、论和算法的综合应用是解决实际问题的重要手段。在做这次课程设计中最让我得到提高的是自己的独立思考及实践能力,在完成此项设计的过程中,我利用各种和C有关的工具书、相关的网络信息完成了一个关于客户消费积分管理系统的程序,让我从中更多的了解了C这门语言及其有关知识,更让我对最初学C态度有了一个强烈转变C中的奥秒就在于自己的不断探索与积累。六、 附件(代码)#include<stdio.h>/标准的输入输出库函数#include<stdlib.h>/动态存储分配函数#include<string.h>/字符串函数struct cnodechar name20;/客户姓

25、名char ID4;/客户ID号double consume;/客户消费double integer;/客户积分cnode*next;void Count(cnode*head)/统计客户函数cnode *p;int i=0;p=head;if(p->next=NULL)printf("n没有客户!");elsewhile(p->next!=NULL)p=p->next; i+;printf("n现有客户数量为%d位n",i);system("pause");double display_discount(doubl

26、e points)/客户积分折扣函数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函数开辟内存单元,分配cnode长度字节的存储区head->next=NULL;void Getelem(cnode*head)/添加客户函数cnode*p;double y;p=(cnode*)malloc(sizeof(cnode);printf("请输入姓名:");scanf("%s",&p->n

28、ame);printf("请输入ID(4位):");scanf("%s",&p->ID);while(strlen(p->ID)!=4)printf("ID有误,请重新输入(4位):");scanf("%s",p->ID);printf("请输入消费金额:");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)/查找客户函数 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("消费:%.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)/修改客户函数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("消费:%.2lf",p->consume); printf("积分:%lf",p

32、->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);printf("n请选择您要修改的资料:1.姓名 2.ID 3.消费金额n");scanf("%d",&choose);switch(choose)case 1: printf("请输入修改后的姓名:"); scanf("%s",p->name);break;case 2: printf("请输入修改后的ID:");

33、scanf("%s",p->ID);break; while(strlen(p->ID)!=4) printf("ID有误,请重输(4位):"); scanf("%s",p->ID); break;case 3: printf("请选择:1覆盖以前的消费. 2续加上现在的消费."); scanf("%d",&x);switch(x)case 1:printf("请输入修改后的消费:"); scanf("%lf",&p-&g

34、t;consume);break;case 2:printf("请输入续加金额:");scanf("%lf",&z);p->consume+=z;break;printf("姓名:%sn",p->name);printf("ID:%sn",p->ID);printf("消费额:%.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)/删除客户函数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("消费:%.2lf",p->consume); printf("积分:%lf",p->integer); y=display_discount(p->integer); printf("折扣:%.llf折n",y);printf("确认删除? 1确认 2取消 请选择:");scanf("%d",&x);if(x=1)head->nex

37、t=p->next;printf("删除成功!");elseprintf("删除失败!");printf("n");system("pause");void Showall(cnode*head)/显示客户函数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("消费:%.2lf",p->consume); printf("积分:%lf"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论