C語言商品銷售系統(tǒng)源碼分享
更新時(shí)間:2018年02月26日 09:59:44 投稿:lijiao
這篇文章主要為大家分享了C語言商品銷售系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了C語言商品銷售系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h> //頭文件
#include<string.h> //頭文件
#include<stdlib.h> //頭文件
#define M 100 //貨物種類
#define N 100 //顧客數(shù)目
struct goods //單個(gè)貨物信息格式
{
int number; //產(chǎn)品編號(hào)
char name[20]; //產(chǎn)品名稱
int price1; //進(jìn)價(jià)(或利潤(rùn))
int price2; //售價(jià)
int amount; //數(shù)量
};
struct orderlist //訂單格式
{
struct goods L[M];
};
struct customer //客戶信息內(nèi)容和格式
{
char name[20]; //姓名
char password[6]; //服務(wù)密碼
int count; //訂單號(hào)
};
struct customer khl[N]; //所有客戶信息
struct goods base[M]; //庫(kù)存信息
struct orderlist odl[10*N];//訂單表
struct goods lackl[M]; //缺貨表
struct goods suml[M+1]; //銷售報(bào)表
int PP=0; //訂單編號(hào)
int QQ=0; //客戶編號(hào)
int goodssum=0; //貨物總數(shù)
int main() //主函數(shù)開始!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
int SysUseWay(); //系統(tǒng)使用說明函數(shù)聲明
int chushihua(); //系統(tǒng)初始化函數(shù)聲明
int welcome(); //歡迎界面函數(shù)聲明
int kh(); //客戶函數(shù)聲明
int buyer(); //采購(gòu)部函數(shù)聲明
int manager(); //公司經(jīng)理函數(shù)聲明
int goodbye(); //歡送函數(shù)聲明
int n,m=9; //變量聲明
SysUseWay(); //系統(tǒng)使用說明書
chushihua(); //系統(tǒng)初始化
while(m==9) //循環(huán)三岔口
{
welcome(); //歡迎界面
scanf("%d",&n);
switch(n) //各奔東西
{
case 0 : ;break;
case 1 : kh(); break; //客戶之家
case 2 : buyer(); break; //采購(gòu)之家
case 3 : manager(); break; //經(jīng)理之家
default : printf("輸入錯(cuò)誤!請(qǐng)退出重從新輸入");
}
if(n==0)
break;
printf(" 繼續(xù)進(jìn)入主界面請(qǐng)按 9 退出請(qǐng)按0\n");
scanf("%d",&m);
}
goodbye(); //歡送界面
return 0;
} //主函數(shù)結(jié)束!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
int SysUseWay() //系統(tǒng)使用說明書函數(shù)定義
{
FILE *fp;
fp=fopen("D://商品銷售系統(tǒng)使用說明書.txt","w");
fprintf(fp," 商品銷售系統(tǒng)使用說明書\n");
fprintf(fp," 作者 盧孟江 學(xué)號(hào) 13091012 西安電子科技大學(xué)軟件學(xué)院130911班 2010年10月6日\(chéng)n");
fprintf(fp," 本銷售系統(tǒng)僅是一個(gè)銷售部門管理系統(tǒng)的的簡(jiǎn)單模型,功能少,不太穩(wěn)定,不太安全。\n");
fprintf(fp," 主要分為三個(gè)模塊??蛻?-銷售部門--公司經(jīng)理。\n");
fprintf(fp," 1--客戶。客戶主要是通過該系統(tǒng)進(jìn)行訂貨。進(jìn)入系統(tǒng)后,需要注冊(cè),登陸。系統(tǒng)會(huì)自主分配\n");
fprintf(fp,"一個(gè)服務(wù)編號(hào)給客戶,由客戶自己設(shè)定密碼。訂購(gòu)之后,可以登錄查詢自己的訂貨情況.不足之處\n");
fprintf(fp,"在于該系統(tǒng)是一次性的---關(guān)閉系統(tǒng)之后,系統(tǒng)會(huì)丟失一切數(shù)據(jù)。這涉及數(shù)據(jù)庫(kù)的知識(shí),恕我現(xiàn)在\n");
fprintf(fp,"無能為力。還有,每一個(gè)服務(wù)編號(hào)只能對(duì)應(yīng)一個(gè)訂貨單,即客戶每定一次貨就得重新注冊(cè)一次,否\n");
fprintf(fp,"則就會(huì)覆蓋以前的數(shù)據(jù)。\n");
fprintf(fp," 2--采購(gòu)部門。主管倉(cāng)庫(kù),查看處理缺貨,進(jìn)貨。使用該系統(tǒng)前,首先必須由采購(gòu)部門建立倉(cāng)\n");
fprintf(fp,"庫(kù)。填寫貨物名稱,進(jìn)價(jià),售價(jià),庫(kù)存數(shù)量。貨物編號(hào)由系統(tǒng)自主按序分配。接下來,采購(gòu)部門需\n");
fprintf(fp,"要經(jīng)常查看是否缺貨。及時(shí)進(jìn)貨。\n");
fprintf(fp," 3--經(jīng)理只需要抽時(shí)間查看一下銷售報(bào)表。了解每一種貨物的銷售情況,以及總的銷售利潤(rùn)。\n");
fprintf(fp,"\n");
fprintf(fp," 謹(jǐn)以此紀(jì)念我碌碌無為的大一。\n");
fclose(fp);
printf("................................................................................\n");
printf("本系統(tǒng)使用說明書詳見于您的計(jì)算機(jī)D盤“商品銷售系統(tǒng)使用說明書.txt”文件。歡迎查閱 \n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
return 0;
}
int welcome() //歡迎界面函數(shù)定義
{
printf("................................................................................\n");
printf("\n");
printf(" ~~~~~~~~歡迎使用商品銷售系統(tǒng)~~~~~~~~\n");
printf("\n");
printf("..............................................................................\n");
printf(" 公司客戶請(qǐng)按 1\n");
printf("\n");
printf("..............................................................................\n");
printf(" 采購(gòu)人員請(qǐng)按 2\n");
printf("\n");
printf("...............................................................................\n");
printf(" 公司經(jīng)理請(qǐng)按 3\n");
printf("\n");
printf("................................................................................");
printf(" 退出主界面請(qǐng)按 0\n");
printf("\n");
printf("\n");
printf("................................................................................\n");
return 0;
}
int chushihua() //初始化函數(shù)
{
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() //歡送界面函數(shù)定義
{
printf(" ~~~~感謝您使用商品銷售系統(tǒng)~~~~\n");
printf(".........................................................................\n");
printf("作者 盧孟江 學(xué)號(hào) 13091012 軟件學(xué)院 130911班\n");
printf(".........................................................................\n");
printf("\n");
printf(".........................................................................\n");
printf("由于時(shí)間倉(cāng)促,能力有限,系統(tǒng)不是很完美,如有問題敬請(qǐng)?jiān)?。歡迎垂詢15109281415\n");
printf(".........................................................................\n");
return 0;
}
int buyer() //采購(gòu)函數(shù)
{
int welcomebuyer(); //歡迎函數(shù)
int buildbaser(); //倉(cāng)庫(kù)建設(shè)
int solvelack(); //查詢?nèi)必浨闆r
int chackbase(); //查詢倉(cāng)庫(kù)情況
int n;
int m=9;
while(m==9) //循環(huán)三岔口
{
welcomebuyer(); //歡迎歡迎
scanf("%d",&n); //各奔東西
switch(n)
{
case 0 : ;break; //退出
case 1: solvelack();break; //查缺貨
case 2: buildbaser();break; //建設(shè)倉(cāng)庫(kù)
case 3: chackbase();break; //檢查倉(cāng)庫(kù)
default :printf("輸入錯(cuò)誤!\n");
}
if(n==0)
break;
printf(" 繼續(xù)采購(gòu)請(qǐng)按 9 否則請(qǐng)按0\n");
scanf("%d",&m);
}
return 0;
}
int welcomebuyer()
{
printf("................................................................................\n");
printf("\n");
printf(" ~~~~~~~~歡迎來到采購(gòu)之家~~~~~~~~\n");
printf("\n");
printf("..............................................................................\n");
printf(" 處理缺貨 請(qǐng)按 1\n");
printf("\n");
printf("..............................................................................\n");
printf(" 進(jìn)貨 請(qǐng)按 2\n");
printf("\n");
printf("...............................................................................\n");
printf(" 查詢當(dāng)前存貨情況 請(qǐng)按 3\n");
printf("\n");
printf("................................................................................");
printf(" 退出采購(gòu) 請(qǐng)按 0\n");
printf("\n");
printf("\n");
printf("................................................................................\n");
return 0;
}
int buildbaser() //采購(gòu)函數(shù)--進(jìn)貨函數(shù)
{
int i=0;
printf(" 若想停止進(jìn)貨,請(qǐng)?jiān)谪浳飻?shù)量上輸入 0\n\n");
for(i=0;i<M;i++)
{
printf("\n貨物名稱:");
scanf("%s",base[i].name);
base[i].number=i;
printf("\n貨物數(shù)量:");
scanf("%d",&base[i].amount);
if(base[i].amount<=0){
base[i].amount=0;
break;
}
goodssum+=base[i].amount;
printf("\n貨物進(jìn)價(jià):");
scanf("%d",&base[i].price1);
printf("\n貨物售價(jià):");
scanf("%d",&base[i].price2);
}
return 0;
}
int chackbase() //采購(gòu)函數(shù)---查詢當(dāng)前存貨函數(shù)
{
int i=0;
printf("................................................................................\n");
if(goodssum==0)
{
printf(" 倉(cāng)庫(kù)沒貨!!! 請(qǐng)采購(gòu)部門及時(shí)進(jìn)貨!!!\n");
return 0;
}
for(i=0;i<M;i++)
{
if(base[i].amount>0){
printf("................................................................................\n");
printf("貨物編號(hào) 貨物名稱 貨物數(shù)量 進(jìn)價(jià) 售價(jià)\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() //采購(gòu)函數(shù)--處理缺貨函數(shù)
{
int i=0,k=0;
int printlack(); //采購(gòu)函數(shù)--處理缺貨函數(shù)--查看函數(shù)聲明
int supplement(); //采購(gòu)函數(shù)--處理缺貨函數(shù)--添貨函數(shù)聲明
printlack(); //查看是否缺貨
printf(" 如果需要進(jìn)貨,請(qǐng)按1 ; 否則,請(qǐng)按0 \n");
scanf("%d",&k);
switch(k)
{
case 1:supplement();break;
case 0:;break;
default :printf("輸入錯(cuò)誤!\n");
}
return 0;
}
int printlack() //采購(gòu)函數(shù)--處理缺貨函數(shù)--查看函數(shù)定義
{
int i=0,count=0;
if(goodssum==0){
printf(" !!!倉(cāng)庫(kù)沒貨!!!請(qǐng)采購(gòu)人員及時(shí)進(jìn)貨!!!\n");
return 0;
}
printf("................................................................................\n");
for(i=0;i<M;i++)
{
if(lackl[i].amount==0){
count++;
continue;
}
else{
printf("................................................................................\n");
printf("貨物編號(hào) 貨物名稱 缺貨數(shù)量\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() //采購(gòu)函數(shù)--處理缺貨函數(shù)--添貨函數(shù)定義
{
int i=0,j=1;
int printlack();
printlack();
printf(" 若想停止進(jìn)貨,請(qǐng)?jiān)谪浳飻?shù)量上輸入0\n");
while(j>0)
{
printf("產(chǎn)品編號(hào)\n");
scanf("%d",&i);
while(i>=M){
printf("此貨物不存在,請(qǐng)重新輸入\n");
scanf("%d",&i);}
base[i].number=i;
printf("產(chǎn)品名稱:\n");
scanf("%s",base[i].name);
printf("進(jìn)貨數(shù)量:\n");
scanf("%d",&j);
if(j>0){
base[i].amount+=j;
goodssum+=j;
}
else
break;
printf("\n貨物進(jìn)價(jià):");
scanf("%d",&base[i].price1);
printf("\n貨物售價(jià):");
scanf("%d",&base[i].price2);
}
return 0;
}
int kh() //客戶函數(shù)
{
int login(); //客戶函數(shù)--登陸函數(shù)聲明
int registe(); //客戶函數(shù)--注冊(cè)函數(shù)聲明
int welcomekh(); //客戶函數(shù)--歡迎函數(shù)聲明
int searchkh(int falg); //客戶函數(shù)--查詢訂貨情況的函數(shù)聲明
int order(int falg); //客戶函數(shù)--訂貨函數(shù)聲明
int i,k=0,flag=0;
int n=9,m=9;
welcomekh(); //歡迎歡迎
while(m==9) //登陸?注冊(cè)循環(huán)二岔路
{
printf(" 登陸請(qǐng)按1, 注冊(cè)請(qǐng)按2, 否則請(qǐng)按 0\n");
scanf("%d",&i);
switch(i)
{
case 0 : ;break;
case 1 : flag=login(); break;
case 2 : registe(); break;
default :printf("輸入錯(cuò)誤!\n");
}
if(i==0)
break;
printf(" 登陸或注冊(cè)請(qǐng)按 9 否則請(qǐng)按0\n");
scanf("%d",&m);
}
while(n==9) //訂購(gòu)?查詢循環(huán)二岔路
{
printf(" 查詢請(qǐng)按 1, 訂購(gòu)請(qǐng)按 2, 否則請(qǐng)按 0\n");
scanf("%d",&i);
switch(i)
{
case 0 : ;break;
case 1 : searchkh(flag); break;
case 2 : order(flag); break;
default :printf("輸入錯(cuò)誤!\n");
}
if(i==0)
break;
printf(" 繼續(xù)查詢或訂購(gòu)請(qǐng)按 9 否則請(qǐng)按0\n");
scanf("%d",&n);
}
return 0;
}
int welcomekh() //客戶函數(shù)---歡迎函數(shù)定義
{
printf("................................................................................\n");
printf("\n");
printf(" ~~~~~~~~歡迎來到客戶之家~~~~~~~~\n");
printf("\n");
printf("..............................................................................\n");
return 0;
}
int login() //客戶函數(shù)---登陸函數(shù)定義
{
int n,count=0;
char password[6];
printf("-------------------請(qǐng)輸入服務(wù)編號(hào)-----------------------\n");
scanf("%d",&n);
printf("-------------------請(qǐng)輸入六位密碼-----------------------\n");
scanf("%s",password);
while(strcmp(password,khl[n].password))
{
printf("~~~~~~~~~~~~~~~請(qǐng)重新輸入六位密碼~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
printf(" 退出登陸,請(qǐng)輸入123456\n");
scanf("%s",password);
if(!strcmp(password,"123456"))
break;
}
if(!strcmp(password,"123456"))
return 0;
else
return n;
}
int registe() //客戶函數(shù)---注冊(cè)函數(shù)定義
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~您的服務(wù)編號(hào)是: %d ,請(qǐng)你一定要記牢您! ~~~~~~~~~~~~~~~~~~~~~~~~~\n",QQ);
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~請(qǐng)輸入您的用戶名:~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
scanf("%s",khl[QQ].name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~請(qǐng)輸入六位密碼:~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
scanf("%s",khl[QQ].password);
QQ++;
return 0;
}
int searchkh(int flag) //客戶函數(shù)---查詢函數(shù)定義
{
int n,i=0;
n=flag;
printf("................................................................................\n");
printf(" Hello %s 您的服務(wù)編號(hào)是: %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("貨物編號(hào) 貨物名稱 訂貨數(shù)量 單價(jià)\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(" 您當(dāng)前沒有訂貨。 \n");
printf("................................................................................\n");
}
printf("................................................................................\n");
return 0;
}
int order(int flag) //客戶函數(shù)---訂購(gòu)函數(shù)
{
int i=0,k=0,m=0,n=0,count=0;
printf("\n");
n=flag;
printf("貨物編號(hào) 貨物名稱 售價(jià)\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("倉(cāng)庫(kù)現(xiàn)在沒貨,請(qǐng)稍后再來。麻煩您通知采購(gòu)部門及時(shí)補(bǔ)貨。。。謝謝。。。\n");
return 0;
}
printf("請(qǐng)輸入產(chǎn)品編號(hào)和數(shù)量,若想結(jié)束,在訂購(gòu)數(shù)量上輸入 0 \n");
printf("產(chǎn)品編號(hào)\n");
scanf("%d",&k);
while((k>=M)||(base[k].number==-1)){
printf("此貨物不存在,請(qǐng)重新輸入\n");
scanf("%d",&k);}
printf("數(shù)量\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 個(gè),先賣給您%d個(gè),剩下的請(qǐng)您稍后重新注冊(cè)服務(wù)編號(hào)再預(yù)定!同時(shí)麻煩您通知采購(gòu)部門及時(shí)補(bǔ)貨。。。謝謝。。。\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("產(chǎn)品編號(hào)\n");
scanf("%d",&k);
while((k>=M)||(base[k].number==-1)){
printf("此貨物不存在,請(qǐng)重新輸入\n");
scanf("%d",&k);}
printf("訂購(gòu)數(shù)量\n");
scanf("%d",&m);
}
khl[n].count=PP;
PP++;
return 0;
}
int manager() //經(jīng)理函數(shù)定義
{
int i=0;
for(i=0;i<M;i++)
{
if(suml[i].amount==0)
i++;
else{
printf("................................................................................\n");
printf("貨物編號(hào) 貨物名稱 該貨物利潤(rùn)\n");
printf(" %3d %-20s %6d \n",suml[i].number,base[i].name,suml[i].price1);
printf("................................................................................\n");
}
}
printf("\n--------------------總貨量為 %d 個(gè)-----------------------------\n",goodssum);
printf("\n--------------------總利潤(rùn)為 %d 美元-----------------------------\n",suml[M].price1);
return 0;
}
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++ SOCKET多線程實(shí)現(xiàn)聊天小程序
這篇文章主要為大家詳細(xì)介紹了C++ SOCKET多線程實(shí)現(xiàn)聊天小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
C++報(bào)錯(cuò):Segmentation Fault的解決方案
段錯(cuò)誤(Segmentation Fault)是 C++ 編程中常見且令人頭疼的錯(cuò)誤之一,段錯(cuò)誤通常發(fā)生在程序試圖訪問未被允許的內(nèi)存區(qū)域時(shí),導(dǎo)致程序崩潰,本文將深入探討段錯(cuò)誤的產(chǎn)生原因、檢測(cè)方法及其預(yù)防和解決方案,需要的朋友可以參考下2024-07-07
C++中實(shí)現(xiàn)fibonacci數(shù)列的幾種方法
本文主要介紹了C++中實(shí)現(xiàn)fibonacci數(shù)列的幾種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例
本文主要介紹了Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

