需要实现以下基本操作:
从键盘输入电视机的信息,建立电视机链表。
从键盘输入电视机的信息,实现电视机查询操作。
从键盘输入电视机的信息,实现电视机入库操作。
从键盘输入电视机的信息,实现电视机出库操作。
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int sum= 0;
typedef struct TV
{
char name[11];//名字
double price;//价格
char factory[21];//出厂商
double size; //尺寸
int warranty;//保修时间
}TV;
typedef struct Sqstack
{
TV *top,*base;
int stacksize;
}Sqstack;
void InitStack(Sqstack &s)
{
s.base =( TV *)malloc(100*sizeof(TV));
s.top = s.base;
s.stacksize = 100;
}
void Push(Sqstack &s)
{
if(s.top-s.base>=s.stacksize)
{
s.base = (TV *)realloc(s.base,(s.stacksize+10)*sizeof(TV));
s.top = s.base + s.stacksize;
s.stacksize+=10;
}
TV e;
printf("请输入电视机参数\n");
printf("电视机名字:");
cin>>e.name;
printf("电视机尺寸:");
cin>>e.size;
printf("电视机价格:");
cin>>e.price;
printf("电视机出厂商:");
cin>>e.factory;
printf("电视机保修时间(年份):");
cin>>e.warranty;
*s.top++= e;
sum++;
printf("%s 入库成功!............ ",e.name);
}
void Pop(Sqstack &s)
{
if(sum==0)
printf("暂无库存!");
else
{
TV e;
e = *--s.top;
sum--;
printf("\n第一台电视:%s 出库成功!.......... ",e.name);
}
}
void mean()
{
printf("\n******************************\n");
printf("*** 电视机系统菜单 ***\n");
printf("*** 1.入库 ***\n");
printf("*** 2.出库 ***\n");
printf("*** 3.查询 ***\n");
printf("*** 4.清屏 ***\n");
printf("*** 0.退出 ***\n");
printf("*** 实时库内电视机数量:%d ***\n",sum);
printf("******************************");
printf("请输入执行操作:");
}
int query(Sqstack &s)
{
if(sum==0)
{
printf("查询失败,暂无库存!");
return 0;
}
else
{
char name[11];
Sqstack q;
printf("请输入该电视机名字:");
cin>>name;
q=s;
while(q.base!=q.top--)
{
TV e = *q.top;
if(strcmp(e.name,name)==0)
{
printf("\n%s电视机参数为:",e.name);
printf("\n电视机名字:%s",e.name);
printf("\n电视机尺寸:%.1f",e.size);
printf("\n电视机价格:%.1f",e.price);
printf("\n电视机出厂商:%s",e.factory);
printf("\n电视机保修时间(年份):%d",e.warranty);
return 1;
}
}
printf("查询失败,暂无库存!....");
return 0;
}
}
int main()
{
Sqstack s;
InitStack(s);
while(1)
{
mean();
int x;
cin>>x;
switch(x)
{
case 1:Push(s);break;
case 2:Pop(s);break;
case 3:query(s);break;
case 4:system("Cls");break;
case 0:exit(0);
}
}
return 0;
}