最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c語言實(shí)現(xiàn)的貨物管理系統(tǒng)實(shí)例代碼(增加刪除 查找貨物信息等功能)

 更新時(shí)間:2013年11月26日 09:50:48   作者:  
這篇文章主要介紹了c語言實(shí)現(xiàn)的貨物管理系統(tǒng),可增加刪除、查找貨物信息、顯示貨物信息、排序貨物銷量等操作,大家參考使用吧

復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>        /*屏幕操作函數(shù)庫*/

/*主管權(quán)限數(shù)據(jù)格式化*/
#define HEADER1_zg "-----------------------------貨物管理系統(tǒng)(主管)--------------------------------\n"
#define HEADER2_zg "| 編號(hào) |  名稱  | 進(jìn)價(jià) | 售價(jià) | 產(chǎn)地 | 生產(chǎn)日期 |保質(zhì)期| 庫存 | 銷量 |  收入  |\n"
#define HEADER3_zg "|------|--------|------|------|------|----------|------|------|------|--------|\n"
#define FORMAT_zg  "|%-6s|%-8s|%.2f |%.2f |%6s|%-4d%3d%3d| %4d | %4d | %4d |%.2f |\n"
#define DATA_zg p->data.numbs,p->data.name,p->data.purchase,p->data.sales,p->data.place,p->data.Date.year,p->data.Date.mouth,p->data.Date.day,p->data.days,p->data.stock,p->data.salesnumb,p->data.income
#define END_zg     "-------------------------------------------------------------------------------\n"

/*普通權(quán)限數(shù)據(jù)格式化*/
#define HEADER1_pt "----------------貨物管理系統(tǒng)(普通)--------------------\n"
#define HEADER2_pt "| 編號(hào) |  名稱  | 售價(jià) | 產(chǎn)地 | 生產(chǎn)日期 |保質(zhì)期| 銷量 |\n"
#define HEADER3_pt "|------|--------|------|------|----------|------|------|\n"
#define FORMAT_pt  "|%-6s|%-8s| %.2f|%6s|%-4d%3d%3d| %4d | %4d |\n"
#define DATA_pt p->data.numbs,p->data.name,p->data.sales,p->data.place,p->data.Date.year,p->data.Date.mouth,p->data.Date.day,p->data.days,p->data.salesnumb
#define END_pt    "--------------------------------------------------------\n"

int yhflag=0;        /*是否優(yōu)惠*/
int incomflag=0;   /*是否計(jì)算收入*/
int dateflag=0;   /*是否輸入日期*/
int saveflag=0;   /*是否需要保存*/
char zg[]="zg";
char pt[]="pt";

struct date
{
    int year;
    int mouth;
    int day;
};

/*貨物基本信息*/
struct goods
{
    char numbs[6];    /*編號(hào)*/
    char name[10];        /*名稱*/
    float purchase;        /*進(jìn)價(jià)*/
    float sales;    /*售價(jià)*/
    char place[10];    /*產(chǎn)地*/
    struct date Date;    /*生產(chǎn)日期*/
    int days;  /*保質(zhì)期*/
    int datecha; /*保質(zhì)期截止日期差*/
    int stock;    /*庫存量*/
    int  salesnumb;    /*銷量*/
    float income;    /*收入*/
};
typedef struct node
{
    struct goods data;
    struct node *next;
}Node,*Link;

/*格式化輸出主管表頭*/
void printheader_zg()
{
    printf(HEADER1_zg);
    printf(HEADER2_zg);
    printf(HEADER3_zg);
}
/*格式化輸出普通表頭*/
void printheader_pt()
{
    printf(HEADER1_pt);
    printf(HEADER2_pt);
    printf(HEADER3_pt);
}
/*格式化輸出主管表中數(shù)據(jù)*/
void printdata_zg(Node *pp)
{
    Node *p;
    p=pp;
    printf(FORMAT_zg,DATA_zg);
}
/*格式化輸出普通表中數(shù)據(jù)*/
void printdata_pt(Node *pp)
{
    Node *p;
    p=pp;
    printf(FORMAT_pt,DATA_pt);
}
/*輸出案件錯(cuò)誤信息*/
void wrong()
{
    printf("\n\n\n\n*******錯(cuò)誤:輸入錯(cuò)誤,按任意鍵繼續(xù)*******\n");
    getchar();
}
/*輸出為查找到貨物的信息*/
void Nofind()
{
    printf("\n*****無此貨物信息!*****\n");
    getchar();
}
/*主管顯示菜單*/
void Disp(Link L,char s[])
{
    Node *p;
    p=L->next;
    if (!p) /*空,則*/
    {
        printf("\n沒有錄入貨物信息\n");
        getchar();
        return ;
    }   
    printf("\n\n");
    if (strcmp(zg,s)==0)
    {
        printheader_zg();
        while (p)
        {
            printdata_zg(p);
            p=p->next;
            printf(HEADER3_zg);
        }
    }
    else
    {
        printheader_pt();
        while (p)
        {
            printdata_pt(p);
            p=p->next;
            printf(HEADER3_pt);
        }
    }

    getchar();
}
/*返回鏈表中符合要求的節(jié)點(diǎn)的指針,s[]保存用戶查找內(nèi)容,NaorNum[]保存按什么查找”name,num“*/
Node *Locate(Link L,char s[],char NaorNum[] )
{
    Node *p;
    if (strcmp(NaorNum,"num")==0)
    {
        p=L->next;
        while (p)
        {
            if (strcmp(p->data.numbs,s)==0)
                return p;
            p=p->next;
        }
    }
    else if (strcmp(NaorNum,"name")==0)
    {
        p=L->next;
        while (p)
        {
            if (strcmp(p->data.name,s)==0)
                return p;
            p=p->next;
        }
    }
    return 0;     /*未找到,返回空指針*/
}
/*平潤年判斷*/
int Year_pd(int year)
{
    int flag;
    if ((year%4==0&&year%100!=0)||year%400==0)
    {/*閏年*/
        flag=0;
    }
    else
    {/*平年*/
        flag=1;
    }
    return flag;
}
/*月份對(duì)應(yīng)的天數(shù)*/
int Day_pd(int mouth,int flag)
{
    int day;
    switch(mouth)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:day=31;break;
    case 4:
    case 6:
    case 9:
    case 11:day=30;break;
    case 2:if (flag) day=28;
           else day=29;break;
    }
    return day;
}
/*輸入字符串,并進(jìn)行驗(yàn)證,用戶的輸入通過*t輸出*/
void S_input(char *t,int lens,char *notice)
{
    char str[255];
    do
    {
        printf(notice);
        scanf("%s",str);
        if(strlen(str)>lens)
            printf("\n超過了要求長度,重新輸入\n");
    } while (strlen(str)>lens);
    strcpy(t,str);
}

int Num_input(char *notice)
{
    int a;
    do
    {
        printf(notice);
        scanf("%d",&a);
        if(a<0) printf("\n數(shù)字必須大于零\n");
    } while (a<0);
    return a;
}
/*輸入月份進(jìn)行驗(yàn)證*/
int Mou_input(char *notice)
{
    int mouth=0;
    do
    {
        printf(notice);
        scanf("%d",&mouth);
        if (mouth>12||mouth<0)
            printf("\n月份必須在(1~12)之間!\n");
    } while (mouth>12||mouth<0);
    return mouth;
}
/*輸入天數(shù)進(jìn)行驗(yàn)證*/
int Day_input(char *notice,int year,int mouth)
{
    int day=0;
    int nlimit,flag;
    flag=Year_pd(year);
    do
    {
        printf(notice);
        scanf("%d",&day);
        nlimit=Day_pd(mouth,flag);
        if (day>nlimit||day<0)
            printf("\n日期必須在(1~%d)之間!\n",nlimit);
    } while (day>nlimit||mouth<0);
    return day;
}
/*增加貨物記錄*/
void Add_goods(Link L)
{
    Node *p,*r,*s;
    char ch,flag=0,num[10];
    r=L;
    s=L->next;
    system("cls");
    Disp(L,zg);
    while (1)
    {
        while (1) /*輸入編號(hào),保證沒有被使用,若輸入為0,則推出*/
        {
            S_input(num,6,"輸入貨物編號(hào)(按‘0'返回菜單界面):");
            flag=0;
            if (strcmp(num,"0")==0) return;
            s=L->next;
            while (s) /*查詢貨物編號(hào)是否存在,若存在,要去輸入新編號(hào)*/
            {
                if (strcmp(s->data.numbs,num)==0)
                {
                    flag=1;
                    break;
                }
                s=s->next;
            }
            if (flag)
            {
                getchar();
                printf("貨物編號(hào):%s已存在,是否要重新輸入?(y/n)",num);
                scanf("%c",&ch);
                if(ch=='y'||ch=='Y')
                    continue;
                else
                    return;
            }
            else
                break;
        }
        p=(Node *)malloc(sizeof(Node));
        if (!p)
        {
            printf("\n沒有申請(qǐng)到");
            return; /*返回到主界面*/
        }
        strcpy(p->data.numbs,num);
        S_input(p->data.name,8,"名稱:");
        p->data.purchase=Num_input("進(jìn)價(jià):");
        p->data.sales=Num_input("售價(jià):");
        S_input(p->data.place,6,"產(chǎn)地:");
        p->data.Date.year=Num_input("成產(chǎn)日期:年:");
        p->data.Date.mouth=Mou_input("         月:");
        p->data.Date.day=Day_input("         日:",p->data.Date.year,p->data.Date.mouth);
        p->data.days=Num_input("保質(zhì)期(天):");
        p->data.stock=Num_input("庫存:");
        p->data.salesnumb=Num_input("銷量:");
        p->data.income=00;
        p->next=r->next;
        r->next=p; /*前插*/
    }
    return ;
}
int select(int a,int b)               /*菜單選擇*/
{
    int n;
    do
    {
        printf("\n\n");
        printf("%15s"," ");
        printf("請(qǐng)輸入一個(gè)數(shù)(%d~%d): [ ]\b\b",a,b);
        scanf("%d",&n);
    } while (n<a||n>b);
    return n;
}
/*實(shí)時(shí)計(jì)算實(shí)際收益*/
void Sum_Income(Link L)
{
    Node *p;
    p=L->next;
    while (p)
    {
        p->data.income=p->data.salesnumb*(p->data.sales-p->data.purchase);
        p=p->next;
    }
    incomflag=1;
    return ;
}
/*查詢的通用方法*/
void Sea_by_ways(Link L,Node *p,char s[])
{
    if (p)
    {
        if (strcmp(zg,s)==0)
        {
            printheader_zg();
            printdata_zg(p);
            printf(END_zg);
            printf("按任意鍵返回...");
            getchar();
        }
        else
        {
            printheader_pt();
            printdata_pt(p);
            printf(END_pt);
            printf("按任意鍵返回...");
            getchar();
        }
    }
    else
    {
        Nofind();
        getchar();
    }   
}
/*按編號(hào)或貨物名稱查詢*/
void Sea_by_name(Link L,char s[])
{
    Node *p;
    char ss[20];
    system("cls");
    S_input(ss,10,"請(qǐng)輸入要查找的貨物名稱:");
    p=Locate(L,ss,"name");
    Sea_by_ways(L,p,s);
}
void Sea_by_num(Link L,char s[])
{
    Node *p;
    char ss[20];
    system("cls");
    S_input(ss,10,"請(qǐng)輸入要查找的貨物編號(hào):");
    p=Locate(L,ss,"num");
    Sea_by_ways(L,p,s);
}
/*日期相對(duì)于本年的天數(shù)*/
int Sum_day(int year,int mouth,int day)
{
    int i,flag,days,sum=0;
    flag=Year_pd(year);
    for (i=1;i<mouth;i++)
    {
        days=Day_pd(i,flag);
        sum+=days;
    }
    return sum+day;
}
/*兩個(gè)日期差值*/
void Datecha(Link L)
{
    int year,mouth,day;
    Node *p;
    p=L->next;
    year=Num_input("今天日期:年:");
    mouth=Mou_input("月:");
    day=Day_input("日:",year,mouth);
    dateflag=1;
    if (!p)
    {
        printf("***無貨物信息,不用輸入日期***\n");
        getchar();
        return ;
    }
    else
    {
        while (p)
        {
            p->data.datecha=Sum_day(year,mouth,day)-Sum_day(p->data.Date.year,p->data.Date.mouth,p->data.Date.day);
            p=p->next;
        }
    }
}

void Dz_by_data( Link L)
{
    Node *p,*r;
    Link l;
    int year,mouth,day,count=0;
    p=L->next;
    l=(Node *)malloc(sizeof(Node));
    l->next=NULL;
    system("cls");
    if (!dateflag)
    {
        Datecha(L);
    }
    printf("| 編號(hào) |  名稱  |過期差值|\n");
    while (p)
    {
        printf("|%-6s|%-8s|  %4d  |",p->data.numbs,p->data.name,p->data.datecha);
        if (p->data.days>=p->data.datecha)
        {
            /*優(yōu)惠的標(biāo)示優(yōu)惠*/
            if (p->data.days-p->data.datecha<=10)
            {
                count++;
                p->data.sales=p->data.sales/2;
                printf("已優(yōu)惠\n");
                /*        Ltol(l,p,p->next);*/
            }
            else
            {
                printf("\n");
            }
        }
        else
        {
            printf("該商品過期,請(qǐng)刪除\n");
        }
        p=p->next;
    }

    if(!count)
    {
        printf("/n***沒有差10天過期的貨物***/n");
        getchar();
        return;
    }
    else
    {
        printf("共有%d中商品打折",count);
        yhflag=1;
        saveflag=1;
        Disp(L,zg);
    }
}
/*刪除*/
void Del_by_ways(Link L,Node *p)
{
    Node *q;
    char ch;
    if (p)
    {
        q=L;
        while(q->next!=p)
            q=q->next;
        printheader_zg();
        printdata_zg(p);
        printf(END_zg);
        getchar();
        printf("請(qǐng)確定是否要?jiǎng)h除該貨物信息(y/n):");
        scanf("%c",&ch);
        if (ch=='y'||ch=='Y')
        {
            q->next=p->next;
            free(p);
            printf("\n成功刪除該貨物信息\n");
            saveflag=1;
            getchar();
            return;
        }
        else
        {
            printf("\n沒有刪除該貨物信息\n");
            getchar();
            return;
        }
    }
    else
    {
        Nofind();
        getchar();
    }   
}
/*通過名稱刪除*/
void Del_by_name(Link L)
{
    Node *p;
    char s[20];
    system("cls");
    S_input(s,10,"請(qǐng)輸入要查刪除的貨物名稱:");
    p=Locate(L,s,"name");
    Del_by_ways(L,p);
}
/*通過編號(hào)刪除*/
void Del_by_num(Link L)
{
    Node *p;
    char s[20];
    system("cls");
    S_input(s,10,"請(qǐng)輸入要查刪除的貨物的編號(hào):");
    p=Locate(L,s,"num");
    Del_by_ways(L,p);
}


/*補(bǔ)貨信息*/
void Buhuo(Link L)
{
    Node *p,*q;
    int i=0;
    p=L->next;
    system("cls");
    if (p)
    {
        q=L->next;
        printf("|  編號(hào)  |  名稱  |庫存|銷量|剩余| \n");
        while (q)
        {
            /*統(tǒng)計(jì)庫存,銷量,剩余*/
            printf("|%-8s|%-8s|%-4d|%4d|%4d|\n",q->data.numbs,q->data.name,q->data.stock,q->data.salesnumb,q->data.stock-q->data.salesnumb);
            q=q->next;
        }
        while (p)
        {
            if ((p->data.stock-p->data.salesnumb)<100)
            {
                if (i==0)
                {
                    printf("需要補(bǔ)貨的貨物分別是\n");
                    printf("|  編號(hào)  |商品名稱|\n");
                }
                printf("|%-8s|%8s|\n",p->data.numbs,p->data.name);
                i++;
            }
            p=p->next;
        }
        if (i)
        {
            printf("共%d種貨物\n",i);
            getchar();
            return;
        }
        else
        {
            printf("沒有需要補(bǔ)充的貨物種類\n");
            getchar();
            return;
        }
    }
    else
    {
        printf("\n***沒有貨物信息***\n");
        printf("\n按任意鍵返回...\n");
        getchar();
        return ;
    }
}

void Sort_by_ways(Link L,char s[],int n)
{
    int flag=0,a;
    Node *p,*q,*lq,*fq;   /*fq記下節(jié)點(diǎn)前驅(qū),lq記下節(jié)點(diǎn)的后驅(qū),q每次冒泡遍歷,p控制遍歷,qq用來交換地址*/
    p=L->next;
    system("cls");
    while (p)
    {
        fq=L;
        q=fq->next;
        while (lq=q->next)
        {
            if (strcmp(zg,s)==0)
            {
                switch (n)
                {
                case 1:a=strcmp(q->data.name,lq->data.name);break;
                case 2:a=strcmp(q->data.numbs,lq->data.numbs);break;
                case 3:a=(q->data.salesnumb>lq->data.salesnumb);break;
                case 4:if(!incomflag) Sum_Income(L); a=(q->data.income>lq->data.income);break;
                case 5:if (!dateflag) Datecha(L);a=(q->data.datecha>lq->data.datecha);break;
                }
            }
            else
            {
                switch (n)
                {
                case 1:a=strcmp(q->data.name,lq->data.name);break;
                case 2:a=strcmp(q->data.numbs,lq->data.numbs);break;
                case 3:a=(q->data.sales>lq->data.sales);break;
                case 4:a=(q->data.salesnumb>lq->data.salesnumb);break;
                case 5:if (!dateflag) Datecha(L);a=(q->data.datecha>lq->data.datecha);break;
                }
            }

            /*if ((n==1)?(strcmp(q->data.name,lq->data.name)):(strcmp(q->data.numbs,q->data.numbs)))*/
            if(a>0)
            {
                flag=1;
                q->next=lq->next;
                lq->next=q;
                fq->next=lq;
            }
            fq=fq->next;
            q=fq->next;
        }
        if(flag==0) break;
        p=p->next;
    }
    if (strcmp(zg,s)==0)
        Disp(L,zg);
    else
        Disp(L,pt);
}

void Wb_Save(Link L)
{
    FILE *out;
    Node *p;
    int count=0;
    if ((out=fopen("d:\\Goods.txt","w"))==NULL)
    {
        printf("打開文件失敗!\n");
        getchar();
        return;
    }
    p=L->next;
    fprintf(out,HEADER1_zg);
    fprintf(out,HEADER2_zg);
    fprintf(out,HEADER3_zg);
    while (p)
    {
        fprintf(out,FORMAT_zg,DATA_zg);
        p=p->next;
        fprintf(out,HEADER3_zg);
        count++;
    }
    if (count>0)
    {
        getchar();
        printf("\n\n\n***文本文件保存完成,共%d條貨物信息保存***\n",count);
        getchar();
        saveflag=0;
    }
    else
    {
        system("cls");
        printf("沒有貨物信息,沒有貨物信息保存\n");
        getchar();
    }
    fclose(out); /*關(guān)閉此文件*/
}
void Er_Save(Link L)
{
    FILE *out;
    Node *p;
    int count=0;
    if ((out=fopen("d:\\Goods","wb"))==NULL)
    {
        printf("打開文件失?。n");
        getchar();
        return;
    }
    p=L->next;

    while (p)
    {
        if (fwrite(p,sizeof(Node),1,out))
        {
            p=p->next;
            count++;
        }
        else
        {
            break;
        }
    }
    if (count>0)
    {
        getchar();
        printf("\n\n\n***二進(jìn)制文件保存完成,共%d條貨物信息保存***\n",count);
        getchar();
        saveflag=0;
    }
    else
    {
        system("cls");
        printf("沒有貨物信息,沒有貨物信息保存\n");
        getchar();
    }
    fclose(out); /*關(guān)閉此文件*/
}
void Menu_sort_zg()
{
    system("cls");
    printf("\n\n\n");
    printf("%30s%s"," ","     排序貨物信息   \n\n");
    printf("%30s%s"," ","********功能*******\n\n");
    printf("%30s%s"," ","*      1.按名稱   *\n\n");
    printf("%30s%s"," ","*      2.按編號(hào)   *\n\n");
    printf("%30s%s"," ","*      3.按銷量*\n\n");
    printf("%30s%s"," ","*      4.按利潤*\n\n");
    printf("%30s%s"," ","*      5.按保期  *\n\n");
    printf("%30s%s"," ","*      6.返回     *\n\n");
    printf("%30s%s"," ","*      7.退出     *\n\n");
    printf("%30s%s"," ","********************\n");
}
void Menu_sort_pt()
{
    system("cls");
    printf("\n\n\n");
    printf("%30s%s"," ","     排序貨物信息   \n\n");
    printf("%30s%s"," ","********功能*******\n\n");
    printf("%30s%s"," ","*      1.按名稱   *\n\n");
    printf("%30s%s"," ","*      2.按編號(hào)   *\n\n");
    printf("%30s%s"," ","*      3.按售價(jià)   *\n\n");
    printf("%30s%s"," ","*      4.按銷量  *\n\n");
    printf("%30s%s"," ","*      5.按保期  *\n\n");
    printf("%30s%s"," ","*      6.返回     *\n\n");
    printf("%30s%s"," ","*      7.退出     *\n\n");
    printf("%30s%s"," ","********************\n");
}
void Menu_del()
{
    system("cls");
    printf("\n\n\n");
    printf("%30s%s"," ","     刪除貨物信息   \n\n");
    printf("%30s%s"," ","********功能*******\n\n");
    printf("%30s%s"," ","*      1.按名稱   *\n\n");
    printf("%30s%s"," ","*      2.按編號(hào)   *\n\n");
    printf("%30s%s"," ","*      3.返回     *\n\n");
    printf("%30s%s"," ","*      4.退出     *\n\n");
    printf("%30s%s"," ","********************\n");
}
void Menu_Sea()
{
    system("cls");
    printf("\n\n\n");
    printf("%30s%s"," ","     查詢貨物信息   \n\n");
    printf("%30s%s"," ","********功能*******\n\n");
    printf("%30s%s"," ","*      1.按名稱   *\n\n");
    printf("%30s%s"," ","*      2.按編號(hào)   *\n\n");
    printf("%30s%s"," ","*      3.返回     *\n\n");
    printf("%30s%s"," ","*      4.退出     *\n\n");
    printf("%30s%s"," ","********************\n");
}
void Menu_Qx()                   /*權(quán)限菜單*/
{
    system("cls");
    printf("\n\n\n");
    printf("%25s%s"," ","        歡迎進(jìn)入             \n");
    printf("%25s%s"," ","     貨物管理體統(tǒng)   \n\n\n");
    printf("%25s%s"," ","**********功能*********\n\n");
    printf("%25s%s"," ","*        1.主管       *\n\n");
    printf("%25s%s"," ","*        2.普通用戶   *\n\n");
    printf("%25s%s"," ","*        3.退出       *\n\n");
    printf("%25s%s"," ","***********************\n");
}
void Menu_zg()                       /*主管菜單*/
{
    system("cls");
    printf("\n\n\n");
    printf("%15s%s"," ","               貨物管理體統(tǒng)                               \n\n\n");
    printf("%15s%s"," ","*****************主管功能******************\n\n");
    printf("%15s%s"," ","*              1.錄入貨物信息             *\n");
    printf("%15s%s"," ","*              2.刪除貨物信息             *\n");
    printf("%15s%s"," ","*              3.查找貨物信息             *\n");
    printf("%15s%s"," ","*              4.顯示貨物信息             *\n");
    printf("%15s%s"," ","*              5.差10天過物信息(促銷)    *\n");
    printf("%15s%s"," ","*              6.統(tǒng)計(jì)貨物數(shù)量(補(bǔ)貨)     *\n");
    printf("%15s%s"," ","*              7.實(shí)時(shí)收益                 *\n");
    printf("%15s%s"," ","*              9.排序日期差               *\n");
    printf("%15s%s"," ","*              10.保存文件                *\n");
    printf("%15s%s"," ","*              11.返回                    *\n");
    printf("%15s%s"," ","*              12.退出                    *\n");
    printf("%15s%s"," ","*******************************************\n");
}
void Menu_pt()                        /*普通菜單*/
{
    printf("%15s%s"," ","               貨物管理體統(tǒng)                               \n\n\n");
    printf("%15s%s"," ","*****************普通用戶功能***************\n\n");
    printf("%15s%s"," ","*              1.查找貨物信息                   *\n");
    printf("%15s%s"," ","*              2.顯示貨物信息                   *\n");
    printf("%15s%s"," ","*              3.排序貨物銷量                   *\n");
    printf("%15s%s"," ","*              4.返回                           *\n");
    printf("%15s%s"," ","*              5.退出                          *\n");
    printf("%15s%s"," ","*************************************************\n");
}
void Isaveflag(Link L)
{
    char ch;
    if (saveflag)
    {
        printf("您已經(jīng)修改數(shù)據(jù)了,是否要保存退出(y/n):");
        getchar();
        scanf("%c",&ch);
        if (ch=='y'||ch=='Y')
        {
            Wb_Save(L);
            Er_Save(L);
            exit(0);
        }
        else
            exit(0);
    }
    else
        exit(0);
}
int IsPassword()                      /*密碼是否通過*/
{
    char password[7];
    char mypassword[]="123456";
    static int n=3;
    int i;
    system("cls");
    for (;n>0;n--)
    {
        switch(n)
        {
        case 1:
        case 2: printf("密碼錯(cuò)誤,您還有%d次機(jī)會(huì),請(qǐng)?jiān)佥斎耄?,n);break;
        case 3: printf("請(qǐng)輸入6位進(jìn)入主管功能的密碼:");getchar();break;
        }
        for ( i=0;i<6;i++)
        {
            password[i]=getch();
            printf("*");
        }
        getchar();
        password[6]='\0';
        if (strcmp(mypassword,password)==0)
        {
            printf("***密碼正確***");
            getchar();
            return 1;
        }
    }
    printf("恭喜你,三次都輸錯(cuò)了,無法再輸入密碼,按任意鍵返回...");
    getchar();
    return 0;
}

void Sort_goods(Link L,char s[])
{
    if (!L->next)
    {
        system("cls");
        printf("\n沒有貨物信息,無法使用排序功能\n");
        getchar();
        return;
    }
    else
    {
        if (strcmp(zg,s)==0)
        {
            system("cls");
            for (;;)
            {
                Menu_sort_zg();
                switch(select(1,7))
                {
                case 1:Sort_by_ways(L,zg,1);break;    /*名稱*/
                case 2:Sort_by_ways(L,zg,2);break;     /*編號(hào)*/
                case 3:Sort_by_ways(L,zg,3);break;     /*銷量*/
                case 4:Sort_by_ways(L,zg,4);break;     /*利潤*/
                case 5:Sort_by_ways(L,zg,5);break;     /*保期*/
                case 6:return;break;
                case 7:Isaveflag(L);break;
                }
                getchar();
            }
        }
        else
        {
            system("cls");
            for (;;)
            {
                Menu_sort_pt();
                switch(select(1,7))
                {
                case 1:Sort_by_ways(L,pt,1);break;        /*名稱*/
                case 2:Sort_by_ways(L,pt,2);break;        /*編號(hào)*/
                case 3:Sort_by_ways(L,pt,3);break;        /*售價(jià)*/
                case 4:Sort_by_ways(L,pt,4);break;        /*銷量*/
                case 5:Sort_by_ways(L,pt,5);break;        /*銷量*/
                case 6:return;break;
                case 7:Isaveflag(L);break;
                }
                getchar();
            }
        }
    }
}
void Sea_goods(Link L,char s[])
{
    if (!L->next)
    {
        system("cls");
        printf("\n***沒有貨物記錄,不能進(jìn)入查詢功能***\n");
        return ;
    }
    else
    {
        system("cls");
        for (;;)
        {
            Menu_Sea();
            switch(select(1,4))
            {
            case 1:Sea_by_name(L,s);break;
            case 2:Sea_by_num(L,s);break;
            case 3:return;break;
            case 4:Isaveflag(L);break;
            }
            getchar();
        }
    }
}
void Del_goods(Link L)
{
    if (!L->next)
    {
        system("cls");
        printf("\n***沒有貨物記錄,不能使用刪除功能***\n");
        return ;
    }
    else
    {
        system("cls");
        for (;;)
        {
            Menu_del();
            switch (select(1,4))
            {
            case 1:Del_by_name(L);break;
            case 2:Del_by_num(L);break;
            case 3:return;break;
            case 4:Isaveflag(L);break;
            }
            getchar();
        }
    }
}
void main_zg(Link L)                        /*主管功能*/
{
    system("cls");
    for (;;)
    {
        Menu_zg();
        switch (select(1,12))
        {
        case 1:Add_goods(L);saveflag=1;break;                 /*增加貨物信息*/
        case 2:Del_goods(L);break;                 /*刪除學(xué)生信息*/
        case 3:Sea_goods(L,zg);break;         /*按編號(hào)名字查詢*/
        case 4:system("cls");Disp(L,zg);break; 
        case 5:Dz_by_data(L);break;
        case 6:Buhuo(L);break;
        case 7:Disp(L,zg);Sum_Income(L);Disp(L,zg);break;
        case 9:Sort_goods(L,zg);break;
        case 10:Wb_Save(L);Er_Save(L);break;
        case 11:return;break;
        case 12:Isaveflag(L);break;
        }
        getchar();
    }
}
void main_pt(Link L)                        /*普通功能*/
{
    system("cls");
    for (;;)
    {
        Menu_pt();
        switch (select(1,5))
        {
        case 1:Sea_goods(L,pt);break;         /*按編號(hào)名字查詢*/
        case 2:system("cls");Disp(L,pt);break; 
        case 3:Sort_goods(L,pt);break;
        case 4:return;break;
        case 5:Isaveflag(L);break;
        }
        getchar();
        system("cls");
    }
}
int main()
{
    Link L;
    FILE *in;
    Node *p,*r;
    int count=0;
    L=(Node *)malloc(sizeof(Node));
    L->next=NULL;
    r=L;
    if ((in=fopen("d:\\Goods","ab+"))==NULL) /*以追加方式打開二進(jìn)制文件*/
    {
        printf("\n***打開文件失敗***\n");
        exit(0);
    }
    while (!feof(in))
    {
        p=(Node *)malloc(sizeof(Node));
        if (fread(p,sizeof(Node),1,in))
        {
            p->next=r->next;
            r->next=p;
            count++;
        }
    }
    fclose(in);
    for (;;)
    {
        Menu_Qx();
        switch (select(1,3))
        {
        case 1:if(IsPassword())
               {
                   main_zg(L);
               }
               break;
        case 2:main_pt(L);break;
        case 3:Isaveflag(L);break;
        }
        getchar();
    }
    return 0;
}

相關(guān)文章

  • C++設(shè)計(jì)模式之簡單工廠模式實(shí)例

    C++設(shè)計(jì)模式之簡單工廠模式實(shí)例

    這篇文章主要介紹了C++設(shè)計(jì)模式之簡單工廠模式實(shí)例,工廠模式有一種非常形象的描述,建立對(duì)象的類就如一個(gè)工廠,而需要被建立的對(duì)象就是一個(gè)個(gè)產(chǎn)品,需要的朋友可以參考下
    2014-09-09
  • C++實(shí)現(xiàn)屏幕截圖

    C++實(shí)現(xiàn)屏幕截圖

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)屏幕截圖功能,截圖自動(dòng)保存為png格式文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 詳細(xì)分析C++ 異常處理

    詳細(xì)分析C++ 異常處理

    這篇文章主要介紹了C++ 異常處理的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C++20中的結(jié)構(gòu)化綁定類型示例詳解

    C++20中的結(jié)構(gòu)化綁定類型示例詳解

    這篇文章主要為大家介紹了C++20中的結(jié)構(gòu)化綁定類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • C++?JSON庫?nlohmann::basic_json::array?的用法示例詳解

    C++?JSON庫?nlohmann::basic_json::array?的用法示例詳解

    nlohmann::json是一個(gè)C++的JSON庫,它提供了一種容易和直觀的方法來處理JSON數(shù)據(jù),nlohmann::json::array()是用來創(chuàng)建一個(gè)JSON數(shù)組的方法,這篇文章主要介紹了C++ JSON庫nlohmann::basic_json::array的用法,需要的朋友可以參考下
    2023-06-06
  • C++定時(shí)器實(shí)現(xiàn)和時(shí)間輪介紹

    C++定時(shí)器實(shí)現(xiàn)和時(shí)間輪介紹

    這篇文章主要介紹了C++定時(shí)器實(shí)現(xiàn)和時(shí)間輪介紹,定時(shí)器可以由很多種數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),比如最小堆、紅黑樹、跳表、甚至數(shù)組都可以,其本質(zhì)都是拿到最小時(shí)間的任務(wù),然后取出該任務(wù)并執(zhí)行,更多相關(guān)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-09-09
  • C++中運(yùn)算符 &和&&、|和|| 的詳解及區(qū)別

    C++中運(yùn)算符 &和&&、|和|| 的詳解及區(qū)別

    這篇文章主要介紹了C++中運(yùn)算符 &和&&、|和|| 的詳解及區(qū)別的相關(guān)資料,這里舉例說明該如何區(qū)別他們的不同,需要的朋友可以參考下
    2016-11-11
  • C++初學(xué)者之根據(jù)輸入的任何一個(gè)正整數(shù),輸出可能被表示的連續(xù)正整數(shù)

    C++初學(xué)者之根據(jù)輸入的任何一個(gè)正整數(shù),輸出可能被表示的連續(xù)正整數(shù)

    這篇文章主要介紹了C++初學(xué)者之根據(jù)輸入的任何一個(gè)正整數(shù),輸出可能被表示的連續(xù)正整數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • C語言掃雷排雷小游戲?qū)崿F(xiàn)全程

    C語言掃雷排雷小游戲?qū)崿F(xiàn)全程

    本篇我將帶領(lǐng)大家攻克掃雷游戲各處難點(diǎn),讓你寫掃雷不在困難,我們的掃雷游戲可以實(shí)現(xiàn)標(biāo)記雷的功能和展開一片的功能。我們將分三個(gè)文件為大家介紹,分別為test.c,game.h和game.c
    2022-05-05
  • C++ 內(nèi)聯(lián)函數(shù)詳解

    C++ 內(nèi)聯(lián)函數(shù)詳解

    內(nèi)聯(lián)函數(shù)是c++為了提高程序的運(yùn)行速度做的改進(jìn),本片文章詳細(xì)介紹了C++ 的內(nèi)聯(lián)函數(shù),本文就來詳細(xì)的介紹一下,感興趣的朋友可以了解一下
    2021-11-11

最新評(píng)論

新郑市| 崇阳县| 达日县| 称多县| 高平市| 云林县| 太仓市| 黄山市| 班戈县| 清苑县| 精河县| 德江县| 临沭县| 延吉市| 桐城市| 久治县| 宁化县| 宁化县| 石棉县| 莒南县| 濮阳县| 松溪县| 井陉县| 汝阳县| 定南县| 平凉市| 游戏| 宜章县| 泽普县| 夹江县| 房产| 永善县| 巴彦县| 辛集市| 佛坪县| 旬邑县| 沾益县| 瑞丽市| 伊吾县| 石屏县| 即墨市|