




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、課程設計報告課程:C語言程序設計學號:0910321087姓名:曹葦班級:2010級計算機應用??瓢嘟處煟毫智贂r間:2011.6.72011.6.24計算機科學與技術系設計名稱:銷售管理系統(tǒng)設計日期: 2011年 06 月 31 日1. 設計內(nèi)容:某公司有四個銷售員(編號:1-4),負責銷售五種產(chǎn)品(編號:1-5)。每個銷售員都將當天出售的每種產(chǎn)品各寫一張便條交上來。每張便條包含內(nèi)容:1)銷售員的代號,2)產(chǎn)品的代號,3)這種產(chǎn)品的當天的銷售額。每位銷售員每天上繳1張便條。設計目的與要求設計目標1通過本課程設計,培養(yǎng)上機動手能力,使學生鞏固C語言程序設計課程學習的內(nèi)容,掌握工程軟件設計的基本方
2、法,強化上機動手能力,闖過編程關;2為后續(xù)各門計算機課程的學習打下堅實基礎。設計要求試設計一個便條管理系統(tǒng),使之能提供以下功能:1、便條信息錄入功能(便條信息用文件保存)輸入2、收集到了上個月的所有便條后,讀取銷售情況1)計算每個人每種產(chǎn)品的銷售額。2)按銷售額對銷售員進行排序,輸出排序結(jié)果(銷售員代號)3)統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號和銷售額)(可選項) 設計環(huán)境或器材、原理與說明設計環(huán)境:C+中文器材:電腦,C+程序設計說明:本設計主要應用C程序設計中的結(jié)構(gòu)體、鏈表、文件等知識點。可參考本教材或者包含上述內(nèi)容的任何教材。銷售管理系統(tǒng)設計
3、一、前提概述 (一) 編寫目標1通過本課程設計,培養(yǎng)上機動手能力,使學生鞏固C語言程序設計課程學習的內(nèi)容,掌握工程軟件設計的基本方法,強化上機動手能力,闖過編程關;2為后續(xù)各門計算機課程的學習打下堅實基礎。(二) 課程設計需求概述和需求說明:1需求概述:某公司有四個銷售員(編號:A,B,C,D),負責銷售五種產(chǎn)品(編號:1-5)。每個銷售員都將當天出售的產(chǎn)品寫一張便條交上來。每張便條包含內(nèi)容:1)銷售員的代號;2)每種產(chǎn)品的代號和銷售量;假設,收集到了上個月的所有便條,編寫一個處理系統(tǒng),讀取上個月的銷售情況(自己設定),進行如下處理:1)計算上個月每個人每種產(chǎn)品的銷售量。2
4、)按銷售量對銷售員進行排序,輸出排序結(jié)果(銷售員代號)3)統(tǒng)計每種產(chǎn)品的總銷售量,對這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號和銷售量)4)輸出統(tǒng)計報表 2需求說明:1)源程序要有適當?shù)淖⑨?,使程序容易閱讀。2)必須使用結(jié)構(gòu)體和文件等數(shù)據(jù)結(jié)構(gòu)。3)程序的運行結(jié)果要求使用文件作備份。4)至少輸出一份報表,鼓勵自行增加新功能。二、總體設計程序設計組成框圖1. 程序流程圖三、 程序流程1、功能函數(shù)f1()函數(shù)的功能: 計算上個月每個人每種產(chǎn)品的銷售額 函數(shù)的入口: 從main()的switch
5、()開關結(jié)構(gòu)中進入,即choice的值為1時進入該函數(shù),打開.dat數(shù)據(jù)文件,然后提示用戶通過鍵盤對該月的員工銷售情況進行數(shù)據(jù)的讀入。函數(shù)調(diào)用關系:被主函數(shù)調(diào)用。由switch()開關結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。函數(shù)的出口: 當程序執(zhí)行提示語“printf("繼續(xù)輸入請按回車,結(jié)束輸入請按escn");”的時候,對用戶的操作進行提示,如果用戶選擇了按“ESC”鍵,則用戶選擇了結(jié)束數(shù)據(jù)的錄入,將結(jié)束該函數(shù),而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。2、功能函數(shù)f2()函數(shù)的功能: 按銷售額對銷售員進行排
6、序,輸出排序結(jié)果。 函數(shù)的入口: 程序從main()的switch()開關結(jié)構(gòu)中進入,即choice的值為2時,開始進入該函數(shù),進入函數(shù)后,首先用“fopen()”打開文件,然后利用“fread()”讀取二進制數(shù)據(jù),最終利用選擇排序法,按銷售員的所選產(chǎn)品的總銷售額對銷售員進行排序。函數(shù)調(diào)用關系:被主函數(shù)調(diào)用。由switch()開關結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。函數(shù)的出口: 當輸出排序結(jié)果用printf()標準輸出到屏幕上,然后結(jié)束該函數(shù),而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。3、功能函數(shù)f3()函數(shù)的功能: 統(tǒng)計每種產(chǎn)
7、品的總銷售額,輸出排序結(jié)果 函數(shù)的入口: 從main()的switch()開關結(jié)構(gòu)中進入,即choice的值為3的時侯,進入該函數(shù),開始讀取數(shù)據(jù)對用戶進行提示,然后統(tǒng)計每種產(chǎn)品的總銷售額。將計算后的總銷售額進行排序,最終把排序的結(jié)果用printf()標準輸出函數(shù),將結(jié)果輸出在屏幕上。函數(shù)調(diào)用關系:被主函數(shù)調(diào)用。由switch()開關結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。函數(shù)的出口:當輸出排序結(jié)果用printf()標準輸出到屏幕上,然后結(jié)束該函數(shù),而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。函數(shù)的出口:當輸出排序結(jié)果用printf()
8、標準輸出到屏幕上,然后結(jié)束該函數(shù),而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。圖-寫入銷售數(shù)據(jù)界面1、功能函數(shù)f4()函數(shù)的功能: 輸出統(tǒng)計報表 函數(shù)的入口: 從main()的switch()開關結(jié)構(gòu)中進入,即choice的值為4時,進入該函數(shù),然后通過fopen()函數(shù)。即:“if(fp=fopen(fname,"rb")=NULL)” 打開文件。進入數(shù)據(jù)的處理。函數(shù)調(diào)用關系: 被主函數(shù)調(diào)用。由switch()開關結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。函數(shù)的出口: 開始時讀取數(shù)據(jù)后,統(tǒng)計報表已經(jīng)輸出到屏幕上時,
9、然后利用而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。5、功能函數(shù)主菜單 menu()圖-主菜單界面函數(shù)的功能: 主要作用是提示用戶操作,體現(xiàn)模塊化思想,主要是顯示出菜單讓用戶選擇要進行的任務。函數(shù)的入口: 從主函數(shù)main()中的system("cls"); /*清屏命令*/menu(); /*菜單函數(shù)提示用戶怎樣選擇*/進入函數(shù),這是直接被主函數(shù)main()調(diào)用的。函數(shù)調(diào)用關系:被主函數(shù)調(diào)用。并在文中無返回值的空值void函數(shù)。函數(shù)的出口: 執(zhí)行完所有的printf()函數(shù)后自動退出該函數(shù)。6、功能函數(shù)主函數(shù) main(
10、)軟件進入提示頁面函數(shù)的功能: 用于聯(lián)系各個功能函數(shù)模塊,以及退出程序時的退出畫面提示。函數(shù)的入口: 整個程序是從主函數(shù)開始的。函數(shù)的出口: 當從main()的switch()開關結(jié)構(gòu)中進入,即choise的值為5時通過break;跳出for循環(huán),然后退出main()函數(shù),即:退出整個程序。函數(shù)調(diào)用關系:該函數(shù)不被其它函數(shù)調(diào)用四、實驗結(jié)果輸入一月份各個銷售員的銷售信息:執(zhí)行程序結(jié)果,一月份按產(chǎn)品1銷售量對銷售員進行排序,輸出排序結(jié)果如下:統(tǒng)計每種產(chǎn)品的總銷售量,對這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果如下:輸出統(tǒng)計報表如下:五、設計體會經(jīng)過C語言課程設計實踐學習,使我對c語言有了更進一步的認識
11、和了解,板通過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先是在程序輸入上還不夠熟練,經(jīng)常按錯字母,通過學習也有所改進;再有對c語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對c語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。在本次試驗中掌握了C語言的基本知識:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結(jié)構(gòu)等);運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等);程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu));大程序的功能分解方法(即函數(shù)的使用)等。進一步掌握各種函數(shù)的應用,以及文件的讀寫操作等。我認為要學好c語言程序這門課程,不僅要認真閱讀課本知識,更
12、重要的是要通過上機實踐才能增強和鞏固我的知識。只有這樣我們才能成為合格的計算機人材。六、 源程序清單1) /*計算上個月每個人每種產(chǎn)品的銷售量。2) 按銷售量對銷售員進行排序,輸出排序結(jié)果(銷售員代號)3) 統(tǒng)計每種產(chǎn)品的總銷售量,按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品代號,銷售量)4) 輸出統(tǒng)計報表*/1)
13、; #include <stdio.h>2) #include <string.h>3) #include <conio.h>4) #include <stdlib.h>5) #define Z 56) #define R 4 /*定義宏常量便于程序的一般化*/ /*R表示銷售員個數(shù)*/7) typedef struct
14、/*縮短結(jié)構(gòu)體變量名*/8) int shangpinZ;/*定義結(jié)構(gòu)體便于信息的存儲和讀寫,辨別*/ 9) data;/*R是表示商品的種類,最后一個為該銷售員商品總和*/10) void menu() 11) system("cls");/*清屏命令*/12) printf(&q
15、uot;nn");13) printf("t 主菜單n");14) printf("t 1.計算上個月每個人每種產(chǎn)品的銷售量 n");15) printf("t 2.按銷售量對銷售員進行排序,輸出排序結(jié)果 n");16) &
16、#160; printf("t 3.統(tǒng)計每種產(chǎn)品的總銷售量,輸出排序結(jié)果 n");17) printf("t 4.輸出統(tǒng)計報表 n");18) printf("t 5.結(jié)束操作 n");19) printf("t n");20)
17、60; 21) void f1(data *x) /*計算上個月每個人每種產(chǎn)品的銷售量*/22) FILE *fp;23)
18、; char fname10,hitkey;24) int j,t; /*用于控制循環(huán)*/25) int i,k,s; /*用于定義職工序號,產(chǎn)品序號,產(chǎn)品數(shù)量*/26
19、) system("cls");/*清屏命令*/27) printf("您想計算哪個月?n");28) &
20、#160; printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息寫入*/29) scanf("%s",fname);30) strcat(fname,".dat");31)
21、0; if(fp=fopen(fname,"wb")=NULL) /*打開文件*/32) printf("不能打開文件!n");33)
22、60; exit(0);/* 正常exit(0);結(jié)束程序*/34) 35) for(j=0;j<R;j+) /*對商品數(shù)量清零*/36)
23、 for(t=0;t<Z;t+)37) (x+j)->shangpint=0;38) printf("請輸入:n職工編號產(chǎn)品編號銷售數(shù)量n"); /*提示用戶寫入信息的格式*/39) &
24、#160; for(j=0;hitkey!=27;j+)40) scanf("%d%d%d",&i,&k,&s);41) if(i>R|i<0|k&
25、gt;Z|k<0) 42) printf("信息錯誤!n"); /*提示語,避免輸入信息出錯*/43) continue;44) &
26、#160; 45) else46) (x+i-1)->shangpink-1=(x+i-1)->shangpink-1+s; /*統(tǒng)計各個人的各種產(chǎn)品的數(shù)量,-1為了和數(shù)組中的序號相匹配*/47)
27、0; printf("繼續(xù)輸入請按回車,結(jié)束輸入請按escn");48) printf("n");49) hitkey=getch();50)
28、; for (;hitkey!=13&&hitkey!=27;)51) hitkey=getch();52) 53)
29、 for(j=0;j<R;j+)54) if(fwrite(x+j),sizeof(data),1,fp)!=1)/*把信息寫入文件中便有以后調(diào)用*/55) printf("write error!n&
30、quot;);56) fclose(fp); /*關閉文件避免信息遺漏*/57) printf("nnnnnnttt保存成功,按任意鍵返回主菜單!");58) &
31、#160; getch();59) 60) void f2(data *x) /*按銷售量對銷售員進行排序,輸出排序結(jié)果*/61) &
32、#160; FILE *fp;62) char fname10;63) int i,k,j,t,bianhao =0,z;64)
33、160; system("cls");/*清屏命令*/65) printf("你要哪個月的?n");66) printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/67)
34、60; scanf("%s",fname);68) strcat(fname,".dat");69) if(fp=f
35、open(fname,"rb")=NULL) /*打開文件*/70) printf("不能打開文件!n");71) exit(0);72) &
36、#160; 73) for(i=0;i<R;i+) /*讀出信息*/74) if(fread(x+i,sizeof(data),1,fp)!=1)75)
37、; printf("讀入信息出錯!"); /*讀入信息提示*/76) for(i=0;i<R;) /*用于存儲職工編號*/77) bianhaoi=i+;78)
38、60; printf("請輸入按何種產(chǎn)品排序n");79) scanf("%d",&k);80) k=k-1; /*便于與結(jié)構(gòu)體中的
39、數(shù)組值對應*/81) for(i=0;i<R;i+) /*按K種產(chǎn)品對銷售員排序,選擇法排序*/82) t=i;83) for
40、(j=i+1;j<R;j+)84) if(x+bianhaot)->shangpink<(x+bianhaoj)->shangpink)/*調(diào)用職工各自對應的結(jié)構(gòu)體內(nèi)的產(chǎn)品數(shù)量*/ t=j;85) if(t!=i)86)
41、0; z=bianhaoi;87) bianhaoi=bianhaot;88) bianhaot=z;89)
42、 90) 91) printf("ttt按%d產(chǎn)品對銷售員排序為:n",k+1);92)
43、 printf("n");93) for(i=0;i<R;i+)94) printf("ttt第%d名是:員工%dn",i+1,bianhaoi+1);95)
44、 printf("nnnttt按任意鍵返回上一主菜單!");96) getch();97) fclose(fp);/*關閉讀入的文件*/
45、98) 99) void f3(data *x) /*統(tǒng)計每種產(chǎn)品的總銷售量,輸出排序結(jié)果*/100) FILE *fp;101) &
46、#160; char fname10;102) int i,j,sumZ=0,bianhaoZ=0,z,t,k;103) system("cls");/*清屏命令*/104) printf("您想計
47、算哪個月的?n");105) printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/106) scanf("%s",fname);107) strcat(fname,".dat"
48、;);108) if(fp=fopen(fname,"rb")=NULL) /*打開文件*/109) printf("不能打開文件!n");110) exit(0);111) &
49、#160; 112) for(i=0;i<R;i+) /*讀出信息*/113) if(fread(x+i,sizeof(data),1,fp)!=1)114) printf("讀入信息出錯!");115)
50、; for(i=0;i<Z;i+) /*對各種商品求和*/116) for(j=0;j<R;j+)117) sumi=sumi+(x+j)->shangpini;118)
51、160; for(i=0;i<Z;) /*用于存儲商品編號*/119) bianhaoi=i+;120) for(i=0;i<Z;i+)121) printf("%3d",bianhaoi);122)
52、0; for(i=0;i<Z;i+) /*對產(chǎn)品從高到低排序,選擇法排序*/123) t=i;124) for(j=i+1;j<Z;j+) /*產(chǎn)品變化時,產(chǎn)品編號也隨之變化,便于輸出*/125) if(
53、sumt<sumj) 126) t=j;127) if(t!=i)128) k=sumi;129) sumi=sumt;130)
54、; sumt=k;131) z=bianhaoi;132) bianhaoi=bianhaot;133) bianhaot=z;134)
55、0; 135) 136) printf("輸出產(chǎn)品排序n");137) printf("產(chǎn)品編號 數(shù)量n");138)
56、; printf("n");139) for(i=0;i<Z;i+)140) printf(" 產(chǎn)品%-7d%-1dn",bianhaoi+1,sumi);141) printf("nnnttt按
57、任意鍵返回主菜單!");142) getch();143) fclose(fp);/*關閉讀入的文件*/144) 145) void f4(data *x)
58、/*輸出統(tǒng)計報表*/146) FILE *fp;147) char fname10;148) int i,j,sumZ+1=0;149) system("cl
59、s");/*清屏命令*/150) printf("您想計算哪個月?n");151) printf("請輸入月份:"); /*實為輸入一個文件名,這樣可以進行各個月份的信息讀入*/152) scanf("%s"
60、;,fname);153) strcat(fname,".dat");154) if(fp=fopen(fname,"rb")=NULL) /*打開文件*/155) printf("不能打開文件!n");156)
61、160; exit(0);157) 158) for(i=0;i<R;i+) /*讀出信息*/159) if(fread(x+i,sizeof(data),1,fp)!=1)
62、160) printf("讀入信息出錯!");161) for(i=0;i<Z;i+) /*對各種商品求和*/162) for(j=0;j<R;j+)163) &
63、#160; sumi=sumi+(x+j)->shangpini;164) for(i=0;i<Z;i+) /*求商品總和*/165) sumZ=sumZ+sumi;166) printf("n");167)
64、 printf("輸出統(tǒng)計報表如下:n"); /*按要求輸出統(tǒng)計表*/168) printf("銷售員代號 產(chǎn)品代號 銷售之和n");169) for(i=0;i<R;i+)170)
65、 for(j=0;j<Z;j+)171) printf(" 員工%-8d產(chǎn)品%-6d數(shù)量%-10dn",i+1,j+1,(x+i)->shangpinj);172) printf("n");173) &
66、#160; for(i=0;i<Z;i+)174) if(i=0) 175) printf("產(chǎn)品%d之和%-10d 總和 %-10dn",i+1,sumi,sumZ);176) else 177)
67、160; printf("產(chǎn)品%d之和 %-10dn",i+1,sumi);178) 179) printf("nnnttt按任意鍵返回主菜單!");180) getch();181)
68、160; 182) void main()183) int i,choice;184) data sxy ; /*R表示職工的個數(shù),前面的宏常量*/185) printf("nnnnnntn");186)
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年小學語文教師資格考試試卷及答案
- 2025年健康管理師考試試卷及答案歸納
- 2025年數(shù)據(jù)科學與大數(shù)據(jù)分析職業(yè)考試試卷及答案
- 社會自我與他我關系的試題及答案
- 提升財務分析能力的技能試題及答案
- 財務管理考試重點復習試題及答案
- 投資決策角度的試題及答案
- 財務管理考試構(gòu)架試題及答案2025
- 文化傳播與社會變遷試題及答案
- 企業(yè)重組過程中的財務考量試題及答案
- 2025四川綿陽交發(fā)實業(yè)有限責任公司及下屬子公司招聘人力資源管理等崗位5人筆試參考題庫附帶答案詳解
- 2025年中考數(shù)學復習難題速遞之投影與視圖(2025年4月)
- 湖北省鄂東南2025年春季高三年級五月模擬考物理試題及答案
- 游戲室電競椅行業(yè)跨境出海戰(zhàn)略研究報告
- 2025年心理咨詢師考試試題及答案
- 初二下學期期中家長會發(fā)言稿
- 《計算機網(wǎng)絡基礎》課件
- 四川省資陽市樂至縣2025年三年級數(shù)學第二學期期末達標檢測試題含解析
- 【七下HK數(shù)學】安徽省合肥市五十中學東校2023-2024學年七年級下學期期中數(shù)學試卷
- 廣東省廣州市2025年中考地理模擬卷
- 藥店質(zhì)量負責人聘用合同范例二零二五年
評論
0/150
提交評論