客户消费积分管理系统Word格式.docx
- 文档编号:21758429
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:38
- 大小:613.88KB
客户消费积分管理系统Word格式.docx
《客户消费积分管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《客户消费积分管理系统Word格式.docx(38页珍藏版)》请在冰豆网上搜索。
(8)voidcount(C*head);
遍历统计客户数量显示。
(9)doubledisplay_discount(doubleinteger);
计算客户折扣,每次显示用户信息调用一次保证客户为最新打折信息。
四、详细设计
(1)功能模块详细设计
(2)详细设计思想
本程序运用链表对客户信息进行存储,首先对结点进行定义,结点中的数据域分别定义了消费者的消费号、身份证、消费价格、积分,其中身份证和消费价格用了字符型数组进行定义,然后定义了客户消费信息链表,每添加一个客户,先分配内存,再添加消费者的信息,之后将链表中最后一个指针指向该新的消费者,删除时,需先找到该消费者前面的消费者,直接将其指针指向删除消费者的下一个消费者,修改信息时,先找到该消费者,选择修改的内容,再进行修改,添加消费的价格时,先找到该消费者,根据情况对增加或减少消费价格,并根据价格计算积分,打折时,根据消费者打折的要求,进行打折。
5、程序代码
#include<
iostream.h>
stdlib.h>
string.h>
fstream>
classC//定义一个C类
{
public:
charname[20];
charID[20];
doubleconsume;
doubleinteger;
C*next;
};
voidInitstack(C*&
head)/*初始化链表*/
{
head=(C*)malloc(sizeof(C));
//开辟节点空间
head->
next=NULL;
}
classA//定义一个A类,封装功能函数
voidGetelem(C*head);
voidSearch(C*head,charID[]);
voidAmend(C*head,charID[]);
voidDelete(C*head,charID[]);
voidShowall(C*head);
voidcount(C*head);
doubledisplay_discount(doubleinteger);
voidcreateFile(C*head);
intmain()
Aa;
C*head;
intchoice;
chary[20];
Initstack(head);
do{
cout<
<
endl;
"
客户消费积分管理系统"
****************************"
**"
*主菜单*"
*1添加客户*"
*2查找客户*"
*3修改客户*"
*4删除客户*"
*5显示客户*"
*6统计客户*"
*7退出*"
***************************"
请输入您的选择(1,2,3,4,5,6):
"
cin>
>
choice;
if(choice==1)
{
a.Getelem(head);
}//添加
elseif(choice==2)
cout<
请输入您查找客户的身份证号:
;
y;
while(strlen(y)!
=18)
{
cout<
身份证号码位数有误请重新输入(18位):
cin>
}
a.Search(head,y);
}//查找
elseif(choice==3)
请输入您想修改客户的身份证号:
cin>
while(strlen(y)!
{
}
a.Amend(head,y);
//修改
}
elseif(choice==4)
请输入你想要删除的客户的身份证号:
a.Delete(head,y);
//删除
}
elseif(choice==5)
a.Showall(head);
//显示
elseif(choice==6)
a.count(head);
//统计
elseif(choice==7)
exit
(1);
}
while(choice<
=7);
return0;
voidA:
:
createFile(C*head){
FILE*fw=fopen("
用户数据.txt"
"
wt"
);
C*p;
p=head;
while(p->
next!
=NULL){
p=p->
next;
fprintf(fw,"
用户名:
%s,身份证号:
%s,消费金额:
%lf,积分:
%lf\n"
p->
name,p->
ID,p->
consume,p->
integer);
fclose(fw);
Getelem(C*head){
C*p;
doubley;
p=(C*)malloc(sizeof(C));
/*申请空的节点空间*/
请输入姓名:
p->
name;
请输入身份证号(18位):
ID;
while(strlen(p->
ID)!
=18){
p->
请输入消费金额:
consume;
integer=p->
y=display_discount(p->
//调用函数计算折扣
折扣:
y<
折"
next=head->
head->
next=p;
createFile(head);
Search(C*head,charID[])
p=head;
if(p->
next==NULL)
没有客户!
else
while(p->
next!
=NULL)
p=p->
if(strcmp(ID,p->
ID)==0)//判断身份证号是否相同
{
姓名:
身份证号:
消费:
积分:
integer;
y=display_discount(p->
Amend(C*head,charID[])//修改客户函数
doubley,z;
intchoose,x;
cout<
请选择你要修改的1、姓名。
2、身份证号。
3、消费金额。
cin>
choose;
if(choose==1)
请输入修改后姓名;
if(choose==2)
请输入修改后的身份证号:
while(strlen(p->
{
cout<
cin>
}
if(choose==3)
1.覆盖以前消费、2.续加上现在费用!
!
请选择:
x;
if(x==1)
请输入修改后的消费:
else
请输入续加金额:
z;
p->
consume+=z;
}
y=display_discount(p->
Delete(C*head,charID[])//删除客户函数
intx;
head=p;
ID)==0)//判断身份证号是否相同
y=display_discount(p->
你确认删除?
1、确定。
2、取消。
if(x==1)
head->
next=p->
删除成功!
else
删除失败!
Showall(C*head)//显示所有客户函数
count(C*head)//显示所有客户函数
inti=0;
i++;
现有客户数量:
i<
doubleA:
display_discount(doublepoints)//计算客户折扣函数,接受一个double型的数作为参数,输出对应的折扣
doublediscount;
if(points==0)
discount=0;
if(points>
0&
&
points<
=50)
discount=9.8;
50&
=100)
discount=9.5;
100&
=150)
discount=9.2;
150&
=200)
discount=9.0;
200&
=300)
discount=8;
elseif(points>
300)
discount=7;
returndiscount;
6、运行结果与测试
(1)程序运行主窗口
(2)添加客户
(3)查找客户
(4)修改客户
(5)删除客户
(6)显示客户
(7)统计客户
小学生数学习题库系统
1、问题陈述(包括系统总体框图及功能描述)
利用栈求表达式的值,可供小学生作业,并能给出分数。
建立试题库文件,随机产生n个题目;
题目涉及加减乘除,带括弧的混合运算;
随时可以退出;
保留历史分数,能回顾历史,给出与历史分数比较后的评价。
此课题是研究表达式求值的问题,以帮助小学生完成测试。
为了达到这个功能,实际我们要做的就是出题,和计算分数给出评价的工作。
整体设计都是以这个要求为轴心进行的。
为了直观和方便,现画出软件整体设计模块图。
整体设计模块图可以清晰的看出软件的几大模块。
整个系统的操作流程图可以看出操作的整体流程,如下图
(输入1)(输入2)
(输入0)
二、程序代码
#include<
stdio.h>
ctype.h>
time.h>
#defineMAXLEN100
typedefstructshiti
intbianhao;
chartimu[20];
}xuanti;
typedefstruct
charop;
intlevel;
}opt;
typedefstruct//定义操作符栈
optst[MAXLEN];
inttop;
}op_stack;
typedefstruct//定义值栈
doubleD[MAXLEN];
}D_stack;
optpeek(op_stack*s)//定义看栈顶函数
opterror={'
$'
-2};
if(s->
top>
=0)
returns->
st[s->
top];
returnerror;
intIsEmpty(op_stack*s)//定义判断栈空的函数
top<
0)
return0;
returns->
top].op;
charpush(op_stack*s,optc)//定义入栈函数
s->
top++;
s->
top]=c;
returnc.op;
optpop(op_stack*s)//定义出栈函数
opti;
opterror={'
{
i=s->
s->
top].op='
\0'
top--;
returni;
voidclear(op_stack*s)//定义初始化栈
top=-1;
//-----------------------------definethevaluestack-----------------------
doubleDpeek(D_stack*s)//定义看栈顶函数
D[s->
intDIsEmpty(D_stack*s)//定义判断栈空的函数
return(int)(s->
top]);
doubleDpush(D_stack*s,doublec)//定义入栈函数
returnc;
doubleDpop(D_stack*s)//定义出栈函数
doublei;
top]='
else
return0;
voidDclear(D_stack*s)//定义初始化栈
voidcreateNumberFile(intn)
题目个数.txt"
if(fw==NULL)
printf("
文件写入失败!
\n"
exit(0);
fprintf(fw,"
%d"
n);
intreadNumberFile()
FILE*fr=fopen("
rt"
if(fr==NULL)
文件读取失败!
charnumBuf[5];
fgets(numBuf,5,fr);
intn=atoi(numBuf);
fclose(fr);
returnn;
voidcreateQuestionFile()
试题库.txt"
intnum;
printf("
请输入出题个数:
scanf("
&
num);
fflush(stdin);
createNumberFile(num);
请出%d道题目放入试题库:
num);
charwtBuf[20];
for(inti=1;
=num;
i++)
第%d题:
i);
gets(wtBuf);
%d:
%s\n"
i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户 消费 积分 管理 系统