C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)_第1頁(yè)
C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)_第2頁(yè)
C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)_第3頁(yè)
C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)_第4頁(yè)
C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)本文實(shí)例為大家分享了C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)的具體代碼,供大家參考,具體內(nèi)容如下

某公司有四個(gè)銷售員(編號(hào):1-4),負(fù)責(zé)銷售五種產(chǎn)品(編號(hào):1-5)。每個(gè)銷售員都將當(dāng)天出售的每種產(chǎn)品各寫一張便條交上來。每張便條包含內(nèi)容:銷售員的代號(hào)、產(chǎn)品的代號(hào)、這種產(chǎn)品的當(dāng)天的銷售額。每位銷售員每天上繳1張便條。

試設(shè)計(jì)一個(gè)便條管理系統(tǒng),使之能提供以下功能:

1、系統(tǒng)以菜單方式工作

2、便條信息錄入功能輸入(支持便條信息文件導(dǎo)入)

3、便條信息修改功能

4、便條信息刪除功能

5、收集到了上個(gè)月的所有便條后,讀取銷售情況

1)計(jì)算每個(gè)人每種產(chǎn)品的銷售額。

2)按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào))

3)統(tǒng)計(jì)每種產(chǎn)品的總銷售額,對(duì)這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號(hào)和銷售額)

詳情請(qǐng)參考代碼,注釋寫的很詳細(xì),希望能給你幫助.

最后的最后有截圖展示效果.

#includestdio.h

#includeconio.h

#includestring.h

#includestdlib.h

#defineM155

///這些函數(shù)下面會(huì)詳細(xì)的介紹的滴!

voiddetail();

voidforeach();

voidmenu();

voidproduct();

voidreaddata();

voidseller();

voidtotal();

voidchoice();

voidadd();

voiddeleteing();

voidupdate();

voidclearing();

structss{

intsid;///銷售代碼

intpid;///產(chǎn)品代號(hào)

intsn;///銷售額

}ss[M];

intn;///便條數(shù)目

ints[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};///用戶保存員工和產(chǎn)品信息

///從文件讀取數(shù)據(jù)

voidreaddata()

FILE*fp;///定義文件指針

///調(diào)用fopen函數(shù),以只讀模式打開d:\list.txt文件,并驗(yàn)證返回值是否為空

if((fp=fopen("d:\\list.txt","r"))==NULL)

{

printf("文件打開失敗!\n");

exit(0);///表示正常的退出

}

else

/**feof是輸入輸出函數(shù),檢查文件是否結(jié)束,如結(jié)束,則返回非零值,

否則返回0.函數(shù)原型為:intfeof(FILE*fp)**/

for(n=0;!feof(fp);n++)

{

fscanf(fp,"%d%d%d\n",ss[n].sid,ss[n].pid,ss[n].sn);

}///保存文件數(shù)據(jù)到結(jié)構(gòu)體

fclose(fp);///關(guān)閉文件

///從便條讀到的數(shù)據(jù)分類整理統(tǒng)計(jì)

voidforeach()

inti;

for(i=0;ii++)///遍歷所有紙條

{

switch(ss[i].pid)///按產(chǎn)品分類,再按銷售員分類,累加各人各產(chǎn)品銷售額

{

case1:///當(dāng)ss[i].pid為1的時(shí)候,也就是當(dāng)產(chǎn)品代號(hào)為1的時(shí)候

switch(ss[i].sid)///查看銷售代碼

{

///當(dāng)銷售代碼為1的時(shí)候,累加1號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case1:s[0][0]+=ss[i].sn;break;

///當(dāng)銷售代碼為2的時(shí)候,累加2號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case2:s[1][0]+=ss[i].sn;break;

///當(dāng)銷售代碼為3的時(shí)候,累加3號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case3:s[2][0]+=ss[i].sn;break;

///當(dāng)銷售代碼為4的時(shí)候,累加4號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case4:s[3][0]+=ss[i].sn;break;

}

break;

///以下代碼同理可得

case2:

switch(ss[i].sid)

{

case1:s[0][1]+=ss[i].sn;break;

case2:s[1][1]+=ss[i].sn;break;

case3:s[2][1]+=ss[i].sn;break;

case4:s[3][1]+=ss[i].sn;break;

}

break;

case3:

switch(ss[i].sid)

{

case1:s[0][2]+=ss[i].sn;break;

case2:s[1][2]+=ss[i].sn;break;

case3:s[2][2]+=ss[i].sn;break;

case4:s[3][2]+=ss[i].sn;break;

}

break;

case4:

switch(ss[i].sid)

{

case1:s[0][3]+=ss[i].sn;break;

case2:s[1][3]+=ss[i].sn;break;

case3:s[2][3]+=ss[i].sn;break;

case4:s[3][3]+=ss[i].sn;break;

}

break;

case5:

switch(ss[i].sid)

{

case1:s[0][4]+=ss[i].sn;break;

case2:s[1][4]+=ss[i].sn;break;

case3:s[2][4]+=ss[i].sn;break;

case4:s[3][4]+=ss[i].sn;break;

};

break;

}

}

///菜單選項(xiàng)

voidmenu()

intc;

puts("\t\t*********菜單*********************\n\n");

puts("\t\t1.查看每人每種產(chǎn)品的銷售額\n");

puts("\t\t2.按銷售額對(duì)銷售員排序(銷售員代號(hào))\n");

puts("\t\t3.對(duì)每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號(hào)和銷售額)\n");

puts("\t\t4.輸出統(tǒng)計(jì)報(bào)表\n");

puts("\t\t5.錄入一條便條信息\n");

puts("\t\t6.修改一條便條信息\n");

puts("\t\t7.刪除一條便條信息\n");

puts("\t\t8.退出\n");

puts("\n\n\t\t*********************************************\n");

printf("請(qǐng)選擇(1-8):[]\b\b");

scanf("%d",

if(c1||c8)///錯(cuò)誤輸入,重新獲取輸入

{

printf("您輸入的選項(xiàng)不在我們服務(wù)范圍之內(nèi)\請(qǐng)確定好您要選擇的服務(wù),重新輸入?。?!\n");

menu();

}

else///正確輸入

switch(c)///根據(jù)輸入實(shí)現(xiàn)相應(yīng)函數(shù)調(diào)用

{

case1:detail();

break;

case2:seller();

break;

case3:product();

break;

case4:total();

break;

case5:add();

break;

case6:update();

break;

case7:deleteing();

break;

case8:exit(0);

}

///計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷售額

voiddetail()

inti,j;

for(i=0;ii++)

{

printf("\n\t\t%d號(hào)銷售員銷售情況:\n",i+1);

for(j=0;jj++)

printf("\t\t%d號(hào)產(chǎn)品銷售額:%d\n",j+1,s[i][j]);

}

choice();

///按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào))

voidseller()

inti,j,k;

intsp[4]={0,0,0,0};///存銷售員的銷售額

for(i=0;ii++)///統(tǒng)計(jì)銷售員的銷售額

for(j=0;jj++)

sp[i]+=s[i][j];

for(i=0;ii++)///排序

{

k=0;

for(j=0;jj++)

{

if(sp[k]sp[j])

k=j;

}

printf("\t\t第%d名是%d號(hào)銷售員!\n",i+1,k+1);

sp[k]=-1;

}

choice();

///對(duì)每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號(hào)和銷售額)

voidproduct()

inti,j,k;

intp[5]={0,0,0,0,0};///存每種產(chǎn)品的銷售額

for(i=0;ii++)///統(tǒng)計(jì)每種產(chǎn)品的銷售額

for(j=0;jj++)

p[i]+=s[j][i];

for(i=0;ii++)///將產(chǎn)品的銷售額進(jìn)行排序

{

k=0;

for(j=0;jj++)

{

if(p[k]p[j])

k=j;

}

printf("\t\t第%d名是%d號(hào)產(chǎn)品!\銷售額為%d!\n",i+1,k+1,p[k]);

p[k]=-1;

}

choice();

///輸出統(tǒng)計(jì)報(bào)表(輸出銷售代號(hào),產(chǎn)品代號(hào)和銷售額)

voidtotal()

inti,j;

printf("\n\t銷售員\t產(chǎn)品\t銷售額\n");

for(i=0;ii++)

for(j=0;jj++)

printf("\t%d\t%d\t%d\n",i+1,j+1,s[i][j]);

choice();

///選擇退出系統(tǒng)或返回主菜單

voidchoice()

intc;

printf("請(qǐng)選擇接下來想做什么:\n1.返回菜單\n2.退出系統(tǒng)\n");

scanf("%d",

if(c==1)

menu();

else

exit(0);

///錄入一條便條信息

voidadd()

printf("請(qǐng)?zhí)顚懩浫氲谋銞l的信息:銷售代碼,產(chǎn)品代碼,銷售額\n");

/**接著readdata()統(tǒng)計(jì)的文本中便條的信息到結(jié)構(gòu)體數(shù)組里,

將添加的信息首先保存在那些信息的后面**/

scanf("%d%d%d",ss[n].sid,ss[n].pid,ss[n].sn);

FILE*fp;///定義文件指針

char*str="d:\\list.txt";

printf("該條記錄正在寫入文件list.txt~~~~\n");

fp=fopen(str,"a");///參數(shù)"a"意思是說將新添加的數(shù)據(jù)接著文本里的數(shù)據(jù)寫,不會(huì)覆蓋文本里的內(nèi)容

fprintf(fp,"\n%d\t%d\t%d",ss[n].sid,ss[n].pid,ss[n].sn);///將結(jié)構(gòu)體里的信息寫入文本

fclose(fp);///關(guān)閉文件

printf("\n該條記錄已經(jīng)寫入文件list.txt,請(qǐng)前往查看!\n");

switch(ss[n].pid)///借用foreach()函數(shù)里的代碼,詳情請(qǐng)參考foreach()函數(shù)

{

case1:///當(dāng)ss[i].pid為1的時(shí)候,也就是當(dāng)產(chǎn)品代號(hào)為1的時(shí)候

switch(ss[n].sid)///查看銷售代碼

{

///當(dāng)銷售代碼為1的時(shí)候,累加1號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case1:s[0][0]+=ss[n].sn;break;

///當(dāng)銷售代碼為2的時(shí)候,累加2號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case2:s[1][0]+=ss[n].sn;break;

///當(dāng)銷售代碼為3的時(shí)候,累加3號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case3:s[2][0]+=ss[n].sn;break;

///當(dāng)銷售代碼為4的時(shí)候,累加4號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額

case4:s[3][0]+=ss[n].sn;break;

}

break;

///以下代碼同理可得

case2:

switch(ss[n].sid)

{

case1:s[0][1]+=ss[n].sn;break;

case2:s[1][1]+=ss[n].sn;break;

case3:s[2][1]+=ss[n].sn;break;

case4:s[3][1]+=ss[n].sn;break;

}

break;

case3:

switch(ss[n].sid)

{

case1:s[0][2]+=ss[n].sn;break;

case2:s[1][2]+=ss[n].sn;break;

case3:s[2][2]+=ss[n].sn;break;

case4:s[3][2]+=ss[n].sn;break;

}

break;

case4:

switch(ss[n].sid)

{

case1:s[0][3]+=ss[n].sn;break;

case2:s[1][3]+=ss[n].sn;break;

case3:s[2][3]+=ss[n].sn;break;

case4:s[3][3]+=ss[n].sn;break;

}

break;

case5:

switch(ss[n].sid)

{

case1:s[0][4]+=ss[n].sn;break;

case2:s[1][4]+=ss[n].sn;break;

case3:s[2][4]+=ss[n].sn;break;

case4:s[3][4]+=ss[n].sn;break;

};

break;

}

n++;

choice();

/**刪除便條信息流程:新建一個(gè)臨時(shí)文件,將不被刪除的便條信息存到臨時(shí)文件里,

然后刪除原文件,再將臨時(shí)文件改名為原文件的文件名**/

voiddeleteing()

printf("請(qǐng)輸入您要?jiǎng)h除的便條的信息:銷售代碼,產(chǎn)品代碼,銷售額\n");

inta,b,c;///存用戶需要?jiǎng)h除的便條的信息

scanf("%d%d%d",a,b,

printf("請(qǐng)稍等,您選擇的便條正在刪除~~~\n");

FILE*fin,*ftp;

intx,y,z;

fin=fopen("d:\\list.txt","r");///讀打開原文件list.txt

ftp=fopen("d:\\tmp.txt","w");///寫打開臨時(shí)文件tmp.txt

if(fin==NULL||ftp==NULL){

printf("文件打開失??!\n");

exit(0);

}

intm=0;///該變量是控制寫入文本是首行不自動(dòng)換行

for(inti=0;!feof(fin);i++)

{

fscanf(fin,"%d%d%d\n",x,y,///從原文件讀取到的一行數(shù)據(jù)放到x,y,z三個(gè)變量中

if(x==ay==bz==c)///所有的數(shù)據(jù)相等,說明是要?jiǎng)h除的便條,則不寫入臨時(shí)文件

continue;

else///將不是要?jiǎng)h除的其他便條信息寫入臨時(shí)文件

{

if(m==0)

{

fprintf(ftp,"%d\t%d\t%d",x,y,z);///不是則將這一行寫入臨時(shí)文件tmp.txt

m++;

}

else

fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///不是則將這一行寫入臨時(shí)文件tmp.txt

}

}

fclose(fin);

fclose(ftp);

system("DEL/fd:\\list.txt");///刪除原文件,如果刪除錯(cuò)誤,會(huì)報(bào)原因

///unlink("d:\\list.txt");///刪除原文件

rename("d:\\tmp.txt","d:\\list.txt");///將臨時(shí)文件名改為原文件名

printf("您選擇的便條已經(jīng)刪除,請(qǐng)打開文件查看!\n");

clearing();

readdata();

foreach();

choice();

///清空之前所統(tǒng)計(jì)的原文件里的銷售員和銷售產(chǎn)品所對(duì)應(yīng)的銷售額

voidclearing()

for(inti=0;ii++)

{

for(intj=0;jj++)

s[i][j]=0;

}

/**更新便條信息流程:新建一個(gè)臨時(shí)文件,將原文件里的東西復(fù)制到臨時(shí)文件中,在復(fù)制的過程中,

需要修改的東西修改之后再放入臨時(shí)文件,然后刪除原文件,將臨時(shí)文件改名為原文件的名字**/

voidupdate()

printf("請(qǐng)輸入您要修改的便條的信息:銷售代碼,產(chǎn)品代碼,銷售額\n");

inta,b,c,d,e,x,y,z;

scanf("%d%d%d",a,b,

printf("請(qǐng)問您要修改該便條中那一項(xiàng)信息:\n(1)銷售代碼\n(2)產(chǎn)品代碼\n(3)銷售額\n");

scanf("%d",

printf("請(qǐng)問您要將該項(xiàng)信息修改成什么(請(qǐng)輸入數(shù)字):\n");

scanf("%d",

printf("您選擇的便條正在修改中~~~~~\n");

FILE*fin=fopen("d:\\list.txt","r");

FILE*ftp=fopen("d:\\tmp.txt","w");

///是充當(dāng)臨時(shí)文件作用

if(!fin)

{

printf("不能打開list.txt文件\n");

exit(1);

}

if(!ftp)

{

printf("不能打開tmp.txt文件\n");

exit(1);

}

intm=0;///該變量是控制寫入文本時(shí)首行不自動(dòng)換行

///開始復(fù)制

switch(d)///根據(jù)選項(xiàng)修改(1)銷售代碼(2)產(chǎn)品代碼(3)銷售額

{

case1:///(1)銷售代碼

{

for(inti=0;!feof(fin);i++)

{

fscanf(fin,"%d%d%d\n",x,y,

if(x==ay==bz==c)///檢驗(yàn)是要修改的行嗎

{

x=e;

if(m==0)

{

fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件

m++;

}

else

fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件

}

else

{

if(m==0)

{

fprintf(ftp,"%d\t%d\t%d",x,y,z);///將原本的數(shù)據(jù)寫入臨時(shí)文件

m++;

}

else

fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將原本過的數(shù)據(jù)寫入臨時(shí)文件

}

}

}

break;

///以下代碼同理可得

case2:

{

for(inti=0;!feof(fin);i++)

{

fscanf(fin,"%d%d%d\n",x,y,

if(x==ay==bz==c)///檢驗(yàn)是要修改的行嗎

{

y=e;

if(m==0)

{

fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件

m++;

}

else

fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件

}

else

{

if(m==0)

{

fprintf(ftp,"%d\t%d\t%d",x,y,z);///將原本的數(shù)據(jù)寫入臨時(shí)文件

m++;

}

else

fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將原本過的數(shù)據(jù)寫入臨時(shí)文件

}

}

}

break;

case3:

{

for(inti=0;!feof(fin);i++)

{

fscanf(fin,"%d%d%d\n",x,y,

if(x==ay==bz==c)///檢驗(yàn)是要修改的行嗎

{

z=e;

if(m==0)

{

fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件

m++;

}

else

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論