数据结构实训题目客户消费积分管理系统.docx
- 文档编号:9662915
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:14
- 大小:235.16KB
数据结构实训题目客户消费积分管理系统.docx
《数据结构实训题目客户消费积分管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构实训题目客户消费积分管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
数据结构实训题目客户消费积分管理系统
上海电机计算机与软件学院
客户消费积分管理系统
问题描述:
针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。
基本要求:
1.采用一定的存储结构进行客户信息的存储;
2.对客户的信息可以进行修改、删除、添加;
3.能够根据消费情况进行客户积分的计算;
4.根据积分情况实行不同程度的打折优惠;
实验分析
1、概要设计
本系统用到的主要数据结构为数组和文件。
一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和消费情况。
然后将数组写入文件,查询时读取文件,提取相应信息。
2.功能模块详细设计
程序总流程
4.详细设计思想
本程序运用链表对客户信息进行存储,首先对结点进行定义,结点中的数据域分别定义了消费者的消费号、身份证、消费价格、积分,其中身份证和消费价格用了字符型数组进行定义,然后定义了客户消费信息链表,每添加一个客户,先分配内存,再添加消费者的信息,之后将链表中最后一个指针指向该新的消费者,删除时,需先找到该消费者前面的消费者,直接将其指针指向删除消费者的下一个消费者,修改信息时,先找到该消费者,选择修改的内容,再进行修改,添加消费价格时,先找到该消费者,根据情况对增加或减少消费价格,并根据价格计算积分,打折时,根据消费者打折的要求,进行打折。
详细设计和代码
4.2源代码
#include
#include
#include
#include
typedefstructDataytpe
{
intm;
charIdentity[18];
charName[20];
floatPrice,Integral;
}Datatype;
//链表结点的定义
typedefstructListnode
{
Datatypecustomer;
structListnode*next;
}Listnode,*Linklist;
inti=1;//消费者编号
//创建链表
voidcreate(Linklist&h){
floatmoney;
Linklists,t;
intj=1;
charx;
h=(Listnode*)malloc(sizeof(Listnode));
h->next=NULL;t=h;
while(j){
s=(Listnode*)malloc(sizeof(Listnode));
printf("消费号为%d\n",i);
s->customer.m=i;
printf("请输入身份证号码:
");
scanf("%c",&x);
scanf("%s",s->customer.Identity);
printf("\n");
printf("请输入姓名:
");
scanf("%c",&x);
scanf("%s",s->customer.Name);
printf("\n");
printf("请输入价格:
");
scanf("%f",&money);
printf("\n");
s->customer.Price=money;
s->next=NULL;t->next=s;t=s;
printf("全部输完,请输入0,否则输入1...\n");
scanf("%d",&j);
printf("\n");
i++;
}
t->next=NULL;
}
//插入
voidListInsert(Linklist&h)
{
intj=1;
floatmoney;
charx;
Linklists,t;
s=(Listnode*)malloc(sizeof(Listnode));
printf("消费号为%d\n",i++);
printf("请输入身份证号码:
");
scanf("%c",&x);
scanf("%s",s->customer.Identity);
scanf("%c",&x);
printf("\n");
printf("Pleaseenterthename:
");
scanf("%s",s->customer.Name);
printf("\n");
printf("PleaseenterthePrice:
");
scanf("%f",&money);
printf("\n");
s->customer.Price=money;
t=h;
while(t->next){
t=t->next;
}
t->next=s;
t=s;
s->next=NULL;
printf("插入成功!
\n");
}
//删除
voidListdelete(Linklist&h,intm)
{
intj=1;
Linklistq=h,t;
if(m==1)
{
t=h;
h=h->next;
}
else
{
while(j
=NULL)
{
q=q->next;
j++;
}
if(q->next!
=NULL&&j==m-1)
{
t=q->next;
q->next=t->next;
}
else
printf("位置参数不正确!
\n");
}
i--;
free(t);
printf("删除成功!
\n");
}
//修改
voidchange(Linklist&h,intm)
{
inta,j=1;
chars[18];
floatn;
Linklistt=h;
printf("Changecustomer'sIdentity:
1;Name:
2;Price:
3;Integral:
4\n");
scanf("%d",&a);
printf("\n");
while(j
=NULL)
{
t=t->next;
j++;
}
printf("OK!
\n");
switch(a){
case1:
printf("PleaseentertheIdentity!
");
scanf("%s",t->customer.Identity);
break;
case2:
printf("PleaseentertheName!
");
scanf("%s",t->customer.Name);
break;
case3:
printf("PleaseenterthePrice!
\n");
scanf("%f",&n);
t->customer.Price=n;
break;
case4:
printf("PleaseentertheIntegra!
\n");
scanf("%f",&n);
t->customer.Integral=n;
break;
}
printf("修改成功!
\n");
}
//计算价格,计算积分
voidincrease(Linklist&h,intm){
intn=1,j;
floatmoney;
Linklistp=h->next;
printf("Moneyisincreased?
Yes,pleaseenter1;No,pleaseenter0...");
scanf("%d",&j);
printf("\n");
while(n
=NULL)
{
p=p->next;
n++;
}
printf("Pleaseenterthemoney:
");
scanf("%f",&money);
printf("\n");
if(j)p->customer.Price=p->customer.Price+money;
elsep->customer.Price=p->customer.Price-money;
p->customer.Integral=p->customer.Price;
printf("消费号为%d\n",m);
printf("身份证为%s\n",p->customer.Identity);
printf("消费者姓名为%s\n",p->customer.Name);
printf("实际价格为%f\n",p->customer.Price);
printf("积分为%f\n",p->customer.Integral);
}
//计算打折之后的价格(积分在500至1000之间,免费1/100;1000至5000之间,免费3/100;大于5000,免费1/20)
voiddiscountsum(Linklist&h,intm){
intj=1;
Linklistp;
p=h;
while(j<=m&&p->next!
=NULL)
{
p=p->next;
j++;
}
p->customer.Integral=p->customer.Price;
if(p->customer.Integral>=500&&p->customer.Integral<=1000)
p->customer.Price=p->customer.Price/100*99;
else
if(p->customer.Integral>1000&&p->customer.Integral<=5000)
p->customer.Price=p->customer.Price/100*97;
else
p->customer.Price=p->customer.Price/20*19;
printf("消费号为%d\n",m);
printf("身份证为%s\n",p->customer.Identity);
printf("消费者姓名为%s\n",p->customer.Name);
printf("实际价格为%f\n",p->customer.Price);
printf("积分为%f\n",p->customer.Integral);
printf("打折之后价格:
%f\n",p->customer.Price);
}
intmain(){
intj=1;
Linklisth;
while(j){
printf("创立消费者消费信息,请选择1\n");
printf("增添消费者信息,请选择2\n");
printf("删除消费者信息,请选择3\n");
printf("修改消费者信息,请选择4\n");
printf("增添消费价格并计算总消费,请选择5\n");
printf("根据积分计算打折后消费总价格,请选择6\n");
printf("退出,请选择0\n");
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");
}
}
system("pause");
return0;
}
程序测试
运行程序,进入系统主菜单。
用户可以选择输入、查找、删除、修改信息或退出系统,
设计体会
数据结构课程设计的目的是,通过设计掌握数据结构课程中学到的基本理论和算法并综合运用于解决实际问题中,它是理论与实践相结合的重要过程。
设计要求学会如何对实际问题定义相关数据结构,并采用恰当的设计方法和算法解决问题,同时训练学生进行复杂程序设计的技能和培养良好的程序设计习惯。
同时,需要我们发现细小问题的眼光及解决问题的能力,更要求我们多去掌握一些课外知识点,便于我们程序编写。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 题目 客户 消费 积分 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)