




版權(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ì)圖書管理系統(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ù)題目:圖書管理系統(tǒng)要求: 設(shè)計(jì)一個(gè)小型圖書管理系統(tǒng)。1)數(shù)據(jù)上要求保存圖書的如下幾各方面的信息編號(hào)(應(yīng)是圖書的唯一標(biāo)識(shí)符)、分類號(hào)、書名、作者、出版社(版次)、出版日期、單價(jià)、借閱者、借出日期、歸還日期。借閱者要有,證件編號(hào)、姓名、性別、類別(大學(xué)生、研究生、教師等)。日期數(shù)據(jù)應(yīng)包含,年、月、日。2)界面上要含有以下主要功能主菜單:預(yù)覽,添加,刪除,排序,查
3、找,修改,借書、還書、打印催還書通知,保存,退出等預(yù)覽 選擇此菜單,列出所有圖書;添加 選擇此菜單,由用戶在系統(tǒng)的提示下輸入圖書資料,系統(tǒng)根據(jù)用戶資料添加圖書;刪除 讓用戶選擇按照什么原則刪除;排序 讓用戶選擇排序的原則,比如按人名排序、按書名排序等;查找 由用戶給出查找的依據(jù),書名、作者或借閱者等,然后根據(jù)用戶所給信息進(jìn)行查找,并列出查找結(jié)果;修改 利用查找功能將用戶要修改的圖書顯示出來(lái),然后提供一個(gè)接口讓用戶修改數(shù)據(jù)。借書 根據(jù)書籍編號(hào)借書還書 打印催還書通知 選擇此菜單后,用戶給出借書最長(zhǎng)期限,然后依據(jù)不同類型的借閱者分別判斷借書期限是否超過(guò),然后列出所有逾期不還者名單以及所借書籍。保存
4、 利用序列化技術(shù)對(duì)所有圖書進(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)單操作符重載等。知道m(xù)fc一些通用類的基本屬性與方法以及其使用。能利用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í)踐提高自己編寫代碼、算法設(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è)計(jì)一個(gè)類(cbooks),要有一個(gè)用于保存數(shù)據(jù)的成員函數(shù)和以下的數(shù)據(jù)唯一標(biāo)識(shí)書籍編號(hào)、書名(cstring)、作者(cs
7、tring)、出版單位、出版日期、單價(jià)、購(gòu)買日期、借閱者、借出日期、還書日期等。其中,所有日期要用一個(gè)結(jié)構(gòu),包含年、月、日。借閱者的結(jié)構(gòu)中包含姓名、證號(hào)、性別與型別(大學(xué)生、研究生還是教師)。2)為管理圖書設(shè)計(jì)一個(gè)類(cmanager),有唯一的數(shù)據(jù)成員(m_list),存放書籍的一個(gè)鏈,與若干函數(shù),其目的為:保存,刪除、查找等。3、系統(tǒng)實(shí)現(xiàn)概述(控制臺(tái)應(yīng)用程序)第一步 開(kāi)啟vc;第二步 filenew,在彈出的對(duì)話框中作如圖所示的選擇與填寫,然后點(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),包含有姓名、借書證號(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;/書名cstring m_auther;/作者cstring m_press;/出版社date m
11、_publicdate;/出版日期double m_price;date m_purchasedate;/購(gòu)書時(shí)間reader m_lender;/借閱者date m_lenddate;/借書日期date m_returndate;/還書日期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;第七步 建立管理圖書的類首先建一個(gè)基類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);其實(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ù),find, delete,sort。
20、如果要使用他們只需如下作為cmanager manager;/這是全局對(duì)象,由他保存所有書籍cmanager*pmanager;/這是一個(gè)操作指針pmanager=new cmanagertitle;/準(zhǔn)備管理書名pmanager-m_pparent=& manager;/和全局對(duì)象聯(lián)系起來(lái)pmanager-sort();/manager中的書就按書名排序了pmanager-delete(“mfc”);/這就刪除了manager中書名為“mfc”的所有書籍。注:文件的保存與打開(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本書籍的資料供程序啟動(dòng)之用,可以見(jiàn)此五本書的資料用一個(gè)文本文件保存,然后每次運(yùn)行時(shí)讀入數(shù)據(jù)。例如編號(hào)類別書名作者出版社單價(jià)出版日期購(gòu)書時(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ì)報(bào)告
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寒露氣象與生活實(shí)踐
- 護(hù)理三基知識(shí)模擬考試題
- 歌唱世界的魅力
- 變態(tài)心理學(xué)與健康心理學(xué)練習(xí)題+參考答案
- 借款汽車質(zhì)押合同范例
- 保姆入職合同范例
- 公路小修工程合同范例
- 胸悶氣藥物治療
- 水果養(yǎng)生知識(shí)講座
- 人行天橋合同范例
- DB35T 1933-2020 熔融沉積3D打印品幾何精度評(píng)價(jià)規(guī)范
- 《大氣污染物控制工程》-揮發(fā)性有機(jī)物污染控制
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 6-28-01-14 變配電運(yùn)行值班員 人社廳發(fā)2019101號(hào)
- 2024-2030年冷凍面團(tuán)產(chǎn)品行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- LED基礎(chǔ)知識(shí)題庫(kù)100道及答案(完整版)
- 抖音本地生活商家直播培訓(xùn)
- 新版高中物理必做實(shí)驗(yàn)?zāi)夸浖捌鞑?(電子版)
- 涉密項(xiàng)目保密工作方案
- 危險(xiǎn)貨物道路運(yùn)輸規(guī)則第7部分:運(yùn)輸條件及作業(yè)要求(JTT617.7-2018)
- 思政課課題國(guó)內(nèi)外研究現(xiàn)狀
- 泌尿外科管道護(hù)理規(guī)范
評(píng)論
0/150
提交評(píng)論