




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告課程:C語言程序設計學號:0910321087姓名:曹葦班級:2010級計算機應用??瓢嗬蠋煟毫智贂r間:2011.6.72011.6.24計算機科學和技術系設計名稱:銷售管理系統設計日期: 2011年 06 月 31 日1. 設計內容:某公司有四個銷售員(編號:1-4),負責銷售五種產品(編號:1-5)。每個銷售員都將當天出售的每種產品各寫一張便條交上來。每張便條包含內容:1)銷售員的代號,2)產品的代號,3)這種產品的當天的銷售額。每位銷售員每天上繳1張便條。設計目的和要求設計目標1通過本課程設計,培育上機動手實力,使學生鞏固C語言程序設計課程學習的內容,駕馭工程軟件設計的基本方
2、法,強化上機動手實力,闖過編程關;2為后續各門計算機課程的學習打下堅實基礎。設計要求試設計一個便條管理系統,使之能供應以下功能:1、便條信息錄入功能(便條信息用文件保存)輸入2、收集到了上個月的全部便條后,讀取銷售狀況1)計算每個人每種產品的銷售額。2)按銷售額對銷售員進行排序,輸出排序結果(銷售員代號)3)統計每種產品的總銷售額,對這些產品按從高究竟的依次,輸出排序結果(需輸出產品的代號和銷售額)(可選項) 設計環境或器材、原理和說明設計環境:C+中文器材:電腦,C+程序設計說明:本設計主要應用C程序設計中的結構體、鏈表、文件等學問點。可參考本教材或者包含上述內容的任何教材。銷售管理系統設計
3、一、前提概述 (一) 編寫目標1通過本課程設計,培育上機動手實力,使學生鞏固C語言程序設計課程學習的內容,駕馭工程軟件設計的基本方法,強化上機動手實力,闖過編程關;2為后續各門計算機課程的學習打下堅實基礎。(二) 課程設計需求概述和需求說明:1需求概述:某公司有四個銷售員(編號:A,B,C,D),負責銷售五種產品(編號:1-5)。每個銷售員都將當天出售的產品寫一張便條交上來。每張便條包含內容:1)銷售員的代號;2)每種產品的代號和銷售量;假設,收集到了上個月的全部便條,編寫一個處理系統,讀取上個月的銷售狀況(自己設定),進行如下處理:1)計算上個月每個人每種產品的銷售量。2
4、)按銷售量對銷售員進行排序,輸出排序結果(銷售員代號)3)統計每種產品的總銷售量,對這些產品按從高究竟的依次,輸出排序結果(需輸出產品的代號和銷售量)4)輸出統計報表 2需求說明:1)源程序要有適當的注釋,使程序簡單閱讀。2)必需運用結構體和文件等數據結構。3)程序的運行結果要求運用文件作備份。4)至少輸出一份報表,激勵自行增加新功能。二、總體設計程序設計組成框圖1. 程序流程圖三、 程序流程1、功能函數f1()函數的功能: 計算上個月每個人每種產品的銷售額 函數的入口: 從main()的switch
5、()開關結構中進入,即choice的值為1時進入該函數,打開.dat數據文件,然后提示用戶通過鍵盤對該月的員工銷售狀況進行數據的讀入。函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口: 當程序執行提示語“printf("接著輸入請按回車,結束輸入請按escn");”的時候,對用戶的操作進行提示,假如用戶選擇了按“ESC”鍵,則用戶選擇了結束數據的錄入,將結束該函數,而執行主函數main()中“break;”跳出switch()開關函數,接著執行for循環結構。2、功能函數f2()函數的功能: 按銷售額對銷售員進行排
6、序,輸出排序結果。 函數的入口: 程序從main()的switch()開關結構中進入,即choice的值為2時,起先進入該函數,進入函數后,首先用“fopen()”打開文件,然后利用“fread()”讀取二進制數據,最終利用選擇排序法,按銷售員的所選產品的總銷售額對銷售員進行排序。函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口: 當輸出排序結果用printf()標準輸出到屏幕上,然后結束該函數,而執行主函數main()中“break;”跳出switch()開關函數,接著執行for循環結構。3、功能函數f3()函數的功能: 統計每種產
7、品的總銷售額,輸出排序結果 函數的入口: 從main()的switch()開關結構中進入,即choice的值為3的時侯,進入該函數,起先讀取數據對用戶進行提示,然后統計每種產品的總銷售額。將計算后的總銷售額進行排序,最終把排序的結果用printf()標準輸出函數,將結果輸出在屏幕上。函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口:當輸出排序結果用printf()標準輸出到屏幕上,然后結束該函數,而執行主函數main()中“break;”跳出switch()開關函數,接著執行for循環結構。函數的出口:當輸出排序結果用printf()
8、標準輸出到屏幕上,然后結束該函數,而執行主函數main()中“break;”跳出switch()開關函數,接著執行for循環結構。圖-寫入銷售數據界面1、功能函數f4()函數的功能: 輸出統計報表 函數的入口: 從main()的switch()開關結構中進入,即choice的值為4時,進入該函數,然后通過fopen()函數。即:“if(fp=fopen(fname,"rb")=NULL)” 打開文件。進入數據的處理。函數調用關系: 被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口: 起先時讀取數據后,統計報表已經輸出到屏幕上時,
9、然后利用而執行主函數main()中“break;”跳出switch()開關函數,接著執行for循環結構。5、功能函數主菜單 menu()圖-主菜單界面函數的功能: 主要作用是提示用戶操作,體現模塊化思想,主要是顯示出菜單讓用戶選擇要進行的任務。函數的入口: 從主函數main()中的system("cls"); /*清屏吩咐*/menu(); /*菜單函數提示用戶怎樣選擇*/進入函數,這是干脆被主函數main()調用的。函數調用關系:被主函數調用。并在文中無返回值的空值void函數。函數的出口: 執行完全部的printf()函數后自動退出該函數。6、功能函數主函數 main(
10、)軟件進入提示頁面函數的功能: 用于聯系各個功能函數模塊,以及退出程序時的退出畫面提示。函數的入口: 整個程序是從主函數起先的。函數的出口: 當從main()的switch()開關結構中進入,即choise的值為5時通過break;跳出for循環,然后退出main()函數,即:退出整個程序。函數調用關系:該函數不被其它函數調用四、試驗結果輸入一月份各個銷售員的銷售信息:執行程序結果,一月份按產品1銷售量對銷售員進行排序,輸出排序結果如下:統計每種產品的總銷售量,對這些產品按從高究竟的依次,輸出排序結果如下:輸出統計報表如下:五、設計體會經過C語言課程設計實踐學習,使我對c語言有了更進一步的相識
11、和了解,板通過實踐,我也發覺我的好多不足之處,首先是在程序輸入上還不夠嫻熟,常常按錯字母,通過學習也有所改進;再有對c語言的一些標準庫函數不太了解,還有對函數調用的正確運用不夠熟識,還有對c語言中常常出現的錯誤也不了解,通過實踐,使我在這幾個方面的相識有所提高。在本次試驗中駕馭了C語言的基本學問:數據類型(整形、實型、字符型、指針、數組、結構等);運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等);程序結構(依次結構、推斷選擇結構、循環結構);大程序的功能分解方法(即函數的運用)等。進一步駕馭各種函數的應用,以及文件的讀寫操作等。我認為要學好c語言程序這門課程,不僅要仔細閱讀課本學問,更
12、重要的是要通過上機實踐才能增加和鞏固我的學問。只有這樣我們才能成為合格的計算機人材。六、 源程序清單1) /*計算上個月每個人每種產品的銷售量。2) 按銷售量對銷售員進行排序,輸出排序結果(銷售員代號)3) 統計每種產品的總銷售量,按從高究竟的依次,輸出排序結果(需輸出產品代號,銷售量)4) 輸出統計報表*/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表示銷售員個數*/7) typedef struct
14、/*縮短結構體變量名*/8) int shangpinZ;/*定義結構體便于信息的存儲和讀寫,辨別*/ 9) data;/*R是表示商品的種類,最終一個為該銷售員商品總和*/10) void menu() 11) system("cls");/*清屏吩咐*/12) printf(&q
15、uot;nn");13) printf("t 主菜單n");14) printf("t 1.計算上個月每個人每種產品的銷售量 n");15) printf("t 2.按銷售量對銷售員進行排序,輸出排序結果 n");16) &
16、#160; printf("t 3.統計每種產品的總銷售量,輸出排序結果 n");17) printf("t 4.輸出統計報表 n");18) printf("t 5.結束操作 n");19) printf("t n");20)
17、60; 21) void f1(data *x) /*計算上個月每個人每種產品的銷售量*/22) FILE *fp;23)
18、; char fname10,hitkey;24) int j,t; /*用于限制循環*/25) int i,k,s; /*用于定義職工序號,產品序號,產品數量*/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);結束程序*/34) 35) for(j=0;j<R;j+) /*對商品數量清零*/36)
23、 for(t=0;t<Z;t+)37) (x+j)->shangpint=0;38) printf("請輸入:n職工編號產品編號銷售數量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; /*統計各個人的各種產品的數量,-1為了和數組中的序號相匹配*/47)
27、0; printf("接著輸入請按回車,結束輸入請按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)/*把信息寫入文件中便有以后調用*/55) printf("write error!n&
30、quot;);56) fclose(fp); /*關閉文件避開信息遺漏*/57) printf("nnnnnnttt保存勝利,按隨意鍵返回主菜單!");58) &
31、#160; getch();59) 60) void f2(data *x) /*按銷售量對銷售員進行排序,輸出排序結果*/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("請輸入按何種產品排序n");79) scanf("%d",&k);80) k=k-1; /*便于和結構體中的
39、數組值對應*/81) for(i=0;i<R;i+) /*按K種產品對銷售員排序,選擇法排序*/82) t=i;83) for
40、(j=i+1;j<R;j+)84) if(x+bianhaot)->shangpink<(x+bianhaoj)->shangpink)/*調用職工各自對應的結構體內的產品數量*/ t=j;85) if(t!=i)86)
41、0; z=bianhaoi;87) bianhaoi=bianhaot;88) bianhaot=z;89)
42、 90) 91) printf("ttt按%d產品對銷售員排序為: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) /*統計每種產品的總銷售量,輸出排序結果*/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+) /*對產品從高到低排序,選擇法排序*/123) t=i;124) for(j=i+1;j<Z;j+) /*產品改變時,產品編號也隨之改變,便于輸出*/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("輸出產品排序n");137) printf("產品編號 數量n");138)
56、; printf("n");139) for(i=0;i<Z;i+)140) printf(" 產品%-7d%-1dn",bianhaoi+1,sumi);141) printf("nnnttt按
57、隨意鍵返回主菜單!");142) getch();143) fclose(fp);/*關閉讀入的文件*/144) 145) void f4(data *x)
58、/*輸出統計報表*/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("輸出統計報表如下:n"); /*按要求輸出統計表*/168) printf("銷售員代號 產品代號 銷售之和n");169) for(i=0;i<R;i+)170)
65、 for(j=0;j<Z;j+)171) printf(" 員工%-8d產品%-6d數量%-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("產品%d之和%-10d 總和 %-10dn",i+1,sumi,sumZ);176) else 177)
67、160; printf("產品%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表示職工的個數,前面的宏常量*/185) printf("nnnnnntn");186) print
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省無錫市梁溪區2025屆三年級數學第二學期期末監測模擬試題含解析
- 新疆烏魯木齊市十中2024-2025學年下學期高三期末英語試題含解析
- 浙江省金華市義烏市2025年數學四年級第二學期期末學業水平測試模擬試題含解析
- 全州縣2025年三下數學期末聯考試題含解析
- 項目總監聘請合同簡化范本
- 三輪車銷售協議書
- 豐臺區長辛店第一幼兒園合同續簽順利進行
- 湖北省十堰市2024-2025學年七年級下學期期中歷史試題(含答案)
- 2025年廣東省湛江市寸金培才學校中考歷史四模試卷 (含答案)
- 果園托管合同范本
- 閱讀提取信息課件
- 2025年河南省中考數學二輪復習壓軸題:動態幾何問題專練
- 《知識產權保護》課件
- 2025-2030中國制造運營管理(MOM)軟件行業市場現狀供需分析及投資評估規劃分析研究報告
- 江蘇省2024年中職職教高考文化統考烹飪專業綜合理論真題試卷
- 市政工程施工部署與資源配置計劃
- 2025年理化檢驗面試試題及答案
- 11.1 化學與人體健康(課件)-2024-2025學年九年級化學人教版下冊
- 2025年電力人工智能多模態大模型創新技術及應用報告-西安交通大學
- 離婚協議書電子版下載
- 撰寫課題申請書的五個關鍵(課堂PPT)
評論
0/150
提交評論