




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录(参考)1 系统分析11.1 课程设计内容21.2 系统功能需求分析31.3 数据结构设计42 系统设计52.1 总体设计52.2 各功能模块的设计.272.2.382.2.492.2.5102.2.6112.2.7122.2.8132.2.9143 系统调试154 总结205 参考文献22附录(源代码)1 系统分析1.1 课程设计内容客户消费积分管理系统系统,功能包括:1、采用动态分配顺序表存储客户信息,并用文件保存和读写数据2、能对客户信息进行添加、查询、修改、删除等基本操作3、根据客户消费额,合理计算出客户消费所得积分4、根据客户积分值,实行不同情况的优惠(即计算折扣)客户消费积分管理系统系统的性能需求:速度:系统整体运行要流畅,响应时间不能太长,不能出现系统卡死情况,能满足使用者普通操作。安全性:系统涉及使用者的利益,为了防止造成使用者财产损失,应加强系统安全性检测,特别是后台文件的保密。精度:系统中涉及到折扣和积分的计算一定要注意精度要求,特别是折扣,应采用高精度数据类型,积分使用整型。容量:随着客户数的增多,系统容量不断增加,显然为满足容量需求,应采用动态分配存储空间辅以后台文件存储数据。1.2 系统功能需求分析功能需求:商家(软件使用者)可以进行添加、查询、修改、删除客户信息,查看客户信息存储文件,其中包括客户编号、客户姓名、客户消费积分值、客户享受的优惠(折扣)。客户管理:客户信息包括客户编号、客户姓名、客户消费积分值、客户享受的优惠(折扣)。积分管理:主要包括积分计算、积分更新、积分清零操作。积分计算:根据客户的一次性消费额,计算增加的积分值,记录客户本次消费使用的积分值;积分更新:每次消费后,商家根据客户消费增加的积分值以及使用的积分值计算剩余积分;积分清零:在年底,商家可以通过该操作将所有用户积分清零。折扣管理:根据客户本次消费额和客户已有积分值,计算客户本次消费所享受的优惠,即折扣。具体规则:积分值大于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; /当前长度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 总体设计客户信息添加客户消费积分管理系统客户信息删除客户信息更新查找客户信息显示客户信息消费积分清零图1-1客户消费积分管理系统功能2.2 各功能模块的设计2.2.1 主函数main() 动态获取表空间,初始化顺序表,打开文件将客户数据加载入表中,进行表操作,操作结束将表数据保存到文件,文件关闭。2.2.2 客户信息添加 遍历当前顺序表,若待添加的用户编号已存在,则返回用户已存在的提示信息;若待添加的用户不存在,则将该客户信息添加到顺序表最后,并将顺序表长度加1。2.2.3 客户信息删除 遍历当前顺序表,若要删除的用户标号不存在,则返回提示信息;否则提示用户是否确定删除,确定即删除。删除操作即将待删除记录的后面记录依次向前移动1步。2.2.4 客户信息更新遍历当前顺序表,若待更新的用户编号不存在,则返回用户不存在的提示信息;若待添加的用户存在,则提示输入新的信息。2.2.5 查找客户信息Start输入编号i编号存在否Print “客户不存在”返回L.elemi否是返回主菜单Start2.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 =(consume-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. 运行客户消费积分管理系统,主菜单如下:2.调用添加客户模块,添加客户信息3.测试删除模块4.测试更新模块其他模块测试类似。4 总 结本次课程设计,是我发现了很多不足,比如:1.软件设计阶段考虑不充分,导致编码时随机性大,方向性不明确;2.存储结构的选择分析不够充分,没有考虑其它可行的存储实现(只用了动态数组);3.设计的系统安全性方面未能达到极高级别(后台文件可以随意更改); 此外,在系统调试阶段,我发还现了很多细节方面的不足,使我认识到设计一个系统并非想象中那么简单,而是需要考虑各个方面结果的。通过本次课程设计,我加深了对顺序存储结构的理解,更加熟悉了顺序表的基本操作,还有文件读写方面的知识得到了回顾。通过客户积分系统软件的设计,我基本熟悉了一般的软件开发流程,认识到前期设计的重要性与盲目编代码错误观点。总的来说,本次课程设计获益匪浅,既是对书本所学知识的回顾,更是对课本所学知识的运用。5 参考文献 1 严蔚敏,吴伟民.数据结构. M清华大学出版社,2005.2 何钦铭,颜晖.C语言程序设计. M高等教育出版社,2008.附 录 源代码:#include #include #includetypedef struct char no10; /客户编号 char name5;float points; /积分 float discount; /折扣 Customer;#define 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=listinitsize;int 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=fgetc(fp) ;rewind(fp);if(ch=EOF) printf(文件为空!n);elsefscanf(fp,%s%s%f%f,customer.no,,&customer.discount,&customer.points); while(!feof(fp)L.elemc=customer; c+; L.length+;fscanf(fp,%s%s%f%f,customer.no,,&customer.discount,&customer.points);if(L.length=L.listsize) newbase=(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); 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.txt,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.,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(请输入客户信息: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.discount=10; customer.points =0; L.elemz=customer;L.length+;void Show(SqList &L) for(int i=0;iL.length;i+)printf(%s %s %.1f %.0fn,L.elemi.no,L.,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(您确定要删除%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=consume/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=50
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚财产分割与共同债务处理补充协议样本
- 租赁别墅退房协议范本及环境恢复要求
- 琴行专业教师团队聘用及教学成果分享协议
- 离婚协议中子女抚养权变更及监护权调整执行细节合同
- 互联网科技公司股权转让与用户数据共享合同
- 课件制作大赛开场
- 汽车测试技术与试验试题及答案
- 辅警安全知识培训心得
- 工商银行2025眉山市小语种岗笔试题及答案
- 工商银行2025柳州市小语种岗笔试题及答案
- 医疗背景下的园艺景观规划设计方法
- 2025年行测真题及答案详解
- 《多物理场耦合效应》课件
- 《戏剧影视表演剧目创作》课件-1.任务1 了解时代背景与规定情境
- 2025深圳市标准劳动合同范本
- 排污许可培训课件
- 迪拜果蔬市场发展趋势与前景分析
- 2025年调饮师职业技能竞赛(省赛)考试题库(含答案)
- 班级量化管理方法分享
- 土方倒运施工方案作业方案
- 工程部员工绩效考核方案
评论
0/150
提交评论