ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:173.35KB ,
资源ID:6138730      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6138730.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计客户积分系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计客户积分系统.docx

1、数据结构课程设计客户积分系统目 录(参考)附录(源代码)1 系统分析1.1 课程设计内容客户消费积分管理系统系统,功能包括:1、采用动态分配顺序表存储客户信息,并用文件保存和读写数据2、能对客户信息进行添加、查询、修改、删除等基本操作3、根据客户消费额,合理计算出客户消费所得积分4、根据客户积分值,实行不同情况的优惠(即计算折扣)客户消费积分管理系统系统的性能需求:速度:系统整体运行要流畅,响应时间不能太长,不能出现系统卡死情况,能满足使用者普通操作。安全性:系统涉及使用者的利益,为了防止造成使用者财产损失,应加强系统安全性检测,特别是后台文件的保密。精度:系统中涉及到折扣和积分的计算一定要注

2、意精度要求,特别是折扣,应采用高精度数据类型,积分使用整型。容量:随着客户数的增多,系统容量不断增加,显然为满足容量需求,应采用动态分配存储空间辅以后台文件存储数据。1.2 系统功能需求分析功能需求:商家(软件使用者)可以进行添加、查询、修改、删除客户信息,查看客户信息存储文件,其中包括客户编号、客户姓名、客户消费积分值、客户享受的优惠(折扣)。客户管理:客户信息包括客户编号、客户姓名、客户消费积分值、客户享受的优惠(折扣)。积分管理:主要包括积分计算、积分更新、积分清零操作。积分计算:根据客户的一次性消费额,计算增加的积分值,记录客户本次消费使用的积分值;积分更新:每次消费后,商家根据客户消

3、费增加的积分值以及使用的积分值计算剩余积分;积分清零:在年底,商家可以通过该操作将所有用户积分清零。折扣管理:根据客户本次消费额和客户已有积分值,计算客户本次消费所享受的优惠,即折扣。具体规则:积分值大于2000,享受6折优惠;积分值大于500小于2000,享受7折优惠;积分值大于200小于500,享受8折优惠;积分值大于50小于200,享受9折优惠。1.3 数据结构设计Customer(客户)定义:typedef struct char no10; /客户编号 char name5; float points; /积分 float discount; /折扣Customer;顺序表定义:#d

4、efine listinitsize 10#define listincrement 10typedef struct Customer * elem; int length; /当前长度 int listsize; /当前分配的存储容量SqList;void InitSq(SqList &L) /动态分配顺序表存储空间 L.elem=(Customer*)malloc(listinitsize*sizeof(Customer); if(!L.elem) printf(Not able to allocate memory.n); exit(1); L.length=0; L.listsize

5、=listinitsize;2 系统设计2.1 总体设计2.2 各功能模块的设计2.2.1 主函数main() 动态获取表空间,初始化顺序表,打开文件将客户数据加载入表中,进行表操作,操作结束将表数据保存到文件,文件关闭。2.2.2 客户信息添加 遍历当前顺序表,若待添加的用户编号已存在,则返回用户已存在的提示信息;若待添加的用户不存在,则将该客户信息添加到顺序表最后,并将顺序表长度加1。2.2.3 客户信息删除 遍历当前顺序表,若要删除的用户标号不存在,则返回提示信息;否则提示用户是否确定删除,确定即删除。删除操作即将待删除记录的后面记录依次向前移动1步。2.2.4 客户信息更新遍历当前顺序

6、表,若待更新的用户编号不存在,则返回用户不存在的提示信息;若待添加的用户存在,则提示输入新的信息。2.2.5 查找客户信息2.2.6 显示客户信息遍历顺序表,返回客户信息2.2.7 消费积分清零遍历顺序表,将积分与折扣赋值为0;2.2.8 积分计算int points_cal(float consume) /积分计算规则 if(consume=0) cons=0;else if(consume=500) cons =consume/10; else if(consume=2000) cons =(consume-500)/8+50; else if(consume=5000) cons =(c

7、onsume-2000)/6+237; else cons =(consume-5000)/5+737;return cons;2.2.9 折扣计算double Discount(int discount) /折扣的计算规则 if(m=0) discount=10;else if(m=50) discount =10; else if(m=200) discount =9;else if(m=500) discount =8; else if(m=2000) discount =7;else discount =6; return discount;3 系统调试1. 运行客户消费积分管理系统,

8、主菜单如下:2.调用添加客户模块,添加客户信息3.测试删除模块4.测试更新模块其他模块测试类似。4 总 结本次课程设计,是我发现了很多不足,比如:1.软件设计阶段考虑不充分,导致编码时随机性大,方向性不明确;2.存储结构的选择分析不够充分,没有考虑其它可行的存储实现(只用了动态数组);3.设计的系统安全性方面未能达到极高级别(后台文件可以随意更改); 此外,在系统调试阶段,我发还现了很多细节方面的不足,使我认识到设计一个系统并非想象中那么简单,而是需要考虑各个方面结果的。通过本次课程设计,我加深了对顺序存储结构的理解,更加熟悉了顺序表的基本操作,还有文件读写方面的知识得到了回顾。通过客户积分系

9、统软件的设计,我基本熟悉了一般的软件开发流程,认识到前期设计的重要性与盲目编代码错误观点。总的来说,本次课程设计获益匪浅,既是对书本所学知识的回顾,更是对课本所学知识的运用。5 参考文献 1 严蔚敏,吴伟民.数据结构. M清华大学出版社,2005.2 何钦铭,颜晖.C语言程序设计. M高等教育出版社,2008.附 录 源代码:#include #include #includetypedef struct char no10; /客户编号 char name5; float points; /积分 float discount; /折扣 Customer;#define listinitsiz

10、e 10 #define listincrement 10typedef struct Customer * elem; int length; /当前长度 int listsize; /当前分配的存储容量SqList;void InitSq(SqList &L) L.elem=(Customer *)malloc(listinitsize*sizeof(Customer); /动态分配顺序表存储空间 if(!L.elem) printf(Not able to allocate memory.n);exit(1); L.length=0; L.listsize=listinitsize;in

11、t main(void) void Add(SqList &L);void Show(SqList &L);void Delete(SqList &L); void update(SqList &L);void Query(SqList &L);void Reset(SqList &L);SqList L;InitSq(L); char ch; Customer * newbase; FILE *fp; if(fp=fopen(1.txt,r)=NULL) printf(File open error!n); exit(0); Customer customer; int c=0,f; ch=

12、fgetc(fp) ;rewind(fp); if(ch=EOF) printf(文件为空!n); else fscanf(fp,%s%s%f%f,customer.no,customer.name,&customer.discount,&customer.points); while(!feof(fp) L.elemc=customer; c+; L.length+; fscanf(fp,%s%s%f%f,customer.no,customer.name,&customer.discount,&customer.points); if(L.length=L.listsize) newbas

13、e=(Customer *)realloc(L.elem,(L.listsize+listincrement)*sizeof(Customer); if(!newbase) printf(Not able to allocate memory.n);exit(1); L.elem=newbase; L.listsize+=listincrement; printf(输入你要选择的操作:nt1-添加顾客信息nt2-删除顾客信息nt3-更新顾客信息nt4-查找顾客信息nt5-显示所有顾客信息nt6-清零所有客户的消费积分nt0-退出n); printf(*n请选择操作:);scanf(%d,&f)

14、; while(f!=0) switch(f)case 1: Add(L);break;case 2:Delete(L);break;case 3:update(L);break;case 4:Query(L);break;case 5:Show(L);break;case 6:Reset(L);break;default: printf(请输入正确的操作!n); break; printf(*n请选择操作:);scanf(%d,&f); if(fclose(fp) printf(Can not close the file error!n);exit(0); if(fp=fopen(1.tx

15、t,w+)=NULL) printf(File open error!n);exit(0); for(int i=0;iL.length ;i+) fprintf(fp,%s %s %.1f %.0fn,L.elemi.no,L.elemi.name,L.elemi.discount,L.elemi.points); if(fclose(fp) printf(Can not close the file error!n);exit(0);return 0;void Add(SqList &L) int z=L.length; Customer customer; printf(请输入客户信息:

16、n); printf(编号:); scanf(%s,customer.no);for(int i=0;iL.length;i+)if(strcmp(L.elemi.no,customer.no)=0)printf(编号已存在,请重新输入:); scanf(%s,customer.no); i=0; printf(姓名:); scanf(%s,customer.name ); customer.discount=10; customer.points =0; L.elemz=customer;L.length+;void Show(SqList &L) for(int i=0;iL.length

17、;i+) printf(%s %s %.1f %.0fn,L.elemi.no,L.elemi.name,L.elemi.discount,L.elemi.points);void Query(SqList &L) char no310; int i; printf(输入要查询的顾客编号:); scanf(%s,no3); for( i=0;i=L.length) printf(没有该顾客信息!n);void Delete(SqList &L) char no110,xx; int cc=1; printf(输入你要删除的顾客的编号:); scanf(%s,no1); printf(您确定要删

18、除%s号客户的信息吗?n确定-Y,取消-N:,no1); scanf(%s,&xx); if(xx=Y|xx=y) for(int i=0;iL.length;i+) if(strcmp(L.elemi.no,no1)=0) for(int j=i;j=L.length) printf(您所要删除的顾客信息不存在或已删除!n); else if(xx=N|xx=n) printf(您的删除操作已取消!n);int points_cal(float consume) /积分计算规则 int ss=0; if(consume=0) ss=0; else if(consume=500) ss=con

19、sume/10; else if(consume=2000) ss=(consume-500)/8+50; else if(consume=5000) ss=(consume-2000)/6+237; else ss=(consume-5000)/5+737; return ss;double Discount(int m) /折扣的计算规则 double ee; if(m=50) ee=10; else if(m=200) ee=9; else if(m=500) ee=8; else if(m=2000) ee=7; else ee=6; return ee;void update(SqL

20、ist &L) char no210;float sum;int i,x,y; printf(输入您所要更新顾客的编号:);scanf(%s,no2); for(i=0;i=L.length) printf(顾客信息不存在。); else printf(选择你要的操作:1-增加积分,2-减少积分:n);scanf(%d,&x); if(x=1) printf(输入本次一次性消费的金额:); scanf(%f,&sum); L.elemi.points+=points_cal(sum); L.elemi.discount=Discount(L.elemi.points); else printf(输入本次使用的积分值:); scanf(%d,&y); L.elemi.points-=y; L.elemi.discount=Discount(L.elemi.points); printf(顾客更新后的信息:); printf(%s %s %.1f %.0fn,L.elemi.no,L.elemi.name,L.elemi.discount,L.elemi.points);void Reset(SqList &L)/清零所有客户的积分 for(int i=0;iL.length;i+) L.elemi.points=0;L.elemi.discount=10;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1