.....学习参考目录一、系统开发的背景··································1二、系统分析与设计··································1(一)系统功能要求···································1(二)系统模块结构设计·································1三、系统的设计与实现·································2(一)添加客户:GETELEM(CNODE*HEAD)···························2(二)修改客户AMEND(CNODE*HEAD,CHARNAME[])·······················5(三)删除客户DELETE(CNODE*HEAD,CHARNAME[])······················8(四)显示客户VOIDSHOWALL(CNODE*HEAD)························10四、系统测试····································12(一)测试VOIDNAIN()函数······························12(二)部分调用函数的测试·······························13五、总结······································14六、附件(代码)··································14.....学习参考客户消费积分管理系统一、系统开发的背景为了能够快速根据客户的消费积分计算打折后的价格,以及优惠后的价格,给客户以心理上的刺激,激发客户的消费欲望。并且减轻收银员的工作负担;因此,我特别编写了一套有关客户消费积分管理的系统,来方便在日常生活中的使用。二、系统分析与设计(一)系统功能要求针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。1、对客户的信息可以进行修改、删除、添加;2、能够根据消费情况进行客户积分的计算;3、根据积分情况实行不同程度的打折优惠;(二)系统模块结构设计通过对系统功能的分析,客户消费积分管理系统功能如图(1)所示。图(1)客户消费管理系用统图通过上图的功能分析,首先定义了一个数据域,来存储客户的基本信息;客户消费积分管理系统添加函数修改函数删除函数显示函数.....学习参考其次,基本函数成员有姓名,消费卡号,消费价格以及折扣后的价格。最主要的是运用While语句和switch语句的套用来实现,此外,就是要用到malloc函数来存储客户的信息分配内存。把整个系统主要划分为4个模块:1、添加客户信息:该模块主要实现,客户基本信息(姓名、消费卡号、消费金额)的添加,借助函数Getelem(cnode*head)来实现;2、修改客户信息:该模块主要实现,对消费者的基本信息的修改功能,借助函数Amend(cnode*head,charname[])来实现;3、删除客户信息:此模块的功能是,删除所要确定的客户信息,而达到从整个系统清除的目的,借助函数Delete(cnode*head,charname[])来实现;4、显示客户信息:此模块的主要作用是显示消费者的相关信息,借助函数Showall(cnode*head)来实现。三、系统的设计与实现(一)添加客户:Getelem(cnode*head)分析:首先选择的添加客户的指令,然后输入客户的基本信息。客户的姓名,客户的ID消费卡号,如果输入的不正确则需要提示重输,还有就是客户的消费金额,这样才能计算后面的积分优惠折扣。最后就显示该添加客户的信息。流程图如图(2)所示。运行结果如图(a)所示。图(2)-1模块分析图客户姓名消费卡ID号消费金额积分折扣.....学习参考图(2)添加客户信息流程图该模块的具体代码如下所示:#includestdio.h//标准的输入输出库函数#includestdlib.h//动态存储分配函数#includestring.h//字符串函数structcnode{charname[20];//客户姓名charID[4];//客户ID号doubleconsume;//客户消费doubleinteger;//客户积分cnode*next;};doubledisplay_discount(doublepoints)//客户积分折扣函数{doublediscount;if(points==0){discount=0;}elseif(points0&&points=50){discount=9.8;}elseif(points50&&points=100){discount=9.5;}elseif(points100&&points=200){discount=9.0;}elseif(points200&&points=300){discount=8.0;}开始输入客户姓名及ID号(正确)输出客户相关信息相关信息结束(错误)重新输入客户相关信息(正确)输出客户相关信息.....学习参考elseif(points300){discount=7.0;}returndiscount;}voidInitstack(cnode*&head){head=(cnode*)malloc(sizeof(cnode));//malloc函数开辟内存单元,分配cnode长度字节的存储区head-next=NULL;}voidGetelem(cnode*head)//添加客户函数{cnode*p;doubley;p=(cnode*)malloc(sizeof(cnode));printf(请输入姓名:);scanf(%s,&p-name);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);printf(折扣:%llf折\n,y);p-next=head-next;head-next=p;system(pasue);}voidmain(){cnode*head;intchoice;charname[10];Initstack(head);do{printf(\n);printf(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);printf($客户消费积分管理系统$\n);printf(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);printf(\n****************************);printf(\n**);.....学习参考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****************************);printf(\n请输入您的选择(1,2,3,4,5,6,7):);Getelem(head);break;system(cls);//程序运行后自动清屏}while(choice=7);}图(a)(二)修改客户Amend(cnode*head,charname[])分析:首先要确定该客户消费积分系统有没有客户,在有客户的条件下对所在客户的相关信息进行修改。第一步要输入所要修改客户的姓名,第二步是选择修改客户的姓名、ID消费卡号、还是消费金额。然而对消费金额的修改有可以选择是续加金额和覆盖原有的金额两种操作。最后结果显示在屏.....学习参考幕上。流程图如图(3)所示。运行结果如图(b)所示。如图(3)修改客户信息流程图该模块的具体代码如下所示:voidAmend(cnode*head,charname[])//修改客户函数{cnode*p;doubley,z;intchoose,x;p=head;if(p-next==NULL){printf(\n没有客户!);}else{while(p-next!=NULL){p=p-next;if(strcmp(name,p-name)==0){printf(姓名:%s\n,p-name);printf(ID:%s\n,p-ID);printf(消费:%.2lf,p-consume);printf(积分:%lf,p-integer);y=display_discount(p-integer);printf(折扣:%.llf折\n,y);}}printf(\n请选择您要修改的资料:1.姓名2.ID3.消费金额\n);scanf(%d,&choose);开始修改客户的相关信息输出修改后的信息结束没有客户结束有客户.....学习参考switch(choose){case1:printf(请输入修改后的姓名:);scanf(%s,p-name);break;case2:printf(请输入修改后的ID:);scanf(%s,p-ID);break;while(strlen(p-ID)!=4){printf(ID有误,请重输(4位):);scanf(%s,p-ID);}break;case3:printf(请选择:1覆盖以前的消费.2续加上现在的消费.);scanf(%d,&x);switch(x){case1:printf(请输入修改后的消费:);scanf(%lf,&p-consume);break;case2:printf(请输入续加金额:);scanf(%lf,&z);p-consume+=z;break;}}printf(姓名:%s\n,p-name);printf(ID:%s\n,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);}.....学习参考图(b)(三)删除客户Delete(cnode*head,charname[])分析:首先也是要确定该客户消费积分系统有没有客户,在有客户的条件下对所在客户的相关信息进行删除。第一步要输入所要删除的客户的姓名,第二步是就是对所选定的客户进行删除,在删除结束时,会出现是否删除成功的提示语,以便进行慎重的删除操作。流程图如图(4)所示。运行结果如图(c)所示。.....学习参考图(4)删除客户信息流程图该模块的具体代码如下所示:voidDelete(cnode*head,charname[])//删除客户函数{cnode*p;intx;doubley;p=head;if(p-next==NULL){printf(\n没有客户!);}else{while(p-next!=NULL){head=p;p=p-next;if(strcmp(name,p-name)==0){printf(姓名:%s\n,p-name);printf(ID:%s\n,p-ID);printf(消费:%.2lf,p-consume);printf(积分:%lf,p-integer);y=display_discount(p-integer);printf(折扣:%.l