




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. 精选文档 目录目录 一、一、系系统统开开发发的背景的背景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 六、六、附件(代附件(代码码) )14 . 精选文档 客客户户消消费积费积分管理系分管理系统统 一、一、 系系统统开开发发的的背景背景 为了能够快速根据客户的消费积分计算打折后的价格,以及优惠后的价 格,给客户以心理上的刺激,激发客户的消费欲望。并且减轻收银员的工作负 担;因此,我特别编写了一套有关客户消费积分管理的系统,来方便在日常生 活中的使用。 二、二、 系系统统分析与分析与设计设计 ( (一一) ) 系系统统功能要求功能要求 针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不 同程度的打折优惠。 1、对客户的信息可以进行修改、删除、添加; 2、能够根据消费情况进行客户积分的计算; 3、根据积分情况实行不同程度的打折优惠; ( (二二) )系系统统模模块结块结构构设计设计 通过对系统功能的分析,客户消费积分管理系统功能如图(1)所示。 客户消费积客户消费积 分管理系统分管理系统 添加函数添加函数修改函数修改函数 删除函数删除函数显示函数显示函数 图图( (1) )客客户户消消费费管理系用管理系用统图统图 通过上图的功能分析,首先定义了一个数据域,来存储客户的基本信息; . 精选文档 其次,基本函数成员有姓名,消费卡号,消费价格以及折扣后的价格。最主要 的是运用 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)所示。 客户姓名 消费卡 ID 号消费金额积分折扣 图(2)-1 模块分析图 . 精选文档 开始 输入客户姓 名及 ID 号 (正确)输出 客户相关信息 相关信息 结束 (错误)重新 输入客户相关 信息 (正确)输 出客户相关 信息 图(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 * *); 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, 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); . 精选文档 图(b) (三)删删除除客客户户Delete(cnode*head,char name) 分析:首先也是要确定该客户消费积分系统有没有客户,在有客户的条件 下对所在客户的相关信息进行删除。第一步要输入所要删除的客户的姓名,第 二步是就是对所选定的客户进行删除,在删除结束时,会出现是否删除成功的 提示语,以便进行慎重的删除操作。流程图如图(4)所示。运行结果如 图(c)所示。 . 精选文档 开始 要删除的客户 是否删除成功 结束 没有客户 结束 有客户 图(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) head-next=p-next; printf(删除成功!); else printf(删除失败!); printf(n); system(pause); 图(c) (四)显显示示客客户户void Showall(cnode*head) 分析:首先还是要确定该客户消费积分系统有没有客户,在有客户的条件 下对所有客户的相关信息进行显示。最终将所有客户的相关信息显示在屏幕 上。流程图如图(5)所示。运行结果如图(d)所示。 . 精选文档 图(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); . 精选文档 图(d) 四、四、 系系统测试统测试 ( (一一) )测试测试 void nain ()函数函数 测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测试的 结果。首先,通过编译,运行两步的操作,排除了该程序中的基本语法错误,链 接进一步的检查了程序的正确性与合法性,完全排除了程序中的逻辑错误,使 得程序可以正确的运行出来。然后检验程序的可实用性,通过操作者自己输入 一些对客户操作要求,来完成检验这一步。最后,还要看显示的结果是否正确 可靠。这样,一个客户消费积分系统的程序就完成了。 所以,下图(6)就是主函数测试的结果。 . 精选文档 图(6)主函数测试结果 ( (二二) )部分部分调调用函数的用函数的测试测试 如图(4)是查找函数的测试,如图(5)是统计函数的测试。 如图(4)查找函数的测试结果 如图(5)是统计函数的测试结果 . 精选文档 五、五、 总结总结 系统完成了对一个消费商店内部,进行的一次优惠打折活动,根据顾 客在本商店所进行的消费情况,对相关消费客户的信息进行了增加、删除 和修改等的操作。并且运用 switch 语句完成用户自行选择的要求,使得程 序变得更加友善和谐,让用户根据每一步的提示来完成所需的操作,进而 达到对有关消费客户的操作,并且与此次活动的优惠积分规定相一致,来 计算顾客所得的积分及其相应的折扣。并且完成了对消费客户信息的增加, 删除,添改功能。此外充分利用 C 语言的语法结构(顺序机构、循环结构及 其选择机构),对整个程序进行了合理编写与调试。尽量做到程序的简单、 合理明白,加一些适当的注释说明部分。 系统不足:这个系统的不足在于他不能的将客户的信息资料存储于磁 盘中,只能在完整的一次操作中,不退出此界面一直能有效正确的执行命 令。但是退出一次之后,重新操作时,以前的客户信息就不再存在了。因此,这 是还有待于我不断改进完善的地方。 我的收获:在此次的 C+课程设计中,通过设计掌握了 C+课程及其数据 结构在以后学习 C 课程中的重要性。数据机构中的基本理论和算法的综合应 用是解决实际问题的重要手段。在做这次课程设计中最让我得到提高的是自 己的独立思考及实践能力,在完成此项设计的过程中,我利用各种和 C 有关 的工具书、相关的网络信息完成了一个关于客户消费积分管理系统的程序,让 我从中更多的了解了 C 这门语言及其有关知识,更让我对最初学 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-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; 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); 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); 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); . 精选文档 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,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宝鸡高新区招聘幼儿园教职工考试真题2024
- 皇子考试题及答案
- 段考试题及答案
- 中华武术知到智慧树答案
- 广西专业技术人员继续教育公需科目培训试题库(含答案)
- 食品安全管理员考试题库及答案大全
- 中小学音乐教学设计与案例分析知到智慧树答案
- 2025年度农产品销售合同签订与质量追溯流程框图
- 2025版外立面装饰材料研发与采购合同
- 2025版树木涂白及冬季防寒保温合同
- 项目城市轨道交通风险管理与安全评估刘连珂
- 道路施工机械设备安全知识培训
- AI在护理查房中的应用
- 证券行业智能化投资组合管理方案
- 银行员工消保知识培训
- 地理与劳动教育
- 第5课 甲午中日战争与列强瓜分中国狂潮 公开课一等奖创新教学设计
- 初中数学新人教版七年级上册第二章《有理数的运算》教案(2024秋)
- 人教版(2025新版)七年级下册数学第七章 相交线与平行线 单元测试卷(含答案)
- 厂房消防应急预案
- 景区开发政府战略框架协议书(2篇)
评论
0/150
提交评论