![C++程序設(shè)計課程設(shè)計圖書管理系統(tǒng)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/9/9ed11c12-e1e0-4c95-aa52-9ae3ff09b135/9ed11c12-e1e0-4c95-aa52-9ae3ff09b1351.gif)
![C++程序設(shè)計課程設(shè)計圖書管理系統(tǒng)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/9/9ed11c12-e1e0-4c95-aa52-9ae3ff09b135/9ed11c12-e1e0-4c95-aa52-9ae3ff09b1352.gif)
![C++程序設(shè)計課程設(shè)計圖書管理系統(tǒng)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/9/9ed11c12-e1e0-4c95-aa52-9ae3ff09b135/9ed11c12-e1e0-4c95-aa52-9ae3ff09b1353.gif)
![C++程序設(shè)計課程設(shè)計圖書管理系統(tǒng)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/9/9ed11c12-e1e0-4c95-aa52-9ae3ff09b135/9ed11c12-e1e0-4c95-aa52-9ae3ff09b1354.gif)
![C++程序設(shè)計課程設(shè)計圖書管理系統(tǒng)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/9/9ed11c12-e1e0-4c95-aa52-9ae3ff09b135/9ed11c12-e1e0-4c95-aa52-9ae3ff09b1355.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、c+程序設(shè)計課程設(shè)計圖書管理系統(tǒng)一、目的與要求學生已學完c+語言程序設(shè)計課程,并進行了第一次課程設(shè)計,學習了如何將有關(guān)處理文件的數(shù)據(jù)結(jié)構(gòu)和操作進行封裝,從而掌握了c+語言程序設(shè)計中的一些基本知識與方法,且對抽象、封裝、繼承與多態(tài)有了一定的了解。為鞏固c+有關(guān)知識,加強面向?qū)ο缶幊痰姆椒ㄓ柧殻黾訉W生軟件設(shè)計能力和動手能力,學習使用現(xiàn)有工具,特設(shè)計了這個利用mfc類開發(fā)一個小型完整應(yīng)用程序的題目。主要要求如下:通過本課程設(shè)計,學生應(yīng)達到以下要求:1、學會在自己的軟件工程中利用mfc提供的成熟數(shù)據(jù)類型(class),這里主要要用的類有,cstring,cfile,carchive,cobject以
2、及cobarray等一些通用類;2、掌握冒泡法。掌握數(shù)據(jù)類型大小(operator )的重載,進而利用冒泡法對數(shù)據(jù)進行排序。3、學習mfc中數(shù)據(jù)序列化(serialize)的方法,掌握如何利用mfc提供的數(shù)據(jù)類型進行數(shù)據(jù)序列化。二、設(shè)計任務(wù)題目:圖書管理系統(tǒng)要求: 設(shè)計一個小型圖書管理系統(tǒng)。1)數(shù)據(jù)上要求保存圖書的如下幾各方面的信息編號(應(yīng)是圖書的唯一標識符)、分類號、書名、作者、出版社(版次)、出版日期、單價、借閱者、借出日期、歸還日期。借閱者要有,證件編號、姓名、性別、類別(大學生、研究生、教師等)。日期數(shù)據(jù)應(yīng)包含,年、月、日。2)界面上要含有以下主要功能主菜單:預覽,添加,刪除,排序,查
3、找,修改,借書、還書、打印催還書通知,保存,退出等預覽 選擇此菜單,列出所有圖書;添加 選擇此菜單,由用戶在系統(tǒng)的提示下輸入圖書資料,系統(tǒng)根據(jù)用戶資料添加圖書;刪除 讓用戶選擇按照什么原則刪除;排序 讓用戶選擇排序的原則,比如按人名排序、按書名排序等;查找 由用戶給出查找的依據(jù),書名、作者或借閱者等,然后根據(jù)用戶所給信息進行查找,并列出查找結(jié)果;修改 利用查找功能將用戶要修改的圖書顯示出來,然后提供一個接口讓用戶修改數(shù)據(jù)。借書 根據(jù)書籍編號借書還書 打印催還書通知 選擇此菜單后,用戶給出借書最長期限,然后依據(jù)不同類型的借閱者分別判斷借書期限是否超過,然后列出所有逾期不還者名單以及所借書籍。保存
4、 利用序列化技術(shù)對所有圖書進行保存,還要提供文本文件的數(shù)據(jù)導入導出的功能;退出 退出系統(tǒng)。三、設(shè)計準備1、環(huán)境準備需要windows操作系統(tǒng)與visual c+6.0集成開發(fā)環(huán)境。2、知識準備熟悉windows操作系統(tǒng)的基本操作。掌握c+基本知識,主要有類的定義與實現(xiàn),一些簡單操作符重載等。知道m(xù)fc一些通用類的基本屬性與方法以及其使用。能利用visual c+界面的。知道c+編譯程序的若干調(diào)試技術(shù)。四、 設(shè)計指導1、為什么計算機語言從最開始的二進制碼到第一個高級語言的出現(xiàn),發(fā)展到今天經(jīng)過了半個多世紀,語言已由剛開始的面向機器(asm),到面向程序員(過程式程序),到面向數(shù)據(jù)(od),到面向?qū)?/p>
5、象(oo),其表述方式愈來愈接近人們的日常語言與思維方式。從數(shù)據(jù)的表述上,從剛開始的簡單數(shù)據(jù)類型(int, char, float,double, ),到抽象數(shù)據(jù)類型(adt),也就是各種編譯程序提供的用戶數(shù)據(jù)類型的定義方式(比如,struct, class, enum, enum),到范式編程思想(gp)。語言千變?nèi)f化,技術(shù)日新月異,但是如果學會了利用已有的成果,掌握了閱讀源代碼(源碼之前,了無秘密)的方法,就可以以最短的時間,獲得最高的效益。掌握c/c+是計算機科學系學生最重要的基本功。一方面要通過不斷地學習以及實踐提高自己編寫代碼、算法設(shè)計以及軟件實現(xiàn)的功力,另一方面,由于歷史的沉積,前
6、人又為我們提供了許多寶貴的經(jīng)驗和成果,學會使用前人的成果是一條快速進入科學前沿的捷徑,也是當今科技高速發(fā)展的一種必經(jīng)之路。學習的最好方法,特別是語言的學習,是實踐!有鑒于此,我們設(shè)計了這樣一個利用mfc為我們提供的一些通用類來實現(xiàn)日常管理中經(jīng)常需要的一些簡單操作。總的目的是讓同學們通過此次課程設(shè)計,提高自己的編程能力和應(yīng)用能力。2、系統(tǒng)設(shè)計系統(tǒng)要求用菜單方式(dos或windows均可)提供交互式的應(yīng)用軟件,主要菜單及其功能的詳細說明見第2款(設(shè)計任務(wù))。數(shù)據(jù)要求1)為圖書設(shè)計一個類(cbooks),要有一個用于保存數(shù)據(jù)的成員函數(shù)和以下的數(shù)據(jù)唯一標識書籍編號、書名(cstring)、作者(cs
7、tring)、出版單位、出版日期、單價、購買日期、借閱者、借出日期、還書日期等。其中,所有日期要用一個結(jié)構(gòu),包含年、月、日。借閱者的結(jié)構(gòu)中包含姓名、證號、性別與型別(大學生、研究生還是教師)。2)為管理圖書設(shè)計一個類(cmanager),有唯一的數(shù)據(jù)成員(m_list),存放書籍的一個鏈,與若干函數(shù),其目的為:保存,刪除、查找等。3、系統(tǒng)實現(xiàn)概述(控制臺應(yīng)用程序)第一步 開啟vc;第二步 filenew,在彈出的對話框中作如圖所示的選擇與填寫,然后點擊“ok”;第三步 選擇“an application than supports mfc.”,點擊“finish”,點擊“ok”;第四步 打開“
8、cbooksapp.cpp”文件,刪除語句“cwinapp theapp;”以及函數(shù)體“int _tmain(int argc, tchar* argv, tchar* envp)”,添加函數(shù)體“void main()”。第五步 編譯運行,程序框架ok;第六步 建立數(shù)據(jù)結(jié)構(gòu)與算法實現(xiàn):a) 日期結(jié)構(gòu),包含有年、月、日,以及減法與小于號的重載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),包含有姓名、借書證號、性別與類別,小于號的重載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;/編號cstring m_category;/類別cstring m_title;/書名cstring m_auther;/作者cstring m_press;/出版社date m
11、_publicdate;/出版日期double m_price;date m_purchasedate;/購書時間reader m_lender;/借閱者date m_lenddate;/借書日期date m_returndate;/還書日期cbooks();virtual cbooks();void serialize(carchive&ar);cbooks類具有所需要的數(shù)據(jù)成員外,需要注意到首先,它是由cobject派生的,cobject是絕大部分mfc類的基類;其次,類中有一個宏declare_serial(cbooks),其作用就是為了實現(xiàn)文件的序列化與類的動態(tài)創(chuàng)建。相應(yīng)的,在此類的實
12、現(xiàn)文件中必定要有宏implement_serial(cbooks,cobject,1)。最后,cbooks應(yīng)重載cobject虛擬函數(shù)serialize(carchive&ar)。cbooks類的實現(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;第七步 建立管理圖書的類首先建一個基類class cmanagercobarray m_list;public:void addtail(cbooks*pbook);/在鏈表尾部放書籍void addhead(cbooks*pbook); /在鏈表頭部放書籍void add(cbooks*pbook,int index);/將書籍放到index處void delete(int index);/刪除index處的書籍void fit(int index);/修改index處的書籍cbooks* getbook(int index
17、);/獲取index出的書籍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);其實現(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)造管理其他項目的子類,只需要重載基類三個虛函數(shù),find, delete,sort。
20、如果要使用他們只需如下作為cmanager manager;/這是全局對象,由他保存所有書籍cmanager*pmanager;/這是一個操作指針pmanager=new cmanagertitle;/準備管理書名pmanager-m_pparent=& manager;/和全局對象聯(lián)系起來pmanager-sort();/manager中的書就按書名排序了pmanager-delete(“mfc”);/這就刪除了manager中書名為“mfc”的所有書籍。注:文件的保存與打開類似于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è)計與實現(xiàn)菜單類class cmenua pu
22、blic:void showmain();void showsort();void showfind();void showdelete();.cmenua();virtual cmenua();4、系統(tǒng)測試首先提供5本書籍的資料供程序啟動之用,可以見此五本書的資料用一個文本文件保存,然后每次運行時讀入數(shù)據(jù)。例如編號類別書名作者出版社單價出版日期購書時間00013/tp.1417編譯原理呂映芝清華大學出版社23.5019981120011100021/tp.646stl源碼剖析侯捷華中科技大學出版社58.8020026120021010003x/tp.12數(shù)值分析李慶揚華中科技大學出版社15.2019827120001125、設(shè)計報告要求5000字,所名設(shè)計思想,界面使用,關(guān)鍵技術(shù),函數(shù)實現(xiàn)等。五、成績評定平時考核20分;界面通暢30分;功能齊全30分;實習報告20分。六、封底封面模板程序設(shè)計課程設(shè)計報告
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鐵嶺貨運上崗證考試題
- 2025年唐山c1貨運上崗證模擬考試
- 2024-2025年高中政治課時作業(yè)10新時代的勞動者含解析新人教版必修1
- 2024-2025學年高中生物課時分層作業(yè)12基因指導蛋白質(zhì)的合成含解析新人教版必修2
- 2024-2025版高中生物2.1.1-2孟德爾遺傳試驗的科學方法分離規(guī)律試驗練習含解析中圖版必修2
- 2024-2025學年高中化學課時提升作業(yè)十五鹽類的水解含解析新人教版選修4
- 2024-2025學年八年級物理全冊4.1光的反射練習含解析新版滬科版
- 2024-2025學年高中語文7李將軍列傳學案含解析蘇教版選修史記蚜
- 2024-2025學年高中生物第2章細胞的化學組成第2節(jié)組成細胞的無機物練習含解析北師大版必修1
- 我想你的檢討書
- 2025-2030全球廢棄食用油 (UCO) 轉(zhuǎn)化為可持續(xù)航空燃料 (SAF) 的催化劑行業(yè)調(diào)研及趨勢分析報告
- 山東省臨沂市蘭山區(qū)2024-2025學年七年級上學期期末考試生物試卷(含答案)
- 湖北省武漢市2024-2025學年度高三元月調(diào)考英語試題(含答案無聽力音頻有聽力原文)
- 一年級下冊勞動《變色魚》課件
- 商務(wù)星球版地理八年級下冊全冊教案
- 天津市河西區(qū)2024-2025學年四年級(上)期末語文試卷(含答案)
- 2025年空白離婚協(xié)議書
- 校長在行政會上總結(jié)講話結(jié)合新課標精神給學校管理提出3點建議
- T-CSUS 69-2024 智慧水務(wù)技術(shù)標準
- 2025年護理質(zhì)量與安全管理工作計劃
- 湖南大學 嵌入式開發(fā)與應(yīng)用(張自紅)教案
評論
0/150
提交評論