2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  銷售管理系統(tǒng)</b></p><p><b>  摘 要</b></p><p>  在銷售管理當中,人工統(tǒng)計的速度慢,且容易出現(xiàn)差錯。本銷售管理系統(tǒng)的自動化加速了統(tǒng)計工作,提高管理效率。本程序主要采用對零散的紙條進行自動讀取,然后按組分類將數(shù)據(jù)保存到數(shù)組,這樣的結(jié)構(gòu)化非常便于程序后續(xù)的統(tǒng)計工作。統(tǒng)計具體過程涉及到

2、個人銷量排序與產(chǎn)品銷量排序等問題,將于正文中詳細介紹。本程序?qū)崿F(xiàn)了所有設計要求。</p><p>  關鍵詞:文件,排序,統(tǒng)計</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 總體設計1</b></p><p><b>  詳細設計2</b></p><p><b>  4.1

4、主函數(shù)2</b></p><p>  4.2各功能模塊設計5</p><p>  4.3 公共函數(shù)6</p><p>  5.運行結(jié)果(附帶抓圖)7</p><p><b>  6.總結(jié)10</b></p><p><b>  參考文獻27</b>&l

5、t;/p><p><b>  1 題目要求</b></p><p><b>  1.1 要求</b></p><p>  某公司有四個銷售員(編號:1-4),負責銷售五種產(chǎn)品(編號:1-5)。每個銷售員都將當日出售的每種產(chǎn)品各寫一張便條交上來。每張便條內(nèi)容包含:</p><p><b> 

6、 銷售員的代號</b></p><p><b>  產(chǎn)品的代號</b></p><p>  這種產(chǎn)品當天的銷售額</p><p>  每位銷售員每天可能上繳0-5張便條。假設手機到了上個月的所有便條,編寫一個處理系統(tǒng),讀取上月的銷售情況(自己設定),進行如下處理:</p><p>  計算上個月沒人每種產(chǎn)品的

7、銷售額</p><p>  按銷售額對銷售員進行排序,輸出排序結(jié)果(銷售員代號)</p><p>  統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品從高到低的順序輸出結(jié)果(須輸出產(chǎn)品的代號和銷售額)</p><p><b>  輸出統(tǒng)計報表</b></p><p><b>  2 需求分析</b></p

8、><p>  本程序?qū)⒂玫轿募到y(tǒng),list.txt文件內(nèi)容作為數(shù)據(jù)源,其中單行內(nèi)容代表一張紙條。程序運行后首先將文件系統(tǒng)的原始數(shù)據(jù)讀取并保存到程序的結(jié)構(gòu)體數(shù)組當中,所以應提供文件輸入的操作;由于紙條數(shù)據(jù)零散,所以要對原始數(shù)據(jù)進行分類操作并提供一個數(shù)組用于保存分類信息;在程序中要進行統(tǒng)計工作,所以要提供顯示、排序等操作;另外應提供鍵盤式選擇菜單實現(xiàn)功能選擇。</p><p><b>

9、  總體設計</b></p><p>  根據(jù)上面的分析,可以將這個系統(tǒng)分為如下五大模塊:查看每人每種產(chǎn)品的銷售額 、按銷售額對銷售員排序、對每種產(chǎn)品總銷售額從高到低排序、輸出統(tǒng)計報表和退出。其中主要模塊是前四個模塊。</p><p><b>  4 詳細設計</b></p><p><b>  主函數(shù)</b>

10、;</p><p><b>  【數(shù)據(jù)結(jié)構(gòu)】</b></p><p>  原始數(shù)據(jù)有員工代號、產(chǎn)品代號和銷售額,所以定義一個全局結(jié)構(gòu)體數(shù)組scrip用于保存原始數(shù)據(jù)。然后定義全局變量n保存紙條數(shù)目,定義數(shù)組s用于保存分類后的信息。</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)體便于信息的存儲和讀寫,辨別*/ /*R是表示商品

12、的種類,最后一個為該銷售員商品總和*/</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表示職工的個數(shù),前面的宏常量*/</p><p>  for(i=0;;i++)</p><p><b>  {</b></p><p>  system("cls"

14、;); /*清頻命令*/</p><p>  menu(); /*菜單函數(shù)提示用戶怎樣選擇*/</p><p>  printf("你想做什么?\n");</p><p>  printf(&quo

15、t;請選擇:"); /*輸入要進行的操作*/</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; /*計算上個月每個人每種產(chǎn)品的銷售額*/&

17、lt;/p><p>  case 2 : range_sxy(sxy);break; /*按銷售額對銷售員進行排序,輸出排序結(jié)果*/</p><p>  case 3 : range_shangpin(sxy);break; /*統(tǒng)計每種產(chǎn)品的總銷售額,輸出排序結(jié)果*/</p><p>  case 4 : data_out(sxy);b

18、reak; /*輸出統(tǒng)計報表*/</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)體當中。</p><p><b>  【程序】</b></p><p>  void data_read(data *x) /*讀入函數(shù)使程序簡潔*/</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("您想查詢哪個月?\n");</p><p>  

21、printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/</p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt");/*連接文件屬性*/</p><p>  if((fp=fopen(fname,&

22、quot;rb"))==NULL) /*打開文件*/</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、出錯!\n"); </p><p><b>  }</b></p><p>  4.1.2 data_count()計算上個月每個人每種產(chǎn)品的銷售額</p><p><b>  【程序】</b></p><p>  void data_count(data *x)

25、 /*計算上個月每個人每種產(chǎn)品的銷售額*/</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; /*用于定義職工序號,產(chǎn)品序號,產(chǎn)品數(shù)量*/</p><p>  system("cls");</p><p>  printf(&

27、quot;您想計算哪個月?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息寫入*/</p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt");</p&

28、gt;<p>  if((fp=fopen(fname,"wb"))==NULL) /*打開文件*/</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++) /*對商品數(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 職工編號,產(chǎn)品編號,銷售數(shù)量\n"); /*寫入信息*/</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時結(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"); /*避免輸入信息出錯*/</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)計各個人的各種產(chǎn)品的數(shù)量,-1為了和數(shù)組中的序號相匹配*/</p><

34、;p><b>  }</b></p><p>  for(j=0;j<R;j++)</p><p>  if(fwrite((x+j),sizeof(data),1,fp)!=1) /*把信息寫入文件中便有以后調(diào)用*/</p><p>  printf("write error!\n");&

35、lt;/p><p>  fclose(fp); /*關閉文件避免信息遺漏*/</p><p><b>  }</b></p><p>  void range_sxy(data *x) /*按銷售額對銷售員

36、進行排序,輸出排序結(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("你要哪個月的?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/</p><p>  scanf("%s",fname);</p&

38、gt;<p>  strcat(fname,".txt");</p><p>  if((fp=fopen(fname,"rb"))==NULL) /*打開文件*/</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("讀入信息出錯!"); /*讀入信息提示*/</p><p>  for(i=0;i<R;) /*用于存儲職工編號

41、*/</p><p>  bianhao[i]=i++;</p><p>  printf("請輸入按何種產(chǎn)品排序\n");</p><p>  scanf("%d",&k);</p><p>  k=k-1;

42、 /*便于與結(jié)構(gòu)體中的數(shù)組值對應*/</p><p>  for(i=0;i<R;i++) /*按K種產(chǎn)品對銷售員排序,選擇法排序*/</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)用職工各自對應的結(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)品對銷售員排序為:\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>  用于顯示菜單,獲取用戶選項進入相應模塊。</p><

47、;p><b>  【程序】</b></p><p>  void menu()</p><p>  { printf(" *******************************************************\n");</p><p>  printf("

48、0.結(jié)束操作\n");</p><p>  printf(" 1.計算上個月每個人每種產(chǎn)品的銷售額\n");</p><p>  printf(" 2.按銷售額對銷售員進行排序,輸出排序結(jié)果\n");</p><p>  printf(" 3.統(tǒng)計每種產(chǎn)

49、品的總銷售額,輸出排序結(jié)果\n");</p><p>  printf(" 4.輸出統(tǒng)計報表\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)計報表*/</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("您想計算哪個月?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/</p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt")

53、;</p><p>  if((fp=fopen(fname,"rb"))==NULL) /*打開文件*/</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("讀入信息出錯!");</p><p>  for(i=0;i<Z;i++) /*對各種商品求和*/</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)計報表如下:\n");

57、 /*按要求輸出統(tǒng)計表*/</p><p>  printf("產(chǎn)品代號 銷售之和 銷售員代號\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>  各功能模塊設計</b></p>

61、;<p>  查看每人每種產(chǎn)品的銷售額模塊</p><p>  由于在初始化當中已經(jīng)進行分類整理,所以現(xiàn)在只要通過遍歷s數(shù)組就可以將統(tǒng)計信息顯示出來。</p><p><b>  【程序】</b></p><p>  按銷售額對銷售員排序</p><p>  計算每單個銷售員所有產(chǎn)品銷售數(shù)量,用一個FOR循

62、環(huán)循環(huán)四次,每次獲取最大值后輸出,輸出之后將最大值標記為-1,然后進行下次循環(huán),由此獲得由大到小的排行。</p><p><b>  【程序】</b></p><p>  range_sxy()銷售員統(tǒng)計排序函數(shù)</p><p><b>  【程序】</b></p><p>  void range

63、_sxy(data *x) /*按銷售額對銷售員進行排序,輸出排序結(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("你要哪個月的?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/<

65、/p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt");</p><p>  if((fp=fopen(fname,"rb"))==NULL) /*打開文件*/</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("讀入信息出錯!"); /*讀入信息提示*/</p><p>  for(i=0;

68、i<R;) /*用于存儲職工編號*/</p><p>  bianhao[i]=i++;</p><p>  printf("請輸入按何種產(chǎn)品排序\n");</p><p>  scanf("%d",&k);</p><p&

69、gt;  k=k-1; /*便于與結(jié)構(gòu)體中的數(shù)組值對應*/</p><p>  for(i=0;i<R;i++) /*按K種產(chǎn)品對銷售員排序,選擇法排序*/</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)用職工各自對應的結(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)品對銷售員排序為:\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)計每種產(chǎn)品的總銷售額,輸出排序結(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("您想計算哪個月的?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/&l

76、t;/p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt");</p><p>  if((fp=fopen(fname,"rb"))==NULL) /*打開文件*/</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("讀入信息出錯!");</p><p>  for(i=0;i<Z;i++)

79、 /*對各種商品求和*/</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;) /*用于存儲商品編號*/&

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++) /*對產(chǎn)

81、品從高到低排序,選擇法排序*/</p><p><b>  {</b></p><p><b>  t=i;</b></p><p>  for(j=i+1;j<Z;j++) /*產(chǎn)品變化時,產(chǎn)品編號也隨之變化,便于輸出*/</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)品編號 數(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>  對每種產(chǎn)品總銷售額從高到低排序</p><p>  計算每單個產(chǎn)品銷售數(shù)量,用一個FOR循環(huán)循環(huán)五次,每次獲取最大值后輸出,輸出之后將最大值標記為-1,然后進行下次循環(huán),由此獲得由大到小的排行。</p><p><b>  【程序】</b></p><p>  void range_shang

87、pin(data *x) /*統(tǒng)計每種產(chǎn)品的總銷售額,輸出排序結(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("您想計算哪個月的?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息

89、讀入*/</p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt");</p><p>  if((fp=fopen(fname,"rb"))==NULL) /*打開文件*/</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("讀入信息出錯!");</p><p>  for(i=0;i<Z;i++)

92、 /*對各種商品求和*/</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;) /*用于存儲商

93、品編號*/</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、 /*對產(chǎn)品從高到低排序,選擇法排序*/</p><p><b>  {</b></p><p><b>  t=i;</b></p><p>  for(j=i+1;j<Z;j++) /*產(chǎn)品變化時,產(chǎn)品編號也隨之變化,便于輸出*/</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)品編號 數(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)計報表</b></p><p>  輸出報表,將數(shù)組中的統(tǒng)計信息輸出到屏幕。</p><p><b>  【程序】</b></p><p>  void data_out(data *x)

100、 /*輸出統(tǒng)計報表*/</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("您想計算哪個月?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/</p><p>  scanf("%s",fname);</p>

102、<p>  strcat(fname,".txt");</p><p>  if((fp=fopen(fname,"rb"))==NULL) /*打開文件*/</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("讀入信息出錯!");</p><p>  for(i=0;i<Z;i++) /*對各種商品求和*/</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)計報表如下:\n"); /*按要求輸出統(tǒng)計表*/</p><p>  printf("產(chǎn)品代號 銷售之和 銷售員代號\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ù),退出程序時使用。</p><p>  5 運行結(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>  程序運行結(jié)果:</b></p><p>  查看每人每種產(chǎn)品的銷售額運行結(jié)果:</p><p&

112、gt;  按銷售額對銷售員排序運行結(jié)果:</p><p>  對每種產(chǎn)品銷售額從高到低排序運行結(jié)果:</p><p><b>  統(tǒng)計報表運行結(jié)果:</b></p><p><b>  6 總結(jié)</b></p><p>  通過這次C程序設計,我掌握了模塊化設計方法,能夠深入的理解結(jié)構(gòu)化程序設計

113、思想,熟練運用結(jié)構(gòu)化程序設計方法,提高了運用C語言進行程序設計的能力。</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表示銷售員個數(shù)*/</p><p> 

115、 typedef struct /*縮短結(jié)構(gòu)體變量名*/</p><p><b>  {</b></p><p>  int shangpin[Z]; /*定義結(jié)構(gòu)體便于信息的存儲和讀寫,辨別*/ /*R是表示商品的種

116、類,最后一個為該銷售員商品總和*/</p><p><b>  }data;</b></p><p>  void menu()</p><p>  { printf(" *******************************************************\n");</p>

117、<p>  printf(" 0.結(jié)束操作\n");</p><p>  printf(" 1.計算上個月每個人每種產(chǎn)品的銷售額\n");</p><p>  printf(" 2.按銷售額對銷售員進行排序,輸出排序結(jié)果\n");</p><p&g

118、t;  printf(" 3.統(tǒng)計每種產(chǎn)品的總銷售額,輸出排序結(jié)果\n");</p><p>  printf(" 4.輸出統(tǒng)計報表\n");</p><p>  printf(" ******************************************************\n&qu

119、ot;);</p><p><b>  }</b></p><p>  void data_read(data *x) /*讀入函數(shù)使程序簡潔*/</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("您想查詢哪個月?\n");</p><p>  printf("請輸入月份:"); /*輸入

121、文件名,這樣可以進行各個月份信息讀入*/</p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt");/*連接文件屬性*/</p><p>  if((fp=fopen(fname,"rb"))==NULL)

122、 /*打開文件*/</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("讀入信息出錯!\n"); </p><p><

124、;b>  }</b></p><p>  void data_count(data *x) /*計算上個月每個人每種產(chǎn)品的銷售額*/</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; /*用于定義職工序號,產(chǎn)品序號,產(chǎn)品數(shù)量*/</

126、p><p>  system("cls");</p><p>  printf("您想計算哪個月?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息寫入*/</p><p>  scanf("%s&q

127、uot;,fname);</p><p>  strcat(fname,".txt");</p><p>  if((fp=fopen(fname,"wb"))==NULL) /*打開文件*/</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、 /*對商品數(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 職工編號,產(chǎn)品編號,銷售數(shù)量\n"); /*寫入信息*/</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時結(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;); /*避免輸入信息出錯*/</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)計各個人的各種產(chǎn)品的數(shù)量,-1為了和數(shù)組中的序號相匹配*/</p><p><b>  }</b></p><p>  for(j=0;j<R;j++)</p><p>  if(fwrite((x+j),sizeof(data),1,fp)!=1) /*把信

134、息寫入文件中便有以后調(diào)用*/</p><p>  printf("write error!\n");</p><p>  fclose(fp); /*關閉文件避免信息遺漏*/</p><p><b>  }</b></p>&l

135、t;p>  void range_sxy(data *x) /*按銷售額對銷售員進行排序,輸出排序結(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("你要哪個月的?\n");</p><p>  printf("請輸入月份:"); /*輸入文件名,這

137、樣可以進行各個月份信息讀入*/</p><p>  scanf("%s",fname);</p><p>  strcat(fname,".txt");</p><p>  if((fp=fopen(fname,"rb"))==NULL) /*打開文件*/</

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("讀入信息出錯!"); /*讀入信息提示*/</p>

溫馨提示

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

評論

0/150

提交評論