南京信息工程大学计算机与软件学院网络工程(2)班实验内容客户消费积分管理系统问题描述:针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求:1.采用一定的存储结构进行客户信息的存储;2.对客户的信息可以进行修改、删除、添加;3.能够根据消费情况进行客户积分的计算;4.根据积分情况实行不同程度的打折优惠;实验分析1、概要设计本系统用到的主要数据结构为数组和文件。一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和消费情况。然后将数组写入文件,查询时读取文件,提取相应信息。2.功能模块详细设计定义结点创建链表结点插入删除结点修改结点信息增添价格和计算积分计算打折后的价格主函数结束开始程序总流程4.详细设计思想本程序运用链表对客户信息进行存储,首先对结点进行定义,结点中的数据域分别定义了消费者的消费号、身份证、消费价格、积分,其中身份证和消费价格用了字符型数组进行定义,然后定义了客户消费信息链表,每添加一个客户,先分配内存,再添加消费者的信息,之后将链表中最后一个指针指向该新的消费者,删除时,需先找到该消费者前面的消费者,直接将其指针指向删除消费者的下一个消费者,修改信息时,先找到该消费者,选择修改的内容,再进行修改,添加消费价格时,先找到该消费者,根据情况对增加或减少消费价格,并根据价格计算积分,打折时,根据消费者打折的要求,进行打折。详细设计和代码4.2源代码#includestdio.h#includemalloc.h#includestring.h#includestdlib.htypedefstructDataytpe{intm;charIdentity[18];charName[20];floatPrice,Integral;}Datatype;//链表结点的定义typedefstructListnode{Datatypecustomer;structListnode*next;}Listnode,*Linklist;inti=1;//消费者编号//创建链表voidcreate(Linklist&h){floatmoney;Linklists,t;intj=1;charx;h=(Listnode*)malloc(sizeof(Listnode));h-next=NULL;t=h;while(j){s=(Listnode*)malloc(sizeof(Listnode));printf(消费号为%d\n,i);s-customer.m=i;printf(请输入身份证号码:);scanf(%c,&x);scanf(%s,s-customer.Identity);printf(\n);printf(请输入姓名:);scanf(%c,&x);scanf(%s,s-customer.Name);printf(\n);printf(请输入价格:);scanf(%f,&money);printf(\n);s-customer.Price=money;s-next=NULL;t-next=s;t=s;printf(全部输完,请输入0,否则输入1...\n);scanf(%d,&j);printf(\n);i++;}t-next=NULL;}//插入voidListInsert(Linklist&h){intj=1;floatmoney;charx;Linklists,t;s=(Listnode*)malloc(sizeof(Listnode));printf(消费号为%d\n,i++);printf(请输入身份证号码:);scanf(%c,&x);scanf(%s,s-customer.Identity);scanf(%c,&x);printf(\n);printf(Pleaseenterthename:);scanf(%s,s-customer.Name);printf(\n);printf(PleaseenterthePrice:);scanf(%f,&money);printf(\n);s-customer.Price=money;t=h;while(t-next){t=t-next;}t-next=s;t=s;s-next=NULL;printf(插入成功!\n);}//删除voidListdelete(Linklist&h,intm){intj=1;Linklistq=h,t;if(m==1){t=h;h=h-next;}else{while(jm-1&&q-next!=NULL){q=q-next;j++;}if(q-next!=NULL&&j==m-1){t=q-next;q-next=t-next;}elseprintf(位置参数不正确!\n);}i--;free(t);printf(删除成功!\n);}//修改voidchange(Linklist&h,intm){inta,j=1;chars[18];floatn;Linklistt=h;printf(Changecustomer'sIdentity:1;Name:2;Price:3;Integral:4\n);scanf(%d,&a);printf(\n);while(jm&&t-next!=NULL){t=t-next;j++;}printf(OK!\n);switch(a){case1:printf(PleaseentertheIdentity!);scanf(%s,t-customer.Identity);break;case2:printf(PleaseentertheName!);scanf(%s,t-customer.Name);break;case3:printf(PleaseenterthePrice!\n);scanf(%f,&n);t-customer.Price=n;break;case4:printf(PleaseentertheIntegra!\n);scanf(%f,&n);t-customer.Integral=n;break;}printf(修改成功!\n);}//计算价格,计算积分voidincrease(Linklist&h,intm){intn=1,j;floatmoney;Linklistp=h-next;printf(Moneyisincreased?Yes,pleaseenter1;No,pleaseenter0...);scanf(%d,&j);printf(\n);while(nm&&p-next!=NULL){p=p-next;n++;}printf(Pleaseenterthemoney:);scanf(%f,&money);printf(\n);if(j)p-customer.Price=p-customer.Price+money;elsep-customer.Price=p-customer.Price-money;p-customer.Integral=p-customer.Price;printf(消费号为%d\n,m);printf(身份证为%s\n,p-customer.Identity);printf(消费者姓名为%s\n,p-customer.Name);printf(实际价格为%f\n,p-customer.Price);printf(积分为%f\n,p-customer.Integral);}//计算打折之后的价格(积分在500至1000之间,免费1/100;1000至5000之间,免费3/100;大于5000,免费1/20)voiddiscountsum(Linklist&h,intm){intj=1;Linklistp;p=h;while(j=m&&p-next!=NULL){p=p-next;j++;}p-customer.Integral=p-customer.Price;if(p-customer.Integral=500&&p-customer.Integral=1000)p-customer.Price=p-customer.Price/100*99;elseif(p-customer.Integral1000&&p-customer.Integral=5000)p-customer.Price=p-customer.Price/100*97;elsep-customer.Price=p-customer.Price/20*19;printf(消费号为%d\n,m);printf(身份证为%s\n,p-customer.Identity);printf(消费者姓名为%s\n,p-customer.Name);printf(实际价格为%f\n,p-customer.Price);printf(积分为%f\n,p-customer.Integral);printf(打折之后价格:%f\n,p-customer.Price);}intmain(){intj=1;Linklisth;while(j){printf(创立消费者消费信息,请选择1\n);printf(增添消费者信息,请选择2\n);printf(删除消费者信息,请选择3\n);printf(修改消费者信息,请选择4\n);printf(增添消费价格并计算总消费,请选择5\n);printf(根据积分计算打折后消费总价格,请选择6\n);printf(退出,请选择0\n);scanf(%d,&j);switch(j){case0:break;case1:create(h);break;case2:ListInsert(h);break;case3:printf(请输入删除的位置:);scanf(%d,&j);Listdelete(h,j);break;case4:printf(请输入修改的位置:);scanf(%d,&j);change(h,j);break;case5:printf(请输入消费者的消费号:);scanf(%d,&j);increase(h,j);break;case6:printf(请输入消费者的消费号:);scanf(%d,&j);discountsum(h,j);break;default:printf(输入错误。\n);}}system(pause);return0;}程序测试运行程序,进入系统主菜单。用户可以选择输入、查找、删除、修改信息或退出系统,设计体会数据结构课程设计的目的是,通过设计掌握数据结构课程中学到的基本理论和算法并综合运用于解决实际问题中,它是理论与实践相结合的重要过程。设计要求学会如何对实际问题定义相关数据结构,并采用恰当的设计方法和算法解决问题,同时训练学生进行复杂程序设计的技能和培养良好的程序设计习惯。同时,需要我们发现细小问题的眼光及解决问题的能力,更要求我们多去掌握一些课外知识点,便于我们程序编写。