




免費預(yù)覽已結(jié)束,剩余28頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C+課程設(shè)計報告課 題: 物資管理系統(tǒng) 專業(yè)班級: 學(xué) 號: 姓 名: 指導(dǎo)教師: 評閱意見:評定成績: 指導(dǎo)老師簽名: 年 月 日目 錄目錄1 課程設(shè)計的目的和意義21.1 課程設(shè)計的目的21.2 課程設(shè)計的意義22 需求分析32.1 系統(tǒng)功能32.2 操作要求33 系統(tǒng)設(shè)計43.1 總體設(shè)計43.2 詳細(xì)設(shè)計54 系統(tǒng)實現(xiàn)74.1 模塊分區(qū)75 系統(tǒng)調(diào)試126小結(jié)15參考文獻(xiàn)16附錄 源程序171 課程設(shè)計的目的和意義1.1 課程設(shè)計的目的(1)掌握鏈表和文件的用法;(2)掌握C+的類的實現(xiàn)與函數(shù)的調(diào)用;(3)理解類之間的關(guān)系以及指針的運用;(4)利用所學(xué)的C+知識,進行簡單的程序設(shè)計;課程設(shè)計是一項能夠鍛煉我們動手能力、綜合性比較強的程序設(shè)計,它與我們平時的作業(yè)相比更加能測試我們對所學(xué)知識的掌握。在設(shè)計的過程中,調(diào)試程序的過程卻是最為艱難的,所以我們必須認(rèn)真的找出每一個小錯誤。這樣也為我們以后編寫大型一點的程序打下基礎(chǔ),熟知如何能在短時間內(nèi),達(dá)到目的。課程設(shè)計是我們的主要教學(xué)實踐環(huán)節(jié)。通過課程設(shè)計,我們圍繞基礎(chǔ)課或者專業(yè)課,運用學(xué)的知識,結(jié)合實際應(yīng)用設(shè)計而進行的一次綜合分析設(shè)計能力的訓(xùn)練。1.2 課程設(shè)計的意義課程設(shè)計的宗旨在于培養(yǎng)我們在課程范圍內(nèi),初步掌握解決實際應(yīng)用問題時所應(yīng)具備的查閱資料、綜合運用所學(xué)知識的能力,為今后從事專業(yè)工作打下基礎(chǔ)。課程設(shè)計能讓我們真實的感受每一個編寫程序的步驟,而編寫程序的過程更是能讓我們更深的理解所學(xué)知識。在讓我們理解的情況下,也培養(yǎng)了我們的動手能力。這使得我們在編寫程序這一塊上更加的成熟。它是具有實際意義的操作,能使我們在現(xiàn)階段上的大幅度的提升。2 需求分析2.1 系統(tǒng)功能物資管理系統(tǒng)的設(shè)計主要是要它實現(xiàn)以下的幾個功能:(1) 信息輸入功能:建立文件,根據(jù)物資產(chǎn)品的屬性,在文件中輸入產(chǎn)品的具體信息。如:產(chǎn)品編號、名稱等等。(2) 產(chǎn)品查詢功能:產(chǎn)品的查詢分為幾種,其中包括使用產(chǎn)品的名稱、產(chǎn)品的入庫日期,以及產(chǎn)品的相關(guān)規(guī)模來查詢產(chǎn)品的當(dāng)前動態(tài)。通過查詢用戶可以了解所詢問物資的相關(guān)問題。(3) 新物入庫功能:當(dāng)用戶只需要在當(dāng)前的記錄中插入一條信息就可以選擇此項功能。將物資的具體屬性輸入后保存,該條信息也將記錄到當(dāng)前文件。(4) 領(lǐng)料信息:查找需要領(lǐng)料的信息,看是否符合領(lǐng)料要求。如果可以在領(lǐng)完材料后,對領(lǐng)取的材料的信息進行修改,并打印除領(lǐng)料憑條。(5) 保存信息:對當(dāng)前信息進行保存。(6) 打印信息:可以將保存進入文件的信息一一的打印出來。使用戶了解整個物資庫的內(nèi)容。(7) 退出:結(jié)束整個程序。2.2 操作要求進入該程序的運行界面后,在程序的運行畫面上會出現(xiàn)一個主菜單。此時用戶可根據(jù)主目錄上的提示進行相關(guān)的操作:1、信息的輸入;2、信息查找;3、新物入庫;4、領(lǐng)料模塊;5、保存信息;6、打??;7、退出。主菜單上的都是大的模塊,具體的實現(xiàn)每一個功能,在這個過程中也會彈出一些與主菜單類似的子菜單。如:查找模塊、領(lǐng)料模塊。具體的實際操作,用戶可通過提示一步步實現(xiàn)程序。3 系統(tǒng)設(shè)計3.1 總體設(shè)計開始顯示菜單輸入選項ss=2s=3s=6s=7輸入信息新物入庫領(lǐng)料模塊結(jié)束s=1是是是否否否否是否是是顯示查找菜單否規(guī)模查找輸入選項cncn=1cn=2名稱查找日期查找是是是否否cn=3保存記錄打印s=4s=5查詢記錄領(lǐng)料、數(shù)據(jù)更新否否圖1為物資管理系統(tǒng)程序運行流程圖它的總體設(shè)計過程是利用文件與鏈表分別來實現(xiàn)物資管理系統(tǒng)信息輸入、信息查找、新物入庫、領(lǐng)料、保存以及打印的功能。3.2 詳細(xì)設(shè)計(1)結(jié)構(gòu)體struct gdchar no10;char name16;char inyear10;char inmonth10;char inday10;char outdate16;int scale;通過指針指向結(jié)構(gòu)體對象,使每個指針的內(nèi)容用鏈表串聯(lián)起來。(2)class good private: public:在類good中含有私有成員與公有成員,通過對類中的公有函數(shù)成員的調(diào)用,可以實現(xiàn)管理系統(tǒng)中每個功能。(3)構(gòu)造函數(shù)good:good(),析構(gòu)函數(shù)good:good()構(gòu)造函數(shù)和析構(gòu)函數(shù)的應(yīng)用是為了對象的初始化以及對程序?qū)崿F(xiàn)的過程中對空間的釋放。(4)主函數(shù)void main()建立頭指針,并為其分配空間。(5)處理菜單函數(shù)void good:handle_menu(good *head)在此函數(shù)中通過switch()函數(shù)分別調(diào)用其它功能子函數(shù),是系統(tǒng)功能得到實現(xiàn)。(6)保存記錄函數(shù)void good:save(good *head)建立一個txt格式的記事本,將輸入的信息進行保存。此功能主要時運用文件的相關(guān)知識。(7)輸入信息函數(shù)good *good:input(good *head)打開文件,進行信息的輸入。通過鏈表將輸入信息的每個結(jié)點連接起來。在信息輸入結(jié)束時不可忘記將記錄進行保存。(8)查找函數(shù)void good:search(good *head)在查找信息函數(shù)中包含了三個子函數(shù),分別是通過不同的信息對產(chǎn)品進行查詢,它們分別是: void good:search1(good *head)void good:search2(good *head)void good:search3(good *head)(9)插入信息功能good *good:insert(good *head)如果文件為空,就將要輸入的文件直接設(shè)為頭文件,把它的下一個接點設(shè)為NULL,如果文件中存在已經(jīng)保存好的數(shù)據(jù),就直接將它加入到結(jié)點的最后.(10)領(lǐng)料函數(shù)good *good:lingliao(good *head)通過對需要領(lǐng)取的物資進行查找,輸入需要領(lǐng)取的物資的數(shù)目,以及物資領(lǐng)取的時間,然后對庫存物資進行數(shù)據(jù)的修改,能夠快速的更新數(shù)據(jù)。(11)打印函數(shù)void good:display(good *head)通過鏈表的作用將保存的信息一一的顯示出來,可以方便用戶們對整個庫存資料的熟悉。(12)運算符重載函數(shù)istream &operator(istream &is,good &ob)ostream &operator和count; /break在count+之下coutstar-g.no;if(strcmp(star-g.no,0)=0) break; /結(jié)束循環(huán);出口; /輸入產(chǎn)品名稱coutstar-g.inyear; /輸入進貨年份coutstar-g.inmonth; /輸入進貨月份 coutstar-g.inday; /輸入進貨日期 coutstar-g.scale; /輸入進貨規(guī)模if(head-count=0)head=star; info-next=star; /star指向info的下一個地址info=star; star=new good; /分配新空間 while(1);info-next=NULL;return(head);文件打開后,輸入相關(guān)產(chǎn)品信息,當(dāng)輸入的編號為0時,循環(huán)結(jié)束。(3)查找函數(shù)查找信息的功能實現(xiàn)有三種不同的形式,分別是通過產(chǎn)品名稱、產(chǎn)品名稱以及進貨日期還有產(chǎn)品名稱和產(chǎn)品規(guī)模。下面以產(chǎn)品名稱的查找作為示例:void good:search1(good *head) ifstream in;in.open(wuzi.txt,ios:in|ios:nocreate); /打開文件if(!in)coutt文件不存在!endl;char input16;good *p; cout請輸入產(chǎn)品名稱:)=0) coutn*FOUND*nendl; show(p); /顯示查找記錄 coutn*END*nnext; /指針指向下一個結(jié)點 if(p=NULL) coutnot find!)=0)|(cn=2&strcmp(input,star-g.no)=0) /判斷條件cout請輸入需要領(lǐng)取物資的數(shù)目:nt; /輸入數(shù)目 if(tg.scale) int s; s=star-g.scale-t; /數(shù)據(jù)的處理 star-g.scale=s; /數(shù)據(jù)的更改賦值 cout請輸入領(lǐng)料的日期:star-g.outdate; /輸入出貨的日期 else cout沒有足夠的物資endl;if(count=0) head=new good; /分配新空間定為頭指針 cout記錄為空。next; /指針star往下移cout沒有找到相應(yīng)的記錄。count=0) /頭文件為空coutnt現(xiàn)在沒有紀(jì)錄!endl;return;good *p;p=head; /把頭指針賦給指針pcoutnt現(xiàn)共有如下count條數(shù)據(jù):n;cout編號;coutt名稱 進貨年份 進貨月份 進貨日期 規(guī)模n; /數(shù)據(jù)打印出來的格式for(int i=0;icount;i+) tg.inyeart g.inmonthtg.indaytg.scalennext;coutn;return;打印函數(shù)是能夠?qū)Υ娴馁Y料一次的打印出來,方便瀏覽。(7)退出函數(shù)exit(0);5 系統(tǒng)調(diào)試圖2 程序主菜單圖2界面為物資管理系統(tǒng)的主目錄部分:該部分顯示的是用戶選擇操作的部分,用戶可以在主目錄看到有7個不同的選項。根據(jù)用戶本身的需要,可在鍵盤上按下選項。圖3 信息輸入圖3是信息的輸入,在此界面中用戶輸入了木材和水龍頭兩個產(chǎn)品的信息。我們可以看到這兩個產(chǎn)品的屬性,如進貨日期、規(guī)模等等。圖4 信息存入文件圖4是信息保存,它可以將用戶輸入進去的信息存入文件。同時也就可以在以后的查找或是打印信息的時候從文件中取出可用信息。此時在界面中顯示有兩條信息存入文件。圖5 信息查找圖5是信息的查找,在界面中的查找菜單是一個子菜單。此界面是選擇的用產(chǎn)品的名稱來查找。圖6 領(lǐng)料模塊圖6是領(lǐng)料模塊,用戶通過登陸領(lǐng)料信息以及需要領(lǐng)取的物資的數(shù)目可以領(lǐng)取到相關(guān)的物資。領(lǐng)取后,系統(tǒng)會進行更新,詳見圖7、圖8。圖7 打印信息(領(lǐng)料前)圖8 打印信息(領(lǐng)料后)圖7、圖8是信息打印,它是整個庫存信息打印出來的形式,也是將保存在文件中的信息取出來通過鏈表的作用一一的顯示出來,方便瀏覽以及從整體上了解庫存的信息。6小結(jié)在課程設(shè)計過程中,我學(xué)到了學(xué)習(xí)的方法,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,兩周的課程設(shè)計過去了,我們總算也獲得了好的收獲。在本次實踐中,給我印象最為深刻的是在領(lǐng)料模塊程序的編譯過程中,起初是沒有一點頭緒,后來想通了也就是一個修改函數(shù)。經(jīng)過我一再的對文件進行調(diào)試。終于在兩周的后,我的程序也基本上完工了。同時也謝謝給我指點迷津的老師。兩周的課程設(shè)計,使我對C+有了更進一步的認(rèn)識和了解,要想學(xué)好它要重在實踐,要通過不斷的上機操作才能更好地學(xué)習(xí)它,通過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先對C+的文件的知識掌握得不是很熟練,還有對函數(shù)調(diào)用的正確使用也不夠熟悉,在此之中,因為管理系統(tǒng)的建立需要依靠鏈表的知識,而我們并沒有學(xué)習(xí)很多這個相關(guān)方面的知識,所以在編寫程序的過程中,這無疑成為了最難解決的問題,還好在參考資料書和網(wǎng)站上查找的資料以及老師的幫助后,將這個問題解決掉,自己機也多學(xué)習(xí)了一個知識點,在程序的調(diào)試過程中我很難找出錯的原因。在調(diào)試的過程中,總是會出現(xiàn)錯誤,不能將他們?nèi)刻幚淼簟?傊?,兩個星期的實踐學(xué)習(xí)給我留下了很深刻的印象。在以后的學(xué)習(xí)過程中我還得花很多的時間來深入的研究這一門課程,因為是專業(yè)課,所以我們也不能只停留在這種簡單的程序制作上,當(dāng)然課程設(shè)計也給我們提供了提前實驗的機會,我們在這兩周是進步很大的,所以再次感謝在這兩周中指導(dǎo)我們的劉老師。參考文獻(xiàn)1 陳維興、林小茶 C+面向?qū)ο蟪绦蛟O(shè)計教程(第二版)。北京:清華大學(xué)出版社,20042 劉振安、劉燕君、孫忱 C+語言課程設(shè)計。北京:機械工業(yè)出版社,20073 網(wǎng)站:32附錄 源程序#include /頭文件 #include#include#include#includestruct gd /結(jié)構(gòu)體char no10; /編號char name16; /產(chǎn)品名稱char inyear10; /進貨年份char inmonth10; /進貨月份char inday10; /進貨日期char outdate16; /出貨日期int scale; /產(chǎn)品規(guī)模(數(shù)量);class good /good類private: /私有成員gd g; /結(jié)構(gòu)體對象ggood *next; /指針 int menu_select(void); public:static int count; /靜態(tài)成員good(); /構(gòu)造函數(shù)good(); /析構(gòu)函數(shù)void handle_menu(good *); /處理函數(shù)菜單聲明good *input(good *); /信息輸入函數(shù)聲明good *load(good *); /函數(shù)鏈接void search(good *); /查詢函數(shù)菜單聲明void search1(good *); /名稱查詢函數(shù)聲明void search2(good *); /日期查詢函數(shù)聲明void search3(good *); /規(guī)模查詢函數(shù)聲明good *insert(good *); /新物入庫函數(shù)聲明good *lingliao(good *); /領(lǐng)料模塊函數(shù)聲明void save(good *); /保存函數(shù)聲明void display(good *); /打印函數(shù)聲明void show(good *); friend ostream &operator(istream &is,good &ob);int good:count=0; /靜態(tài)變量count初始化good:good() /成員初始化next=NULL;g.no0= ;0=0;g.inyear0= ;g.inmonth0= ;g.inday0= ;g.outdate0= ;g.scale=0;good:good() /析構(gòu)函數(shù)if(next!=NULL)delete next;void main() /主函數(shù)good *head; /頭指針 head=new good; /分配空間head-handle_menu(head);void good:handle_menu(good *head)for( ; ; )switch(menu_select() case 1:head=input(head);break; /進入信息輸入函數(shù)case 2:search(head);break; /進入查找信息函數(shù) case 3:insert(head);break; /進入插入函數(shù)case 4:lingliao(head);break; /進入領(lǐng)料模塊case 5:save(head);break; /進入保存信息函數(shù) case 6:display(head);break; /進入打印函數(shù)case 7:exit(0);break; /退出int good:menu_select()char s2;int cn; cout*歡迎進入物資管理系統(tǒng)!*nt1.信息輸入。nt2.信息查找。nt3.新物入庫。nt4.領(lǐng)料。nt5.保存信息。nt6.打印。n t7.退出。n*end*endl; docout請選擇.endl;gets(s); /輸入選項cn=atoi(s);while(cn7);return(cn);void good:save(good *head) /保存文件if(0=0)coutt沒有紀(jì)錄可存!endl;return;ofstream out;out.open(wuzi.txt,ios:out); /打開文件if(!out)coutt不能打開文件!endl;exit(1); /退出coutnt存文件endl;outcountn;good *p=head;while(p!=NULL)outnext;out.close(); /文件關(guān)閉coutcountt條紀(jì)錄已經(jīng)存入文件,請繼續(xù)操作。endl;good *good:input(good *head) /信息輸入ifstream in;in.open(wuzi.txt,ios:in|ios:nocreate); /打開文件if(!in) coutt還沒建立文件,退出時請保存文件。count=0) head=load(head); /鏈接:取文件good *info,*star; /定義指針star=new good;info=head;while(info-next!=NULL) /循環(huán)info=info-next; /指針指向下一個值 coutt輸入數(shù)據(jù),編號輸入0時結(jié)束。count; /count是因為下面的操作要是count多加一do +head-count; /break在count+之下coutstar-g.no;if(strcmp(star-g.no,0)=0) break; /結(jié)束循環(huán);出口; /輸入產(chǎn)品名稱coutstar-g.inyear; /輸入進貨年份coutstar-g.inmonth; /輸入進貨月份 coutstar-g.inday; /輸入進貨日期 coutstar-g.scale; /輸入進貨規(guī)模if(head-count=0)head=star; info-next=star; /info的下一個地址指向starinfo=star; star=new good; /分配新空間 while(1);info-next=NULL;return(head);good *good:load(good *head) /取文件操作void search(good *head); return(head); /返回頭指針istream &operator(istream &is,good &ob) /重載運算符is.getline(ob.g.no,10,n);is.getline(,16,n);isob.g.no;;isob.g.inyear;isob.g.inmonth;isob.g.inday;isob.g.scale;return is; /返回值ostream &operator(ostream &os,good &ob) /重載運算符osob.g.non;n;osob.g.inyearn;osob.g.inmonthn;osob.g.indayn;osob.g.scalen;return os; /返回值 void good:search(good *head) /查找菜單函數(shù)char choose2;int cn;cout*查找菜單*nt1.按產(chǎn)品名稱查找。nt2.按產(chǎn)品進貨日期查找并統(tǒng)計。nt3.按產(chǎn)品名稱、規(guī)模查找并統(tǒng)計。nt4.退出。n*end*endl;docout請選擇.endl;gets(choose);cn=atoi(choose);while(cn4);switch(cn)case 1:search1(head);break; /進入名稱查找函數(shù)case 2:search2(head);break; /進入日期查找函數(shù)case 3:search3(head);break; /進入規(guī)模查找函數(shù)case 4:exit(0); /退出void good:search1(good *head) ifstream in;in.open(wuzi.txt,ios:in|ios:nocreate); /打開文件if(!in)coutt文件不存在!endl;char input16;good *p; cout請輸入產(chǎn)品名稱:)=0) coutn*FOUND*nendl; show(p); /顯示查找記錄 coutn*END*nnext; /指針指向下一個結(jié)點 if(p=NULL) coutnot find!nendl; /顯示沒有找到 return;void good:search2(good *head)ifstream in;in.open(wuzi.txt,ios:in|ios:nocreate); /打開文件if(!in)coutt文件不存在!endl;char input016; char input116;char input216;good *p;cout請輸入產(chǎn)品名稱:endl;gets(input0); /輸入產(chǎn)品名稱cout請輸入產(chǎn)品進貨年份:endl;gets(input1); /輸入進貨年份cout請輸入產(chǎn)品進貨月份:)=0&strcmp(input1,p-g.inyear)=0&strcmp(input2,p-g.inmonth)=0) coutn*FOUND*nendl; show(p); /顯示查找記錄 coutn*END*nnext; /指針指向下一個結(jié)點if(p=NULL) printf(not findn); /顯示沒有找到return;void good:search3(good *head)ifstream in;in.open(wuzi.txt,ios:in|ios:nocreate); /打開文件if(!in)coutt文件不存在!endl;char input016;int input1;good *p;cout請輸入產(chǎn)品名稱:endl;gets(input0); /輸入產(chǎn)品名稱cout請輸入產(chǎn)品規(guī)模:input1; /輸入產(chǎn)品規(guī)模p=head;while(p!=NULL)if(strcmp(input0,)=0&input1=p-g.scale) coutn*FOUND*nendl;show(p); /顯示查找記錄coutn*END*nnext; /指針指向下一個結(jié)點if(p=NULL) printf(not findn); /顯示沒有找到return;void good:display(good *head)if(head-count=0) /頭文件為空 coutnt現(xiàn)在沒有紀(jì)錄!endl;return;good *p;p=head; /把頭指針賦給指針pcoutnt現(xiàn)共有如下count條數(shù)據(jù):n;cout編號;coutt名稱 進貨年份 進貨月份 進貨日期 規(guī)模n; /數(shù)據(jù)打印出來的格式for(int i=0;icount;i+)tg.inyeartg.inmonthtg.indaytg.scalennext;return;good *good:insert(good *head)ifstream in;in.open(wuzi.txt,ios:in|ios:nocreate); /打開文件if(!in) coutt還
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 9239-1:2025 EN Reaction to fire tests for floorings - Part 1: Determination of the burning behaviour using a radiant heat source
- 公司聯(lián)歡策劃方案
- 公司答謝晚宴策劃方案
- 公司每周一歌活動方案
- 公司花藝團建活動方案
- 公司獻(xiàn)愛心慈善活動方案
- 公司老員工激勵活動方案
- 公司每月之星策劃方案
- 公司植物園活動策劃方案
- 公司聚辦相親活動方案
- 校園網(wǎng)絡(luò)文化建設(shè)課件
- 井下探放水技術(shù)專題培訓(xùn)
- 3地質(zhì)勘查項目預(yù)算標(biāo)準(zhǔn)
- 膽汁與膽汁酸的代謝培訓(xùn)課件
- 高等數(shù)學(xué)期末復(fù)習(xí)題
- 新概念二英文課文字帖衡水體4Blesson2548
- 蠟筆小新優(yōu)質(zhì)獲獎?wù)n件
- 油罐車駕駛員日??己思?xì)則
- 各級醫(yī)療機構(gòu)醫(yī)院分級診療18個常見病分級診療流程(2023年版)
- 測控電路復(fù)習(xí)題及答案
- BEC商務(wù)英語中級考試閱讀真題
評論
0/150
提交評論