版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . .学习参考目录目录一、一、系统开发的背景系统开发的背景1 1二、二、系统分析与设计系统分析与设计1 1( (一一) )系统功能要求系统功能要求1 1( (二二) )系统模块结构设计系统模块结构设计1 1三、三、系统的设计与实现系统的设计与实现2 2( (一一) )添加客户:添加客户: GETELEM(CNODE*HEAD)GETELEM(CNODE*HEAD)2 2( (二二) )修改客户修改客户 AMEND(CNODE*HEAD,CHARAMEND(CNODE*HEAD,CHAR NAME)NAME) 5 5( (三三) )删除客户删除客户 DELETE(CNODE*HEAD
2、,CHARDELETE(CNODE*HEAD,CHAR NAME)NAME)8 8( (四四) )显示客户显示客户 VOIDVOID SHOWALL(CNODE*HEAD)SHOWALL(CNODE*HEAD) 1010四、四、系统测试系统测试 1212( (一一) )测试测试 VOIDVOID NAINNAIN ()()函数函数 1212( (二二) )部分调用函数的测试部分调用函数的测试 1313五、五、总结总结 1414六、六、附件(代码)附件(代码) 1414. . . . .学习参考 客户消费积分管理系统客户消费积分管理系统一、一、 系统开发的系统开发的背景背景为了能够快速根据客户的
3、消费积分计算打折后的价格,以及优惠后的价格,给客户以心理上的刺激,激发客户的消费欲望。并且减轻收银员的工作负担;因此,我特别编写了一套有关客户消费积分管理的系统,来方便在日常生活中的使用。二、二、 系统分析与设计系统分析与设计( (一一) ) 系统功能要求系统功能要求针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。1、对客户的信息可以进行修改、删除、添加;2、能够根据消费情况进行客户积分的计算;3、根据积分情况实行不同程度的打折优惠;( (二二) )系统模块结构设计系统模块结构设计通过对系统功能的分析,客户消费积分管理系统功能如图(1)所示。客户消费积客户消费
4、积分管理系统分管理系统添加函数添加函数修改函数修改函数 删除函数删除函数显示函数显示函数图(图(1 1)客户消费管理系用统图客户消费管理系用统图通过上图的功能分析,首先定义了一个数据域,来存储客户的基本信息;. . . . .学习参考其次,基本函数成员有姓名,消费卡号,消费价格以及折扣后的价格。最主要的是运用 While 语句和 switch 语句的套用来实现,此外,就是要用到malloc 函数来存储客户的信息分配内存。把整个系统主要划分为 4 个模块:1、 添加客户信息:该模块主要实现,客户基本信息(姓名、消费卡号、消费金额)的添加,借助函数 Getelem(cnode*head)来实现;2
5、、 修改客户信息:该模块主要实现,对消费者的基本信息的修改功能,借助函数 Amend(cnode*head,char name)来实现;3、 删除客户信息:此模块的功能是,删除所要确定的客户信息,而达到从整个系统清除的目的,借助函数 Delete(cnode*head,char name)来实现;4、 显示客户信息:此模块的主要作用是显示消费者的相关信息,借助函数 Showall(cnode*head)来实现。三、三、 系统的设计系统的设计与实现与实现( (一一) )添加客户:添加客户: Getelem(cnode*head)分析:首先选择的添加客户的指令,然后输入客户的基本信息。客户的姓名,
6、客户的 ID 消费卡号,如果输入的不正确则需要提示重输,还有就是客户的消费金额,这样才能计算后面的积分优惠折扣。最后就显示该添加客户的信息。流程图如图(2)所示。运行结果如图(a)所示。 客户姓名消费卡 ID 号消费金额积分折扣. . . . .学习参考图(2)-1 模块分析图开始输入客户姓名及 ID 号(正确)输出客户相关信息相关信息结束(错误)重新输入客户相关信息(正确)输出客户相关信息图(2)添加客户信息流程图该模块的具体代码如下所示:#include/标准的输入输出库函数#include/动态存储分配函数#include/字符串函数struct cnodechar name20;/客户
7、姓名char ID4;/客户 ID 号double consume;/客户消费double integer;/客户积分cnode*next;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
8、*)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(请输入 ID(4 位):);scanf(%s,&p-ID);while(strlen(p-ID)!=4)printf(ID 有误,请重新输入(4 位):);scanf(%s,p-ID);printf(请
9、输入消费金额:);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);void main()cnode*head;int choice;char name10;Initstack(head);doprintf(n);printf( n);printf( $ 客户消费积分管理系统 $n);. . . . .学习参考printf( n);printf(n *);pr
10、intf(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(choicenext=NULL)printf(n 没有客户!);el
11、sewhile(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,&choose);switch(choose)case 1
12、: 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,&x);switch(x)case 1:printf(请输入修改后的消费:); scanf(%lf,&p-consume);break;case
13、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=display_discount(p-integer);printf(折扣:%.llf 折n,y);system(pasue);. . . . .学习参考图(b)(三)删除删除客户客户Delete(cnode*head,char name)分析:
14、首先也是要确定该客户消费积分系统有没有客户,在有客户的条件下对所在客户的相关信息进行删除。第一步要输入所要删除的客户的姓名,第二步是就是对所选定的客户进行删除,在删除结束时,会出现是否删除成功的提示语,以便进行慎重的删除操作。流程图如图(4)所示。运行结果如图(c)所示。. . . . .学习参考开始要删除的客户是否删除成功结束没有客户结束有客户图(4)删除客户信息流程图该模块的具体代码如下所示:void Delete(cnode*head,char name)/删除客户函数cnode*p;int x;double y;p=head;if(p-next=NULL)printf(n 没有客户!)
15、;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,&x);if(x=1). . . . .学习参考head-next=p-next
16、;printf(删除成功!); elseprintf(删除失败!); printf(n);system(pause);图(c)(四)显示显示客户客户void Showall(cnode*head)分析:首先还是要确定该客户消费积分系统有没有客户,在有客户的条件下对所有客户的相关信息进行显示。最终将所有客户的相关信息显示在屏幕上。流程图如图(5)所示。运行结果如图(d)所示。. . . . .学习参考图(5)显示客户信息流程图开始显示所有客户输出结果结束没有客户结束有客户该模块的具体代码如下所示:void Showall(cnode*head)/显示客户函数cnode*p;double y;p=
17、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,p-integer); y=display_discount(p-integer); printf(折扣:%.llf 折n,y);system(pause);. . . . .学习参考图(d)四、四、 系统测试系统测试( (一一) )测试测试 voidvoid nainnain ()()函数函
18、数测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测试的结果。首先,通过编译,运行两步的操作,排除了该程序中的基本语法错误,链接进一步的检查了程序的正确性与合法性,完全排除了程序中的逻辑错误,使得程序可以正确的运行出来。然后检验程序的可实用性,通过操作者自己输入一些对客户操作要求,来完成检验这一步。最后,还要看显示的结果是否正确可靠。这样,一个客户消费积分系统的程序就完成了。所以,下图(6)就是主函数测试的结果。. . . . .学习参考图(6)主函数测试结果( (二二) )部分调用函数的测试部分调用函数的测试如图(4)是查找函数的测试,如图(5)是统计函数的测试。如图(4)查找函数
19、的测试结果 如图(5)是统计函数的测试结果五、五、 总结总结. . . . .学习参考系统完成了对一个消费商店内部,进行的一次优惠打折活动,根据顾客在本商店所进行的消费情况,对相关消费客户的信息进行了增加、删除和修改等的操作。并且运用 switch 语句完成用户自行选择的要求,使得程序变得更加友善和谐,让用户根据每一步的提示来完成所需的操作,进而达到对有关消费客户的操作,并且与此次活动的优惠积分规定相一致,来计算顾客所得的积分及其相应的折扣。并且完成了对消费客户信息的增加,删除,添改功能。此外充分利用 C 语言的语法结构(顺序机构、循环结构及其选择机构) ,对整个程序进行了合理编写与调试。尽量
20、做到程序的简单、合理明白,加一些适当的注释说明部分。系统不足:这个系统的不足在于他不能的将客户的信息资料存储于磁盘中,只能在完整的一次操作中,不退出此界面一直能有效正确的执行命令。但是退出一次之后,重新操作时,以前的客户信息就不再存在了。因此,这是还有待于我不断改进完善的地方。我的收获:在此次的 C+课程设计中,通过设计掌握了 C+课程及其数据结构在以后学习 C 课程中的重要性。数据机构中的基本理论和算法的综合应用是解决实际问题的重要手段。在做这次课程设计中最让我得到提高的是自己的独立思考及实践能力,在完成此项设计的过程中,我利用各种和 C 有关的工具书、相关的网络信息完成了一个关于客户消费积
21、分管理系统的程序,让我从中更多的了解了 C 这门语言及其有关知识,更让我对最初学 C 态度有了一个强烈转变C 中的奥秒就在于自己的不断探索与积累。六、六、 附件(代码)附件(代码)#include/标准的输入输出库函数#include/动态存储分配函数. . . . .学习参考#include/字符串函数struct cnodechar name20;/客户姓名char ID4;/客户 ID 号double consume;/客户消费double integer;/客户积分cnode*next;void Count(cnode*head)/统计客户函数cnode *p;int i=0;p=he
22、ad;if(p-next=NULL)printf(n 没有客户!);elsewhile(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&points50&points100&points200&points300)discount=7.0; return discount;. .
23、 . . .学习参考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(请输入 ID(4 位):);scanf(%s,&p-ID);while(strlen(p-ID)!
24、=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);void Search(cnode*head,char name)/查找客户函数 cnode*p;double y;int flag=false;p=head;if(p-next=NULL)
25、printf(n 没有客户!);elsewhile(p-next!=NULL)p=p-next;if(!strcmp(name,p-name)printf(姓名:%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)/修改客户函数cnode*p;dou
26、ble 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-integer); y=display_discount(p-integer); printf(折扣:%.llf 折n,y);printf(n 请选择您要修改的资料:1.姓名 2.ID 3.
27、消费金额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;case 3: printf(请选择:1 覆盖以前的消费. 2 续加上现在的消费.); scanf(%d,&x);switch(x)ca
28、se 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=display_discount(p-integer);printf(折扣:%.llf 折n,y);system(pasu
29、e);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); pr
30、intf(折扣:%.llf 折n,y);. . . . .学习参考printf(确认删除? 1 确认 2 取消 请选择:);scanf(%d,&x);if(x=1)head-next=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,p-integer); y=display_discount(p-integer); prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024聘请常年法律顾问合同协议书
- 土地租赁合同税务问题
- 股权扩股协议书格式
- 建筑设计培训就业协议书
- 3.1.1 勾股定理 同步课件
- 七年级地理上册-4.2-世界的语言和宗教同课异构教案1-新人教版
- 2024版发起人协议书范例
- 《未来的建筑》示范公开课教学课件【小学三年级美术下册】
- 2024年多应用场景童鞋购销合同
- 南昌银行贷款延期方案分析
- RITTAL威图空调中文说明书
- 生物质能发电技术应用中存在的问题及优化方案
- GA 1809-2022城市供水系统反恐怖防范要求
- 幼儿园绘本故事:《老虎拔牙》 课件
- 2021年上半年《系统集成项目管理工程师》真题
- 一个冬天的童话 遇罗锦
- GB/T 706-2008热轧型钢
- 实验六 双子叶植物茎的初生结构和单子叶植物茎的结构
- GB/T 25032-2010生活垃圾焚烧炉渣集料
- GB/T 13610-2020天然气的组成分析气相色谱法
- 《彩虹》教案 省赛一等奖
评论
0/150
提交评论