#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小时内删除。