銷售管理系統課程設計報告.doc_第1頁
銷售管理系統課程設計報告.doc_第2頁
銷售管理系統課程設計報告.doc_第3頁
銷售管理系統課程設計報告.doc_第4頁
銷售管理系統課程設計報告.doc_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

精品文檔1歡迎下載1歡迎下載。目錄1 課程設計目的與要求12 問題描述23總體設計33.1 功能分析33.2 系統使用的主要函數33.3 系統使用的主要數據結構34 詳細設計44.1 程序總體結構圖,層次圖44.2 程序流程圖45 功能測試56 程序設計調試情況分析67 課程設計小結7參考文獻8附錄 系統源程序9精品文檔1歡迎下載。1 課程設計目的與要求高級語言程序設計是本科工科類各專業的重要基礎課,課程以影響深遠的、傳統的、面向過程的優秀編程語言C語言為基礎,學習程序設計的基本概念和方法,通過本門課程學習,應使同學掌握高級語言的基本原理,熟練掌握程序設計的基礎知識、基本概念;掌握程序設計的思想和編程技巧。課程設計是在學生已經具備了使用C語言編寫簡單的應用程序的能力,為使學生對C語言有更全面的理解,進一步提高運用C語言編程解決實際問題的能力,通過提出算法、指定輸入輸出來設計一個解決方案。經過該實踐環節,培養學生的探索精神和創新能力。通過答辯訓練學生的綜合表達能力。參加本課程設計的學生,應當認真完成本課程設計的全部過程。并以最終課程設計成果來證明其獨立完成各種實際任務的能力。從而反映出理解和運用本課程知識的水平和能力。具體如下:(1)數據組織方面盡量使用到:數組、鏈表、結構體、文件;(2)程序結構方面做到函數調用,盡量采用指針運算;(3)代碼編寫規范,形成良好的編程習慣;(4)程序須有一定的健壯性和必要的提示信息,考慮問題的多種可能和邊界數據。(5)課設完成須進行答辯,提交課設報告電子稿、裝訂的打印稿。課設報告內容包括以下幾個方面:l 程序的總體設計和算法分析。l 程序流程圖、函數說明l 源程序代碼清單l 測試數據和測試過程記錄l 遇到的問題及解決方法分析l 課程設計小結2 問題描述設計一個C語言程序(銷售管理系統),具體要求:某公司有四個銷售員(編號:1-4),負責銷售五種產品(編號1-5)。每個銷售員都將當天出售的每種產品各寫一張便條交上來。每張便條包含內容:1) 銷售員代號2) 產品代號3) 這種產品當天的銷售額每位銷售員每天的可能上交0-5張便條。假設,收集到了上個月的所有便條,編寫一個處理系統,讀取上個月的銷售情況,進行如下處理: 主要功能: 1、計算上個月每個人每種產品的銷售額。2、按銷售額對銷售員進行排序,輸出排序結果(銷售員代號)3、統計每種產品的總銷售額,對這些產品按從高到底的順序輸出排序結果(需輸出產品的代號和銷售額)4、輸出統計報表3總體設計 3.1 功能分析系統提供主界面,各種功能操作以獨立的函數為基礎,運用對鏈表操作的技術來實現通訊錄的管理,同時對操作結果在計算機中做永久保存。) 3.2 系統使用的主要函數(列出函數首部+注釋)void f1(DATA *x) /*顯示所有的信息*/void f2(DATA *x) /*按銷售額對銷售員進行排序,輸出排序結void f3(DATA *x) /*統計每種產品的總銷售額,輸出排序結果*/void f4(DATA *x) /*輸出統計報表*/ 3.3 系統使用的主要數據結構 typedef struct /*縮短結構體變量名*/ int shangpinZ; /*定義結構體便于信息的存儲和讀寫,辨別*/ DATA; /*R是表示商品的種類,最后一個為該銷售員商品總和*/4 詳細設計4.1 程序總體結構圖,層次圖主函數4.2 程序流程圖入口結束 5 功能測試1、功能函數主函數 main() 函數的功能: 用于聯系各個功能函數模塊,以及退出程序時的退出畫面提示。函數的入口: 整個程序是從主函數開始的。函數的出口: 當從main()的switch()開關結構中進入,即choise的值為5時通過break;跳出for循環,然后退出main()函數,即:退出整個程序。函數調用關系:該函數不被其它函數調用 圖5.1-軟件進入提示頁面2、功能函數主菜單 menu() 函數的功能: 主要作用是提示用戶操作,體現模塊化思想,主要是顯示出菜單讓用戶選擇要進行的任務。函數的入口: 從主函數main()中的system(cls); /*清屏命令*/menu(); /*菜單函數提示用戶怎樣選擇*/進入函數,這是直接被主函數main()調用的。函數調用關系:被主函數調用。并在文中無返回值的空值void函數。函數的出口:執行完所有的printf()函數后自動退出該函數。圖5.2-主菜單界面3、功能函數f1() 函數的功能: 計算上個月每個人每種產品的銷售額 函數的入口: 從main()的switch()開關結構中進入,即choice的值為1時進入該函數,打開.dat數據文件,然后提示用戶通過鍵盤對該月的員工銷售情況進行數據的讀入。函數調用關系: 被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口: 當程序執行提示語“printf(繼續輸入請按回車,結束輸入請按escn);”的時候,對用戶的操作進行提示,如果用戶選擇了按“ESC”鍵,則用戶選擇了結束數據的錄入,將結束該函數,而執行主函數main()中“break;”跳出switch()開關函數,繼續執行for循環結構。圖5.3-寫入銷售數據界面4、功能函數f2()函數的功能: 按銷售額對銷售員進行排序,輸出排序結果。 函數的入口: 程序從main()的switch()開關結構中進入,即choise的值為2時,開始進入該函數,進入函數后,首先用“fopen()”打開文件,然后利用“fread()”讀取二進制數據,最終利用選擇排序法,按銷售員的所選產品的總銷售額對銷售員進行排序。函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口: 當輸出排序結果用printf()標準輸出到屏幕上,然后結束該函數,而執行主函數main()中“break;”跳出switch()開關函數,繼續執行for循環結構。圖5.4-按銷售額對銷售員進行排序5、功能函數f3()函數的功能: 統計每種產品的總銷售額,輸出排序結果 函數的入口: 從main()的switch()開關結構中進入,即choise的值為3的時侯,進入該函數,開始讀取數據對用戶進行提示,然后統計每種產品的總銷售額。將計算后的總銷售額進行排序,最終把排序的結果用printf()標準輸出函數,將結果輸出在屏幕上。函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口:當輸出排序結果用printf()標準輸出到屏幕上,然后結束該函數,而執行主函數main()中“break;”跳出switch()開關函數,繼續執行for循環結構。圖5.5-統計每種產品的總銷售額,輸出排序結果 6、功能函數f4()函數的功能: 輸出統計報表 函數的入口: 從main()的switch()開關結構中進入,即choise的值為3時,進入該函數,然后通過fopen()函數。即:“if(fp=fopen(fname,rb)=NULL)” 打開文件。進入數據的處理。函數調用關系: 被主函數調用。由switch()開關結構中進入,并在文中無返回值的空值void函數。函數的出口: 開始時讀取數據后,統計報表已經輸出到屏幕上時,然后利用而執行主函數main()中“break;”跳出switch()開關函數,繼續執行for循環結構。圖5.5-輸出統計報表 6 程序設計調試情況分析調試方法:打開Microsoft Visual C+ 6.0,先將各個功能函數的的內容清空,只保留主函數main(),然后編譯檢驗main()函數中是否有錯,如果沒有錯誤,再連接、運行。確認main()函數一切無誤后,然后加入功能函數menu()函數與f1()函數,由于menu()函數比較簡單,所以與f1()函數一起進行調試,f1()函數中主要注意讀取文件,與寫入文件,這都是二進制的形式。若menu()函數與f1()函數編譯、連接、運行沒問題,繼續加入f2()函數,就這樣的方法依次檢查調試f3()函數、f4()函數。當所有的功能函數都加上且正確無誤時,就可以進入下一個環節程序的測試。測試方法: 運行程序,然后進入銷售管理系統的界面,在這里需要做的就是把自己當成一個公司的程序使用者,來對該程序進行使用,看該程序有哪些方面用著不夠爽,把這些問題依次整理出來,再對源程序進行修改,在這個過程中也需要對程序進行調試,不過不必將各個功能函數的的內容清空再進行如上述的調試方法,而是,改一部份運行一次,看是否有無。如f1()函數有誤,則先修改f1()函數,一塊一塊的進行修改,就是遵循C語言的模塊化設計原理,若所有的都改過來了,且運行無誤,那就大功告成了。在調試中遇到的問題: 在調試過程中,我們遇到諸多小問題,但都在我們共同討論后解決了。1、問題: 標點符號在輸入的時候,使用的是中文輸入法,這種錯誤一般都難以發現,讓修改的時候找不到目標。解決方法: 用“替換”。如果程序中的error很多,不管error是什么,先將標點替換成英文的標點。 2、問題: 調試時,有的時候編譯后沒什么問題,就是在點擊連接link時出現了錯誤。而且,這種錯誤讓我們不知道怎么修改。但是我們的程序的確正確。 解決方法: 將源程序保存(save),然后關掉Microsoft Visual C+ 6.0,重新啟動Microsoft Visual C+ 6.0.7 課程設計小結小組成員分工組長:姜猛 負責統計每種產品的總銷售額,輸出排序結果、輸出統計報表。 組員:黃雪松 負責按銷售額對銷售員進行排序,輸出排序結果。組員:莫然龍 負責計算上個月每個人每種產品的銷售額。主菜單模塊共同完成1、在設計中我們實現了設計目標的所有內容即:1、計算上個月每個人每種產品的銷售額。2、按銷售額對銷售員進行排序,輸出排序結果(銷售員代號)3、統計每種產品的總銷售額,對這些產品按從高到底的順序,輸出排序結果(需輸出產品的代號和銷售額)4、輸出統計報表2、其中遇到了以下問題:i、 數據輸入文件的形式:原本用fprintf()以ASCLL碼的形式輸入.txt文件中,這樣對實現“數據的輸入是否正確的判斷語句” 的編寫很困難,而且ASCLL碼的形式輸入.txt文件保密性差,不方便公司對文件的保密管理。解決方案:采用fwrite()函數的二進制形式輸入.dat數據文件中解決了以上問題,使“數據的輸入是否正確的判斷語句”ii、 文件的創建方案及命名形式: 文件應在用戶計算數據時自動創建;文件創建時的擴展名.dat的添加困難。 解決方案:用strcat(fname,.dat);將擴展名的.dat字符加到fname后面,令實現了文件的命名,如1月的數據文件,在使用者輸入1時就實現了文件.dat的創建。iii、 輸入出錯的常見問題: 輸入時,scantf()函數中出現非地址項,某變量未進行類型定義,以及語句末尾缺少分號等常見的低等錯誤。 解決方案:根據Microsoft Visual C+ 6.0的錯誤提示(error)與警告(warning)回到源程序中,逐一對錯誤或警告進行修改,每修改一條就編譯一次。3、實踐心得經過C語言課程設計實踐學習,使我對c語言有了更進一步的認識和了解,通過實踐,我也發現我的好多不足之處,首先是在程序輸入上還不夠熟練,經常按錯字母,通過學習也有所改進;再有對c語言的一些標準庫函數不太了解,還有對函數調用的正確使用不夠熟悉,還有對c語言中經常出現的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。熟練地掌握了C語言的基本知識:數據類型(整形、實型、字符型、指針、數組、結構等);運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等);程序結構(順序結構、判斷選擇結構、循環結構);大程序的功能分解方法(即函數的使用)等。進一步掌握各種函數的應用,以及文件的讀寫操作等我認為要學好c語言程序這門課程,不僅要認真閱讀課本知識,更重要的是要通過上機實踐才能增強和鞏固我的知識。只有這樣我們才能成為合格的計算機人材。參考文獻 1吉順如. C程序設計教程與實驗.M.北京:清華大學出版社,2011.附錄 系統源程序 /*計算上個月每個人每種產品的銷售額。1)按銷售額對銷售員進行排序,輸出排序結果(銷售員代號)2)統計每種產品的總銷售額,按從高到底的順序,輸出排序結果(需輸出產品代號,銷售額)3)輸出統計報表*/#include #include #include #include #define Z 5 /*Z表示產品種類*/#define R 4 /*定義宏常量便于程序的一般化*/ /*R表示銷售員個數*/typedef struct /*縮短結構體變量名*/ int shangpinZ; /*定義結構體便于信息的存儲和讀寫,辨別*/ DATA; /*R是表示商品的種類,最后一個為該銷售員商品總和*/*本函數由本組成員共同設計*/void menu() system(cls);/*清屏命令*/printf(nn);printf(t 主菜單n);printf(t 1.計算上個月每個人每種產品的銷售額 n);printf(t 2.按銷售額對銷售員進行排序,輸出排序結果 n);printf(t 3.統計每種產品的總銷售額,輸出排序結果 n);printf(t 4.輸出統計報表 n);printf(t 5.結束操作 n); printf(t n);void f1(DATA *x) /*計算上個月每個人每種產品的銷售額*/FILE *fp;char fname10,hitkey;int j,t; /*用于控制循環*/int i,k,s; /*用于定義職工序號,產品序號,產品數量*/system(cls);/*清屏命令*/printf(您想計算哪個月?n);printf(請輸入月份: bbb); /*輸入文件名,這樣可以進行各個月份信息寫入*/scanf(%s,fname);strcat(fname,.dat);if(fp=fopen(fname,wb)=NULL) /*打開文件*/printf(不能打開文件!n);exit(0);/* 正常exit(0);結束程序*/for(j=0;jR;j+) /*對商品數量清零*/for(t=0;tshangpint=0;for(j=0;hitkey!=27;j+) /*27ESC的ASCII值*/printf(請輸入:職工編號(1-4)n); scanf(%d,&i);printf(請輸入:產品編號(1-5)n); scanf(%d,&k);printf(請輸入:銷售數量n); scanf(%d,&s); /*提示用戶寫入信息的格式*/if(iR|iZ|kshangpink-1=(x+i-1)-shangpink-1+s; /*統計各個人的各種產品的數量,-1為了和數組中的序號相匹配*/printf(繼續輸入請按回車,結束輸入請按escn);printf(n);hitkey=getch();for (;hitkey!=13&hitkey!=27;) /*13是回車鍵的ASCII值*/hitkey=getch();for(j=0;jR;j+)if(fwrite(x+j),sizeof(DATA),1,fp)!=1) /*把信息寫入文件中便有以后調用*/printf(write error!n);fclose(fp); /*關閉文件避免信息遺漏*/printf(nnnnnnttt保存成功,按任意鍵返回主菜單!); getch();void f2(DATA *x) /*按銷售額對銷售員進行排序,輸出排序結果*/FILE *fp;char fname10;int i,k,j,t,bianhaoR=0,z;system(cls); /*清屏命令*/printf(你要哪個月的?n);printf(請輸入月份: bbb); /*輸入文件名,這樣可以進行各個月份信息讀入*/scanf(%s,fname); strcat(fname,.dat);if(fp=fopen(fname,rb)=NULL) /*打開文件*/printf(不能打開文件!n);exit(0); /*正常退出*/for(i=0;iR;i+) /*讀出信息*/if(fread(x+i,sizeof(DATA),1,fp)!=1)printf(讀入信息出錯!); /*讀入信息提示*/for(i=0;iR;) /*用于存儲職工編號*/bianhaoi=i+;printf(請輸入按何種產品排序n);scanf(%d,&k);k=k-1; /*便于與結構體中的數組值對應*/for(i=0;iR;i+) /*按K種產品對銷售員排序,選擇法排序*/t=i;for(j=i+1;jshangpinkshangpink)/*調用職工各自對應的結構體內的產品數量*/ t=j;if(t!=i)z=bianhaoi;bianhaoi=bianhaot;bianhaot=z;printf(ttt按%d產品對銷售員排序為:n,k+1);printf(n);for(i=0;iR;i+)printf(ttt第%d名是: 員工%dn,i+1,bianhaoi+1);printf(nnnttt按任意鍵返回上一主菜單!);getch();fclose(fp);/*關閉讀入的文件*/void f3(DATA *x) /*統計每種產品的總銷售額,輸出排序結果*/FILE *fp;char fname10;int i,j,sumZ=0,bianhaoZ=0,z,t,k; system(cls);/*清屏命令*/printf(您想計算哪個月的?n);printf(請輸入月份: bbb); /*輸入文件名,這樣可以進行各個月份信息讀入*/scanf(%s,fname);strcat(fname,.dat);if(fp=fopen(fname,rb)=NULL) /*打開文件*/printf(不能打開文件!n);exit(0);for(i=0;iR;i+) /*讀出信息*/if(fread(x+i,sizeof(DATA),1,fp)!=1)printf(讀入信息出錯!);for(i=0;iZ;i+) /*對各種商品求和*/for(j=0;jshangpini;for(i=0;iZ;i+) /*用于存儲商品編號*/bianhaoi=i;printf(%3d,bianhaoi); for(i=0;iZ;i+) /*對產品從高到低排序,選擇法排序*/t=i;for(j=i+1;jZ;j+) /*產品變化時,產品編號也隨之變化,便于輸出*/if(sumtsumj) t=j;if(t!=i)k=sumi;sumi=sumt;sumt=k;z=bianhaoi;bianhaoi=bianhaot;bianhaot=z;printf(輸出產品排序n);printf(產品編號 數量n);printf(n);for(i=0;iZ;i+)printf( 產品%-7d%-1dn,bianhaoi+1,sumi);printf(nnnttt按任意鍵返回主菜單!);getch();fclose(fp);/*關閉讀入的文件*/*由 小組成員共同 設計*/void f4(DATA *x) /*輸出統計報表*/FILE *fp;char fname10; int i,j,sumZ+1=0; system(cls);/*清屏命令*/printf(您想計算哪個月?n);printf(請輸入月份: bbb); /*實為輸入一個文件名,這樣可以進行各個月份的信息讀入*/scanf(%s,fname);strcat(fname,.dat);if(fp=fopen(fname,rb)=NULL) /*打開文件*/ printf(不能打開文件!n);exit(0); for(i=0;iR;i+) /*讀出信息*/if(fread(x+i,sizeof(DATA),1,fp)!=1)printf(讀入信息出錯!); for(i=0;iZ;i+) /*對各種商品求和*/for(j=0;jshangpini; for(i=0;iZ;i+) /*求商品總和*/sumZ=sumZ+sumi;printf(n);printf(輸

溫馨提示

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

評論

0/150

提交評論