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六、 附件(代码) 141客户消费积分管理系统一、 系统开发的背景为了能
2、够快速根据客户的消费积分计算打折后的价格,以及优惠后的价格,给客户以心理上的刺激,激发客户的消费欲望。并且减轻收银员的工作负担;因此,我特别编写了一套有关客户消费积分管理的系统,来方便在日常生活中的使用。二、 系统分析与设计(一) 系统功能要求针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。1、对客户的信息可以进行修改、删除、添加;2、能够根据消费情况进行客户积分的计算;3、根据积分情况实行不同程度的打折优惠;(二) 系统模块结构设计通过对系统功能的分析,客户消费积分管理系统功能如图(1)所示。图(1)客户消费管理系用统图通过上图的功能分析,首先定义了一个数据
3、域,来存储客户的基本信息;其次,基本函数成员有姓名,消费卡号,消费价格以及折扣后的价格。最主客户消费积分管理系统添加函数 修改函数 删除函数 显示函数2要的是运用 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)所示。
5、 图(2)-1 模块分析图客户姓名消费卡 ID 号 消费金额 积分折扣3图(2)添加客户信息流程图该模块的具体代码如下所示:#include/标准的输入输出库函数#include/动态存储分配函数#include/字符串函数struct cnodechar name20;/客户姓名char ID4;/客户 ID 号double consume;/客户消费double integer;/客户积分cnode*next;double display_discount(double points)/客户积分折扣函数double discount;if(points=0)discount=0;else
6、if (points0return discount;void Initstack(cnode*/malloc 函数开辟内存单元,分配 cnode 长度字节的存储区head-next=NULL;void Getelem(cnode*head)/添加客户函数cnode*p;double y;p=(cnode*)malloc(sizeof(cnode);printf(“请输入姓名:“);scanf(“%s“,printf(“请输入 ID(4 位):“);scanf(“%s“,while(strlen(p-ID)!=4)printf(“ID 有误,请重新输入(4 位):“);scanf(“%s“,p
7、-ID);printf(“请输入消费金额:“);scanf(“%lf“,p-integer=p-consume/100;y=display_discount(p-integer);printf(“折扣:%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 *“);
8、printf(“n * *“);5printf(“n * *“);printf(“n * 1.添加客户 *“);printf(“n * 2.查找客户 *“);printf(“n * 3.修改客户 *“);printf(“n * 4.删除客户 *“);printf(“n * 5.显示客户 *“);printf(“n * 6.统计客户 *“);printf(“n * 7.退出 *“);printf(“n *“);printf(“n 请输入您的选择(1,2,3,4,5,6,7):“);Getelem(head);break;system(“cls“);/程序运行后自动清屏while(choicene
9、xt=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-integer);y=display_discount(p-integer);printf(“折扣:%.llf 折n“,y);printf(“n 请选择您要修改的资料:1.姓名 2.ID 3.消费金额n“);scanf(“%d“,开始修改客户的相关
10、信息输出修改后的信息结束没有客户结束有客户7switch(choose)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 续加上现在的消费.“);scanf(“%d“,switch(x)case 1:printf(“请输入修改后
11、的消费:“);scanf(“%lf“,break;case 2:printf(“请输入续加金额:“);scanf(“%lf“,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=display_discount(p-integer);printf(“折扣:%.llf 折n“,y);system(“pasue“);8图(b)(三) 删除客户 Delete(
12、cnode*head,char name)分析:首先也是要确定该客户消费积分系统有没有客户,在有客户的条件下对所在客户的相关信息进行删除。第一步要输入所要删除的客户的姓名,第二步是就是对所选定的客户进行删除,在删除结束时,会出现是否删除成功的提示语,以便进行慎重的删除操作。流程图如图(4)所示。运行结果如图(c)所示。9图(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-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 取消 请选择:“);scanf(“%d“,if(x=1)开始要删除的客户是否删除成功结束没有客户结束有客户