版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 銷(xiāo)售管理系統(tǒng)</b></p><p><b> 摘 要</b></p><p> 在銷(xiāo)售管理當(dāng)中,人工統(tǒng)計(jì)的速度慢,且容易出現(xiàn)差錯(cuò)。本銷(xiāo)售管理系統(tǒng)的自動(dòng)化加速了統(tǒng)計(jì)工作,提高管理效率。本程序主要采用對(duì)零散的紙條進(jìn)行自動(dòng)讀取,然后按組分類(lèi)將數(shù)據(jù)保存到數(shù)組,這樣的結(jié)構(gòu)化非常便于程序后續(xù)的統(tǒng)計(jì)工作。統(tǒng)計(jì)具體過(guò)程涉及到
2、個(gè)人銷(xiāo)量排序與產(chǎn)品銷(xiāo)量排序等問(wèn)題,將于正文中詳細(xì)介紹。本程序?qū)崿F(xiàn)了所有設(shè)計(jì)要求。</p><p> 關(guān)鍵詞:文件,排序,統(tǒng)計(jì)</p><p><b> 目 錄 </b></p><p><b> 中文摘要Ⅰ</b></p><p><b> 1 題目要求1</b&g
3、t;</p><p> 1.1 要求.1</p><p><b> 2 需求分析1</b></p><p><b> 3 總體設(shè)計(jì)1</b></p><p><b> 詳細(xì)設(shè)計(jì)2</b></p><p><b> 4.1
4、主函數(shù)2</b></p><p> 4.2各功能模塊設(shè)計(jì)5</p><p> 4.3 公共函數(shù)6</p><p> 5.運(yùn)行結(jié)果(附帶抓圖)7</p><p><b> 6.總結(jié)10</b></p><p><b> 參考文獻(xiàn)27</b>&l
5、t;/p><p><b> 1 題目要求</b></p><p><b> 1.1 要求</b></p><p> 某公司有四個(gè)銷(xiāo)售員(編號(hào):1-4),負(fù)責(zé)銷(xiāo)售五種產(chǎn)品(編號(hào):1-5)。每個(gè)銷(xiāo)售員都將當(dāng)日出售的每種產(chǎn)品各寫(xiě)一張便條交上來(lái)。每張便條內(nèi)容包含:</p><p><b>
6、 銷(xiāo)售員的代號(hào)</b></p><p><b> 產(chǎn)品的代號(hào)</b></p><p> 這種產(chǎn)品當(dāng)天的銷(xiāo)售額</p><p> 每位銷(xiāo)售員每天可能上繳0-5張便條。假設(shè)手機(jī)到了上個(gè)月的所有便條,編寫(xiě)一個(gè)處理系統(tǒng),讀取上月的銷(xiāo)售情況(自己設(shè)定),進(jìn)行如下處理:</p><p> 計(jì)算上個(gè)月沒(méi)人每種產(chǎn)品的
7、銷(xiāo)售額</p><p> 按銷(xiāo)售額對(duì)銷(xiāo)售員進(jìn)行排序,輸出排序結(jié)果(銷(xiāo)售員代號(hào))</p><p> 統(tǒng)計(jì)每種產(chǎn)品的總銷(xiāo)售額,對(duì)這些產(chǎn)品從高到低的順序輸出結(jié)果(須輸出產(chǎn)品的代號(hào)和銷(xiāo)售額)</p><p><b> 輸出統(tǒng)計(jì)報(bào)表</b></p><p><b> 2 需求分析</b></p
8、><p> 本程序?qū)⒂玫轿募到y(tǒng),list.txt文件內(nèi)容作為數(shù)據(jù)源,其中單行內(nèi)容代表一張紙條。程序運(yùn)行后首先將文件系統(tǒng)的原始數(shù)據(jù)讀取并保存到程序的結(jié)構(gòu)體數(shù)組當(dāng)中,所以應(yīng)提供文件輸入的操作;由于紙條數(shù)據(jù)零散,所以要對(duì)原始數(shù)據(jù)進(jìn)行分類(lèi)操作并提供一個(gè)數(shù)組用于保存分類(lèi)信息;在程序中要進(jìn)行統(tǒng)計(jì)工作,所以要提供顯示、排序等操作;另外應(yīng)提供鍵盤(pán)式選擇菜單實(shí)現(xiàn)功能選擇。</p><p><b>
9、 總體設(shè)計(jì)</b></p><p> 根據(jù)上面的分析,可以將這個(gè)系統(tǒng)分為如下五大模塊:查看每人每種產(chǎn)品的銷(xiāo)售額 、按銷(xiāo)售額對(duì)銷(xiāo)售員排序、對(duì)每種產(chǎn)品總銷(xiāo)售額從高到低排序、輸出統(tǒng)計(jì)報(bào)表和退出。其中主要模塊是前四個(gè)模塊。</p><p><b> 4 詳細(xì)設(shè)計(jì)</b></p><p><b> 主函數(shù)</b>
10、;</p><p><b> 【數(shù)據(jù)結(jié)構(gòu)】</b></p><p> 原始數(shù)據(jù)有員工代號(hào)、產(chǎn)品代號(hào)和銷(xiāo)售額,所以定義一個(gè)全局結(jié)構(gòu)體數(shù)組scrip用于保存原始數(shù)據(jù)。然后定義全局變量n保存紙條數(shù)目,定義數(shù)組s用于保存分類(lèi)后的信息。</p><p><b> 【數(shù)據(jù)結(jié)構(gòu)代碼】</b></p><p>
11、; typedef struct /*縮短結(jié)構(gòu)體變量名*/</p><p><b> {</b></p><p> int shangpin[Z]; /*定義結(jié)構(gòu)體便于信息的存儲(chǔ)和讀寫(xiě),辨別*/ /*R是表示商品
12、的種類(lèi),最后一個(gè)為該銷(xiāo)售員商品總和*/</p><p><b> }data;</b></p><p><b> 【程序】</b></p><p> int main()</p><p><b> {</b></p><p> int i,ch
13、oice;</p><p> data sxy[R]; /*R表示職工的個(gè)數(shù),前面的宏常量*/</p><p> for(i=0;;i++)</p><p><b> {</b></p><p> system("cls"
14、;); /*清頻命令*/</p><p> menu(); /*菜單函數(shù)提示用戶(hù)怎樣選擇*/</p><p> printf("你想做什么?\n");</p><p> printf(&quo
15、t;請(qǐng)選擇:"); /*輸入要進(jìn)行的操作*/</p><p> scanf("%d",&choice);</p><p> if(choice==0) /*退出程序*/</p><p><b> break;<
16、;/b></p><p><b> else</b></p><p> switch(choice)</p><p><b> {</b></p><p> case 1 : data_count(sxy);break; /*計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷(xiāo)售額*/&
17、lt;/p><p> case 2 : range_sxy(sxy);break; /*按銷(xiāo)售額對(duì)銷(xiāo)售員進(jìn)行排序,輸出排序結(jié)果*/</p><p> case 3 : range_shangpin(sxy);break; /*統(tǒng)計(jì)每種產(chǎn)品的總銷(xiāo)售額,輸出排序結(jié)果*/</p><p> case 4 : data_out(sxy);b
18、reak; /*輸出統(tǒng)計(jì)報(bào)表*/</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> data_read ()讀取文件數(shù)據(jù)</p><p>
19、 data_read()函數(shù)從1.txt文件讀取數(shù)據(jù),將數(shù)據(jù)保存到程序的結(jié)構(gòu)體當(dāng)中。</p><p><b> 【程序】</b></p><p> void data_read(data *x) /*讀入函數(shù)使程序簡(jiǎn)潔*/</p><p><b> {<
20、/b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p><b> int i;</b></p><p> printf("您想查詢(xún)哪個(gè)月?\n");</p><p>
21、printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/</p><p> scanf("%s",fname);</p><p> strcat(fname,".txt");/*連接文件屬性*/</p><p> if((fp=fopen(fname,&
22、quot;rb"))==NULL) /*打開(kāi)文件*/</p><p><b> {</b></p><p> printf("can not open the file\n");</p><p><b> exit(0);</b></p&g
23、t;<p><b> }</b></p><p> for(i=0;i<R;i++) /*讀出信息*/</p><p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息
24、出錯(cuò)!\n"); </p><p><b> }</b></p><p> 4.1.2 data_count()計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷(xiāo)售額</p><p><b> 【程序】</b></p><p> void data_count(data *x)
25、 /*計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷(xiāo)售額*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p> int j,t;
26、 /*用于控制循環(huán)*/</p><p> int i,k,s; /*用于定義職工序號(hào),產(chǎn)品序號(hào),產(chǎn)品數(shù)量*/</p><p> system("cls");</p><p> printf(&
27、quot;您想計(jì)算哪個(gè)月?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息寫(xiě)入*/</p><p> scanf("%s",fname);</p><p> strcat(fname,".txt");</p&
28、gt;<p> if((fp=fopen(fname,"wb"))==NULL) /*打開(kāi)文件*/</p><p><b> {</b></p><p> printf("can not open the file\n");</p><p>&
29、lt;b> exit(0);</b></p><p><b> }</b></p><p> for(j=0;j<R;j++) /*對(duì)商品數(shù)量清零*/</p><p> for(t=0;t<Z;t++)</p><p
30、> (x+j)->shangpin[t]=0;</p><p> printf("please put the information about the 職工編號(hào),產(chǎn)品編號(hào),銷(xiāo)售數(shù)量\n"); /*寫(xiě)入信息*/</p><p> for(j=0;;j++)</p><p><b> {</b>&l
31、t;/p><p> scanf("%d%d%d",&i,&k,&s);</p><p> if(i==0) /*輸入職工為0時(shí)結(jié)束信息輸入*/</p><p><b> break;</b></p><
32、;p> if(i>R||i<0||k>Z||k<0) </p><p><b> {</b></p><p> printf("the information error!\n"); /*避免輸入信息出錯(cuò)*/</p><p><b> continue;<
33、;/b></p><p><b> }</b></p><p><b> else</b></p><p> (x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s;/*統(tǒng)計(jì)各個(gè)人的各種產(chǎn)品的數(shù)量,-1為了和數(shù)組中的序號(hào)相匹配*/</p><
34、;p><b> }</b></p><p> for(j=0;j<R;j++)</p><p> if(fwrite((x+j),sizeof(data),1,fp)!=1) /*把信息寫(xiě)入文件中便有以后調(diào)用*/</p><p> printf("write error!\n");&
35、lt;/p><p> fclose(fp); /*關(guān)閉文件避免信息遺漏*/</p><p><b> }</b></p><p> void range_sxy(data *x) /*按銷(xiāo)售額對(duì)銷(xiāo)售員
36、進(jìn)行排序,輸出排序結(jié)果*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p> int i,k,j,t,bianhao[R]={0},z;</p><p>
37、system("cls");</p><p> printf("你要哪個(gè)月的?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/</p><p> scanf("%s",fname);</p&
38、gt;<p> strcat(fname,".txt");</p><p> if((fp=fopen(fname,"rb"))==NULL) /*打開(kāi)文件*/</p><p><b> {</b></p><p> printf("
39、;can not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<R;i++) /*讀出信息*/</p&g
40、t;<p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息出錯(cuò)!"); /*讀入信息提示*/</p><p> for(i=0;i<R;) /*用于存儲(chǔ)職工編號(hào)
41、*/</p><p> bianhao[i]=i++;</p><p> printf("請(qǐng)輸入按何種產(chǎn)品排序\n");</p><p> scanf("%d",&k);</p><p> k=k-1;
42、 /*便于與結(jié)構(gòu)體中的數(shù)組值對(duì)應(yīng)*/</p><p> for(i=0;i<R;i++) /*按K種產(chǎn)品對(duì)銷(xiāo)售員排序,選擇法排序*/</p><p><b> {</b></p><p><b> t=i;</b></p>
43、<p> for(j=i+1;j<R;j++)</p><p> if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*調(diào)用職工各自對(duì)應(yīng)的結(jié)構(gòu)體內(nèi)的產(chǎn)品數(shù)量*/</p><p><b> t=j;</b></p><p><b&
44、gt; if(t!=i)</b></p><p><b> {</b></p><p> z=bianhao[i];</p><p> bianhao[i]=bianhao[t];</p><p> bianhao[t]=z;</p><p><b> }<
45、/b></p><p><b> }</b></p><p> printf("按%d產(chǎn)品對(duì)銷(xiāo)售員排序?yàn)?\n",k+1);</p><p> for(i=0;i<R;i++)</p><p> printf("%5d",bianhao[i]+1);</p
46、><p><b> getch();</b></p><p> fclose(fp);</p><p><b> }</b></p><p> 4.1.3 menu()顯示主菜單</p><p> 用于顯示菜單,獲取用戶(hù)選項(xiàng)進(jìn)入相應(yīng)模塊。</p><
47、;p><b> 【程序】</b></p><p> void menu()</p><p> { printf(" *******************************************************\n");</p><p> printf("
48、0.結(jié)束操作\n");</p><p> printf(" 1.計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷(xiāo)售額\n");</p><p> printf(" 2.按銷(xiāo)售額對(duì)銷(xiāo)售員進(jìn)行排序,輸出排序結(jié)果\n");</p><p> printf(" 3.統(tǒng)計(jì)每種產(chǎn)
49、品的總銷(xiāo)售額,輸出排序結(jié)果\n");</p><p> printf(" 4.輸出統(tǒng)計(jì)報(bào)表\n");</p><p> printf(" ******************************************************\n");</p><p><b>
50、; }</b></p><p> 4.1.4 data_out()輸出函數(shù)</p><p><b> 【程序】</b></p><p> void data_out(data *x) /*輸出統(tǒng)計(jì)報(bào)表*/</p><p><b
51、> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p> int i,j,sum[Z+1]={0};</p><p> system("cls");</p><p>
52、printf("您想計(jì)算哪個(gè)月?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/</p><p> scanf("%s",fname);</p><p> strcat(fname,".txt")
53、;</p><p> if((fp=fopen(fname,"rb"))==NULL) /*打開(kāi)文件*/</p><p><b> {</b></p><p> printf("can not open the file\n");</p>&l
54、t;p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<R;i++) /*讀出信息*/</p><p> if(fread(x+i,sizeof(data),1,fp)
55、!=1)</p><p> printf("讀入信息出錯(cuò)!");</p><p> for(i=0;i<Z;i++) /*對(duì)各種商品求和*/</p><p> for(j=0;j<R;j++)</p><p> sum[i]=sum
56、[i]+(x+j)->shangpin[i];</p><p> for(i=0;i<Z;i++) /*求商品總和*/</p><p> sum[Z]=sum[Z]+sum[i];</p><p> printf("輸出統(tǒng)計(jì)報(bào)表如下:\n");
57、 /*按要求輸出統(tǒng)計(jì)表*/</p><p> printf("產(chǎn)品代號(hào) 銷(xiāo)售之和 銷(xiāo)售員代號(hào)\n");</p><p> for(i=0;i<R;i++)</p><p> for(j=0;j<Z;j++)</p><p> printf("%-10d%-10
58、d%-10d\n",j+1,(x+i)->shangpin[j],i+1);</p><p> printf("***********************************\n");</p><p> for(i=0;i<Z;i++)</p><p><b> { </b></p&
59、gt;<p><b> if(i==0)</b></p><p> printf("%d產(chǎn)品之和 %-10d 總和 %-10d\n",i+1,sum[i],sum[Z]);</p><p><b> else</b></p><p> printf("%d產(chǎn)品之和
60、%-10d\n",i+1,sum[i]);</p><p><b> }</b></p><p><b> getch();</b></p><p><b> }</b></p><p><b> 各功能模塊設(shè)計(jì)</b></p>
61、;<p> 查看每人每種產(chǎn)品的銷(xiāo)售額模塊</p><p> 由于在初始化當(dāng)中已經(jīng)進(jìn)行分類(lèi)整理,所以現(xiàn)在只要通過(guò)遍歷s數(shù)組就可以將統(tǒng)計(jì)信息顯示出來(lái)。</p><p><b> 【程序】</b></p><p> 按銷(xiāo)售額對(duì)銷(xiāo)售員排序</p><p> 計(jì)算每單個(gè)銷(xiāo)售員所有產(chǎn)品銷(xiāo)售數(shù)量,用一個(gè)FOR循
62、環(huán)循環(huán)四次,每次獲取最大值后輸出,輸出之后將最大值標(biāo)記為-1,然后進(jìn)行下次循環(huán),由此獲得由大到小的排行。</p><p><b> 【程序】</b></p><p> range_sxy()銷(xiāo)售員統(tǒng)計(jì)排序函數(shù)</p><p><b> 【程序】</b></p><p> void range
63、_sxy(data *x) /*按銷(xiāo)售額對(duì)銷(xiāo)售員進(jìn)行排序,輸出排序結(jié)果*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p>
64、 int i,k,j,t,bianhao[R]={0},z;</p><p> system("cls");</p><p> printf("你要哪個(gè)月的?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/<
65、/p><p> scanf("%s",fname);</p><p> strcat(fname,".txt");</p><p> if((fp=fopen(fname,"rb"))==NULL) /*打開(kāi)文件*/</p><p><
66、;b> {</b></p><p> printf("can not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<R;i++
67、) /*讀出信息*/</p><p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息出錯(cuò)!"); /*讀入信息提示*/</p><p> for(i=0;
68、i<R;) /*用于存儲(chǔ)職工編號(hào)*/</p><p> bianhao[i]=i++;</p><p> printf("請(qǐng)輸入按何種產(chǎn)品排序\n");</p><p> scanf("%d",&k);</p><p&
69、gt; k=k-1; /*便于與結(jié)構(gòu)體中的數(shù)組值對(duì)應(yīng)*/</p><p> for(i=0;i<R;i++) /*按K種產(chǎn)品對(duì)銷(xiāo)售員排序,選擇法排序*/</p><p><b> {</b>&l
70、t;/p><p><b> t=i;</b></p><p> for(j=i+1;j<R;j++)</p><p> if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*調(diào)用職工各自對(duì)應(yīng)的結(jié)構(gòu)體內(nèi)的產(chǎn)品數(shù)量*/</p><p&g
71、t;<b> t=j;</b></p><p><b> if(t!=i)</b></p><p><b> {</b></p><p> z=bianhao[i];</p><p> bianhao[i]=bianhao[t];</p><p&g
72、t; bianhao[t]=z;</p><p><b> }</b></p><p><b> }</b></p><p> printf("按%d產(chǎn)品對(duì)銷(xiāo)售員排序?yàn)?\n",k+1);</p><p> for(i=0;i<R;i++)</p>
73、<p> printf("%5d",bianhao[i]+1);</p><p><b> getch();</b></p><p> fclose(fp);</p><p><b> }</b></p><p> void range_shangpin(da
74、ta *x) /*統(tǒng)計(jì)每種產(chǎn)品的總銷(xiāo)售額,輸出排序結(jié)果*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p> int i,j,s
75、um[Z]={0},bianhao[Z]={0},z,t,k;</p><p> system("cls");</p><p> printf("您想計(jì)算哪個(gè)月的?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/&l
76、t;/p><p> scanf("%s",fname);</p><p> strcat(fname,".txt");</p><p> if((fp=fopen(fname,"rb"))==NULL) /*打開(kāi)文件*/</p><p>&
77、lt;b> {</b></p><p> printf("can not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<R;i
78、++) /*讀出信息*/</p><p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息出錯(cuò)!");</p><p> for(i=0;i<Z;i++)
79、 /*對(duì)各種商品求和*/</p><p> for(j=0;j<R;j++)</p><p> sum[i]=sum[i]+(x+j)->shangpin[i];</p><p> for(i=0;i<Z;) /*用于存儲(chǔ)商品編號(hào)*/&
80、lt;/p><p> bianhao[i]=i++;</p><p> for(i=0;i<Z;i++)</p><p> printf("%3d",bianhao[i]);</p><p> for(i=0;i<Z;i++) /*對(duì)產(chǎn)
81、品從高到低排序,選擇法排序*/</p><p><b> {</b></p><p><b> t=i;</b></p><p> for(j=i+1;j<Z;j++) /*產(chǎn)品變化時(shí),產(chǎn)品編號(hào)也隨之變化,便于輸出*/</p><p
82、> if(sum[t]<sum[j]) </p><p><b> t=j;</b></p><p><b> if(t!=i)</b></p><p><b> {</b></p><p><b>
83、 k=sum[i];</b></p><p> sum[i]=sum[t];</p><p><b> sum[t]=k;</b></p><p> z=bianhao[i];</p><p> bianhao[i]=bianhao[t];</p><p> bianhao
84、[t]=z;</p><p><b> }</b></p><p><b> }</b></p><p> printf("輸出產(chǎn)品排序\n");</p><p> printf("產(chǎn)品編號(hào) 數(shù)量\n");</p><p>
85、 for(i=0;i<Z;i++)</p><p> printf("%-10d%-10d\n",bianhao[i]+1,sum[i]);</p><p><b> getch();</b></p><p> fclose(fp);</p><p><b> }</b&
86、gt;</p><p> 對(duì)每種產(chǎn)品總銷(xiāo)售額從高到低排序</p><p> 計(jì)算每單個(gè)產(chǎn)品銷(xiāo)售數(shù)量,用一個(gè)FOR循環(huán)循環(huán)五次,每次獲取最大值后輸出,輸出之后將最大值標(biāo)記為-1,然后進(jìn)行下次循環(huán),由此獲得由大到小的排行。</p><p><b> 【程序】</b></p><p> void range_shang
87、pin(data *x) /*統(tǒng)計(jì)每種產(chǎn)品的總銷(xiāo)售額,輸出排序結(jié)果*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p> int
88、 i,j,sum[Z]={0},bianhao[Z]={0},z,t,k;</p><p> system("cls");</p><p> printf("您想計(jì)算哪個(gè)月的?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息
89、讀入*/</p><p> scanf("%s",fname);</p><p> strcat(fname,".txt");</p><p> if((fp=fopen(fname,"rb"))==NULL) /*打開(kāi)文件*/</p><
90、p><b> {</b></p><p> printf("can not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i&
91、lt;R;i++) /*讀出信息*/</p><p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息出錯(cuò)!");</p><p> for(i=0;i<Z;i++)
92、 /*對(duì)各種商品求和*/</p><p> for(j=0;j<R;j++)</p><p> sum[i]=sum[i]+(x+j)->shangpin[i];</p><p> for(i=0;i<Z;) /*用于存儲(chǔ)商
93、品編號(hào)*/</p><p> bianhao[i]=i++;</p><p> for(i=0;i<Z;i++)</p><p> printf("%3d",bianhao[i]);</p><p> for(i=0;i<Z;i++)
94、 /*對(duì)產(chǎn)品從高到低排序,選擇法排序*/</p><p><b> {</b></p><p><b> t=i;</b></p><p> for(j=i+1;j<Z;j++) /*產(chǎn)品變化時(shí),產(chǎn)品編號(hào)也隨之變化,便于輸出*/</p>
95、<p> if(sum[t]<sum[j]) </p><p><b> t=j;</b></p><p><b> if(t!=i)</b></p><p><b> {</b></p><p><
96、;b> k=sum[i];</b></p><p> sum[i]=sum[t];</p><p><b> sum[t]=k;</b></p><p> z=bianhao[i];</p><p> bianhao[i]=bianhao[t];</p><p> b
97、ianhao[t]=z;</p><p><b> }</b></p><p><b> }</b></p><p> printf("輸出產(chǎn)品排序\n");</p><p> printf("產(chǎn)品編號(hào) 數(shù)量\n");</p><
98、p> for(i=0;i<Z;i++)</p><p> printf("%-10d%-10d\n",bianhao[i]+1,sum[i]);</p><p><b> getch();</b></p><p> fclose(fp);</p><p><b> }&
99、lt;/b></p><p><b> 輸出統(tǒng)計(jì)報(bào)表</b></p><p> 輸出報(bào)表,將數(shù)組中的統(tǒng)計(jì)信息輸出到屏幕。</p><p><b> 【程序】</b></p><p> void data_out(data *x)
100、 /*輸出統(tǒng)計(jì)報(bào)表*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];</p><p> int i,j,sum[Z+1]={0};</p><p> syst
101、em("cls");</p><p> printf("您想計(jì)算哪個(gè)月?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/</p><p> scanf("%s",fname);</p>
102、<p> strcat(fname,".txt");</p><p> if((fp=fopen(fname,"rb"))==NULL) /*打開(kāi)文件*/</p><p><b> {</b></p><p> printf("ca
103、n not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(i=0;i<R;i++) /*讀出信息*/</p>
104、<p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息出錯(cuò)!");</p><p> for(i=0;i<Z;i++) /*對(duì)各種商品求和*/</p><p> for(j=0;j
105、<R;j++)</p><p> sum[i]=sum[i]+(x+j)->shangpin[i];</p><p> for(i=0;i<Z;i++) /*求商品總和*/</p><p> sum[Z]=sum[Z]+sum[i];</p><p&g
106、t; printf("輸出統(tǒng)計(jì)報(bào)表如下:\n"); /*按要求輸出統(tǒng)計(jì)表*/</p><p> printf("產(chǎn)品代號(hào) 銷(xiāo)售之和 銷(xiāo)售員代號(hào)\n");</p><p> for(i=0;i<R;i++)</p><p> for(j=0;j<Z;j++)&l
107、t;/p><p> printf("%-10d%-10d%-10d\n",j+1,(x+i)->shangpin[j],i+1);</p><p> printf("***********************************\n");</p><p> for(i=0;i<Z;i++)</p&g
108、t;<p><b> { </b></p><p><b> if(i==0)</b></p><p> printf("%d產(chǎn)品之和 %-10d 總和 %-10d\n",i+1,sum[i],sum[Z]);</p><p><b> else</b>
109、</p><p> printf("%d產(chǎn)品之和 %-10d\n",i+1,sum[i]);</p><p><b> }</b></p><p><b> getch();</b></p><p><b> }</b></p><
110、;p><b> 退出</b></p><p> exit()為系統(tǒng)函數(shù),退出程序時(shí)使用。</p><p> 5 運(yùn)行結(jié)果(附帶抓圖)</p><p> 1.txt文件中數(shù)據(jù)如下:</p><p><b> 1 1 1</b></p><p><b&g
111、t; 2 2 2</b></p><p><b> 3 3 3</b></p><p><b> 4 4 4</b></p><p><b> 程序運(yùn)行結(jié)果:</b></p><p> 查看每人每種產(chǎn)品的銷(xiāo)售額運(yùn)行結(jié)果:</p><p&
112、gt; 按銷(xiāo)售額對(duì)銷(xiāo)售員排序運(yùn)行結(jié)果:</p><p> 對(duì)每種產(chǎn)品銷(xiāo)售額從高到低排序運(yùn)行結(jié)果:</p><p><b> 統(tǒng)計(jì)報(bào)表運(yùn)行結(jié)果:</b></p><p><b> 6 總結(jié)</b></p><p> 通過(guò)這次C程序設(shè)計(jì),我掌握了模塊化設(shè)計(jì)方法,能夠深入的理解結(jié)構(gòu)化程序設(shè)計(jì)
113、思想,熟練運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)方法,提高了運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力。</p><p><b> 附錄 A 源碼</b></p><p> #include <stdio.h></p><p> #include <string.h></p><p> #include <coni
114、o.h></p><p> #include <stdlib.h></p><p> #define Z 5</p><p> #define R 4 /*定義宏常量便于程序的一般化*/ /*R表示銷(xiāo)售員個(gè)數(shù)*/</p><p>
115、 typedef struct /*縮短結(jié)構(gòu)體變量名*/</p><p><b> {</b></p><p> int shangpin[Z]; /*定義結(jié)構(gòu)體便于信息的存儲(chǔ)和讀寫(xiě),辨別*/ /*R是表示商品的種
116、類(lèi),最后一個(gè)為該銷(xiāo)售員商品總和*/</p><p><b> }data;</b></p><p> void menu()</p><p> { printf(" *******************************************************\n");</p>
117、<p> printf(" 0.結(jié)束操作\n");</p><p> printf(" 1.計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷(xiāo)售額\n");</p><p> printf(" 2.按銷(xiāo)售額對(duì)銷(xiāo)售員進(jìn)行排序,輸出排序結(jié)果\n");</p><p&g
118、t; printf(" 3.統(tǒng)計(jì)每種產(chǎn)品的總銷(xiāo)售額,輸出排序結(jié)果\n");</p><p> printf(" 4.輸出統(tǒng)計(jì)報(bào)表\n");</p><p> printf(" ******************************************************\n&qu
119、ot;);</p><p><b> }</b></p><p> void data_read(data *x) /*讀入函數(shù)使程序簡(jiǎn)潔*/</p><p><b> {</b></p><p><b> FILE
120、 *fp;</b></p><p> char fname[10];</p><p><b> int i;</b></p><p> printf("您想查詢(xún)哪個(gè)月?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入
121、文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/</p><p> scanf("%s",fname);</p><p> strcat(fname,".txt");/*連接文件屬性*/</p><p> if((fp=fopen(fname,"rb"))==NULL)
122、 /*打開(kāi)文件*/</p><p><b> {</b></p><p> printf("can not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p&
123、gt;<p> for(i=0;i<R;i++) /*讀出信息*/</p><p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息出錯(cuò)!\n"); </p><p><
124、;b> }</b></p><p> void data_count(data *x) /*計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷(xiāo)售額*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p&
125、gt;<p> char fname[10];</p><p> int j,t; /*用于控制循環(huán)*/</p><p> int i,k,s; /*用于定義職工序號(hào),產(chǎn)品序號(hào),產(chǎn)品數(shù)量*/</
126、p><p> system("cls");</p><p> printf("您想計(jì)算哪個(gè)月?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息寫(xiě)入*/</p><p> scanf("%s&q
127、uot;,fname);</p><p> strcat(fname,".txt");</p><p> if((fp=fopen(fname,"wb"))==NULL) /*打開(kāi)文件*/</p><p><b> {</b></p><
128、p> printf("can not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for(j=0;j<R;j++)
129、 /*對(duì)商品數(shù)量清零*/</p><p> for(t=0;t<Z;t++)</p><p> (x+j)->shangpin[t]=0;</p><p> printf("please put the information about the 職工編號(hào),產(chǎn)品編號(hào),銷(xiāo)售數(shù)量\n"); /*寫(xiě)入信息*/</p&g
130、t;<p> for(j=0;;j++)</p><p><b> {</b></p><p> scanf("%d%d%d",&i,&k,&s);</p><p> if(i==0) /*輸入職工為
131、0時(shí)結(jié)束信息輸入*/</p><p><b> break;</b></p><p> if(i>R||i<0||k>Z||k<0) </p><p><b> {</b></p><p> printf("the information error!\n&
132、quot;); /*避免輸入信息出錯(cuò)*/</p><p><b> continue;</b></p><p><b> }</b></p><p><b> else</b></p><p> (x+i-1)->shangpin[k-1]=(x
133、+i-1)->shangpin[k-1]+s;/*統(tǒng)計(jì)各個(gè)人的各種產(chǎn)品的數(shù)量,-1為了和數(shù)組中的序號(hào)相匹配*/</p><p><b> }</b></p><p> for(j=0;j<R;j++)</p><p> if(fwrite((x+j),sizeof(data),1,fp)!=1) /*把信
134、息寫(xiě)入文件中便有以后調(diào)用*/</p><p> printf("write error!\n");</p><p> fclose(fp); /*關(guān)閉文件避免信息遺漏*/</p><p><b> }</b></p>&l
135、t;p> void range_sxy(data *x) /*按銷(xiāo)售額對(duì)銷(xiāo)售員進(jìn)行排序,輸出排序結(jié)果*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[10];&l
136、t;/p><p> int i,k,j,t,bianhao[R]={0},z;</p><p> system("cls");</p><p> printf("你要哪個(gè)月的?\n");</p><p> printf("請(qǐng)輸入月份:"); /*輸入文件名,這
137、樣可以進(jìn)行各個(gè)月份信息讀入*/</p><p> scanf("%s",fname);</p><p> strcat(fname,".txt");</p><p> if((fp=fopen(fname,"rb"))==NULL) /*打開(kāi)文件*/</
138、p><p><b> {</b></p><p> printf("can not open the file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p>
139、 for(i=0;i<R;i++) /*讀出信息*/</p><p> if(fread(x+i,sizeof(data),1,fp)!=1)</p><p> printf("讀入信息出錯(cuò)!"); /*讀入信息提示*/</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)論文--銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)----銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---銷(xiāo)售管理系統(tǒng)
- 服裝銷(xiāo)售管理系統(tǒng)—c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)銷(xiāo)售管理系統(tǒng)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)銷(xiāo)售管理系統(tǒng)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)銷(xiāo)售管理系統(tǒng)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)-服裝銷(xiāo)售系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)----服裝銷(xiāo)售系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-教材管理系統(tǒng)——課程論文
- c語(yǔ)言程序課程設(shè)計(jì)報(bào)告-圖書(shū)銷(xiāo)售管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—服裝銷(xiāo)售系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)(論文)-購(gòu)物卡管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告——《商品銷(xiāo)售管理》
- 銷(xiāo)售管理系統(tǒng)c++課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論