C語言實現商品銷售系統


                                商品銷售系統


#include<stdio.h>  //頭文件
#include<string.h> //頭文件
#include<stdlib.h> //頭文件
#define M 100      //貨物種類
#define N 100      //顧客數目
struct goods       //單個貨物信息格式
{
    int  number;   //產品編號
    char name[20]; //產品名稱
    int  price1;   //進價(或利潤)
    int  price2;   //售價
    int  amount;   //數量
};
struct orderlist           //訂單格式
{
    struct goods L[M];
};
struct customer            //客戶信息內容和格式
{
    char name[20];         //姓名
    char password[6];      //服務密碼
    int count;             //訂單號
};
struct customer khl[N];    //所有客戶信息
struct goods base[M];      //庫存信息
struct orderlist odl[10*N];//訂單表
struct goods lackl[M];     //缺貨表
struct goods suml[M+1];    //銷售報表
int PP=0;                  //訂單編號
int QQ=0;                   //客戶編號    
int goodssum=0;              //貨物總數


int main()                    //主函數開始!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
{
    int SysUseWay();        //系統使用說明函數聲明
    int chushihua();       //系統初始化函數聲明
    int welcome();        //歡迎界面函數聲明
    int kh();            //客戶函數聲明
    int buyer();        //采購部函數聲明
    int manager();     //公司經理函數聲明
    int goodbye();    //歡送函數聲明
    int n,m=9;       //變量聲明
    SysUseWay();    //系統使用說明書
    chushihua();   //系統初始化
    while(m==9)   //循環三岔口
    {
    welcome();  //歡迎界面
    scanf("%d",&n);
    switch(n) //各奔東西
    {
    case 0 : ;break;
    case 1 : kh(); break;       //客戶之家
    case 2 : buyer(); break;    //采購之家
    case 3 : manager(); break;  //經理之家
    default : printf("輸入錯誤!請退出重從新輸入");
    }
    if(n==0)                   
        break;
    printf("              繼續進入主界面請按 9  退出請按0\n");
    scanf("%d",&m);
    }
    goodbye();                  //歡送界面
    return 0;
}                               //主函數結束!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                                       

int SysUseWay()                 //系統使用說明書函數定義
{
    FILE *fp;
    fp=fopen("D://商品銷售系統使用說明書.txt","w");
    fprintf(fp,"                                                  商品銷售系統使用說明書\n");
    fprintf(fp,"    作者  盧孟江    學號  13091012   西安電子科技大學軟件學院130911班   2010年10月6日\n");
    fprintf(fp,"    本銷售系統僅是一個銷售部門管理系統的的簡單模型,功能少,不太穩定,不太安全。\n");
    fprintf(fp,"    主要分為三個模塊。客戶--銷售部門--公司經理。\n");
    fprintf(fp,"    1--客戶。客戶主要是通過該系統進行訂貨。進入系統后,需要注冊,登陸。系統會自主分配\n");
    fprintf(fp,"一個服務編號給客戶,由客戶自己設定密碼。訂購之后,可以登錄查詢自己的訂貨情況.不足之處\n");
    fprintf(fp,"在於該系統是一次性的---關閉系統之后,系統會丟失一切數據。這涉及數據庫的知識,恕我現在\n");
    fprintf(fp,"無能為力。還有,每一個服務編號只能對應一個訂貨單,即客戶每定一次貨就得重新注冊一次,否\n");
    fprintf(fp,"則就會覆蓋以前的數據。\n");
    fprintf(fp,"    2--采購部門。主管倉庫,查看處理缺貨,進貨。使用該系統前,首先必須由采購部門建立倉\n");
    fprintf(fp,"庫。填寫貨物名稱,進價,售價,庫存數量。貨物編號由系統自主按序分配。接下來,采購部門需\n");
    fprintf(fp,"要經常查看是否缺貨。及時進貨。\n");
    fprintf(fp,"    3--經理只需要抽時間查看一下銷售報表。了解每一種貨物的銷售情況,以及總的銷售利潤。\n");
    fprintf(fp,"\n");
    fprintf(fp,"                             謹以此紀念我碌碌無為的大一。\n");
    fclose(fp);
    printf("................................................................................\n");
    printf("本系統使用說明書詳見於您的計算機D盤“商品銷售系統使用說明書.txt”文件。歡迎查閱 \n");
    printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    return 0;
}



int welcome()                   //歡迎界面函數定義
{
    
    printf("................................................................................\n");
    printf("\n");
    printf("                      ~~~~~~~~歡迎使用商品銷售系統~~~~~~~~\n");
    printf("\n");
    printf("..............................................................................\n");
    printf("                              公司客戶請按       1\n");
    printf("\n");
    printf("..............................................................................\n");
    printf("                              采購人員請按       2\n");
    printf("\n");
    printf("...............................................................................\n");
    printf("                              公司經理請按       3\n");
    printf("\n");
    printf("................................................................................");
    printf("                              退出主界面請按     0\n");
    printf("\n");
    printf("\n");
    printf("................................................................................\n");
    return 0;
}


int chushihua()                  //初始化函數
{
    int i=0,j=0;
    for(i=0;i<M;i++)
    {
     suml[i].number=lackl[i].number=base[i].number=-1;
     base[i].amount=0;
     base[i].price1=base[i].price2=0;
     lackl[i].amount=0;
     suml[i].price1=0;
     suml[i].amount=0;
    }
    suml[M].price1=0;
    for(i=0;i<N;i++)
    khl[i].count=-1;
    for(i=0;i<10*N;i++)
    {
        for(j=0;j<M;j++)
        {
        odl[i].L[j].number=j;
        odl[i].L[j].amount=0;
        odl[i].L[j].price1=base[j].price1;
        odl[i].L[j].price2=base[j].price2;
        }
    }
    
    return 0;
}



int goodbye()                 //歡送界面函數定義
{
    printf("                 ~~~~感謝您使用商品銷售系統~~~~\n");
    printf(".........................................................................\n");
    printf("作者    盧孟江     學號    13091012    軟件學院 130911班\n");
    printf(".........................................................................\n");
    printf("\n");
    printf(".........................................................................\n");
    printf("由於時間倉促,能力有限,系統不是很完美,如有問題敬請原諒。歡迎垂詢15109281415\n");
    printf(".........................................................................\n");
    return 0;
}
int buyer()                 //采購函數
{
    int welcomebuyer();     //歡迎函數
    int buildbaser();       //倉庫建設
    int solvelack();        //查詢缺貨情況
    int chackbase();        //查詢倉庫情況
    int n;
    int m=9;
    while(m==9)             //循環三岔口
    {
    welcomebuyer();             //歡迎歡迎
    scanf("%d",&n);             //各奔東西
    switch(n)
    {
    case 0 : ;break;            //退出
    case 1: solvelack();break;  //查缺貨
    case 2: buildbaser();break; //建設倉庫
    case 3: chackbase();break;  //檢查倉庫
    default :printf("輸入錯誤!\n");
    }
    if(n==0)
        break;
    printf("              繼續采購請按 9  否則請按0\n");
    scanf("%d",&m);
    }
    return 0;
}
    

int welcomebuyer()
{
    printf("................................................................................\n");
    printf("\n");
    printf("                      ~~~~~~~~歡迎來到采購之家~~~~~~~~\n");
    printf("\n");
    printf("..............................................................................\n");
    printf("                              處理缺貨                請按   1\n");
    printf("\n");
    printf("..............................................................................\n");
    printf("                              進貨                    請按   2\n");
    printf("\n");
    printf("...............................................................................\n");
    printf("                              查詢當前存貨情況        請按   3\n");
    printf("\n");
    printf("................................................................................");
    printf("                              退出采購                請按   0\n");
    printf("\n");
    printf("\n");
    printf("................................................................................\n");    
return 0;
}


int buildbaser()                //采購函數--進貨函數
{
    int i=0;
    printf("            若想停止進貨,請在貨物數量上輸入 0\n\n");
    for(i=0;i<M;i++)
    {
        printf("\n貨物名稱:");
        scanf("%s",base[i].name);
        base[i].number=i;
        printf("\n貨物數量:");
        scanf("%d",&base[i].amount);
        if(base[i].amount<=0){
            base[i].amount=0;
            break;
        }
        goodssum+=base[i].amount;
        printf("\n貨物進價:");
        scanf("%d",&base[i].price1);
        printf("\n貨物售價:");
        scanf("%d",&base[i].price2);
        }
    return 0;
}


int chackbase()                //采購函數---查詢當前存貨函數
{
    int i=0;
    printf("................................................................................\n");
    if(goodssum==0)
    {
        printf("           倉庫沒貨!!!         請采購部門及時進貨!!!\n");
        return 0;
    }
    for(i=0;i<M;i++)
    {
        if(base[i].amount>0){
              printf("................................................................................\n");
              printf("貨物編號  貨物名稱             貨物數量          進價       售價\n");
              printf(" %3d      %-20s %6d          %6d     %6d \n",base[i].number,base[i].name,base[i].amount,base[i].price1,base[i].price2);
              printf("................................................................................\n");
        }
        else
            continue;
    }
    printf("................................................................................\n");
    return 0;
}



int solvelack()                //采購函數--處理缺貨函數
{
    int i=0,k=0;
    int printlack();           //采購函數--處理缺貨函數--查看函數聲明
    int supplement();          //采購函數--處理缺貨函數--添貨函數聲明
    printlack();               //查看是否缺貨
    printf("           如果需要進貨,請按1  ; 否則,請按0   \n");
    scanf("%d",&k);
    switch(k)
    {
    case 1:supplement();break;
    case 0:;break;
    default :printf("輸入錯誤!\n");
    }
    return 0;
}
int printlack()                //采購函數--處理缺貨函數--查看函數定義
{
    int i=0,count=0;
    if(goodssum==0){
          printf("                  !!!倉庫沒貨!!!請采購人員及時進貨!!!\n");
          return 0;
          }
    printf("................................................................................\n");
    for(i=0;i<M;i++)
    {
        if(lackl[i].amount==0){
            count++;
            continue;
         }
        else{
         printf("................................................................................\n");
         printf("貨物編號  貨物名稱             缺貨數量\n");
         printf(" %3d      %-20s %6d          \n",lackl[i].number,base[i].name,lackl[i].amount);
        }
    }
    printf("................................................................................\n");
    if(count==M)
        printf("              ~~~不缺~~~貨物充足~~~\n");
    else 
        printf("                    缺!   缺!   缺!\n");
return 0;
}
int supplement()              //采購函數--處理缺貨函數--添貨函數定義
{
    int i=0,j=1;
    int printlack();
    printlack();
    printf("     若想停止進貨,請在貨物數量上輸入0\n");
    while(j>0)
    {
        printf("產品編號\n");
        scanf("%d",&i);
        while(i>=M){
        printf("此貨物不存在,請重新輸入\n");
        scanf("%d",&i);}
        base[i].number=i;
        printf("產品名稱:\n");
        scanf("%s",base[i].name);
        printf("進貨數量:\n");
        scanf("%d",&j);
        if(j>0){
           base[i].amount+=j;
           goodssum+=j;
        }
        else 
            break;
        printf("\n貨物進價:");
        scanf("%d",&base[i].price1);
        printf("\n貨物售價:");
        scanf("%d",&base[i].price2);
    }
    return 0;
}



int kh()                          //客戶函數
{

int login();                      //客戶函數--登陸函數聲明
int registe();                    //客戶函數--注冊函數聲明
int welcomekh();                  //客戶函數--歡迎函數聲明
int searchkh(int falg);           //客戶函數--查詢訂貨情況的函數聲明
int order(int falg);              //客戶函數--訂貨函數聲明
int i,k=0,flag=0;
int n=9,m=9;
welcomekh();                     //歡迎歡迎
while(m==9)                      //登陸?注冊循環二岔路
{
printf("        登陸請按1,          注冊請按2,          否則請按 0\n");                    
scanf("%d",&i);                  
switch(i)
{
case 0 : ;break;
case 1 : flag=login(); break;
case 2 : registe(); break;
default :printf("輸入錯誤!\n");
}
if(i==0)
        break;
printf("           登陸或注冊請按 9  否則請按0\n");
scanf("%d",&m);
}

while(n==9)                      //訂購?查詢循環二岔路
{
printf("         查詢請按 1,   訂購請按 2,      否則請按 0\n");
scanf("%d",&i);
switch(i)
{
case 0 : ;break;
case 1 : searchkh(flag); break;
case 2 : order(flag); break;
default :printf("輸入錯誤!\n");
}
if(i==0)
    break;
printf("           繼續查詢或訂購請按 9  否則請按0\n");
scanf("%d",&n);
}
return 0;
}


int welcomekh()                    //客戶函數---歡迎函數定義
{ 
  
    printf("................................................................................\n");
    printf("\n");
    printf("                      ~~~~~~~~歡迎來到客戶之家~~~~~~~~\n");
    printf("\n");
    printf("..............................................................................\n");
    return 0;
}


int login()                       //客戶函數---登陸函數定義
{
int n,count=0;
char password[6];
printf("-------------------請輸入服務編號-----------------------\n");
scanf("%d",&n);
printf("-------------------請輸入六位密碼-----------------------\n");
scanf("%s",password);
while(strcmp(password,khl[n].password))
{
    printf("~~~~~~~~~~~~~~~請重新輸入六位密碼~~~~~~~~~~~~~~~~~~~~\n");
    printf("\n");
    printf("               退出登陸,請輸入123456\n");
    scanf("%s",password);
    if(!strcmp(password,"123456"))
        break;
}
if(!strcmp(password,"123456"))
return 0;
else 
return n;
}


int registe()                      //客戶函數---注冊函數定義
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~您的服務編號是: %d ,請你一定要記牢您! ~~~~~~~~~~~~~~~~~~~~~~~~~\n",QQ);
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~請輸入您的用戶名:~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
scanf("%s",khl[QQ].name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~請輸入六位密碼:~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
scanf("%s",khl[QQ].password);
QQ++;
return 0;
}


int searchkh(int flag)             //客戶函數---查詢函數定義
{
int n,i=0;
n=flag;
printf("................................................................................\n");
printf("               Hello   %s   您的服務編號是: %d\n",khl[n].name,n);
printf("................................................................................\n");
if(khl[n].count!=-1){
    for(i=0;i<M;i++){
        if(odl[khl[n].count].L[i].amount==0)
            i++;
        else{
             printf("................................................................................\n");
             printf("貨物編號  貨物名稱             訂貨數量          單價\n");
             printf(" %3d      %-20s %6d          %6d\n",base[i].number,base[i].name,odl[khl[n].count].L[i].amount,base[i].price2);
             printf("................................................................................\n");
        }
           
    }
}
else{
      printf("\n");
      printf("................................................................................\n");
      printf("                                您當前沒有訂貨。                                \n");
      printf("................................................................................\n");
}
printf("................................................................................\n");
return 0;
}



int order(int flag)              //客戶函數---訂購函數
{
int i=0,k=0,m=0,n=0,count=0;
printf("\n");
n=flag;
printf("貨物編號  貨物名稱               售價\n");
printf("\n");
for(i=0;i<M;i++){
    if(base[i].number==-1){
        count++;
        continue;}
    else
      printf(" %3d      %-20s %6d\n",base[i].number,base[i].name,base[i].price2);
}
if(count==M)
{
    printf("倉庫現在沒貨,請稍后再來。麻煩您通知采購部門及時補貨。。。謝謝。。。\n");
    return 0;
}
printf("請輸入產品編號和數量,若想結束,在訂購數量上輸入 0 \n");
printf("產品編號\n");
scanf("%d",&k);
while((k>=M)||(base[k].number==-1)){
    printf("此貨物不存在,請重新輸入\n");
    scanf("%d",&k);}
printf("數量\n");
scanf("%d",&m);
while(m>0)
{
    if(base[k].amount<m)
    {
    odl[PP].L[k].amount=base[k].amount;
    base[k].amount=0;
    printf("存貨不足,缺 %d 個,先賣給您%d個,剩下的請您稍后重新注冊服務編號再預定!同時麻煩您通知采購部門及時補貨。。。謝謝。。。\n",odl[PP].L[k].amount-base[k].amount,base[k].amount);
    lackl[k].amount+=(m-base[k].amount);
    }
    else{
        odl[PP].L[k].amount=m;
        base[k].amount-=m;
    }
    goodssum-=odl[PP].L[k].amount;
    suml[k].price1+=(odl[PP].L[k].amount*(base[k].price2-base[k].price1));
    suml[M].price1+=suml[k].price1;
    suml[k].amount+=odl[PP].L[k].amount;
    printf("產品編號\n");
    scanf("%d",&k);
    while((k>=M)||(base[k].number==-1)){
    printf("此貨物不存在,請重新輸入\n");
    scanf("%d",&k);}
    printf("訂購數量\n");
    scanf("%d",&m);
}
khl[n].count=PP;
PP++;
return 0;
}

int manager()                    //經理函數定義
{

    int i=0;
    for(i=0;i<M;i++)
    {
     if(suml[i].amount==0)
         i++;
     else{
              printf("................................................................................\n");
              printf("貨物編號  貨物名稱           該貨物利潤\n");
              printf(" %3d      %-20s %6d          \n",suml[i].number,base[i].name,suml[i].price1);
              printf("................................................................................\n");

     }
       
    }
    printf("\n--------------------總貨量為  %d  個-----------------------------\n",goodssum);
    printf("\n--------------------總利潤為  %d  美元-----------------------------\n",suml[M].price1);
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM