1、客户消费积分管理系统 客户消费积分管理系统一、 系统开发的背景为了能够快速根据客户的消费积分计算打折后的价格,以及优惠后的价格,给客户以心理上的刺激,激发客户的消费欲望。并且减轻收银员的工作负担;因此,我特别编写了一套有关客户消费积分管理的系统,来方便在日常生活中的使用。二、 系统分析与设计(一) 系统功能要求针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。1、对客户的信息可以进行修改、删除、添加;2、能够根据消费情况进行客户积分的计算;3、根据积分情况实行不同程度的打折优惠;(二) 系统模块结构设计通过对系统功能的分析,客户消费积分管理系统功能如图(1)所示
2、。客户消费积分管理系统添加函数修改函数 删除函数显示函数图(1)客户消费管理系用统图通过上图的功能分析,首先定义了一个数据域,来存储客户的基本信息;其次,基本函数成员有,消费卡号,消费价格以及折扣后的价格。最主要的是运用While语句和switch语句的套用来实现,此外,就是要用到malloc函数来存储客户的信息分配存。把整个系统主要划分为4个模块:1、 添加客户信息:该模块主要实现,客户基本信息(、消费卡号、消费金额)的添加,借助函数Getelem(cnode*head)来实现;2、 修改客户信息:该模块主要实现,对消费者的基本信息的修改功能,借助函数Amend(cnode*head,cha
3、r name)来实现;3、 删除客户信息:此模块的功能是,删除所要确定的客户信息,而达到从整个系统清除的目的,借助函数Delete(cnode*head,char name)来实现;4、 显示客户信息:此模块的主要作用是显示消费者的相关信息,借助函数Showall(cnode*head)来实现。三、 系统的设计与实现(一) 添加客户: Getelem(cnode*head)分析:首先选择的添加客户的指令,然后输入客户的基本信息。客户的,客户的ID消费卡号,如果输入的不正确则需要提示重输,还有就是客户的消费金额,这样才能计算后面的积分优惠折扣。最后就显示该添加客户的信息。流程图如图(2)所示。运
4、行结果如图(a)所示。 开始输入客户姓名及ID号(正确)输出客户相关信息相关信息结束(错误)重新输入客户相关信息(正确)输出客户相关信息客户姓名消费卡ID号消费金额积分折扣图(2)-1模块分析图图(2)添加客户信息流程图该模块的具体代码如下所示:#include/标准的输入输出库函数#include/动态存储分配函数#include/字符串函数struct cnode char name20;/客户 char ID4;/客户ID号 double consume;/客户消费 double integer;/客户积分 cnode*next;double display_discount(doubl
5、e points)/客户积分折扣函数 double discount; if(points=0) discount=0; else if (points0&points50&points100&points200&points300) 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;doubl
6、e y;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-n
7、ext=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 * *);printf(n * *);printf(n * 1.添加客户 *);printf(n * 2.查找客户 *);printf(n * 3.修改客户 *);printf(n * 4.删除客户 *);printf(n * 5.显示客户 *);printf(n * 6.统计
8、客户 *);printf(n * 7.退出 *);printf(n *);printf(n 请输入您的选择(1,2,3,4,5,6,7):); Getelem(head);break;system(cls);/程序运行后自动清屏while(choicenext=NULL)printf(n没有客户!);else while(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-in
9、teger); 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:); scanf(%s,p-ID);break; while(strlen(p-ID)!=4) printf(ID有误,请重输(4位):); scanf(%s,p-ID); break;cas
10、e 3: printf(请选择:1覆盖以前的消费. 2续加上现在的消费.); 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-ID);printf(消费额:%.2lf,p-consume);p-integer=p-consume/100;printf(积分:%lf,p-integer);y=di
11、splay_discount(p-integer);printf(折扣:%.llf折n,y);system(pasue);图(b)(三) 删除客户Delete(cnode*head,char name)分析:首先也是要确定该客户消费积分系统有没有客户,在有客户的条件下对所在客户的相关信息进行删除。第一步要输入所要删除的客户的,第二步是就是对所选定的客户进行删除,在删除结束时,会出现是否删除成功的提示语,以便进行慎重的删除操作。流程图如图(4)所示。运行结果如图(c)所示。开始要删除的客户是否删除成功结束没有客户结束有客户图(4)删除客户信息流程图该模块的具体代码如下所示:void Delete
12、(cnode*head,char name)/删除客户函数 cnode*p; int x; double y; 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(:%sn,p-name); printf(ID:%sn,p-ID); printf(消费:%.2lf,p-consume); printf(积分:%lf,p-integer); y=display_discount(p-integer); printf(折
13、扣:%.llf折n,y); printf(确认删除? 1确认 2取消 请选择:); scanf(%d,&x); if(x=1) head-next=p-next; printf(删除成功!); else printf(删除失败!); printf(n);system(pause);图(c)(四) 显示客户void Showall(cnode*head)分析:首先还是要确定该客户消费积分系统有没有客户,在有客户的条件下对所有客户的相关信息进行显示。最终将所有客户的相关信息显示在屏幕上。流程图如图(5)所示。运行结果如图(d)所示。开始显示所有客户输出结果结束没有客户结束有客户图(5)显示客户信息
14、流程图该模块的具体代码如下所示:void Showall(cnode*head)/显示客户函数cnode*p; double y; p=head; if(p-next=NULL) printf(没有客户!); else while(p-next!=NULL) p=p-next; 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); system(paus
15、e);图(d)四、 系统测试(一) 测试void nain ()函数测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测试的结果。首先,通过编译,运行两步的操作,排除了该程序中的基本语法错误,进一步的检查了程序的正确性与合法性,完全排除了程序中的逻辑错误,使得程序可以正确的运行出来。然后检验程序的可实用性,通过操作者自己输入一些对客户操作要求,来完成检验这一步。最后,还要看显示的结果是否正确可靠。这样,一个客户消费积分系统的程序就完成了。所以,下图(6)就是主函数测试的结果。图(6)主函数测试结果(二) 部分调用函数的测试如图(4)是查找函数的测试,如图(5)是统计函数的测试。如图(4
16、)查找函数的测试结果 如图(5)是统计函数的测试结果五、 总结系统完成了对一个消费商店部,进行的一次优惠打折活动,根据顾客在本商店所进行的消费情况,对相关消费客户的信息进行了增加、删除和修改等的操作。并且运用switch语句完成用户自行选择的要求,使得程序变得更加友善和谐,让用户根据每一步的提示来完成所需的操作,进而达到对有关消费客户的操作,并且与此次活动的优惠积分规定相一致,来计算顾客所得的积分及其相应的折扣。并且完成了对消费客户信息的增加,删除,添改功能。此外充分利用C语言的语法结构(顺序机构、循环结构及其选择机构),对整个程序进行了合理编写与调试。尽量做到程序的简单、合理明白,加一些适当
17、的注释说明部分。系统不足:这个系统的不足在于他不能的将客户的信息资料存储于磁盘中,只能在完整的一次操作中,不退出此界面一直能有效正确的执行命令。但是退出一次之后,重新操作时,以前的客户信息就不再存在了。因此,这是还有待于我不断改进完善的地方。我的收获:在此次的C+课程设计中,通过设计掌握了C+课程及其数据结构在以后学习C课程中的重要性。数据机构中的基本理论和算法的综合应用是解决实际问题的重要手段。在做这次课程设计中最让我得到提高的是自己的独立思考及实践能力,在完成此项设计的过程中,我利用各种和C有关的工具书、相关的网络信息完成了一个关于客户消费积分管理系统的程序,让我从中更多的了解了C这门语言
18、及其有关知识,更让我对最初学C态度有了一个强烈转变C中的奥秒就在于自己的不断探索与积累。六、 附件(代码)#include/标准的输入输出库函数#include/动态存储分配函数#include/字符串函数struct cnode char name20;/客户 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没有客户!);else while(p-ne
19、xt!=NULL) p=p-next; i+;printf(n现有客户数量为%d位n,i);system(pause);double display_discount(double points)/客户积分折扣函数 double discount; if(points=0) discount=0; else if (points0&points50&points100&points200&points300) discount=7.0; return discount;void Initstack(cnode*&head) head=(cnode*)malloc(sizeof(cnode);/
20、malloc函数开辟存单元,分配cnode长度字节的存储区 head-next=NULL;void Getelem(cnode*head)/添加客户函数cnode*p;double y;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-intege
21、r=p-consume/100;y=display_discount(p-integer);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(:%sn,p-name);printf
22、(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)/修改客户函数cnode*p;double y,z;int choose, x;p=head;if(p-next=NULL)printf(n没有客户!);else while(p-next!=NULL) p=p-next; if(strcmp(name,p-na
23、me)=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,&choose);switch(choose)case 1: printf(请输入修改后的:); scanf(%s,p-name);break;case 2: printf(请输入修改后的ID:)
24、; 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-consume);break; case 2:printf(请输入续加金额:); scanf(%lf,&z); p-consume+=z;break; printf(:%sn,p-name);printf
25、(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);void Delete(cnode*head,char name)/删除客户函数 cnode*p; int x; double y; 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(:%sn,p-name); printf(ID:%sn,p-ID); printf(消费:%.2lf,p-consume); printf(积分:%lf,p-integer); y=display_di
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1