客户消费积分管理系统C++版有代码.docx
- 文档编号:30520482
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:17
- 大小:121.53KB
客户消费积分管理系统C++版有代码.docx
《客户消费积分管理系统C++版有代码.docx》由会员分享,可在线阅读,更多相关《客户消费积分管理系统C++版有代码.docx(17页珍藏版)》请在冰豆网上搜索。
客户消费积分管理系统C++版有代码
《面向对象技术》
课程设计说明书书
题目:
客户消费积分系统
指导教师:
姓名:
学号:
121006108
日期:
2012年6月
计算机科学与应用系2012-2013学年第2学期
我的任务:
我主要负责程序的运行调试,修改,是程序看起来更有实用性。
一、需求分析
1:
拥有客户的消费号,名字,身份证,消费价格和消费积分。
2:
计算机能快速的根据客户的消费积分计算打折后的价格,以及优惠后的价格。
给客户以心理上的刺激,激发客户的消费欲望。
3:
并且计算机计算的速度快,准确,减轻收银员的工作负担。
本系统用到的主要数据结构为数组和文件。
一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和消费情况。
然后将数组写入文件,提取相应信息。
二、系统主要功能
1:
采用一定的存储结构进行客户信息的存储;
2:
对客户的信息可以进行修改、删除、添加;
3:
能够根据消费情况进行客户积分的计算;
4:
根据积分情况实行不同程度的打折优惠;
三、流程图
四、数据结构设计
本程序运用链表对客户信息进行存储,首先对结点进行定义,结点中的数据域分别定义了消费者的消费号、身份证、消费价格、积分,其中身份证和消费价格用了字符型数组进行定义,然后定义了客户消费信息链表,每添加一个客户,先分配内存,再添加消费者的信息,之后将链表中最后一个指针指向该新的消费者,删除时,需先找到该消费者前面的消费者,直接将其指针指向删除消费者的下一个消费者,修改信息时,先找到该消费者,选择修改的内容,再进行修改,添加消费价格时,先找到该消费者,根据情况对增加或减少消费价格,并根据价格计算积分,打折时,根据消费者打折的要求,进行打折。
五、类设计
1:
定义了一个数据域,数据域中存储客户的基本信息。
2:
基本函数成员有姓名,身份证号,消费价格以及折扣后的价格
六、主要算法设计
1:
While语句以及switch语句的套用
2:
malloc函数的应用,用来为存储客户的信息分配内存
七、主要代码
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");
}
}
八、系统运行结果样例
此程序运行在visualC++6.0环境下
屏幕截图:
九、结束语
C++的课程设计的目的是,通过设计掌握c++课程以及数据结构学习中掌握的基本理论和算法综合运用解决实际问题。
他是理论与实践相结合的重要过程。
设计要求学生对数据结构以及,c++语言的熟练运用,同时需要我们发现细小问题的眼光以及解决问题的能力,要求我们掌握更多的课外知识。
便于我们程序的编写。
系统不足:
此系统的不足之处在于不能存储客户的资料于磁盘中。
我将会利用课余时间努力学习。
完善次系统。
努力做到功能齐全于强大。
附录:
全部代码:
//头文件
#include
#include
#include
structcnode
{
charname[20];
charID[4];
doubleconsume;
doubleinteger;
cnode*next;
};
voidCount(cnode*head)
{
cnode*p;
inti=0;
p=head;
if(p->next==NULL)
{
printf("\n没有客户!
");
}
else
{
while(p->next!
=NULL)
{
p=p->next;
i++;
}
}
printf("\n现有客户数量为%d位.\n",i);
system("pause");
}
doubledisplay_discount(doublepionts)
{
doublediscount;
if(pionts==0)
{
discount=0;
}
elseif(pionts>0&&pionts<=50)
{
discount=9.8;
}
elseif(pionts>50&&pionts<=100)
{
discount=9.5;
}
elseif(pionts>100&&pionts<=200)
{
discount=9.0;
}
elseif(pionts>200&&pionts<=300)
{
discount=8.0;
}
elseif(pionts>300)
{
discount=7.0;
}
returndiscount;
}
voidInitstack(cnode*&head)
{
head=(cnode*)malloc(sizeof(cnode));
head->next=NULL;
}
voidGetelem(cnode*head)
{
cnode*p;
doubley;
p=(cnode*)malloc(sizeof(cnode));
printf("请输入姓名:
");
scanf("%s",&p->name);
printf("请输入ID(4位):
");
scanf("%s",&p->ID);
while(strlen(p->ID)!
=4)
{
printf("ID有误,请重新输入(4位):
");
scanf("%s",p->ID);
}
printf("请输入消费金额:
");
scanf("%lf",&p->consume);
p->integer=p->consume/100;
y=display_discount(p->integer);
printf("折扣:
%.1lf折\n",y);
p->next=head->next;
head->next=p;
system("pause");
}
voidSearch(cnode*head,charname[])
{
cnode*p;
doubley;
boolflag=false;
p=head;
if(p->next==NULL)
{
printf("\n没有客户!
");
}
else
{
while(p->next!
=NULL)
{
p=p->next;
if(!
strcmp(name,p->name))
{
printf("姓名:
%s\n",p->name);
printf("ID:
%s\n",p->ID);
printf("消费:
%.2lf",p->consume);
printf("积分:
%lf\n",p->integer);
y=display_discount(p->integer);
printf("折扣:
%.1lf折\n",y);
flag=true;
}
}
if(!
flag)
{
printf("\n该客户不存在!
\n");
}
}
system("pause");
}
voidAmend(cnode*head,charname[])
{
cnode*p;
doubley,z;
intchoose,x;
p=head;
if(p->next==NULL)
{
printf("\n没有客户!
");
}
else
{
while(p->next!
=NULL)
{
p=p->next;
if(strcmp(name,p->name)==0)
{
printf("姓名:
%s\n",p->name);
printf("ID:
%s\n",p->ID);
printf("消费:
%.2lf\n",p->consume);
printf("积分:
%.lf\n",p->integer);
y=display_discount(p->integer);
printf("折扣:
%.1lf",y);
}
}
printf("\n请选择您要修改的资料:
1.姓名2.ID3.消费金额");
scanf("%d",&choose);
switch(choose)
{
case1:
printf("请输入修改后的姓名:
");
scanf("%s",&p->name);break;
case2:
printf("请输入修改后的ID:
");
scanf("%s",p->ID);
while(strlen(p->ID)!
=4)
{
printf("ID有误,请重新输入(4位):
");
scanf("%s",p->ID);
}break;
case3:
printf("请选择1.覆盖以前的消费2.续加上现在的消费:
");
scanf("%d",&x);
switch(x)
{
case1:
printf("请输入修改后的消费:
");
scanf("%lf",&p->consume);break;
case2:
printf("请输入续加金额:
");
scanf("%lf",&z);
p->consume+=z;break;
}
}
printf("姓名:
%s\n",p->name);
printf("ID:
%s\n",p->ID);
printf("消费额:
%.2lf\n",p->consume);
p->integer=p->consume/100;
printf("积分:
%lf\n",p->integer);
y=display_discount(p->integer);
printf("折扣:
%.1lf折\n",y);
}
system("pause");
}
voidDelete(cnode*head,charname[])
{
cnode*p;
intx;
doubley;
p=head;
if(p->next==NULL)
{
printf("\n没有客户!
");
}
else
{
while(p->next!
=NULL)
{
head=p;
p=p->next;
if(strcmp(name,p->name)==0)
{
printf("姓名:
%s\n",p->name);
printf("ID:
%s\n",p->ID);
printf("消费:
%.2lf",p->consume);
printf("积分:
%lf\n",p->integer);
y=display_discount(p->integer);
printf("折扣:
%.1lf折\n",y);
}
printf("确认删除?
1.确定2.取消请选择:
");
scanf("%d",&x);
if(x==1)
{
head->next=p->next;
printf("删除成功!
");
}
else
{
printf("删除失败!
");
}
}
}
printf("\n");
system("pause");
}
voidShowall(cnode*head)
{
cnode*p;
doubley;
p=head;
if(p->next==NULL)
{
printf("没有客户!
\n");
}
else
{
while(p->next!
=NULL)
{
p=p->next;
printf("姓名:
%s\n",p->name);
printf("ID:
%s\n",p->ID);
printf("消费:
%.2lf",p->consume);
printf("积分:
%lf\n",p->integer);
y=display_discount(p->integer);
printf("折扣:
%.1lf折\n",y);
}
}
system("pause");
}
//主文件
voidmain()
{
cnode*head;
intchoice;
charname[10];
Initstack(head);
do
{
printf("\n");
printf("客户消费积分管理系统\n\n");
printf("****************************");
printf("\n**");
printf("\n*主菜单*");
printf("\n*1.添加客户*");
printf("\n*2.查找客户*");
printf("\n*3.修改客户*");
printf("\n*4.删除客户*");
printf("\n*5.显示客户*");
printf("\n*6.统计客户*");
printf("\n*7.退出*");
printf("\n**");
printf("\n***************************");
printf("\n请输入您的选择(1,2,3,4,5,6,7):
");
scanf("%d",&choice);
switch(choice)
{
case1:
Getelem(head);break;
case2:
printf("\n请输入要查找的客户姓名:
");
scanf("%s",name);
Search(head,name);break;
case3:
printf("\n请输入要修改的客户姓名:
");
scanf("%s",name);
Amend(head,name);break;
case4:
printf("\n请输入要删除的客户姓名:
");
scanf("%s",name);
Delete(head,name);break;
case5:
printf("\n");
Showall(head);break;
case6:
printf("\n");
Count(head);break;
case7:
exit
(1);break;
}
system("cls");
}while(choice<=7);
}
注:
除第七条外,不要在报告中加入大量的程序代码,尽量用文字描述,结构图,表格等方式。
本文档第一页封面与最后一页不能更改,原样打印。
指导教师评语:
成绩:
签名:
日期:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户消费积分管理系统 C+版有代码 客户 消费 积分 管理 系统 C+ 代码