会员卡计费系统c课程设计报告.docx

上传人:b****8 文档编号:9788507 上传时间:2023-02-06 格式:DOCX 页数:90 大小:409KB
下载 相关 举报
会员卡计费系统c课程设计报告.docx_第1页
第1页 / 共90页
会员卡计费系统c课程设计报告.docx_第2页
第2页 / 共90页
会员卡计费系统c课程设计报告.docx_第3页
第3页 / 共90页
会员卡计费系统c课程设计报告.docx_第4页
第4页 / 共90页
会员卡计费系统c课程设计报告.docx_第5页
第5页 / 共90页
点击查看更多>>
下载资源
资源描述

会员卡计费系统c课程设计报告.docx

《会员卡计费系统c课程设计报告.docx》由会员分享,可在线阅读,更多相关《会员卡计费系统c课程设计报告.docx(90页珍藏版)》请在冰豆网上搜索。

会员卡计费系统c课程设计报告.docx

会员卡计费系统c课程设计报告

附件1:

学号:

课程设计

 

题目

会员卡计费系统

学院

计算机科学与信息工程学院

专业

计算机科学与技术

班级

计算机

学生姓名

指导教师

 

2015

12

29

重庆工商大学课程设计成绩评定表

学院:

计信学院班级:

计算机3班学生姓名学号:

项目

分值

优秀

(100>x≥90)

良好

(90>x≥80)

中等

(80>x≥70)

及格

(70>x≥60)

不及格(x<60)

评分

参考标准

参考标准

参考标准

参考标准

参考标准

学习态度

15

学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作

学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务

学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作

学习态度尚可,能遵守组织纪律,能按期完成任务

学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度

技术水平与实际能力

25

设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信

设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信

设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信

设计基本合理,理论分析与计算无大错,实验数据无大错

设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题

创新

10

有重大改进或独特见解,有一定实用价值

有较大改进或新颖的见解,实用性尚可

有一定改进或新的见解

有一定见解

观念陈旧

论文(计算书、图纸)撰写质量

50

结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰

结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰

结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰

结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整

内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰

指导教师评定成绩:

指导教师签名:

年月日

课程设计任务书

学生姓名:

王仝专业班级:

14计算机3班

指导教师:

梁新元工作单位:

计信学院

题目:

会员卡计费系统

已知技术参数和设计要求:

设计一个会员卡计费管理系统。

(1)新会员登记。

(将会员个人信息及此会员的会员卡信息进行录入。

(2)会员信息修改。

(3)会员续费。

(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。

此时可以进行续费,续费后,提示成功,并显示更新后的信息。

(4)会员消费结算。

(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。

提示成功,并显示更新后的信息。

)累计消费满1000元,及自动升级为VIP会员。

之后每次消费给予9折优惠。

(5)会员退卡。

(收回会员卡,并将余额退还,删除该会员信息。

(6)会员卡挂失。

(为该会员补办新卡,并将旧卡余额转至新卡。

(7)用菜单进行管理

(8)统计功能。

1)能够按每个会员的缴费总额进行排序。

在排序的最后一行显示所有会员的缴费总额,以及消费总额。

2)能够按累计消费总额进行排序。

在排序的最后一行显示所有会员的缴费总额,以及消费总额。

(9)只有正确输入用户名密码才能使用此系统。

(10)所有内容能够保存到文件中。

下次进入系统是从文件中读取原有信息。

要求完成的主要任务:

1、任务与需求设计任务和具体功能要求

2、概要设计(总体设计)解决目标系统应该如何做的问题,依据需求分析确定软件结构,确定软件各个模块及其它们之间的关系。

(可以在此部分绘制系统功能模块图)

3、详细设计依据概要设计,将模块映射为函数,模块名称映射为函数名称,模块间的函数的接口映射为出/入参数,模块的处理逻辑映射为程序流程图。

具体来说,该步骤主内容包括涉及知识点的描述、详细的设计思路(采用的逻辑结构和存储结构、采用的算法)以及流程图的绘制。

4、编码描述所用数据结构定义、功能函数设计、完整源程序(要求结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释)的实现。

5、运行与测试给出测试方法、用例和测试结果,并赋予文字说明和截图

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日

会员卡计费系统——课程设计报告

重庆工商大学计算机科学与信息工程学院

2014级计算机3班:

王仝

指导老师:

梁新元

 

摘要:

会员卡计费系统

关键字:

数组类面向对象

一、设计的问题及功能描述

(1)任务定义

设计一个会员卡计费管理系统。

(1)新会员登记。

(将会员个人信息及此会员的会员卡信息进行录入。

(2)会员信息修改。

(3)会员续费。

(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。

此时可以进行续费,续费后,提示成功,并显示更新后的信息。

(4)会员消费结算。

(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。

提示成功,并显示更新后的信息。

)累计消费满1000元,及自动升级为VIP会员。

之后每次消费给予9折优惠。

(5)会员退卡。

(收回会员卡,并将余额退还,删除该会员信息。

(6)会员卡挂失。

(为该会员补办新卡,并将旧卡余额转至新卡。

(7)用菜单进行管理

(8)统计功能。

1)能够按每个会员的缴费总额进行排序。

在排序的最后一行显示所有会员的缴费总额,以及消费总额。

2)能够按累计消费总额进行排序。

在排序的最后一行显示所有会员的缴费总额,以及消费总额。

(9)只有正确输入用户名密码才能使用此系统。

(10)所有内容能够保存到文件中。

下次进入系统是从文件中读取原有信息。

(2)问题分析

1)基本问题分析

如何用面向对象实现信息录入、信息查询、信息删除与修改、信息保存

2)问题的延伸

问题一:

如何用面向对象实现信息排序

问题二:

如何用面向对象实现信息读取

问题三:

如何用面向对象实现信息输出

 

二、设计的问题设计思想、方法及方案

当然,为了更好的实现该设计的最终结果,也就是程序,这里有必要对设计思路有条理地整理出来。

以下仅仅是每个子模块应该实现的功能,而具体的算法在实际的程序中再做介绍,下面是设想的步骤:

第一步,定义了一个会员卡类,为了节约空间,所以定义成一个链表类,动态化分配内存空间,因为要装消费记录,所以里面又有个消费记录链表的指针,里面时间是用结构体来装的。

因为还需要密码进入,就定义了一个管理员顺序表。

typedefstruct//时间结构体

{

intyear;

intmouth;

intday;

}timer;

typedefstructLNode//消费记录单链表

{

timert1;//时间

charthings[40];//商品名

intmoney;//价格

intnum;//数量

structLNode*next;//下个节点

}buy;

classcard//会员卡类

{

private:

charname[17];//名字

charcardID[9];//卡号

timert;//注册时间

charID[19];//身份证号

intbalance;//余额

inttotal;//历史消费总额

buy*q;//消费记录

intn;//消费记录条数

intg;//是否挂失

card*nextp;

public:

card();

card(char*p1,char*p2,inty,intm,intd,char*p3,intf,intx);

card(card&p);

~card(){};

};

typedefstruct

{

intid;//管理员编号

charusename[10];//管理员名

charpassword[16];//管理员密码

}manager;

typedefstruct

{

managera[10];

intlength;

}managerList;//管理员链表

第二步,主程序。

其功能是是菜单。

第三步,对用户的选择进行接收的子程序。

当用户输入1,2,3,4的时候,该程序可以将用户的选择反馈给判断程序。

如果用户输入的是这四个数字之外,则提示用户输入不正确,请重新输入。

第四步,当用户输入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,进入管理员系统。

只有当用户问最高管理员,才可以进入该系统。

进入选择操作,1.管理员显示;

2.管理员添加;

3.管理原查询;

4.管理员删除;

5.返回上一级;

三.详细设计和编码

一.会员卡添加函数。

voidcard:

:

add()//添加函数

{

charname1[17];//名字

charcardID1[9];//卡号

charID1[19];//身份证号

intbalance1;//余额

intn;//判断数

for(;;)

{

intx=0;

cout<<"请输入"<

cout<<"姓名卡号身份证号首充金额"<

cin>>name1>>cardID1>>ID1>>balance1;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(cardID1,p->cardID))

{

cout<<"添加失败,卡号重复"<

x++;

}

if(!

strcmp(ID1,p->ID))

{

cout<<"添加失败,身份证号重复"<

x++;

}

}

if(x==0)

{

card*q1;

q1=newcard;

q1->nextp=nextp;

nextp=q1;

strcpy(q1->name,name1);

strcpy(q1->cardID,cardID1);

strcpy(q1->ID,ID1);

q1->balance=balance1;

SYSTEMTIMEm_time;

GetLocalTime(&m_time);

q1->t.year=m_time.wYear;

q1->t.mouth=m_time.wMonth;

q1->t.day=m_time.wDay;

}

s3:

cout<<"是否继续添加:

1.继续,2.返回。

"<

cin>>n;

if(n==2)

break;

elseif(n!

=1)

{

cout<<"选择错误,请重新选择"<

gotos3;

}

}

}

二.会员显示函数

voidcard:

:

change()//修改函数

{

chara[9];

charb[19];

intm;

cout<<"请输入卡号"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(a,p->cardID))

break;

}

if(p==NULL)

{

cout<<"没有查找到"<

return;

}

showone(p);

s5:

cout<<"需要改哪一项?

"<

cout<<"1.卡号2.姓名3.身份证号"<

cin>>m;

switch(m)

{

case1:

cout<<"请输入修改的卡号"<

cin>>b;

strcpy(p->cardID,b);

break;

case2:

cout<<"请输入修改的姓名"<

cin>>b;

strcpy(p->name,b);

break;

case3:

cout<<"请输入修改的身份证号"<

cin>>b;

strcpy(p->ID,b);

break;

default:

cout<<"请输入1-3"<

gotos5;

}

}

voidcard:

:

seekCardID()//查询卡号函数

{

chara[9];

cout<<"请输入卡号"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(a,p->cardID))

break;

}

if(p==NULL)

{

cout<<"没有查找到"<

return;

}

showone(p);

}

三.退卡函数

voidcard:

:

returnCard()//退卡函数

{

chara[9];

intm;

s6:

cout<<"请输入卡号"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(a,p->cardID))

break;

}

if(p==NULL)

{

cout<<"没有查找到,请重新输入"<

gotos6;

}

showone(p);

s7:

cout<<"确认删除?

1.确认,2取消。

"<

cin>>m;

if(m==1)

cardDelete(a);

elseif(m==2)

{

cout<<"已成功取消"<

return;

}

else

{

cout<<"确认错误,请重新输入"<

gotos7;

}

}

四.查询函数

voidcard:

:

seekCardID()//查询卡号函数

{

chara[9];

cout<<"请输入卡号"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(a,p->cardID))

break;

}

if(p==NULL)

{

cout<<"没有查找到"<

return;

}

showone(p);

}

voidcard:

:

seekName()//精确姓名查询

{

chara[17];

cout<<"请输入姓名"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(a,p->name))

break;

}

if(p==NULL)

{

cout<<"没有查找到"<

return;

}

showone(p);

}

voidcard:

:

seekName2()//模糊姓名查询

{

chara[17];

cout<<"请输入模糊姓名"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(strstr(p->name,a))

break;

}

if(p==NULL)

{

cout<<"没有查找到"<

return;

}

showone(p);

}

voidcard:

:

seekID()//身份证查询

{

chara[19];

cout<<"请输入身份证号"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(a,p->ID))

break;

}

if(p==NULL)

{

cout<<"没有查找到"<

return;

}

showone(p);

}

五.排序函数

voidcard:

:

insertSort()//插入排序

{

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&&strcmp(p3->cardID,p2->cardID)>0)

{

p1=p2;

p2=p2->nextp;

}

p1->nextp=p3;

p3->nextp=p2;

p1=this;

p2=this->nextp;

p3=p4;

}

}

else

return;

}

voidcard:

:

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->nextp=p3;

p3->nextp=p2;

p1=this;

p2=this->nextp;

p3=p4;

}

}

else

return;

}

六.显示会员卡

voidcard:

:

show()//会员卡全部显示函数

{

cout<<"卡号姓名身份证号注册时间余额历史消费挂失"<

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

cout<<""<cardID<<""<name<<""<ID<<""<t.year<<"年"<t.mouth<<"月"<t.day<<"日"<balance<<""<total<<""<g<

}

七.续费函数

voidcard:

:

cardRecharge()//续费函数

{

chara[9];//输入卡号

intm;//判断数

intmoney;//续费金额

s6:

cout<<"请输入卡号"<

cin>>a;

card*p;

for(p=nextp;p!

=NULL;p=p->nextp)

{

if(!

strcmp(a,p->cardID))

break;

}

if(p==NULL)

{

cout<<"没有查找到,请重新输入"<

gotos6;

}

showone(p);

cout<<"请输入充值金额"<

cin>>money;

s7:

cout<<"确认充值?

1.确认,2取消。

"<

cin>>m;

if(m==1)

{

p->balance+=money;

cout<<"充值成功"<

}

elseif(m==2)

{

cout<<"已取消"<

return;

}

else

{

cout<<"确认错误,请重新输入"<

gotos7;

}

}

八.消费函数

voidcard:

:

purchase()//购买函数

{

chara[9];

charthings[40];//商品名

intmoney;//价格

intnum;//数量

s6:

cout<<"请输入卡号"<

cin>>a;

card*p;

for(p=nextp;p!

=NU

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

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

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