淘宝卖家购物模拟系统VC

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北工业大学计算机软件技术基础(VC)
课程设计任务书
一、题目:淘宝买家购物模拟系统
#include<iostream.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
typedef struct shang
{
char good[30]; //商品名字
int price; //价格
int num; //商品数量
int sales; //销量
int score; //评分的高低
int popularity; //人气
};
typedef struct goods //商店商品和商品总个数
{
int num;
struct shang elem[100];
}Goods;
typedef struct stack //用于存消费者已经购买商品的链队{
char elem[30];
int num;
int price;
struct stack *next;
}stack,*Stack;
void initstack(Stack *s) //链队的初始化
{
*s=new stack;
(*s)->next=NULL;
}
int pushstack(Stack *s,int n,int m,Goods g) //买入商品
{
Stack p;
p=new stack;
strcpy(p->elem,g.elem[n].good);
p->num=m;
p->price=g.elem[n].price;
p->next=(*s)->next;
(*s)->next=p;
return 1;
}
int init(Goods *g) //商品的初始化
{
cout<<"\t现在初始化商品\n";
cout<<"\t输入所有商品个数\n";
cin>>"%d",&g->num;
cout<<"\t请依次输入%d个商品的名字,价格,数量,销量,评分和人气\n\n",g->num;
for(int i=1;i<=g->num;i++)
{
cout<<"\t现在请输入第%d个商品的名字,价格,数量,销量,评分和人气\n",i;
cin>>"%s%d%d%d%d%d",g->elem[i].good,&g->elem[i].price,&g->elem[i].num,&g->elem[ i].sales,&g->elem[i].score,&g->elem[i].popularity;
}
return 1;
}
void sort1(Goods *g) //按销售量排序
{
char ch[30];
int a;
for(int i=1;i<=g->num;i++) //冒泡法排序
for(int j=1;j<=g->num-i;j++)
if(g->elem[j].sales>g->elem[j+1].sales)
{
strcpy(ch,g->elem[j].good);
strcpy(g->elem[j].good,g->elem[j+1].good);
strcpy(g->elem[j+1].good,ch);
a=g->elem[j].sales;
g->elem[j].sales=g->elem[j+1].sales;
g->elem[j+1].sales=a;
a=g->elem[j].score;
g->elem[j].score=g->elem[j+1].score;
g->elem[j+1].score=a;
a=g->elem[j].popularity;
g->elem[j].popularity=g->elem[j+1].popularity;
g->elem[j+1].popularity=a;
a=g->elem[j].num;
g->elem[j].num=g->elem[j+1].num;
g->elem[j+1].num=a;
a=g->elem[j].price;
g->elem[j].price=g->elem[j+1].price;
}
}
void sort2(Goods *g) //按评分排序{
char ch[30];
int a;
for(int i=1;i<=g->num;i++)
for(int j=1;j<=g->num-i;j++)
if(g->elem[j].score>g->elem[j+1].score)
{
strcpy(ch,g->elem[j].good);
strcpy(g->elem[j].good,g->elem[j+1].good);
strcpy(g->elem[j+1].good,ch);
a=g->elem[j].sales;
g->elem[j].sales=g->elem[j+1].sales;
g->elem[j+1].sales=a;
a=g->elem[j].score;
g->elem[j].score=g->elem[j+1].score;
g->elem[j+1].score=a;
a=g->elem[j].popularity;
g->elem[j].popularity=g->elem[j+1].popularity;
g->elem[j+1].popularity=a;
a=g->elem[j].num;
g->elem[j].num=g->elem[j+1].num;
g->elem[j+1].num=a;
a=g->elem[j].price;
g->elem[j].price=g->elem[j+1].price;
g->elem[j+1].price=a;
}
}
void sort3(Goods *g) //按人气排序{
char ch[30];
int a;
for(int i=1;i<=g->num;i++)
for(int j=1;j<=g->num-i;j++)
if(g->elem[j].popularity>g->elem[j+1].popularity)
{
strcpy(ch,g->elem[j].good);
strcpy(g->elem[j].good,g->elem[j+1].good);
strcpy(g->elem[j+1].good,ch);
a=g->elem[j].sales;
g->elem[j].sales=g->elem[j+1].sales;
a=g->elem[j].score;
g->elem[j].score=g->elem[j+1].score;
g->elem[j+1].score=a;
a=g->elem[j].popularity;
g->elem[j].popularity=g->elem[j+1].popularity;
g->elem[j+1].popularity=a;
a=g->elem[j].num;
g->elem[j].num=g->elem[j+1].num;
g->elem[j+1].num=a;
a=g->elem[j].price;
g->elem[j].price=g->elem[j+1].price;
g->elem[j+1].price=a;
}
}
void PreOrder(Goods g,Stack *s) //买入商品时的流程
{
int n,x,m,f;
cout<<"\t目前本店所有商品列表如下\n";
cout<<"\t序号\t名字\t价钱\t数量\t销量\t评分\t人气\n\n";
for(int i=1;i<=g.num;i++)
cout<<"\t %d \t%s\t %d\t %d\t %d\t %d\t %d\n\n",i,g.elem[i].good,g.elem[i].price,g.elem[i].num,g.elem[i].sales, g.elem[i].score,g.elem[i].popularity;
cout<<"\t请输入您想具体查看的商品\n";
cin>>"%d",&n;
cout<<"\t这个商品所有信息如下\n";
cout<<"\t序号\t名字\t价钱\t数量\t销量\t评分\t人气\n\n";
cout<<"\t %d \t%s\t %d\t %d\t %d\t %d\t %d\n\n",n,g.elem[n].good,g.elem[n].price,g.elem[n].num,g.elem[n].sal es,g.elem[n].score,g.elem[n].popularity;
cout<<"\t您是否想购买此商品,是----1,否----0\n";
cin>>"%d",&x;
if(x)
{
cout<<"\t输入购买数量,数量小于%d\n",g.elem[n].num;
cin>>"%d",&m;
if(m<=g.elem[n].num) //防止第一次输入数量太大
{
if(pushstack(s,n,m,g))
{
cout<<"\t购买成功\n";
g.elem[n].sales++; //销售量加一
g.elem[n].popularity++; //人气加一
cout<<"\t请打分\n";
cin>>"%d",&f;
g.elem[n].score=(g.elem[n].score*(g.elem[n].sales-1)+f)%g.elem[n].sales; //得分重新计算
}
}
else
{
cout<<"\t数量不够,请重新输入\n";
cin>>"%d",&m;
if(pushstack(s,n,m,g))
{
cout<<"\t购买成功\n";
g.elem[n].sales++;
g.elem[n].popularity++;
cout<<"\t请打分\n";
cin>>"%d",&f;
g.elem[n].score=(g.elem[n].score*(g.elem[n].sales-1)+f)%g.elem[n].sales;
}
}
}
}
void choose() //界面
{
cout<<"\t\t#####################################\n";
cout<<"\t\t### *****1、查看商品******* ###\n";
cout<<"\t\t### \t\t\t ###\n";
cout<<"\t\t### *****2、查看已买商品****** ###\n";
cout<<"\t\t### \t\t\t ###\n";
cout<<"\t\t### *****3、退货********* ###\n";
cout<<"\t\t### \t\t\t ###\n";
cout<<"\t\t### *****4、结账********* ###\n";
cout<<"\t\t### \t\t\t ###\n";
cout<<"\t\t### *****5、充值********* ###\n";
cout<<"\t\t### \t\t\t ###\n";
cout<<"\t\t### *****6、查看余额******* ###\n";
cout<<"\t\t### \t\t\t ###\n";
cout<<"\t\t### *****0、退出******* ###\n";
cout<<"\t\t### \t\t\t ###\n";
cout<<"\t\t#####################################\n";
}
int putstack(Stack *s) //查看已买商品
{
Stack p;
p=(*s)->next;
if(!p) //无商品时直接跳出{
cout<<"\t您已无商品\n";
return 0;
}
cout<<"\t您已购买如下商品\n";
cout<<"\t 序号名字数量\n";
while(p)
{
cout<<"\t%5d %s %3d\n",i++,p->elem,p->num;
p=p->next;
}
return 1;
}
int back(Stack *s) //退货
{
Stack p;
p=(*s)->next;
char a[30];
if(putstack(s))
{
cout<<"\t输入想退的货的名字\n";
cin>>"%s",a;
if(strcmp(p->elem,a)==0)
{
(*s)=p;
return 1;
}
while(p)
{
if(p->next&&strcmp(p->next->elem,a)==0)
p->next=p->next->next;
p=p->next;
}
}
else //无商品时直接跳出cout<<"\n\t无商品可退\n\n";
}
void checkout(Stack *s,int *money) //结账
{
Stack p;
int a=0;
while(p)
{
a=(p->num)*(p->price)+a;
p=p->next;
}
*money=*money-a;
}
void main()
{
int money;
int x,n,m;
Goods g;
Stack s;
initstack(&s);
cout<<"\t输入余额\n";
cin>>"%d",&money;
if(init(&g))
cout<<"\t初始化成功,请按任意键继续\n";
while(x)
{
switch(x)
{
case 1:
cout<<"\t输入你想查看的排序方式,按销量-----1,按评分------2,按人气------3\n\n";
cin>>"%d",&n;
switch(n)
{
case 1:
sort1(&g);
PreOrder(g,&s);
break;
case 2:
sort2(&g);
PreOrder(g,&s);
break;
case 3:
sort3(&g);
PreOrder(g,&s);
break;
}
cout<<"\t是否继续,是-----1,否----0\n\n";
cin>>"%d",&n;
while(n)
{
PreOrder(g,&s);
cout<<"\t是否继续,是-----1,否----0\n\n";
cin>>"%d",&n;
}
break;
case 2:
putstack(&s);
break;
case 3:
back(&s);
break;
case 4:
checkout(&s,&money);
break;
case 5:
cout<<"\t输入要充的值\n";
cin>>"%d",&m;
money=money+m;
break;
case 6:
cout<<"\t余额是%5d元\n",money;
break;
case 0:
exit(0);
break;
}
cout<<"\n\t\t按任意键继续\n";
if(getch())
{
system("cls");
choose();
}
cin>>"%d",&x;
}
}。

相关文档
最新文档