C+程序設(shè)計(jì)課程設(shè)計(jì)-圖書(shū)管理系統(tǒng)_第1頁(yè)
C+程序設(shè)計(jì)課程設(shè)計(jì)-圖書(shū)管理系統(tǒng)_第2頁(yè)
C+程序設(shè)計(jì)課程設(shè)計(jì)-圖書(shū)管理系統(tǒng)_第3頁(yè)
C+程序設(shè)計(jì)課程設(shè)計(jì)-圖書(shū)管理系統(tǒng)_第4頁(yè)
C+程序設(shè)計(jì)課程設(shè)計(jì)-圖書(shū)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C+程序設(shè)計(jì)課程設(shè)計(jì)圖書(shū)管理系統(tǒng)一、目的與要求學(xué)生已學(xué)完C+語(yǔ)言程序設(shè)計(jì)課程,并進(jìn)行了第一次課程設(shè)計(jì),學(xué)習(xí)了如何將有關(guān)處理文件的數(shù)據(jù)結(jié)構(gòu)和操作進(jìn)行封裝,從而掌握了C+語(yǔ)言程序設(shè)計(jì)中的一些基本知識(shí)與方法,且對(duì)抽象、封裝、繼承與多態(tài)有了一定的了解。為鞏固C+有關(guān)知識(shí),加強(qiáng)面向?qū)ο缶幊痰姆椒ㄓ?xùn)練,增加學(xué)生軟件設(shè)計(jì)能力和動(dòng)手能力,學(xué)習(xí)使用現(xiàn)有工具,特設(shè)計(jì)了這個(gè)利用MFC類開(kāi)發(fā)一個(gè)小型完整應(yīng)用程序的題目。主要要求如下:通過(guò)本課程設(shè)計(jì),學(xué)生應(yīng)達(dá)到以下要求:1、學(xué)會(huì)在自己的軟件工程中利用MFC提供的成熟數(shù)據(jù)類型(class),這里主要要用的類有,CString,CFile,CArchive,CObject以

2、及CObArray等一些通用類;2、掌握冒泡法。掌握數(shù)據(jù)類型大小(operator )的重載,進(jìn)而利用冒泡法對(duì)數(shù)據(jù)進(jìn)行排序。3、學(xué)習(xí)MFC中數(shù)據(jù)序列化(Serialize)的方法,掌握如何利用MFC提供的數(shù)據(jù)類型進(jìn)行數(shù)據(jù)序列化。二、設(shè)計(jì)任務(wù)題目:圖書(shū)管理系統(tǒng)要求: 設(shè)計(jì)一個(gè)小型圖書(shū)管理系統(tǒng)。1)數(shù)據(jù)上要求保存圖書(shū)的如下幾各方面的信息編號(hào)(應(yīng)是圖書(shū)的唯一標(biāo)識(shí)符)、分類號(hào)、書(shū)名、作者、出版社(版次)、出版日期、單價(jià)、借閱者、借出日期、歸還日期。借閱者要有,證件編號(hào)、姓名、性別、類別(大學(xué)生、研究生、教師等)。日期數(shù)據(jù)應(yīng)包含,年、月、日。2)界面上要含有以下主要功能主菜單:預(yù)覽,添加,刪除,排序,查

3、找,修改,借書(shū)、還書(shū)、打印催還書(shū)通知,保存,退出等預(yù)覽 選擇此菜單,列出所有圖書(shū);添加 選擇此菜單,由用戶在系統(tǒng)的提示下輸入圖書(shū)資料,系統(tǒng)根據(jù)用戶資料添加圖書(shū);刪除 讓用戶選擇按照什么原則刪除;排序 讓用戶選擇排序的原則,比如按人名排序、按書(shū)名排序等;查找 由用戶給出查找的依據(jù),書(shū)名、作者或借閱者等,然后根據(jù)用戶所給信息進(jìn)行查找,并列出查找結(jié)果;修改 利用查找功能將用戶要修改的圖書(shū)顯示出來(lái),然后提供一個(gè)接口讓用戶修改數(shù)據(jù)。借書(shū) 根據(jù)書(shū)籍編號(hào)借書(shū)還書(shū) 打印催還書(shū)通知 選擇此菜單后,用戶給出借書(shū)最長(zhǎng)期限,然后依據(jù)不同類型的借閱者分別判斷借書(shū)期限是否超過(guò),然后列出所有逾期不還者名單以及所借書(shū)籍。保存

4、 利用序列化技術(shù)對(duì)所有圖書(shū)進(jìn)行保存,還要提供文本文件的數(shù)據(jù)導(dǎo)入導(dǎo)出的功能;退出 退出系統(tǒng)。三、設(shè)計(jì)準(zhǔn)備1、環(huán)境準(zhǔn)備需要WINDOWS操作系統(tǒng)與Visual C+6.0集成開(kāi)發(fā)環(huán)境。2、知識(shí)準(zhǔn)備熟悉WINDOWS操作系統(tǒng)的基本操作。掌握C+基本知識(shí),主要有類的定義與實(shí)現(xiàn),一些簡(jiǎn)單操作符重載等。知道MFC一些通用類的基本屬性與方法以及其使用。能利用Visual C+界面的。知道C+編譯程序的若干調(diào)試技術(shù)。四、 設(shè)計(jì)指導(dǎo)1、為什么計(jì)算機(jī)語(yǔ)言從最開(kāi)始的二進(jìn)制碼到第一個(gè)高級(jí)語(yǔ)言的出現(xiàn),發(fā)展到今天經(jīng)過(guò)了半個(gè)多世紀(jì),語(yǔ)言已由剛開(kāi)始的面向機(jī)器(ASM),到面向程序員(過(guò)程式程序),到面向數(shù)據(jù)(OD),到面向?qū)?/p>

5、象(OO),其表述方式愈來(lái)愈接近人們的日常語(yǔ)言與思維方式。從數(shù)據(jù)的表述上,從剛開(kāi)始的簡(jiǎn)單數(shù)據(jù)類型(int, char, float,double, ),到抽象數(shù)據(jù)類型(ADT),也就是各種編譯程序提供的用戶數(shù)據(jù)類型的定義方式(比如,struct, class, enum, enum),到范式編程思想(GP)。語(yǔ)言千變?nèi)f化,技術(shù)日新月異,但是如果學(xué)會(huì)了利用已有的成果,掌握了閱讀源代碼(源碼之前,了無(wú)秘密)的方法,就可以以最短的時(shí)間,獲得最高的效益。掌握C/C+是計(jì)算機(jī)科學(xué)系學(xué)生最重要的基本功。一方面要通過(guò)不斷地學(xué)習(xí)以及實(shí)踐提高自己編寫(xiě)代碼、算法設(shè)計(jì)以及軟件實(shí)現(xiàn)的功力,另一方面,由于歷史的沉積,前

6、人又為我們提供了許多寶貴的經(jīng)驗(yàn)和成果,學(xué)會(huì)使用前人的成果是一條快速進(jìn)入科學(xué)前沿的捷徑,也是當(dāng)今科技高速發(fā)展的一種必經(jīng)之路。學(xué)習(xí)的最好方法,特別是語(yǔ)言的學(xué)習(xí),是實(shí)踐!有鑒于此,我們?cè)O(shè)計(jì)了這樣一個(gè)利用MFC為我們提供的一些通用類來(lái)實(shí)現(xiàn)日常管理中經(jīng)常需要的一些簡(jiǎn)單操作??偟哪康氖亲屚瑢W(xué)們通過(guò)此次課程設(shè)計(jì),提高自己的編程能力和應(yīng)用能力。2、系統(tǒng)設(shè)計(jì)系統(tǒng)要求用菜單方式(DOS或WINDOWS均可)提供交互式的應(yīng)用軟件,主要菜單及其功能的詳細(xì)說(shuō)明見(jiàn)第2款(設(shè)計(jì)任務(wù))。數(shù)據(jù)要求1)為圖書(shū)設(shè)計(jì)一個(gè)類(CBooks),要有一個(gè)用于保存數(shù)據(jù)的成員函數(shù)和以下的數(shù)據(jù)唯一標(biāo)識(shí)書(shū)籍編號(hào)、書(shū)名(CString)、作者(CS

7、tring)、出版單位、出版日期、單價(jià)、購(gòu)買(mǎi)日期、借閱者、借出日期、還書(shū)日期等。其中,所有日期要用一個(gè)結(jié)構(gòu),包含年、月、日。借閱者的結(jié)構(gòu)中包含姓名、證號(hào)、性別與型別(大學(xué)生、研究生還是教師)。2)為管理圖書(shū)設(shè)計(jì)一個(gè)類(CManager),有唯一的數(shù)據(jù)成員(m_list),存放書(shū)籍的一個(gè)鏈,與若干函數(shù),其目的為:保存,刪除、查找等。3、系統(tǒng)實(shí)現(xiàn)概述(控制臺(tái)應(yīng)用程序)第一步 開(kāi)啟VC;第二步 filenew,在彈出的對(duì)話框中作如圖所示的選擇與填寫(xiě),然后點(diǎn)擊“OK”;第三步 選擇“An application than supports MFC.”,點(diǎn)擊“Finish”,點(diǎn)擊“OK”;第四步 打開(kāi)“

8、CBooksApp.cpp”文件,刪除語(yǔ)句“CWinApp theApp;”以及函數(shù)體“int _tmain(int argc, TCHAR* argv, TCHAR* envp)”,添加函數(shù)體“void main()”。第五步 編譯運(yùn)行,程序框架OK;第六步 建立數(shù)據(jù)結(jié)構(gòu)與算法實(shí)現(xiàn):a) 日期結(jié)構(gòu),包含有年、月、日,以及減法與小于號(hào)的重載struct Dateint m_year;int m_moth;int m_day;int operator (const Date&d)int days=365*(m_year-a. m_year);days+=30*(m_moth-d.m_moth)+

9、m_day-d.m_day;return days;BOOL operator (const Date& d)if(*this-d0)return TRUE;return FALSE;b) 讀者結(jié)構(gòu),包含有姓名、借書(shū)證號(hào)、性別與類別,小于號(hào)的重載struct ReaderCString m_name;CString m_certificateNo;BOOL m_sex;/1-male,0-femaleint m_type;/0-student,1-graduate,2-teacherBOOL operator (Reader &r)if(m_typer.m_type)return TRUE;i

10、f(m_certificateNor.m_certificateNo)return TRUE;if(m_namer.m_name)return TRUE;if(m_sexr.m_sex)return TRUE;return FALSE;c) CBooks類class CBooks : public CObject DECLARE_SERIAL(CBooks)public:CString m_serialNumber;/編號(hào)CString m_category;/類別CString m_title;/書(shū)名CString m_auther;/作者CString m_press;/出版社Date m

11、_publicDate;/出版日期double m_price;Date m_purchaseDate;/購(gòu)書(shū)時(shí)間Reader m_lender;/借閱者Date m_lendDate;/借書(shū)日期Date m_returnDate;/還書(shū)日期CBooks();virtual CBooks();void Serialize(CArchive&ar);CBooks類具有所需要的數(shù)據(jù)成員外,需要注意到首先,它是由CObject派生的,CObject是絕大部分MFC類的基類;其次,類中有一個(gè)宏DECLARE_SERIAL(CBooks),其作用就是為了實(shí)現(xiàn)文件的序列化與類的動(dòng)態(tài)創(chuàng)建。相應(yīng)的,在此類的實(shí)

12、現(xiàn)文件中必定要有宏IMPLEMENT_SERIAL(CBooks,CObject,1)。最后,CBooks應(yīng)重載CObject虛擬函數(shù)Serialize(CArchive&ar)。CBooks類的實(shí)現(xiàn)文件類似于:IMPLEMENT_SERIAL(CBooks,CObject,1)CBooks:CBooks()m_price=0.0;m_lender.m_sex=TRUE;m_lender.m_type=2;m_publicDate.m_year=0;m_publicDate.m_moth=0;m_publicDate.m_day=0;m_lendDate.m_year=0;m_lendDate

13、.m_moth=0;m_lendDate.m_day=0;m_returnDate.m_year=0;m_returnDate.m_moth=0;m_returnDate.m_day=0;m_purchaseDate.m_year=0;m_purchaseDate.m_moth=0;m_purchaseDate.m_day=0;CBooks:CBooks()void CBooks:Serialize(CArchive&ar)if(ar.IsStoring()arm_serialNumberm_categorym_titlem_autherm_pressm_price;arm_lender.m_

14、namem_lender.m_certificateNom_lender.m_sexm_lender.m_type;arm_publicDate.m_yearm_publicDate.m_mothm_publicDate.m_day;arm_lendDate.m_yearm_lendDate.m_mothm_lendDate.m_day;arm_returnDate.m_yearm_returnDate.m_mothm_returnDate.m_day;arm_purchaseDate.m_yearm_purchaseDate.m_mothm_serialNumberm_categorym_t

15、itlem_autherm_pressm_price;arm_lender.m_namem_lender.m_certificateNom_lender.m_sexm_lender.m_type;arm_publicDate.m_yearm_publicDate.m_mothm_publicDate.m_day;arm_lendDate.m_yearm_lendDate.m_mothm_lendDate.m_day;arm_returnDate.m_yearm_returnDate.m_mothm_returnDate.m_day;arm_purchaseDate.m_yearm_purcha

16、seDate.m_mothm_purchaseDate.m_day;第七步 建立管理圖書(shū)的類首先建一個(gè)基類class CManagerCObArray m_list;public:void AddTail(CBooks*pBook);/在鏈表尾部放書(shū)籍void AddHead(CBooks*pBook); /在鏈表頭部放書(shū)籍void Add(CBooks*pBook,int index);/將書(shū)籍放到index處void Delete(int index);/刪除index處的書(shū)籍void Fit(int index);/修改index處的書(shū)籍CBooks* GetBook(int index

17、);/獲取index出的書(shū)籍CManager();virtual CManager();virtual int Find(void*para,CobArray&list);virtual void Delete (void*para);viraul void Sort();void Serialize(CArchive&ar);friend ostream & operator (ostream& os,CManager &mg);其實(shí)現(xiàn)文件類似于CManager:CManager()CManager:CManager()int num=m_list.GetSize();for(int i=0

18、;im_list.GetSize();for(i=0;im_listi;if(p-m_title=pStr)list.Add(p);if(value0)value=i;return value;void CManagerTitle:Delete (void*para)if(!m_pParent)return;CString pStr= (char*)para;int i=0;while(im_list.GetSize()CBooks*p=(CBooks*) m_pParent-m_listi;if(p-m_title=pStr)delete p;m_pParent-m_list.RemoveA

19、t(i);elsei+;void CManagerTitle:Sort() if(!m_pParent)return;int i,jfor(i=0;im_listi;for(j=i+1;jm_listj;if(b2-m_titlem_title)m_pParent-m_list.RemoveAt(i);m_pParent-m_list.InsertAt(i,b2);m_pParent-m_list.RemoveAt(j);m_pParent-m_list.InsertAt(j,b1);b1=b2;類似的,可以構(gòu)造管理其他項(xiàng)目的子類,只需要重載基類三個(gè)虛函數(shù),F(xiàn)ind, Delete,Sort。

20、如果要使用他們只需如下作為CManager manager;/這是全局對(duì)象,由他保存所有書(shū)籍CManager*pManager;/這是一個(gè)操作指針pManager=new CManagerTitle;/準(zhǔn)備管理書(shū)名pManager-m_pParent=& manager;/和全局對(duì)象聯(lián)系起來(lái)pManager-Sort();/manager中的書(shū)就按書(shū)名排序了pManager-Delete(“MFC”);/這就刪除了manager中書(shū)名為“MFC”的所有書(shū)籍。注:文件的保存與打開(kāi)類似于int Save(char*filename,CManager*mg)CFile file;if(!file.O

21、pen(filename,CFile:modeWrite|CFile:modeCreate)return 0;CArchive ar(&file,CArchive:store);Mg-Serialize(ar);return 1;int Open(char*filename,CManager*mg)CFile file;if(!file.Open(filename,CFile:modRead)return 0;CArchive ar(&file,CArchive:store);Mg-Serialize(ar);return 1;第八步 完成主界面的設(shè)計(jì)與實(shí)現(xiàn)菜單類class CMenuA pu

22、blic:void ShowMain();void ShowSort();void ShowFind();void ShowDelete();.CMenuA();virtual CMenuA();4、系統(tǒng)測(cè)試首先提供5本書(shū)籍的資料供程序啟動(dòng)之用,可以見(jiàn)此五本書(shū)的資料用一個(gè)文本文件保存,然后每次運(yùn)行時(shí)讀入數(shù)據(jù)。例如編號(hào)類別書(shū)名作者出版社單價(jià)出版日期購(gòu)書(shū)時(shí)間00013/TP.1417編譯原理呂映芝清華大學(xué)出版社23.5019981120011100021/TP.646STL源碼剖析侯捷華中科技大學(xué)出版社58.8020026120021010003X/TP.12數(shù)值分析李慶揚(yáng)華中科技大學(xué)出版社15.2019827120001125、設(shè)計(jì)報(bào)告要求5000字,所名設(shè)計(jì)思想,界面使用,關(guān)鍵技術(shù),函數(shù)實(shí)現(xiàn)等。五、成績(jī)?cè)u(píng)定平時(shí)考核20分;界面通暢30分;功能齊全30分;實(shí)習(xí)報(bào)告20分。六、封底封面模板程序設(shè)計(jì)課程設(shè)計(jì)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論