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

下载本文档

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

文档简介

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

温馨提示

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

评论

0/150

提交评论