本文實例為大家分享了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;}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答