版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 課程設(shè)計說明書學(xué) 院、系:專 業(yè):學(xué) 生 姓 名:學(xué) 號:設(shè) 計 題 目:銷售管理系統(tǒng) 起 迄 日 期:指 導(dǎo) 教 師:日期: 2017年5月12日1 設(shè)計目的1.了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和結(jié)構(gòu)數(shù)組的各種基本操作。2.握高級程序設(shè)計語言的知識。 3.踐中逐步掌握程序設(shè)計的思想和方法,培養(yǎng)問題求解和語言的應(yīng)用能力。4.程序中涉及結(jié)構(gòu)體、數(shù)組、文件等方面的知識。通過本程序的訓(xùn)練,能對C語言 的文件操作有一個更深刻的了解。5.提高與程序設(shè)計和軟件開發(fā)有關(guān)的各種綜合能力。 6.通過本課程設(shè)計,培養(yǎng)上機動手能力,鞏固C語言程序設(shè)計課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計的基本方法,強化上機
2、動手能力,闖過編程關(guān);7.為后續(xù)各門計算機課程的學(xué)習(xí)打下堅實基礎(chǔ);8.學(xué)會用c語言程序設(shè)計來設(shè)計銷售管理系統(tǒng)設(shè)計。2 任務(wù)概述 某公司有四個銷售員(編號:1-4),負責(zé)銷售五種產(chǎn)品(編號:1-5)。每個銷售員都將當天出售的每種產(chǎn)品各寫一張便條交上來。每張便條包含內(nèi)容:1)銷售員的代號,2)產(chǎn)品的代號,3)這種產(chǎn)品的當天的銷售額。每位銷售員每天上繳1張便條。試設(shè)計一個便條管理系統(tǒng),使之能提供以下功能:1、系統(tǒng)以菜單方式工作2、便條信息錄入功能(便條信息用文件保存)輸入3、收集到了上個月的所有便條后,讀取銷售情況1)計算每個人每種產(chǎn)品的銷售額。2)按銷售額對銷售員進行排序,輸出排序結(jié)果(銷售員代號
3、) 3)統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果 4)輸出統(tǒng)計報表3 模塊劃分 主菜單及頭文件設(shè)計 編輯系統(tǒng)菜單運行 輸入信息 保存信息,參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù) 讀入取函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組 清單輸出 主要功能的實現(xiàn)4 主要函數(shù)說明及其N-S圖 主菜單及頭文件設(shè)計:我們按照老師所給的示例我們首先編譯了一個頭文件,在頭文件里,編譯了主函數(shù)需要用到的一些函數(shù),如#include stdio.h等,因為需要錄入便條的所有信息,所有用一個數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)信息的儲存方式,用數(shù)組方式,把每條信息都編譯成一個數(shù)組,如銷售員代號用name4記錄。頭文件還包括了定義常數(shù)記錄數(shù)typede
4、f struct,主函數(shù)原型int menu_select();/*聲明函數(shù)*/ int enter(RECODE t);/*聲明函數(shù)*/ void salor(RECODE t,int n);/*聲明函數(shù)*/ int sum(RECODE t,int n,int m);/*聲明函數(shù)*/ void list1(RECODE t,int n);/*聲明函數(shù)*/ void list2(RECODE t,int n);/*聲明函數(shù)*/ void list3(RECODE t,int n);/*聲明函數(shù)*/ void save(RECODE t,int n);/*聲明函數(shù)*/ int load(REC
5、ODE t);/*聲明函數(shù)*/這些的都是主函數(shù)需要用到的數(shù)據(jù),因此放入頭文件當中,在主程序開始之前直接引用#include pro.h。2.編輯系統(tǒng)菜單運行:題目要求我們系統(tǒng)以菜單方式工作,所以我們現(xiàn)要定義一個系統(tǒng)的結(jié)構(gòu)體數(shù)組RECODE rec600,用for (;)循環(huán)讓菜單實現(xiàn)無限循環(huán),讓switch(menu_select()調(diào)用主菜單函數(shù),返回值整數(shù)作開關(guān)語句的條件,之后分別定義菜單的信息,如:case 1:length=enter(rec);就是輸入信息的定義編輯,當然最后需要用到break來實現(xiàn)返回。菜單定義完成之后,開始編譯菜單的輸出,這部分,用了printf就把需要顯示的菜單
6、顯示出來,然后由用戶選擇菜單的選項,因為菜單只有07的選項,為了防止用戶輸入選項超值,所以用do while語句來控制,(c7)限定了用戶輸入的數(shù)據(jù)只有07才有效,超值則返回開始菜單,重新選擇(return)。3.輸入信息:輸入信息一般都是使用scanf來實現(xiàn),但在用戶輸入之前需要解決一個問題,程序必須限制用戶的輸入序數(shù)(記錄條數(shù)),所以在輸入數(shù)據(jù)之前,必須先限定序數(shù),方法則是用一個for循環(huán)來實現(xiàn),有用戶輸入一個數(shù)字,成為循環(huán)的上限,而用戶輸入的便條信息則在此限定下,不能超出,當超出時則返回到開始菜單。用戶輸入的便條信息分別存入對應(yīng)的數(shù)組當中,如便條條數(shù)則存入ti.num當中。4.保存信息,
7、參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù):用戶輸入的信息需要保存時,用save選項進行保存。保存的時候,實現(xiàn)應(yīng)該建立一個指向文件的指針,從而固定保存文件時的位置,之后用if語句來判斷打開文件是否正常,if(fp=fopen(record.txt,wb)=NULL),如果沒打開(打開不正常),則程序執(zhí)行退出;當判斷文件打開正常時,系統(tǒng)顯示“保存文件”(用printf(n保存文件n)來完成),保存信息是用到的fprintf函數(shù),將制定記錄數(shù)輸入文件fprintf(fp,%d,n),因為源文件中采用了換行,保存文件是系統(tǒng)默認不會進行保存,所有必須加如換行符號保存,防止文件丟失,保證文件以用戶輸入的信息一致,保存換行
8、符號依然采用fprintf函數(shù)來實現(xiàn),具體源文件為fprintf(fp,rn);當確立了保存的可以性之后,系統(tǒng)開始錄入需要保存的信息,用for循環(huán)語句,不斷把用戶輸入的信息保存,因為之前在編寫輸入,輸出程序時,都用到了一定的格式,保證信息的一一對應(yīng),所以在保存文件時,也需要確定和輸入是相同的格式,這里依然使用fprintf函數(shù)來進行保存,如fprintf(fp,%-10d%-7d%-7d%-7d%-7d-7d,,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5)就是把銷售員代號,產(chǎn)品代號,銷售額按照間隔7個字符格式進行保存,在保存格式確立后,需要把換行符號再次寫入文件,
9、程序結(jié)束后fclose結(jié)束保存,并用printf輸出“文件保存成功”,讓用戶知道已經(jīng)保存文件。5. 讀入取函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組:前面已經(jīng)做了文件的保存,當保存文件成功后,系統(tǒng)會以record.txt文件保存在與程序同級的文件夾下,而讀入函數(shù),就是為了讓用戶再次打開運行程序時,可以直接讀取之前已經(jīng)輸入并保存過的信息,和儲存信息一樣,讀入函數(shù)也采用了參數(shù)為結(jié)構(gòu)體數(shù)組,同樣應(yīng)該確定文件指向指針FILE *fp,讀入函數(shù)之前,應(yīng)該確定是否有已經(jīng)保存的文件,用保存文件一樣,用if語句來進行判斷if(fp=fopen(record.txt,rb)=NULL),如果判斷失敗,系統(tǒng)不能讀入文件,則會顯示“不
10、能打開文件”,用printf(不能打開文件n)來實現(xiàn),同時系統(tǒng)要結(jié)束讀入文件的執(zhí)行,用exit(1)實現(xiàn);如果判斷成功,則系統(tǒng)會自動讀入用戶已經(jīng)保存的數(shù)據(jù)(fscanf(fp,%d,&n)讀入記錄數(shù)),用for循環(huán)把已經(jīng)保存的數(shù)據(jù)一一對應(yīng)的讀入到正在執(zhí)行的程序中,這里需要注意的是,讀取的數(shù)據(jù)格式應(yīng)該同保存時的一致,如儲存時的格式是fprintf(fp,%-10d%-7d%-7d%-7d%-7d-7d,,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5),則讀入的時的格式就為fscanf(fp,%d%d%d%d%d%d,&(),&(ti.a1),&(ti.a
11、2),&(ti.a3),&(ti.a4),&(ti.a5),讀取成功后關(guān)閉文件fclose(fp),并顯示“成功地從文件讀入數(shù)據(jù)!”(用printf實現(xiàn))。6.清單輸出: 讀取銷售情況有3個,分別是每個人每種產(chǎn)品的銷售額,按銷售額對銷售員進行排序和每種產(chǎn)品的總銷售額三個函數(shù):1).每個人每種產(chǎn)品的銷售額: 首先,要定義每個人,每種產(chǎn)品,銷售額數(shù)組如int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int c4,b14=0,b24=0,b34=0,b44=0,b54=0,用for循環(huán)來求每個人的總銷售額:for(i=0;i4;i+);用for循
12、環(huán)來求每個人每種產(chǎn)品的總銷售額:for(i=0;in;i+),for(j=0;j4;j+);在用for循環(huán)每種產(chǎn)品的總銷售額:for(i=0;i4;i+),之后則在系統(tǒng)界面輸入銷售員代號,產(chǎn)品代號,產(chǎn)品代號用printf即可實現(xiàn),用sum對每個銷售員的銷售額求和,用system(cls)來錄入信息,然后輸出頭標(如銷售員代號,產(chǎn)品代號,銷售額等,用printf實現(xiàn)),之后開始查詢,用 for語句來。2).按銷售額對銷售員進行排序: 此部分要分兩部分其一是,每位銷售員銷售額;其二是,按銷售額對銷售員排序。在求每個銷售員銷售額時也是要先定義銷售員代號,產(chǎn)品代號,銷售額。接著是則是用輸入要查詢的銷售
13、員的代號,用scanf(%d,&s)來記錄輸入銷售員代號的信息,然后輸出頭標(如銷售員代號,產(chǎn)品代號,銷售額等,用printf實現(xiàn)),之后開始查詢,查詢信息首先需要一個for語句來,實現(xiàn)對已存入數(shù)據(jù)的所有查詢for(i=0;in;i+),關(guān)鍵內(nèi)容是查詢銷售員代號時用if(strcmp(name,)=0),找出與輸入的銷售員相同的儲存信息,查找完成后則把該銷售員的所有信息全部輸出。上面是求每個銷售員銷售額,接著是要在上面的基礎(chǔ)上排序。首先要定義兩個數(shù)組如:int c4,m4,接著用for循環(huán)(for(i=0;i4;i+);for(j=i+1;j4;j+) )對銷售員的銷售額進行排序
14、,再用if語句來求,最后是輸出用printf(%dn,mi)實現(xiàn)。3).每種產(chǎn)品的總銷售額: 也一樣首先要定義數(shù)組,接著用ci=sum(t,n,i+1) 求每個人的總銷售額,再用for循環(huán),再用sum0+=ci對所有產(chǎn)品的銷售額求總,用for循環(huán)對每個人每種產(chǎn)品的銷售額求總銷售額,再用for循環(huán)實現(xiàn)每種產(chǎn)品的總銷售額,然后輸出頭標(如銷售員代號,產(chǎn)品代號,總銷售額等,用printf實現(xiàn))即可。5 程序運行數(shù)據(jù)及其結(jié)果1. 進入主菜單:2. 選擇“1”,輸入便條:3.輸入條數(shù),如:輸入2天的便條,8條:4.選擇“2”,保存到文件:5.選擇“3”,讀取文件:6.選擇“4”,顯示清單:7. 選擇“5
15、”,每位銷售員的銷售額:8.輸入查詢員工代號,如:查詢的員工號為3:8. 選擇“6”, 每種產(chǎn)品的銷售額: 9. 選擇“7”, 按銷售額對銷售員排序:10. 選擇“0”,退出管理: 11. 保存的文件:保存的文件為TXT格式,其保存的文件為:6 課程設(shè)計心得 經(jīng)過上機實踐學(xué)習(xí),使我對c語言有了更進一步的認識和了解,C語言是計算機程序設(shè)計的重要理論基礎(chǔ),在我們以后的學(xué)習(xí)和工作中都有著十分重要的地位。要學(xué)好這種語言,僅僅學(xué)習(xí)課本上的知識是不夠的,還要經(jīng)常自己動手,有較強的實踐能力。只有多動手,經(jīng)常編寫程序,才能發(fā)現(xiàn)我們學(xué)習(xí)上的漏洞和自己的不足,并在實踐中解決這些問題,不斷提高自己轉(zhuǎn)化知識的能力。通
16、過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學(xué)習(xí)也有所改進;再有對c語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對c語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。通過實踐的學(xué)習(xí),我認到學(xué)好計算機要重視實踐操作,不僅僅是學(xué)習(xí)c語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學(xué)習(xí)過程中,我會更加注視實踐操作,使自己便好地學(xué)好計算機。 附錄:#include stdio.h/*輸入輸出函數(shù)*/ #include stdlib.h/*通用應(yīng)用程序函數(shù)*/ #include string.h/*字符
17、串函數(shù)*/ #include ctype.h/*字符操作函數(shù)*/ typedef struct /*定義結(jié)構(gòu)體變量*/ int name; /*銷售員代號*/int a1; /*產(chǎn)品一代號*/int a2; /*產(chǎn)品二代號*/int a3; /*產(chǎn)品三代號*/int a4; /*產(chǎn)品四代號*/int a5; /*產(chǎn)品五代號*/RECODE; /*以下是函數(shù)原型*/ int menu_select();/*聲明函數(shù)*/ int enter(RECODE t);/*聲明函數(shù)*/ void salor(RECODE t,int n);/*聲明函數(shù)*/ int sum(RECODE t,int n,i
18、nt m);/*聲明函數(shù)*/ void list1(RECODE t,int n);/*聲明函數(shù)*/ void list2(RECODE t,int n);/*聲明函數(shù)*/ void list3(RECODE t,int n);/*聲明函數(shù)*/ void save(RECODE t,int n);/*聲明函數(shù)*/ int load(RECODE t);/*聲明函數(shù)*/*主函數(shù)開始*/int main()/*主函數(shù)*/ RECODE rec600; int length; system(cls); /*清屏*/ for( ; ; ) /*無限循環(huán)*/ switch(menu_select() /
19、*根據(jù)用戶的選擇判斷該調(diào)用哪個功能函數(shù)*/ case 1:length=enter(rec); break; case 2:save(rec,length);break; case 3:length=load(rec);break; case 4:list1(rec,length);break; case 5:salor(rec,length);break; case 6:list2(rec,length);break; case 7:list3(rec,length);break;case 0:exit(0); int menu_select() /*菜單函數(shù)*/ int n; printf
20、(*MENU*nn); printf( 1 輸入便條n);printf( 2 保存到文件n); printf( 3 讀取文件n);printf( 4 顯示便條清單n); printf( 5 每位銷售員的銷售額n); printf( 6 每種產(chǎn)品的銷售額n); printf( 7 按銷售額對銷售員排序n); printf( 0 退出管理n); printf(*END*nn); printf( 請選擇你的操作(0-7): n); scanf(%d,&n); if(0n & n7) system(cls); /*清屏*/ return n;/*清單輸入*/int enter(RECODE t) in
21、t i,num; system(cls); /*清屏*/ printf(請輸入要寫的便條條數(shù):n); scanf(%d,&num);/*輸入所要寫入的清單的條數(shù)*/ printf(name product1 product2 product3 product4 product5); for(i=0;inum;i+)/*將所輸入的條數(shù)存入結(jié)構(gòu)體數(shù)組中*/ printf(nn-n); scanf(%d%d%d%d%d%d,&,&ti.a1,&ti.a2,&ti.a3,&ti.a4,&ti.a5); printf(n-nnn); return i; /*保存文件*/void save(
22、RECODE t,int n) int i; FILE *fp;/*調(diào)用fopen函數(shù)*/ if(fp=fopen(record.txt,wb)=NULL)/*如果函數(shù)帶回一個空指針值*/ printf(不能打開文件n);/*不能打開文件*/ exit(1); fprintf(fp,%d,n); fprintf(fp,rn); for(i=0;in;i+) fprintf(fp,%-10d%-7d%-7d%-7d%-7d%-7d,,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5);/*將便條的信息輸出到fp指向的文件上*/ fprintf(fp,rn); fclose
23、(fp);/*關(guān)閉文件*/ printf(*保存成功*nn);/*顯示保存成功*/ printf(press any key to continue.n); getchar(); /*讀取文件*/int load(RECODE t) int i,n; FILE *fp; if(fp=fopen(record.txt,r)=NULL)/*如果函數(shù)帶回一個空指針值*/ printf(不能打開文件n);/*不能打開文件*/ exit(1); fscanf(fp,%d,&n); for(i=0;in;i+) fscanf(fp,%d%d%d%d%d%d,&(),&(ti.a1),&(ti
24、.a2), &(ti.a3),&(ti.a4),&(ti.a5);/*從fp指向的文件上讀入便條信息*/ fclose(fp); printf(n 成功讀取文件!n);/*成功讀入信息*/ printf(press any key to continue.nn); getchar(); return n; /*顯示清單*/void list1(RECODE t,int n) int i;FILE *fp; if(fp=fopen(record.txt,r)=NULL)/*如果函數(shù)帶回一個空指針值*/ printf(不能打開文件n);/*不能打開文件*/ exit(1); fscanf(fp,%
25、d,&n); for(i=0;in;i+) fscanf(fp,%d%d%d%d%d%d,&(),&(ti.a1),&(ti.a2),&(ti.a3),&(ti.a4),&(ti.a5);/*從fp指向的文件上讀入便條信息*/ fclose(fp); printf(*the lise of saling recode*nnn); printf(name product1 product2 product3 product4 product5); for(i=0;in;i+)/*將所輸入的條數(shù)存入結(jié)構(gòu)體數(shù)組中*/ printf(nn-n); printf( %d %d %d %d
26、%d %d,,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5); printf(nn-n);printf(n press any key to continue.n); getchar(); /*每位銷售員銷售額*/void salor(RECODE t,int n) int i,s; int b1=0,b2=0,b3=0,b4=0,b5=0; printf(請輸入要查詢的銷售員的代號(1-4): n); scanf(%d,&s); /*輸入所要查看的售貨員的代號*/ for(i=0;in;i+) /*對每種產(chǎn)品的銷售額求和*/ if(=s) b1+=t
27、i.a1; b2+=ti.a2; b3+=ti.a3; b4+=ti.a4; b5+=ti.a5; printf(name product1 product2 product3 product4 product5n); printf(-n); printf(%-15d%-10d%-10d%-7d%-7d%-7d,s,b1,b2,b3,b4,b5); printf(npress enter to continue.n); getchar(); /*銷售產(chǎn)品總和*/int sum(RECODE t,int n, int e) int i,sum=0; for(i=0;i=n;i+)/*求銷售產(chǎn)品的總和*/ if(e=) sum+=ti.a1; sum+=ti.a2; sum+=ti.a3; sum+=ti.a4; sum+=ti.a5; return sum; /*每種產(chǎn)品的銷售額*/void list2(RECODE t,int n) int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int c4,b14=0,b24=0,b34=0,b44=0,b54=0; system(cls); ; for(i=0;i4;i+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省菏澤市鄄城縣2024-2025學(xué)年七年級上學(xué)期期中生物學(xué)試題(解析版)-A4
- 2023年直流鼓風(fēng)機項目融資計劃書
- 護理資料培訓(xùn)課件 大便標本采集相關(guān)知識
- 養(yǎng)老院老人康復(fù)設(shè)施使用管理制度
- 培訓(xùn)過程控制培訓(xùn)課件
- 《D游戲引擎HGE》課件
- 2024年版車輛維修合作聘用協(xié)議條款版B版
- 改水電裝修合同(2篇)
- 2024年委托貸款業(yè)務(wù)展期與貸款利率調(diào)整協(xié)議3篇
- 2025年貴州貨運從業(yè)資格證考試題技巧答案解析
- 2024-2025學(xué)年語文二年級上冊 部編版期末測試卷(含答案)
- 2025年江西省水利投資集團有限公司第二批次校園招聘筆試備考題庫及答案解析
- 2024年小紅書種草營銷師考試題庫
- FANUC機器人培訓(xùn)教程(完成版)
- 24春國家開放大學(xué)《教育學(xué)》期末大作業(yè)
- 現(xiàn)代食品加工技術(shù)(食品加工新技術(shù))智慧樹知到期末考試答案章節(jié)答案2024年中國農(nóng)業(yè)大學(xué)
- MOOC 自然保護與生態(tài)安全:拯救地球家園-暨南大學(xué) 中國大學(xué)慕課答案
- 2024年意識形態(tài)工作專題會議記錄【6篇】
- 三廢環(huán)保管理培訓(xùn)
- 23秋國家開放大學(xué)《液壓氣動技術(shù)》形考任務(wù)1-3參考答案
- 小學(xué)六年級數(shù)學(xué)計算題100道(含答案)
評論
0/150
提交評論