#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<iostream.h>
#define ERROR 0
#define OK 1
#define OVERFLOW 0
typedef struct{
char name[10];
char lb[10];
int count;
}datatype;
typedef struct node{
datatype name;
struct node *next;
}listnode,*linklist;
int menu_select();
int linklist_init(linklist &head);
int linklist_create(linklist &head);
int linklist_insert(linklist &head);
int linklist_find(linklist head);
int linklist_delete(linklist &head);
int linklist_print(linklist head);
int menu_select()
{
int sn;
printf("\n 文具店商品管理 \n");
printf("=================================================\n");
printf(" 1.商店商品的初始状态 \n");
printf(" 2.商品的存入 \n");
printf(" 3.商品的查询 \n");
printf(" 4.商品的卖出 \n");
printf(" 5.商品的输出检索 \n");
printf(" 6.退出管理系统 \n");
printf("\n===============================================\n");
printf("选择1--6:");
for(;;)
{
scanf("%d",&sn);
if(sn<1||sn>6)
printf("输入错误,从新选择(1--6):");
else
break;
}
return sn;
}
int linklist_init(linklist &head) //初始化
{
head=(linklist)malloc(sizeof(listnode));
if(!head)
exit(OVERFLOW);
head->next=NULL;
return OK;
}
int linklist_create(linklist &head) //商品的创建
{
linklist p,rear;
int flag=0;
rear=head;
while(flag==0)
{
p=(linklist)malloc(sizeof(listnode));
printf("\n商店初始商品文具名称:");
cin>>p->name.name;
printf("\n初始文具数量:");
cin>>p-&unt;
printf("\n初始文具类别:");
cin>>p->name.lb;
p->next=NULL;
rear->next=p;
rear=p;
printf("结束初始化吗?(1/0):");
scanf("%d",&flag);
}
rear->next=NULL;
return OK;
}
int linklist_insert(linklist &head) //向商店存货(存入文具)
{
linklist p,p1,p2;
p2=head;
p2=p2->next;
p=(linklist)malloc(sizeof(listnode));
printf("输入要存货的文具名称:");
cin>>p->name.name;
printf("\n存货的文具数量:");
cin>>p-&unt;
printf("\n存货的文具类别:");
cin>>p->name.lb;
while(p2!=NULL)
{
if(strcmp(p2->name.name,p->name.name)==0)
{
p2-&unt+=p-&unt;
printf("\n存货成功!");
return OK;
}
else
{
p1=p2;
p2=p2->next;
}
}
if(p2==NULL)
{
p1->next=p;
p->next=NULL;
printf("\n存货成功!");
}
return ERROR;
}
int linklist_delete(linklist &head) //商店卖出文具
{
linklist p,t;
t=head;
t=t->next;
p=(linklist)malloc(sizeof(listnode));
printf("卖出商品的文具名称:");
cin>>p->name.name;
printf("\n想卖出多少件:");
cin>>p-&unt;
while(t!=NULL)
{
if(strcmp(t->name.name,p->name.name)==0)
{
if(t-&unt==0)
{
printf("\n此类商品已经销售完。");
return ERROR;
}
else
{
if(t-&unt<p-&unt)
{
printf("\n现存商品容量不足,无法卖出。");
return ERROR;
}
else
{
t-&unt-=p-&unt;
printf("\n此类文具卖出成功!");
return OK;
}
}
}
else
{
t=t->next;
}
}
if(t==NULL)
{
printf("\n商店没有此类文具。");
}
return ERROR;
}
int linklist_print(linklist head) //输出
{
linklist p1;
p1=head;
p1=p1->next;
printf("文具名称 文具类别 文具数量\n");
while(p1!=NULL)
{
printf("%4s\t%14s\t%20d",p1->name.name,p1->name.lb,p1-&unt);
p1=p1->next;
printf("\n");
}
return OK;
}
int linklist_find(linklist head) //查
{
linklist p,p1,p2;
p1=p2=head;
printf怎么格式化输出 p2=p2->next;
p=(linklist)malloc(sizeof(listnode));
printf("\n输入要查的文具名称:");
cin>>p->name.name;
while(p2!=NULL)
{
if(strcmp(p2->name.name,p->name.name)==0)
{
printf("\n查成功,输出如下:\n");
printf("文具名称 文具类别 文具数量\n");
printf("%4s\t%14s\t%20d",p2->name.name,p2->name.lb,p2-&unt);
return OK;
}
else
p2=p2->next;
}
printf("\n查不成功!");
return ERROR;
}
void main()
{
linklist head;
linklist_init(head);
for(;;)
{
switch(menu_select())
{
case 1: //创建
linklist_create(head);
break;
case 2: //存货
linklist_insert(head);
break;
case 3: //查询文具
linklist_find(head);
break;
case 4: //卖出文具
linklist_delete(head);
break;
case 5: //检索文具
linklist_print(head);
break;
case 6:
printf("\n谢谢光临,欢迎回顾!\n");
break;
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论