1、会员卡计费系统c 课程设计报告附件1:学 号: 课 程 设 计 题 目会员卡计费系统学 院计算机科学与信息工程学院专 业计算机科学与技术班 级计算机学生姓名指导教师2015年12月29日 重庆工商大学课程设计成绩评定表学院:计信学院 班级:计算机3班 学生姓名 学号:项目分值优秀(100x90)良好(90x80)中等(80x70)及格(70x60)不及格(x60)评分参考标准参考标准参考标准参考标准参考标准学习态度15学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务学习态度尚好,遵守组织纪律,基本保证设
2、计时间,按期完成各项工作学习态度尚可,能遵守组织纪律,能按期完成任务学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度技术水平与实际能力25设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析与计算无大错,实验数据无大错设计不合理,理论分析与
3、计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题创新10有重大改进或独特见解,有一定实用价值有较大改进或新颖的见解,实用性尚可有一定改进或新的见解有一定见解观念陈旧论文(计算书、图纸)撰写质量50结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;
4、图纸比较工整内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰指导教师评定成绩:指导教师签名: 年 月 日课程设计任务书学生姓名: 王仝 专业班级: 14计算机3班 指导教师: 梁新元 工作单位: 计信学院 题 目: 会员卡计费系统 已知技术参数和设计要求:设计一个会员卡计费管理系统。(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)(2)会员信息修改。(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)(4)会员消费结算。(会员出示会员卡后,管理人员根据卡号查找
5、到该会员的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费给予9折优惠。(5)会员退卡。(收回会员卡,并将余额退还,删除该会员信息。)(6)会员卡挂失。(为该会员补办新卡,并将旧卡余额转至新卡。)(7)用菜单进行管理(8)统计功能。1) 能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。2) 能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。(9)只有正确输入用户名密码才能使用此系统。(10)所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。要求完成的
6、主要任务: 1、任务与需求 设计任务和具体功能要求 2、概要设计(总体设计) 解决目标系统应该如何做的问题,依据需求分析确定软件结构,确定软件各个模块及其它们之间的关系。(可以在此部分绘制系统功能模块图) 3、详细设计 依据概要设计,将模块映射为函数,模块名称映射为函数名称,模块间的函数的接口映射为出/入参数,模块的处理逻辑映射为程序流程图。具体来说,该步骤主内容包括涉及知识点的描述、详细的设计思路(采用的逻辑结构和存储结构、采用的算法)以及流程图的绘制。 4、编码 描述所用数据结构定义、功能函数设计、完整源程序(要求结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释)的实现。 5
7、、运行与测试 给出测试方法、用例和测试结果,并赋予文字说明和截图6、课程设计总结:各个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法进一步改进的设想。课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对这门课程的思考、在课程设计过程中对课程的认识等内容。时间安排:2015.12.7 -2014.12.9 初步设计 2014.12.10 -2014.12.20 代码编写 2014.12.21 -2014.12.30 撰写报告指导教师签名: 梁新元 2015年 12月 29日教研室主任签名: 杨永斌 2014年 12月 29日会员卡计费系统课程设计报
8、告 重庆工商大学计算机科学与信息工程学院2014级计算机3班:王仝指导老师:梁新元摘要:会员卡计费系统关键字:数组 类 面向对象一、设计的问题及功能描述(1)任务定义设计一个会员卡计费管理系统。(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)(2)会员信息修改。(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)(4)会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费给予
9、9折优惠。(5)会员退卡。(收回会员卡,并将余额退还,删除该会员信息。)(6)会员卡挂失。(为该会员补办新卡,并将旧卡余额转至新卡。)(7)用菜单进行管理(8)统计功能。1) 能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。2) 能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。(9)只有正确输入用户名密码才能使用此系统。(10)所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。(2)问题分析1)基本问题分析如何用面向对象实现信息录入、信息查询、信息删除与修改、信息保存2)问题的延伸问题一:如何用面向对象实现信
10、息排序问题二:如何用面向对象实现信息读取问题三:如何用面向对象实现信息输出二、设计的问题设计思想、方法及方案 当然,为了更好的实现该设计的最终结果,也就是程序,这里有必要对设计思路有条理地整理出来。以下仅仅是每个子模块应该实现的功能,而具体的算法在实际的程序中再做介绍,下面是设想的步骤: 第一步,定义了一个会员卡类,为了节约空间,所以定义成一个链表类,动态化分配内存空间,因为要装消费记录,所以里面又有个消费记录链表的指针,里面时间是用结构体来装的。因为还需要密码进入,就定义了一个管理员顺序表。 typedef struct/时间结构体 int year; int mouth; int day;
11、timer;typedef struct LNode/消费记录单链表 timer t1;/时间 char things40;/商品名 int money;/价格 int num;/数量 struct LNode *next;/下个节点buy;class card/会员卡类private: char name17;/名字 char cardID9;/卡号 timer t;/注册时间 char ID19;/身份证号 int balance;/余额 int total;/历史消费总额 buy *q;/消费记录 int n;/消费记录条数 int g;/是否挂失 card *nextp;public:
12、 card(); card(char*p1,char*p2,int y,int m,int d,char*p3,int f,int x); card(card &p); card();typedef struct int id;/管理员编号 char usename10;/管理员名 char password16;/管理员密码manager;typedef struct manager a10; int length;managerList;/管理员链表第二步,主程序。其功能是是菜单。第三步,对用户的选择进行接收的子程序。当用户输入1,2,3,4的时候,该程序可以将用户的选择反馈给判断程序。如
13、果用户输入的是这四个数字之外,则提示用户输入不正确,请重新输入。第四步,当用户输入1,进入会员卡操作系统。 进入选择操作, 1.添加会员卡; 2.修改会员卡; 3.退卡; 4.查询会员卡; 1.姓名查找 2.姓名模糊查找 3.卡号查询 4.身份证号查询 5.返回上一级 5.排序;1.根据卡号插入排序 2.根据历史消费总额插入排序 6.显示全部会员卡; 7.返回上一级;第五步,当用户输入2,进入会员卡使用系统。 进入选择操作, 1.续费; 2.消费; 3.挂失; 1.挂失 2.解挂失 3.补办会员卡 4.返回 4.消费查询; 5.返回上一级;第六步,当用户输入3,进入管理员系统。只有当用户问最高
14、管理员,才可以进入该系统。 进入选择操作, 1.管理员显示; 2.管理员添加; 3.管理原查询; 4.管理员删除; 5.返回上一级;三详细设计和编码一会员卡添加函数。 void card:add()/添加函数 char name117;/名字 char cardID19;/卡号 char ID119;/身份证号 int balance1;/余额 int n;/判断数 for(;) int x=0; cout请输入endl; cout姓名 卡号 身份证号 首充金额name1cardID1ID1balance1; card *p; for(p=nextp;p!=NULL;p=p-nextp) if
15、(!strcmp(cardID1,p-cardID) cout添加失败,卡号重复ID) cout添加失败,身份证号重复nextp=nextp; nextp=q1; strcpy(q1-name,name1); strcpy(q1-cardID,cardID1); strcpy(q1-ID,ID1); q1-balance=balance1; SYSTEMTIME m_time; GetLocalTime(&m_time); q1-t.year=m_time.wYear; q1-t.mouth=m_time.wMonth; q1-t.day=m_time.wDay; s3:cout是否继续添加:
16、1.继续,2.返回。n; if(n=2) break; else if(n!=1) cout选择错误,请重新选择endl; goto s3; 二会员显示函数void card:change()/修改函数 char a9; char b19; int m; cout请输入卡号a; card *p; for(p=nextp;p!=NULL;p=p-nextp) if(!strcmp(a,p-cardID) break; if(p=NULL) cout没有查找到endl; return; showone(p); s5:cout需要改哪一项?endl; cout 1.卡号 2.姓名 3.身份证号m;
17、switch(m) case 1: cout请输入修改的卡号b; strcpy(p-cardID,b); break; case 2: cout请输入修改的姓名b; strcpy(p-name,b); break; case 3: cout请输入修改的身份证号b; strcpy(p-ID,b); break; default: cout请输入1-3endl; goto s5; void card:seekCardID()/查询卡号函数 char a9; cout请输入卡号a; card *p; for(p=nextp;p!=NULL;p=p-nextp) if(!strcmp(a,p-card
18、ID) break; if(p=NULL) cout没有查找到endl; return; showone(p);三退卡函数void card:returnCard()/退卡函数 char a9; int m; s6:cout请输入卡号a; card *p; for(p=nextp;p!=NULL;p=p-nextp) if(!strcmp(a,p-cardID) break; if(p=NULL) cout没有查找到,请重新输入endl; goto s6; showone(p); s7:cout确认删除?1.确认,2取消。m; if(m=1) cardDelete(a); else if(m=
19、2) cout已成功取消endl; return; else cout确认错误,请重新输入endl; goto s7; 四查询函数void card:seekCardID()/查询卡号函数 char a9; cout请输入卡号a; card *p; for(p=nextp;p!=NULL;p=p-nextp) if(!strcmp(a,p-cardID) break; if(p=NULL) cout没有查找到endl; return; showone(p);void card:seekName()/精确姓名查询 char a17; cout请输入姓名a; card *p; for(p=next
20、p;p!=NULL;p=p-nextp) if(!strcmp(a,p-name) break; if(p=NULL) cout没有查找到endl; return; showone(p);void card:seekName2()/模糊姓名查询 char a17; cout请输入模糊姓名a; card *p; for(p=nextp;p!=NULL;p=p-nextp) if(strstr(p-name,a) break; if(p=NULL) cout没有查找到endl; return; showone(p);void card:seekID()/身份证查询 char a19; cout请输
21、入身份证号a; card *p; for(p=nextp;p!=NULL;p=p-nextp) if(!strcmp(a,p-ID) break; if(p=NULL) cout没有查找到nextp!=NULL&this-nextp-nextp!=NULL) p1=this; p2=this-nextp; p3=p2-nextp; p2-nextp=NULL; while(p3!=NULL) p4=p3-nextp; while(p2!=NULL&strcmp(p3-cardID,p2-cardID)0) p1=p2; p2=p2-nextp; p1-nextp=p3; p3-nextp=p2
22、; p1=this; p2=this-nextp; p3=p4; else return;void card:insertSortTotal()/插入排序消费总额 card *p1; card *p2; card *p3; card *p4; if(this-nextp!=NULL&this-nextp-nextp!=NULL) p1=this; p2=this-nextp; p3=p2-nextp; p2-nextp=NULL; while(p3!=NULL) p4=p3-nextp; while(p2!=NULL&p3-totaltotal) p1=p2; p2=p2-nextp; p1-
23、nextp=p3; p3-nextp=p2; p1=this; p2=this-nextp; p3=p4; else return;六显示会员卡void card:show()/会员卡全部显示函数 cout 卡号 姓名 身份证号 注册时间 余额 历史消费 挂失nextp) cout cardID setw(6)name ID t.year年t.mouth月t.day日 setw(3)balance setw(6)total gendl;七续费函数void card:cardRecharge()/续费函数 char a9;/输入卡号 int m;/判断数 int money;/续费金额 s6:c
24、out请输入卡号a; card *p; for(p=nextp;p!=NULL;p=p-nextp) if(!strcmp(a,p-cardID) break; if(p=NULL) cout没有查找到,请重新输入endl; goto s6; showone(p); cout请输入充值金额money; s7:cout确认充值?1.确认,2取消。m; if(m=1) p-balance+=money; cout充值成功endl; else if(m=2) cout已取消endl; return; else cout确认错误,请重新输入endl; goto s7; 八消费函数void card:purchase()/购买函数 char a9; char things40;/商品名 int money;/价格 int num;/数量 s6:cout请输入卡号a; card *p; for(p=nextp;p!=NU
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1