数据结构课程设计--客户消费积分系统.doc
《数据结构课程设计--客户消费积分系统.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计--客户消费积分系统.doc(19页珍藏版)》请在咨信网上搜索。
课程设计报告 设计题目: 客户消费积分系统 学院、系: 电子与信息工程学 院 专业班级: 学生姓名: 指导教师: 成 绩: 2013年 1 月 8 日 目录 1、 需求分析…………………………………………………………2 1.1问题描述………………………………………………………3 1.2基本要求………………………………………………………3 2、概要设计…………………………………………………………3 2.1数据结构……………………………………………………….4 2.2程序模块……………………………………………………….4 2.3各模块之间的调用关系以及算法设计……………………….4 3、详细设计………………………………………………………...5 4、测试与分析……………………………………………………..6 5、总结……………………………………………………………..10 6、附录……………………………………………………………..11 1、需求分析: 1.1问题描述 1、采用动态分配顺序表存储客户信息,并用文件保存和读写数据 2、能对客户信息进行添加、查询、修改、删除等基本操作 3、根据客户消费额,合理计算出客户消费所得积分 4、根据客户积分值,实行不同情况的优惠(即计算折扣) 1.2基本要求 进行添加客户时要注意不能超过所定义数组的最大容量,查找时输入的身份证号要求为18位,本程序能对客户信息进行添加、查询、修改、删除等基本操作,根据客户消费额,合理计算出客户消费所得积分,根据客户积分值,实行不同情况的优惠。 2、 概要设计 : 1. 数据结构 线性表的抽象数据类型定义 InitList 前置条件:线性表不存在 输入:无 功能:线性表的初始化 输出:无 后置条件:一个空的线性表 DestroyList 前置条件:线性表已存在 输入:无 功能:销毁线性表 输出:无 后置条件:释放线性表所占的内存空间 Length 前置条件:线性表已存在 输入:无 功能:求线性表的长度 输出:线性表中元素个数 后置条件:、线性表不变 Get 前置条件:线性表已存在 输入:元素的序号i 功能:在线性表中去序号为i的元素 输出:如果序号合法,返回序号为i的元素值,否则抛出异常 后置条件:、线性表不变 Insert 前置条件:线性表已存在 输入:插入位置i ,插入元素x 功能:在线性表的第i个位置,插入元素X 输出:若插入不成功,抛出异常 后置条件:若插入成功,表中增加了一个元素 Delete 前置条件:线性表已存在 输入:删除位置i 功能:删除线性表的第i个元素 输出:若删除成功,返回被删除元素,否则抛出异常 后置条件:若删除成功,表中减少了一个元素 Print 前置条件:线性表已存在 输入:无 功能:按位置的先后次序依次输出线性表中的元素 输出:线性表中的各个元素 后置条件:线性表不变 2. 程序模块 主函数main() 动态获取表空间,初始化链表,打开文件将客户数据加载入表中,进行表操作,操作结束将表数据保存到文件,文件关闭。 2.1添加客户信息 遍历当前单链表,若待添加的用户编号已存在,则返回用户已存在的提示信息;若待添加的用户不存在,则将该客户信息添加到顺序表最后,并将单链表表长度加1。 2.2删除客户信息 遍历当前顺序表,若要删除的用户标号不存在,则返回提示信息;否则提示用户是否确定删除,确定即删除。 删除操作即将待删除记录的后面记录依次向前移动1步。 2.3更改客户信息 遍历当前单链表,若待更改的用户编号不存在,则返回用户不存在的提示信息;若待添加的用户存在,则提示输入新的信息。 2.4 查找客户信息 输入待查找用户的身份证号,若存在则返回用户的信息 2.5 显示客户信息 遍历整个单链表,显示当前所有客户 2.6 统计客户 遍历单链表,统计当前链表中所有客户的总数 3. 各模块之间的调用关系以及算法设计 添加客户信息 客户消费积分管理系统 查找客户信息 删除客户信息 更改客户信息 显示客户信息 统计客户 总数 客户消费积分管理系统功能 3、详细设计 添加客户信息伪代码: 1.初始化工作指针P,申请空的结点空间; 2.输入姓名,输入身份证号; 3.若省份证号不等于18,输出输入有误,否则输入消费金额,并调用函数进行折扣计算 ; 查找客户信息: 1. 初始化工作指针P,工作指针P指向头结点,并定义折扣; 2.判断P是否为空,若为空,输出无用户,否则P后移直到身份证号相同; 3.若相同调用函数计算折扣; 更改客户信息: 1. 初始化工作指针p ,定义折扣和续加金额; 2. 判断指针P是否为空,若为空输出没有客户,否则p后移; 3. 判断身份证号是否相同,若相同输出姓名、身份证号、消费、折扣、积分; 4. 输入要修改的项目; 4.1选择1,输入修改后的姓名 4.2 选择2,输入修改后的身份证号4.3选择3,覆盖以前消费、续加上现在费用; 5. 调用积分函数,计算折扣; 删除客户信息: 1. 初始化工作指针p ,定义折扣; 2判断指针P是否为空,若为空输出没有客户,否则p后移; 3判断身份证号是否相同,若相同输出姓名、身份证号、消费、折扣、积分; 4选择是否删除,选1返回删除成功,选2,返回删除失败; 显示客户信息: 1初始化工作指针p ,定义折扣; 2判断指针P是否为空,若为空输出没有客户,否则p后移; 3输出每位姓名、身份证号、消费、折扣、积分 统计客户信息: 1初始化工作指针p ,累加器i初始化; 2判断指针P是否为空,若为空输出没有客户,否则p后移; 3累加器i加1; 4输出现有客户数量i位; 计算折扣函数: 1. 定义折扣discount 2. 若积分为0,则折扣为0;若积分大于0小于50,则折扣为9;若积分大于等于50,于100,则折扣为8,;若积分大于等于100,小于等于150,则折扣为7;若积分大于等于150,小于等于200,则折扣为7;若积分大于等于150,小于等于200,则折扣为6.5 若积分大于等于200,小于等于300,则折扣为6,;若积分大于300,折扣为6. 4、测试与分析 添加客户信息: 查找客户信息: 修改客户信息: 删除客户信息: 显示客户: 统计客户: 退出: 5、总结: 在本次课程设计当中,我对许多以往掌握不够熟练或者是使用较少而易忽略的知识点有了一定的掌握,而且通过本次试验提高了我的实际操作能力,在编写代码的过程当中,我通过查阅有关的资料和分析实例,从中学到了很多能够不断优化自己代码,可以提高代码利用率的知识,并且更加合理的构建了各个知识点之间的联系,充分的利用了循环和选择性语句,在存储过程中,对文件的部分知识也有了一个深层次的了解和掌握,对于如何修改文件信息以及保存有了一定的概念和运用。 当然,在代码的编写过程中,也遇到了许多问题,我通过自身的努力去改正它们,在这个过程中我也学到了很多东西,在代码的调试过程中,我碰到了许多以前所没有碰到过的错误,但通过同学的帮助解决了这些困难,并且自身得到了一定的提高。通过本学期的学习我对数据结构有了更深的了解,数据结构重在思想,通过学习数据结构的思想和C++结合来编写程序,虽然现在编程仍有许多困难,但以后的学习中,我会更加努力,希望能够不断的提高自己! 6、 附录:源程序 #include<iostream> using namespace std; struct cnode { char name[20]; char ID[20]; double consume; double integer; struct cnode *next; }; void Initstack(cnode * &head) { head= new cnode; head->next=NULL; } void Getelem (cnode *head); void Search(cnode *head,char ID[]); void Amend(cnode *head,char ID[]); void Delete(cnode *head,char ID[]); void Showall(cnode *head); void count(cnode *head); double display_discount(double integer); void main() { cnode *head; int choice; char y[20]; Initstack(head); do{ cout<<"\n"; cout<<" 客户消费 积分管理系统 \n\n"; cout<<" ****************************"; cout<<"\n * *\n"; cout<<"\n * 主菜单 *\n"; cout<<"\n * 1 添加客户 *\n"; cout<<"\n * 2 查找客户 *\n"; cout<<"\n * 3 修改客户 *\n"; cout<<"\n * 4 删除客户 *\n"; cout<<"\n * 5 显示客户 *\n"; cout<<"\n * 6 统计客户 *\n"; cout<<"\n * 7 退出 *\n"; cout<<"\n * *\n"; cout<<" ***************************"; cout<<"\n 请输入您的选择(1,2,3,4,5,6):"; cin>>choice; if(choice==1) { Getelem(head); } else if(choice==2) { cout<<"\n 请输入您查找客户的身份证号:"; cin>>y; while(strlen(y)!=18) { cout<<"身份证号码位数有误请重新输入(18位):"; cin>>y; } Search(head,y); } else if(choice==3) { cout<<"\n 请输入您想修改客户的身份证号:"; cin>>y; while(strlen(y)!=18) { cout<<"身份证号码位数有误请重新输入(18位):"; cin>>y; } Amend(head,y); } else if(choice==4) { cout<<"\n"; cout<<" 请输入你想要删除的客户的身份证号:"; cin>>y; Delete(head,y); } else if(choice==5) { cout<<"\n"; Showall(head); } else if(choice==6) { cout<<"\n"; count(head); } else if(choice==7) exit(1); }while(choice<=7); } void Getelem (cnode *head) { cnode *p; double y; p=new cnode; /*申请空的节点空间*/ cout<<"请输入姓名:"; cin>>p->name; cout<<"请输入身份证号(18位):"; cin>>p->ID; while(strlen(p->ID)!=18) { cout<<"身份证号码位数有误请重新输入(18位):"; cin>>p->ID; } cout<<"请输入消费金额:"; cin>>p->consume; p->integer=p->consume/100; y=display_discount(p->integer); cout<<"折扣:"; cout<<y; cout<<"折\n"; p->next=head->next; head->next=p; } void Search(cnode *head,char ID[]) { cnode *p; double y; p=head; if(p->next==NULL) cout<<"没有客户!\n"; else { while(p->next!=NULL) { p=p->next; if(strcmp(ID,p->ID)==0) { cout<<"姓名:"; cout<<p->name; cout<<"身份证号:"; cout<<p->ID; cout<<"消费:"; cout<<p->consume; cout<<"积分:"; cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"; cout<<y; cout<<"折\n"; } } } } void Amend(cnode *head,char ID[]) { cnode *p; double y,z; int choose,x; p=head; if(p->next==NULL) cout<<"没有客户!\n"; else { while(p->next!=NULL) { p=p->next; if(strcmp(ID,p->ID)==0) { cout<<"姓名:"; cout<<p->name; cout<<"身份证号:"; cout<<p->ID; cout<<"消费 "; cout<<p->consume; cout<<"积分:"; cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"; cout<<y; cout<<"折\n"; } } cout<<"请选择你要修改的1、姓名。2、身份证号。3、消费金额。"; cin>>choose; if(choose==1) { cout<<"请输入修改后姓名;"; cin>>p->name; } if(choose==2) { cout<<"请输入修改后的身份证号:"; cin>>p->ID; while(strlen(p->ID)!=18) { cout<<"身份证号码位数有误请重新输入(18位):"; cin>>p->ID; } } if(choose==3) { cout<<"1.覆盖以前消费、2.续加上现在费用!!请选择:"; cin>>x; if(x==1) { cout<<"请输入修改后的消费:"; cin>>p->consume; } else { cout<<"请输入续加金额:"; cin>>z; p->consume+=z; } } cout<<"姓名:"; cout<<p->name; cout<<"身份证号:"; cout<<p->ID; cout<<"消费:"; cout<<p->consume; p->integer=p->consume/100; cout<<"积分:"; cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"; cout<<y; cout<<"折\n"; } } void Delete(cnode *head,char ID[]) { cnode *p; int x; double y; p=head; if(p->next==NULL) cout<<"没有客户!\n"; else { while(p->next!=NULL) { head=p; p=p->next; if(strcmp(ID,p->ID)==0) { cout<<"姓名:"; cout<<p->name; cout<<"身份证号:"; cout<<p->ID; cout<<"消费:"; cout<<p->consume; cout<<"积分:"; cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"; cout<<y; cout<<"折\n"; } } cout<<"你确认删除?1、确定。2、取消。请选择:"; cin>>x; if(x==1) { head->next=p->next; cout<<"删除成功!"; } else { cout<<"删除失败!"; } } } void Showall(cnode *head) { cnode *p; double y; p=head; if(p->next==NULL) cout<<"没有客户!\n"; else { while(p->next!=NULL) { p=p->next; cout<<"姓名:"; cout<<p->name; cout<<"身份证号:"; cout<<p->ID; cout<<"消费:"; cout<<p->consume; cout<<"积分:"; cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"; cout<<y; cout<<"折\n"; } } } void count(cnode *head) { cnode *p; int i=0; p=head; if(p->next==NULL) cout<<"没有客户!\n"; else { while(p->next!=NULL) { p=p->next; i++; } } cout<<"现有客户数量为"<<i<<"位!"; } double display_discount(double points) { double discount; if(points == 0) discount = 0; if(points > 0&&points <= 50) discount = 9; if(points > 50&&points <= 100) discount = 8; if(points > 100&&points <= 150) discount = 7; if(points > 150&&points <= 200) discount = 6.5; if(points > 200&&points <= 300) discount = 6; else if(points > 300) discount = 5; return discount; } 其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。 二.培训的及要求培训目的 安全生产目标责任书 为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标: 一、目标值: 1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。 2、现金安全保管,不发生盗窃事故。 3、每月足额提取安全生产费用,保障安全生产投入资金的到位。 4、安全培训合格率为100%。 二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。 7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥; 9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育; 11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落 19- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 客户 消费 积分 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文