客户消费积分管理系统Word格式.docx

上传人:b****6 文档编号:21758429 上传时间:2023-02-01 格式:DOCX 页数:38 大小:613.88KB
下载 相关 举报
客户消费积分管理系统Word格式.docx_第1页
第1页 / 共38页
客户消费积分管理系统Word格式.docx_第2页
第2页 / 共38页
客户消费积分管理系统Word格式.docx_第3页
第3页 / 共38页
客户消费积分管理系统Word格式.docx_第4页
第4页 / 共38页
客户消费积分管理系统Word格式.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

客户消费积分管理系统Word格式.docx

《客户消费积分管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《客户消费积分管理系统Word格式.docx(38页珍藏版)》请在冰豆网上搜索。

客户消费积分管理系统Word格式.docx

(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

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

当前位置:首页 > 高等教育 > 农学

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

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