C語言課程設計銷售管理系統(tǒng)_第1頁
C語言課程設計銷售管理系統(tǒng)_第2頁
C語言課程設計銷售管理系統(tǒng)_第3頁
C語言課程設計銷售管理系統(tǒng)_第4頁
C語言課程設計銷售管理系統(tǒng)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、銷售管理系統(tǒng) 目錄 摘摘 要要.1 1緒論緒論.1 2. 系統(tǒng)分析系統(tǒng)分析.1 2.1 功能需求.1 2.2 數(shù)據(jù)需求.2 2.3 性能需求.2 3. 總體設計總體設計.2 3.1 功能模塊設計.2 3.2 系統(tǒng)設計方案.3 4. 詳細設計詳細設計.3 4.1 設備管理模塊.3 4.2 設備借出借入管理模塊.4 4.3 設備查詢模塊.4 4.4 系統(tǒng)管理模塊.4 5. 調(diào)試與測試調(diào)試與測試.4 5.1 調(diào)試.4 5.2 測試.5 6. 結(jié)論結(jié)論.6 結(jié)束語結(jié)束語.6 參考文獻參考文獻(這個要注意標點是半角這個要注意標點是半角).6 附錄附錄 1用戶手冊用戶手冊.7 附錄附錄 2源程序源程序.8

2、 摘摘 要要 銷售管理系統(tǒng)是一個企事業(yè)單位不可缺少的部分,它可以便捷的幫助管理 人員錄入和更改銷售的信息,進行銷售業(yè)績排名以便直觀的觀察到各個銷售員 的業(yè)績。 本系統(tǒng)使用 c 語言作為開發(fā)工具。實現(xiàn)了對上月每個人每種產(chǎn)品的銷售額 的統(tǒng)計以及按銷售額對銷售員進行排序,輸出排序結(jié)果的功能。 本文從分析課題的題目背景、題目意義、題目要求等出發(fā),分別從需求分 析、總體設計、詳細設計、測試等各個方面詳細介紹了系統(tǒng)的設計與實現(xiàn)過程, 最后對系統(tǒng)的完成情況進行了總結(jié)。 關鍵詞:c 語言;銷售管理;業(yè)績排名 1緒論緒論 隨著科技的發(fā)展越來越多的企業(yè)也發(fā)展起來,公司的員工也越來越多,伴 隨而來的是企業(yè)因員工量大

3、而信息管理更加繁重的問題。而銷售部門的各 種數(shù)據(jù)更加繁多,加重了企業(yè)管理的壓力,開發(fā)銷售管理系統(tǒng)使得這一壓 力得以減輕,銷售管理系統(tǒng)可以實現(xiàn)對每個人每種產(chǎn)品的銷售統(tǒng)計并且進 行排序輸出。方便了企業(yè)的管理,滿足了企業(yè)的需求。 根據(jù)課程設計任務書要求,本系統(tǒng)開發(fā)主要完成以下功能和性能。 (1) 銷售額讀?。翰樵兏鱾€銷售員的銷售情況; (2) 銷售額排序:按照銷售員編號對銷售員的額銷售額進行排序。 (3) 產(chǎn)品銷量排序:對每種產(chǎn)品銷售總額從高到低排序(產(chǎn)品代號和銷售 額) 。 (4) 輸出統(tǒng)計報表:對銷售員以及產(chǎn)品的銷售額進行報表統(tǒng)計并輸出。 2. 系統(tǒng)分析系統(tǒng)分析 2.1 功能需求功能需求 本系統(tǒng)

4、主要是企業(yè)對銷售員以及銷售額的簡單管理系統(tǒng)。 該系統(tǒng)需要有讀取數(shù)據(jù),報表統(tǒng)計,排序,退出功能。利用報表功能將數(shù)據(jù)庫 中的若干項目的計算值顯示出來。數(shù)據(jù)要求有自動更新功能,顯示最新的結(jié)果。 2.2 數(shù)據(jù)需求數(shù)據(jù)需求 需要管理營銷員的信息包括:銷售員代號,產(chǎn)品代號,銷量。 本程序?qū)⒂玫轿募到y(tǒng),list.txt 文件內(nèi)容作為數(shù)據(jù)源,其中單行內(nèi)容代表一 張紙條。程序運行后首先將文件系統(tǒng)的原始數(shù)據(jù)讀取并保存到程序的結(jié)構體數(shù) 組當中,所以應提供文件輸入的操作;由于紙條數(shù)據(jù)零散,所以要對原始數(shù)據(jù) 進行分類操作并提供一個數(shù)組用于保存分類信息;在程序中要進行統(tǒng)計工作, 所以要提供顯示、排序等操作;另外應提供鍵

5、盤式選擇菜單實現(xiàn)功能選擇。 2.3 性能需求性能需求 安全性:本系統(tǒng)在設計,開發(fā),運行各環(huán)節(jié),都需要貫徹了安全性的原則, 落實到了每個環(huán)節(jié),每個方面。 可靠性:需要遵循安全性原理,來提高本系統(tǒng)的可靠性。 穩(wěn)定性:本系統(tǒng)根據(jù)需要可以定義全局變量,可以使用結(jié)構體以及鏈表, 來確保本系統(tǒng)的穩(wěn)定性。 響應速度;本系統(tǒng)因應用了鏈表,理論上可以提高查找的速度,整體的響 應速度也會得到了提升。 3. 總體設計總體設計 3.1 功能模塊設計功能模塊設計 根據(jù)上面的分析,可以將這個系統(tǒng)分為如下五大模塊:查看每人每種產(chǎn)品的銷 售額 、按銷售額對銷售員排序、對每種產(chǎn)品總銷售額從高到低排序、輸出統(tǒng)計 報表和退出。其中

6、主要模塊是前四個模塊。功能模塊圖如圖 1。 圖 1 功能模塊圖 3.2 系統(tǒng)設計方案系統(tǒng)設計方案 根據(jù)上面的分析,可以將這個系統(tǒng)分為如下五大模塊:查看每人每種產(chǎn) 品的銷售額 、按銷售額對銷售員排序、對每種產(chǎn)品總銷售額從高到低排序、 輸出統(tǒng)計報表和退出。其中主要模塊是前四個模塊。 4. 詳細設計詳細設計 4.14.1【頭文件和預定義】 #include #include #include #include #define m 155 4.24.2【功能函數(shù)聲明】 void detail(); void foreach(); void menu(); void product(); void re

7、addata(); void seller(); void total(); void choice(); 4.34.3【數(shù)據(jù)結(jié)構】 原始數(shù)據(jù)有銷售員代號、產(chǎn)品代號和銷售額,所以定義一個全局結(jié)構體數(shù)組 scrip用于保存原始數(shù)據(jù)。然后定義全局變量n保存紙條數(shù)目,定義數(shù)組s用于保 存分類后的信息。 struct ss int sid; /銷售員代號 int pid; /產(chǎn)品代號 int sn; /銷售額 ssm; int n; /紙條數(shù)目 int s45=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; /用 于保存員工和產(chǎn)品信息 4.44.4【主函數(shù)】 顯示程序

8、設計者相關信息和調(diào)用文件讀取函數(shù)、數(shù)據(jù)初始化函數(shù)和主菜單函數(shù) void main() /入口函數(shù),即主函數(shù) readdata(); /讀取文件數(shù)據(jù) foreach(); /根據(jù)文件初始數(shù)據(jù)初始化便于操作的數(shù)組 menu(); /顯示主菜單 4.4-14.4-1【文件讀取函數(shù)】readdata() 讀出便條中的內(nèi)容,并保存到文件結(jié)構體中 void readdata() /從文件讀取數(shù)據(jù) file *fp; if(fp=fopen(list.txt,r)=null) printf(cant open the file!n); exit(0); else for(n=0;!feof(fp);n+)

9、fscanf(fp,%d %d %dn, /保存文件數(shù)據(jù)到結(jié)構體 fclose(fp); 4.4-24.4-2【文件讀取函數(shù)】foreach() 將保存到結(jié)構體中的信息按產(chǎn)品分類,再根據(jù)銷售員進行分類,將信息存到數(shù) 組當中。 void foreach() /從紙條讀取數(shù)據(jù)并分類整理 int i; for(i=0;in;i+) /遍歷所有紙條 switch(ssi.pid) /按產(chǎn)品分大類,根據(jù)大類分銷售員小類,累加 個人各產(chǎn)品銷售數(shù)量 case 1: switch(ssi.sid) case 1:s00+=ssi.sn;break; case 2:s10+=ssi.sn;break; case

10、 3:s20+=ssi.sn;break; case 4:s30+=ssi.sn;break; break; case 2: switch(ssi.sid) case 1:s01+=ssi.sn;break; case 2:s11+=ssi.sn;break; case 3:s21+=ssi.sn;break; case 4:s31+=ssi.sn;break; break; case 3: switch(ssi.sid) case 1:s02+=ssi.sn;break; case 2:s12+=ssi.sn;break; case 3:s22+=ssi.sn;break; case 4:s

11、32+=ssi.sn;break; break; case 4: switch(ssi.sid) case 1:s03+=ssi.sn;break; case 2:s13+=ssi.sn;break; case 3:s23+=ssi.sn;break; case 4:s33+=ssi.sn;break; break; case 5: switch(ssi.sid) case 1:s04+=ssi.sn;break; case 2:s14+=ssi.sn;break; case 3:s24+=ssi.sn;break; case 4:s34+=ssi.sn;break; ; break; 4.4

12、-34.4-3【主菜單函數(shù)】menu() 顯示系統(tǒng)功能菜單以供用戶選擇相關功能使用,根據(jù)用戶選擇分別可調(diào)用 detail():計算上個月每個人每種產(chǎn)品的銷售額 seller():按銷售額對銷售員進行排序,輸出排序結(jié)果(銷售員代號) product():統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品按從高到低的順序輸出排序 結(jié)果(需輸出產(chǎn)品代號和銷售額) exit(0):退出系統(tǒng) void menu() int w,c; do puts(tt*菜單*nn); puts(tt 1.查看每人每種產(chǎn)品的銷售額n); puts(tt 2.按銷售額對銷售員排序(銷售員代號)n); puts(tt 3.對每種產(chǎn)品總銷售

13、額從高到低排序(產(chǎn)品代號和銷售額) n); puts(tt 4.輸出統(tǒng)計報表n); puts(tt 5.退出n); puts(nntt*n); printf(請選擇(1-5): bb); scanf(%d, if(c5) /錯誤輸入則重新獲取輸入 w=1; getchar(); else w=0; while(w=1); switch(c) /根據(jù)輸入實現(xiàn)相應函數(shù)調(diào)用 case 1: detail();break;/每個銷售員每種產(chǎn)品的銷售額統(tǒng)計 case 2: seller();break; case 3: product();break; case 4: total();break; ca

14、se 5: exit(0); 4.54.5【功能函數(shù)】 5-1【每人每種產(chǎn)品銷售額統(tǒng)計函數(shù)】detail() 計算上個月每個人每種產(chǎn)品的銷售額 void detail() /顯示銷售情況 int i,j; for(i=0;i4;i+) /遍歷銷售員 printf(ntt%d 號銷售員銷售情況:n,i+1); for(j=0;j5;j+) /按銷售員分類遍歷所有產(chǎn)品并顯示信息 printf(tt%d 號產(chǎn)品銷售數(shù)量:%dn,j+1,sij); choice(); 4.5-14.5-1【銷售員銷售業(yè)績排序函數(shù)】seller() 按銷售額對銷售員進行排序,輸出排序結(jié)果(銷售員代號) void sel

15、ler() int i,j,k; int sp4=0,0,0,0; for(i=0;i4;i+) for(j=0;j5;j+) spi+=sij; /計算每單個銷售員所有產(chǎn)品銷售數(shù)量 for(i=0;i4;i+) /比較四次,每次選出最大數(shù) k=0; /用于標記單輪最大數(shù) for(j=0;j4;j+) if(spkspj)k=j; /獲取最大數(shù)標號 printf(tt 第%d 名是%d 號銷售員!n,i+1,k+1);spk=-1; /輸出最大數(shù)和排名,將最大數(shù)標記為負 choice(); 4.5-24.5-2【總銷售額統(tǒng)計函數(shù)】void product() 統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品

16、按從高到低的順序輸出排序 void product() /與 seller()原理一樣,用于對產(chǎn)品進行統(tǒng)計 int i,j,k; int p5=0,0,0,0,0; for(j=0;j5;j+) for(i=0;i4;i+) pj+=sij; for(j=0;j5;j+) k=0; for(i=0;i5;i+) if(pkpi)k=i; printf(tt 第%d 名是%d 號產(chǎn)品!t 銷量為% d!n,j+1,k+1,pk);pk=-1; choice(); 4.5-34.5-3【統(tǒng)計報表輸出函數(shù)】total() 統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品按從高到低的順序輸出排序結(jié)果(需輸 出產(chǎn)品代

17、號和銷售額) void total() /輸出報表 int i,j; printf(nt 銷售員t 產(chǎn)品t 銷量n); for(i=0;i4;i+) for(j=0;j返回菜單t2退出系統(tǒng) bb); scanf(%d, if(c=1) menu(); else exit(0); puts(n); 5. 調(diào)試調(diào)試與測試與測試 5.1 調(diào)試調(diào)試 調(diào)試是軟件開發(fā)過程中的一個重要環(huán)節(jié),也是最復雜,對軟件開發(fā)者者來 說也是最艱巨的任務。調(diào)試的任務是及時改正測試過程中發(fā)現(xiàn)的軟件錯誤。具 體地說,調(diào)試過程由兩個步驟組成,它從表示程序中存在錯誤的某跡象開始, 首先確定錯誤的準確位置,也就是找出哪個模塊或哪個語

18、句引起的錯誤。然后 仔細研究推斷代碼以確定問題的原因,并設法改正。 調(diào)試過程主要是運行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找 到相關的問題所在。本系統(tǒng)調(diào)試過程中遇到問題、原因和解決方法如下面介紹。 (1)程序不能運行 提示 rst.open trim(sql), cnn, adopenkeyset, adlockoptimistic 行有錯誤,此 行是數(shù)據(jù)庫連接錯誤或者是數(shù)據(jù)返回錯誤,原因是將數(shù)據(jù)庫查找到的信息顯示 沒有設置好。 (2)點擊按鈕沒有出現(xiàn)要顯示的內(nèi)容 原因是內(nèi)容的代碼忘記輸入。 5.2 測試測試 軟件測試是軟件生存期中的一個重要階段,是軟件質(zhì)量保證的關鍵步驟從 用戶的角度

19、來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以 軟件測試應該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程” 。或者說,軟件測試應該根 據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構而精心設計一批測試用例(即 輸入數(shù)據(jù)及其預期的輸出結(jié)果) ,并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序 錯誤或缺陷。過度測試則會浪費許多寶貴的資源。到測試后期,即使找到了錯 誤,然而付出了過高的代價。 測試數(shù)據(jù)過程如下。 list.txtlist.txt(便條)文件中數(shù)據(jù)如下:(便條)文件中數(shù)據(jù)如下: 1 1 10 2 5 20 3 4 40 4 2 60 1 3 20 3 4 30 運行結(jié)果運行結(jié)果 顯示主菜單顯示主菜單

20、 查看每人每種產(chǎn)品的銷售額運行結(jié)果:查看每人每種產(chǎn)品的銷售額運行結(jié)果: 按銷售額對銷售員排序運行結(jié)果:按銷售額對銷售員排序運行結(jié)果: 對每種產(chǎn)品銷售額從高到低排序運行結(jié)果:對每種產(chǎn)品銷售額從高到低排序運行結(jié)果: 統(tǒng)計報表運行結(jié)果:統(tǒng)計報表運行結(jié)果: 6. 結(jié)論結(jié)論 通過這次 c 程序設計,我掌握了模塊化設計方法,能夠深入的理解結(jié)構化 程序設計思想,熟練運用結(jié)構化程序設計方法,提高了運用 c 語言進行程序設 計的能力。此外我還熟悉了,對于文件讀寫的操作。更重要的是對程序的調(diào)試 有了顯著的提高。我發(fā)現(xiàn)我對程序的設計越來越感興趣了,我決定今后在這一 方面下一番功夫,取得一些成績。 結(jié)束語結(jié)束語 為期

21、兩個禮拜的的軟件綜合課程設計實習終于順利完成,在這期間付出汗水, 辛勞可是一言難盡。但我覺得很值得,以前只是在書本上學到 c 語言的編程基 礎,這次用在了實際的程序編寫上,解決了實際的問題。 參考文獻參考文獻 1 劉炳文. visual basic 程序設計教程(第二版).北京:清華大學出版社,2005 2 全國計算機等級考試命題研究組 .全國計算機等級考試二級教程及同步輔導 visual basic 語言程序設計. 珠海:珠海出版社,2004 附錄附錄 1用戶手冊用戶手冊 首先新建 list.txt 其中輸入便條內(nèi)容,并放置在程序根目錄。 雙擊運行程序便可實現(xiàn)各項功能,使用數(shù)字鍵盤進行相應功

22、能選擇。 附錄附錄 2源程序源程序 #include #include #include #include #define m 155 void detail(); void foreach(); void menu(); void product(); void readdata(); void seller(); void total(); void choice(); struct ss int sid; /銷售員代號 int pid; /產(chǎn)品代號 int sn; /銷售額 ssm; int n; /紙條數(shù)目 int s45=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

23、,0,0,0,0; /用于保存員工和產(chǎn)品信息 void main() /入口函數(shù),即主函數(shù) readdata(); /讀取文件數(shù)據(jù) foreach(); /根據(jù)文件初始數(shù)據(jù)初始化便于操作的數(shù)組 menu(); /顯示主菜單 void readdata() /從文件讀取數(shù)據(jù) file *fp; if(fp=fopen(list.txt,r)=null) printf(cant open the file!n); exit(0); else for(n=0;!feof(fp);n+) fscanf(fp,%d %d %dn, /保存文件數(shù)據(jù)到結(jié)構體 fclose(fp); void foreach

24、() /從紙條讀取數(shù)據(jù)并分類整理 int i; for(i=0;in;i+) /遍歷所有紙條 switch(ssi.pid) /按產(chǎn)品分大類,根據(jù)大類分銷售員小類,累加個人各產(chǎn)品 銷售數(shù)量 case 1: switch(ssi.sid) case 1:s00+=ssi.sn;break; case 2:s10+=ssi.sn;break; case 3:s20+=ssi.sn;break; case 4:s30+=ssi.sn;break; break; case 2: switch(ssi.sid) case 1:s01+=ssi.sn;break; case 2:s11+=ssi.sn;b

25、reak; case 3:s21+=ssi.sn;break; case 4:s31+=ssi.sn;break; break; case 3: switch(ssi.sid) case 1:s02+=ssi.sn;break; case 2:s12+=ssi.sn;break; case 3:s22+=ssi.sn;break; case 4:s32+=ssi.sn;break; break; case 4: switch(ssi.sid) case 1:s03+=ssi.sn;break; case 2:s13+=ssi.sn;break; case 3:s23+=ssi.sn;break

26、; case 4:s33+=ssi.sn;break; break; case 5: switch(ssi.sid) case 1:s04+=ssi.sn;break; case 2:s14+=ssi.sn;break; case 3:s24+=ssi.sn;break; case 4:s34+=ssi.sn;break; ; break; void menu() int w,c; do puts(tt*菜單*nn); puts(tt 1.查看每人每種產(chǎn)品的銷售額n); puts(tt 2.按銷售額對銷售員排序(銷售員代號)n); puts(tt 3.對每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號和銷售額)n); puts(tt 4.輸出統(tǒng)計報表n); puts(tt 5.退出n); puts(nntt*n); printf(請選擇(1-5): bb); scanf(%d, if(c5) /錯誤輸入則重新獲取輸入 w=1; getchar(); else w=0; while(w=1); switch(c) /根據(jù)輸入實現(xiàn)相應函數(shù)調(diào)用 case 1: detail();break;/每個銷售員每種產(chǎn)

溫馨提示

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

評論

0/150

提交評論