1、具体规则:积分值大于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;顺序表定义:#define listinitsize 10#define listincrement 10typedef struct Customer * elem; int length; /当前
2、长度 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;2 系统设计2.1 总体设计2.2 各功能模块的设计2.2.1 主函数main() 动态获取表空间,初始化顺序表,打开文件将客户数据加载入表中,进行表操作,
3、操作结束将表数据保存到文件,文件关闭。2.2.2 客户信息添加 遍历当前顺序表,若待添加的用户编号已存在,则返回用户已存在的提示信息;若待添加的用户不存在,则将该客户信息添加到顺序表最后,并将顺序表长度加1。2.2.3 客户信息删除 遍历当前顺序表,若要删除的用户标号不存在,则返回提示信息;否则提示用户是否确定删除,确定即删除。删除操作即将待删除记录的后面记录依次向前移动1步。2.2.4 客户信息更新遍历当前顺序表,若待更新的用户编号不存在,则返回用户不存在的提示信息;若待添加的用户存在,则提示输入新的信息。2.2.5 查找客户信息2.2.6 显示客户信息遍历顺序表,返回客户信息2.2.7 消
4、费积分清零遍历顺序表,将积分与折扣赋值为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;=5000) cons =(consume-2000)/6+237; else cons =(consume-5000)/5+737;return cons;2.2.9 折扣计算double Discount(int discount) /折扣的
5、计算规则 if(m=0) discount=10;else if(m=50) discount =10; else if(m=200) discount =9;=500) discount =8;=2000) discount =7;else discount =6; return discount;3 系统调试1. 运行客户消费积分管理系统,主菜单如下:2.调用添加客户模块,添加客户信息3.测试删除模块4.测试更新模块其他模块测试类似。4 总 结本次课程设计,是我发现了很多不足,比如:1.软件设计阶段考虑不充分,导致编码时随机性大,方向性不明确;2.存储结构的选择分析不够充分,没有考虑其它可
6、行的存储实现(只用了动态数组);3.设计的系统安全性方面未能达到极高级别(后台文件可以随意更改); 此外,在系统调试阶段,我发还现了很多细节方面的不足,使我认识到设计一个系统并非想象中那么简单,而是需要考虑各个方面结果的。通过本次课程设计,我加深了对顺序存储结构的理解,更加熟悉了顺序表的基本操作,还有文件读写方面的知识得到了回顾。通过客户积分系统软件的设计,我基本熟悉了一般的软件开发流程,认识到前期设计的重要性与盲目编代码错误观点。总的来说,本次课程设计获益匪浅,既是对书本所学知识的回顾,更是对课本所学知识的运用。5 参考文献 1 严蔚敏,吴伟民.数据结构. M清华大学出版社,2005.2 何
7、钦铭,颜晖.C语言程序设计. M高等教育出版社,2008.附 录 源代码:#include #includestring.h /客户编号 char name5; /积分 float discount; /折扣 #define listinitsize 10 #define listincrement 10typedef struct /当前长度 int listsize; /当前分配的存储容量L) L.elem=(Customer *)malloc(listinitsize*sizeof(Customer); /动态分配顺序表存储空间 if(!exit(1); L.length=0;int m
8、ain(void) void Add(SqList &L);void Show(SqList &void Delete(SqList & void update(SqList &void Query(SqList &void Reset(SqList &SqList L;InitSq(L); char ch; Customer * newbase; FILE *fp; if(fp=fopen(1.txt,r)=NULL)File open error!n exit(0); Customer customer; int c=0,f; ch=fgetc(fp) ;rewind(fp); if(ch
9、=EOF) printf(文件为空! else fscanf(fp,%s%s%f%f,customer.no,customer.name,&customer.discount,&customer.points); while(!feof(fp) L.elemc=customer; c+; L.length+; if(L.length=L.listsize) newbase=(Customer *)realloc(L.elem,(L.listsize+listincrement)*sizeof(Customer); if(!newbase) L.elem=newbase; L.listsize+
10、=listincrement; printf(输入你要选择的操作:nt1-添加顾客信息nt2-删除顾客信息nt3-更新顾客信息nt4-查找顾客信息nt5-显示所有顾客信息nt6-清零所有客户的消费积分nt0-退出n*n请选择操作:scanf(%d,&f); while(f!=0) switch(f)case 1: Add(L);break;case 2:Delete(L);case 3:update(L);case 4:Query(L);case 5:Show(L);case 6:Reset(L);default:请输入正确的操作! break; if(fclose(fp)Can not cl
11、ose the file error!exit(0);w+ for(int i=0;i=L.length) printf(没有该顾客信息! char no110,xx; int cc=1;输入你要删除的顾客的编号:,no1);您确定要删除%s号客户的信息吗?n确定-Y,取消-N:xx); if(xx=Y|xx=y)i+) if(strcmp(L.elemi.no,no1)=0) for(int j=i;jj+) L.elemj=L.elemj+1; L.length-;顾客信息删除完毕! cc=0; if(cc=0) break;=L.length) printf(您所要删除的顾客信息不存在或
12、已删除! else if(xx=Nn) printf(您的删除操作已取消!int points_cal(float consume) /积分计算规则 int ss=0;=0) ss=0;=500) ss=consume/10;=2000) ss=(consume-500)/8+50;=5000) ss=(consume-2000)/6+237; else ss=(consume-5000)/5+737; return ss;double Discount(int m) /折扣的计算规则 double ee;=50) ee=10; else if(m=200) ee=9;=500) ee=8;=
13、2000) ee=7; else ee=6; return ee;void update(SqList & char no210;float sum;int i,x,y;输入您所要更新顾客的编号:,no2); for(i=0; if(strcmp(L.elemi.no,no2)=0) break;顾客信息不存在。 else 选择你要的操作:1-增加积分,2-减少积分:x); if(x=1) printf(输入本次一次性消费的金额:%fsum); L.elemi.points+=points_cal(sum); L.elemi.discount=Discount(L.elemi.points); else printf(输入本次使用的积分值:y); L.elemi.points-=y; L.elemi.discount=Discount(L.elemi.points);顾客更新后的信息:L)/清零所有客户的积分 L.elemi.points=0;L.elemi.discount=10;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1