




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上目錄專心-專注-專業(yè)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書管理1.設(shè)計(jì)目的“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)一門十分重要的專業(yè)技術(shù)基礎(chǔ)課,計(jì)算機(jī)科學(xué)各領(lǐng)域及有關(guān)的應(yīng)用軟件都要使用到各種數(shù)據(jù)結(jié)構(gòu)。對(duì)于從事計(jì)算機(jī)科學(xué)及其應(yīng)用的科技工作者來說,數(shù)據(jù)結(jié)構(gòu)與算法是必須透徹地掌握的重要基礎(chǔ)。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的最終目的是解決實(shí)際的應(yīng)用問題,特別是非數(shù)值計(jì)算類型的應(yīng)用問題。課程設(shè)計(jì)是加強(qiáng)學(xué)生實(shí)踐能力的一個(gè)強(qiáng)有力手段。課程設(shè)計(jì)所安排的題目,在難度和深度方面都大于平時(shí)的上機(jī)訓(xùn)練,要求同學(xué)在完成設(shè)計(jì)和編寫中小型軟件的過程中,深化對(duì)數(shù)據(jù)結(jié)構(gòu)與算法課程中基本概念、理論和方法的理解;訓(xùn)練綜合運(yùn)用所學(xué)知識(shí)處理實(shí)際
2、問題的能力,強(qiáng)化面向?qū)ο蟮某绦蛟O(shè)計(jì)理念;使同學(xué)的程序設(shè)計(jì)與調(diào)試水平有一個(gè)明顯的提高。課程設(shè)計(jì)要求學(xué)生在完成程序設(shè)計(jì)的同時(shí)能夠撰寫比較規(guī)范的設(shè)計(jì)報(bào)告。嚴(yán)格實(shí)施課程設(shè)計(jì)這一環(huán)節(jié),對(duì)于學(xué)生基本程序設(shè)計(jì)素養(yǎng)的培養(yǎng)和軟件工作者工作作風(fēng)的訓(xùn)練,將起到顯著的促進(jìn)作用。2.問題描述采用Visual C+編程語言開發(fā)工具和MFC,設(shè)計(jì)并實(shí)現(xiàn)圖書管理系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了圖書管理中的添加,查詢,刪除,全部查詢,退出等功能,以及匯總圖書清單,包括對(duì)書籍各項(xiàng)信息的匯總。3.需求分析3.1 數(shù)據(jù)需求圖書信息:書名,所屬類型,作者,定價(jià),出版日期以及ISBN。3.2 基本功能需求1.匯總圖書清單,包括對(duì)書籍各項(xiàng)信息的匯總;(
3、各項(xiàng)信息包括書名,所屬類型,作者,定價(jià),出版日期以及ISBN。)2.對(duì)書籍信息的增、刪、查、全部查詢等功能。其中刪除功能主要依靠第一無二的ISBN,查詢功能可以依靠任何一種圖書信息(即書名,所屬類型,作者,定價(jià),出版日期以及ISBN任意一種)。3.3 非功能性需求用戶界面需求:簡潔、易用、易懂、友好的用戶界面。硬件要求:裝有Visual C+6.0的計(jì)算機(jī)??煽啃孕枨螅罕WC用戶在正常使用本系統(tǒng)時(shí),用戶的操作或誤操作不會(huì)產(chǎn)生數(shù)據(jù)的丟失。4.概要設(shè)計(jì)4.1 數(shù)據(jù)結(jié)構(gòu)用結(jié)構(gòu)struct定義圖書信息,用鏈表實(shí)現(xiàn)對(duì)圖書信息的存儲(chǔ)及維護(hù)。以文件的形式保存圖書信息到硬盤。4.2 系統(tǒng)包含的函數(shù)函數(shù)原型:vo
4、id CAddDlg:OnButtonAdd()功能:在鏈表結(jié)尾添加一個(gè)結(jié)點(diǎn)并將鏈表信息存入文件“圖書管理.txt”函數(shù)原型:void CChaxunDlg: OnButtonChaxun()功能: 完成查找用戶信息的功能并在編輯框和用戶列表中顯示出來函數(shù)原型:void CDelDlg:OnButton1()功能: 刪除鏈表和用戶列表的當(dāng)前結(jié)點(diǎn)函數(shù)原型:void CLookDlg:OnButtonDialog()功能: 在編輯框和用戶列表中顯示全部書籍出來4.3 函數(shù)間的關(guān)系1.進(jìn)入程序調(diào)用booklist()從硬盤讀取數(shù)據(jù),并將信息放入鏈表中。2.用函數(shù)CDelDlg:OnButton1()
5、刪除鏈表和用戶列表的當(dāng)前結(jié)點(diǎn)。3.可用函數(shù)CAddDlg:OnButtonAdd()在鏈表結(jié)尾添加一個(gè)結(jié)點(diǎn)并在用戶列表中顯示4.CChaxunDlg: OnButtonChaxun()可實(shí)現(xiàn)按不同方式進(jìn)行圖書查詢。5.CLookDlg:OnButtonDialog()在編輯框和用戶列表中顯示全部書籍出來。按書名按從書類型按作者按出版日期按價(jià)格按ISBN圖書管理系統(tǒng)添加書目查詢書目刪除書目查詢?nèi)繒顺鱿到y(tǒng)4.4 系統(tǒng)功能模塊圖圖4-1 系統(tǒng)功能模塊圖5.詳細(xì)設(shè)計(jì)5.1 結(jié)構(gòu)體的詳細(xì)定義class booklistpublic:CString bookname;/書名CString congs
6、huname;/叢書種類CString writer;/作者CString price;/價(jià)格CString dateyear;/出版年份CString datemonth;/出版月份CString ISBN;booklist *next;5.2 系統(tǒng)函數(shù)詳細(xì)介紹增加書籍:void CAddDlg:OnButtonAdd() / TODO: Add your control notification handler code hereUpdateData();extern booklist *head_book;if(m_bookname=""|m_congshuname=
7、""|m_isbn=""|m_month=""|m_price=""|m_writer=""|m_year="")MessageBox("請(qǐng)?zhí)顚懲暾麍D書信息");else booklist *p=head_book;booklist *Book=new booklist;Book->next=NULL;Book->bookname=m_bookname;Book->congshuname=m_congshuname;Book->da
8、temonth=m_month;Book->dateyear=m_year;Book->ISBN=m_isbn;Book->price=m_price;Book->writer=m_writer;if(head_book=NULL)head_book=Book;else if(p->ISBN>m_isbn)Book->next=head_book;head_book=Book;elsewhile(p->next)if(p->next->ISBN>m_isbn)Book->next=p->next;p->next
9、=Book;break;p=p->next;if(p->next=NULL)p->next=Book;MessageBox("添加成功");char* pszFileName = ".data.txt"CStdioFile myFile;CFileException fileException;CString str;if(!myFile.Open(pszFileName,CFile:modeCreate|CFile:modeReadWrite,&fileException)MessageBox("打開失敗"
10、);TRACE("Cannotopenfile%s,error=%un",pszFileName,fileException.m_cause);myFile.SeekToEnd();myFile.WriteString("書名,叢書名,作者,定價(jià)(元),出版年月, ISBN ");myFile.WriteString("n");/extern booklist *head_book;for(p=head_book;p;p=p->next)str.Format("%s,%s,%s,%s,%s.%s,%s",p-
11、>bookname,p->congshuname,p->writer,p->price,p->dateyear,p->datemonth,p->ISBN);myFile.SeekToEnd();myFile.WriteString(str);myFile.WriteString("n");/DestroyWindow(this); CDialog:OnCancel();BOOL CAddDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization
12、 herem_isbn="978-7-115-"UpdateData(FALSE);return TRUE; / return TRUE unless you set the focus to /a control / EXCEPTION: OCX Property Pages should /return FALSEvoid CAddDlg:OnCancel2() / TODO: Add your control notification handler code herem_bookname=""m_congshuname=""m
13、_isbn=""m_month=""m_price=""m_writer=""m_year=""UpdateData(FALSE);查詢書籍:BOOL CChaxunDlg:OnInitDialog() CDialog:OnInitDialog();LONG lStyle;lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);/獲/取當(dāng)前窗口stylelStyle &= LVS_TYPEMASK; /清除顯示方式位lStyle |= LVS_R
14、EPORT; /設(shè)置styleSetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);/設(shè)置/styleDWORD dwStyle = m_list.GetExtendedStyle();dwStyle |= LVS_EX_FULLROWSELECT;/選中某行使整行高亮 /(只適用與report風(fēng)格的listctrl)dwStyle |= LVS_EX_GRIDLINES;/網(wǎng)格線(只適用與report /風(fēng)格的listctrl)/ dwStyle |= LVS_EX_CHECKBOXES;/item前生成checkbox控件m_list.SetExt
15、endedStyle(dwStyle); /設(shè)置擴(kuò)展風(fēng)格m_list.InsertColumn( 0, "書名", LVCFMT_LEFT, 190 ); /插入列 m_list.InsertColumn( 1, "叢書名", LVCFMT_LEFT, 100 ); m_list.InsertColumn( 2, "作者", LVCFMT_LEFT, 120 ); m_list.InsertColumn( 3, "定價(jià)", LVCFMT_LEFT, 50 ); m_list.InsertColumn( 4, &qu
16、ot;出版日期", LVCFMT_LEFT, 80 ); m_list.InsertColumn( 5, "ISBN", LVCFMT_LEFT, 140 ); / TODO: Add extra initialization here m_bookname="不限" m_isbn="不限" m_price="不限" m_year="不限" m_month="不限" m_writer="不限" m_congshuname="不限&quo
17、t; UpdateData(FALSE); return TRUE; / return TRUE unless you set the focus /to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CChaxunDlg:OnButtonChaxun() / TODO: Add your control notification handler code herem_list.DeleteAllItems( );int i=0;/標(biāo)記查找到的本數(shù)CString str;extern booklist *he
18、ad_book;/m_ListBox.ResetContent();UpdateData();int nRow;for(booklist *p=head_book;p;p=p->next)if(m_bookname=""|m_bookname="不限"|m_bookname=p->bookname)if(m_congshuname=""|m_congshuname="不限"|m_congshuname=p->congshuname)if(m_writer=""|m_writer
19、="不限"|m_writer=p->writer)if(m_price=""|m_price="不限"|m_price=p->price)if(m_isbn=""|m_isbn="不限"|m_isbn=p->ISBN)if(m_year=""|m_year="不限"|m_year=p->dateyear)if(m_month=""|m_month="不限"|m_month=p->date
20、month|m_month=p->datemonth.Left(2)|(m_month=p->datemonth.Left(1)&&p->datemonth.Mid(1,1)='(')str.Format("%s",p->bookname);m_ListBox.AddString(str);str.Format("%s.%s",p->dateyear,p->datemonth);nRow = m_list.InsertItem(0, p->bookname);/插入行nRow =
21、m_list.InsertItem(0, "sb");/插入行m_list.SetItemText(nRow, 1, p->congshuname);/設(shè)置數(shù)據(jù)m_list.SetItemText(nRow, 2, p->writer);/設(shè)置數(shù)據(jù)m_list.SetItemText(nRow, 3, p->price);/設(shè)置數(shù)據(jù)m_list.SetItemText(nRow, 4, str);/設(shè)置數(shù)據(jù)m_list.SetItemText(nRow, 5, p->ISBN);/設(shè)置數(shù)據(jù)i+;if(i=0)MessageBox("無此書&
22、quot;);刪除書籍:void CDelDlg:OnButton1() / TODO: Add your control notification handler code hereUpdateData();int delbooknum=0;CString str;extern booklist *head_book;booklist *q,*p=head_book;/MessageBox(head_book->ISBN);while(p->ISBN=m_isbn)q=p;p=p->next;head_book=p;delbooknum+;delete q;CString
23、str1;if(head_book->next!=NULL)for(booklist *p=head_book;p;p=p->next)if(p->next!=NULL&&p->next->ISBN=m_isbn)str1.Format(" 書名: %snISBN: %sn",p->next->bookname,p->next->ISBN);p->next=p->next->next;delbooknum+;if(delbooknum=0)MessageBox("無此書&quo
24、t;,"警告");else str.Format("%s %d %s","已刪除",delbooknum,"本");MessageBox(str1+str);char* pszFileName = ".data.txt"CStdioFile myFile;CFileException fileException;if(!myFile.Open(pszFileName,CFile:modeCreate|CFile:modeReadWrite,&fileException)MessageBo
25、x("打開失敗");TRACE("Can not open file %s,error=%un",pszFileName,fileException.m_cause);myFile.SeekToEnd();myFile.WriteString("書名,叢書名,作者,定價(jià)(元),出版年月, ISBN ");myFile.WriteString("n");/extern booklist *head_book;for(booklist *p=head_book;p;p=p->next)str.Format(&qu
26、ot;%s,%s,%s,%s,%s.%s,%s",p->bookname,p->congshuname,p->writer,p->price,p->dateyear,p->datemonth,p->ISBN);myFile.SeekToEnd();myFile.WriteString(str);myFile.WriteString("n");CDialog:OnCancel();void CDelDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel();
27、BOOL CDelDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_isbn="978-7-115-"UpdateData(FALSE);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should /return FALSE查詢?nèi)繒築OOL CLookDlg:OnInitDialog() CDialog:OnIn
28、itDialog(); LONG lStyle; lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE); /獲取當(dāng)前窗口style lStyle &= LVS_TYPEMASK; /清除顯示方式位 lStyle |= LVS_REPORT; /設(shè)置style SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle); /設(shè)置style DWORD dwStyle = m_list.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT;/選中某行使整行高/亮
29、(只適用與report風(fēng)格的listctrl) dwStyle |= LVS_EX_GRIDLINES;/網(wǎng)格線(只適用與/report風(fēng)格的listctrl) / dwStyle |= LVS_EX_CHECKBOXES;/item前生成checkbox控件 m_list.SetExtendedStyle(dwStyle); /設(shè)置擴(kuò)展風(fēng)格/ TODO: Add extra initialization hereextern booklist *head_book;int booknum=0;extern length;CString str;m_list.InsertColumn( 0,
30、"書名", LVCFMT_LEFT, 190 );/插入列m_list.InsertColumn( 1, "叢書名", LVCFMT_LEFT, 100 );m_list.InsertColumn( 2, "作者", LVCFMT_LEFT, 120 );m_list.InsertColumn( 3, "定價(jià)", LVCFMT_LEFT, 50 );m_list.InsertColumn( 4, "出版日期", LVCFMT_LEFT, 90 );m_list.InsertColumn( 5,
31、"ISBN", LVCFMT_LEFT, 180 ); int nRow; for(booklist *q=head_book;q;q=q->next) str.Format("%s.%s",q->dateyear,q->datemonth); nRow = m_list.InsertItem(0, q->bookname);/插入行 /nRow = m_list.InsertItem(0, "sb");/插入行 m_list.SetItemText(nRow, 1, q->congshuname);/設(shè)
32、置數(shù)據(jù) m_list.SetItemText(nRow, 2, q->writer);/設(shè)置數(shù)據(jù) m_list.SetItemText(nRow, 3, q->price);/設(shè)置數(shù)據(jù) m_list.SetItemText(nRow, 4, str);/設(shè)置數(shù)據(jù) m_list.SetItemText(nRow, 5, q->ISBN);/設(shè)置數(shù)據(jù) booknum+; length=booknum;m_booknum=length;UpdateData(FALSE);return TRUE; / return TRUE unless you set the focus to /
33、a control / EXCEPTION: OCX Property Pages should /return FALSEvoid CLookDlg:OnButton1() / TODO: Add your control notification handler code hereCDelDlg dlg;dlg.DoModal();5.3 系統(tǒng)功能模塊介紹系統(tǒng)有四個(gè)模塊其中包含了圖書的增加,刪除,查找(分按書名,所屬類型,作者,定價(jià),出版日期以及ISBN查找)及顯示全部書籍。5.4 具體模塊設(shè)計(jì)5.4.1增加書籍開始 輸入書名 輸入?yún)矔愋洼斎胱髡咻斎氤霭婺暝螺斎雰r(jià)格輸入ISBN結(jié)束圖5.
34、1增加書籍5.4.2 刪除書籍開始輸入ISBN結(jié)束圖5.2刪除書籍5.4.3 查詢書籍開始輸入書名結(jié)束圖5.3 查詢書籍(注:查找圖書分書名,所屬類型,作者,定價(jià),出版日期以及ISBN按查找,只是方式不同而已。)6.調(diào)試分析本軟件是基于Windows的編程開發(fā),所以,軟件調(diào)試必須在Windows環(huán)境下進(jìn)行。調(diào)試前須做好準(zhǔn)備工作:(1) 需要安裝Visual C+6.0的計(jì)算機(jī)一臺(tái);配置好之后,在Visual C+6.0環(huán)境下進(jìn)行軟件的調(diào)試。(2) 測(cè)試數(shù)據(jù):圖書信息輸入:在“添加”模塊中,點(diǎn)擊“添加”會(huì)新建一個(gè)所有信息為空的圖書信息,可添加信息。 圖書信息刪除:輸入需要?jiǎng)h除的書的ISBN,點(diǎn)擊
35、刪除,再次確認(rèn)后即可刪除。圖書的查詢:按書名,所屬類型,作者,定價(jià),出版日期以及ISBN進(jìn)行查詢這幾個(gè)功能模塊在具體編程實(shí)現(xiàn)上基本上是一樣的,因?yàn)槎际轻槍?duì)圖書信息的查詢。因此我們僅以“按書名進(jìn)行查詢”為例來說明一下這幾個(gè)功能模塊的詳細(xì)實(shí)現(xiàn)過程。輸入需要查詢的書名,點(diǎn)擊查找,如果存在該書就顯示在下方的列表,并且顯示詳細(xì)信息。(3) 算法改進(jìn)設(shè)想:在程序設(shè)計(jì)前期,我并沒有用txt文件來保存圖書信息。經(jīng)過我不斷的修改以及調(diào)試后,該程序總算可以進(jìn)行txt文本的讀出與寫入,并且添加圖書信息后可以直接將信息保存在txt文本文件中。7.使用說明1.雙擊圖書管理.exe進(jìn)入程序主界面。圖7.1系統(tǒng)主界面2.添加圖書圖7.2添加圖書3.刪除圖書圖7.3刪除圖書4.查找圖書圖7.4查找圖書5.顯示全部圖書圖7.5顯示全部圖書6.退出點(diǎn)擊“退出”退出程序,此時(shí)系統(tǒng)自動(dòng)進(jìn)行存盤。8.設(shè)計(jì)總結(jié)圖書管理系統(tǒng)課程設(shè)計(jì),通過這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),真正達(dá)到了學(xué)與用的結(jié)合,增強(qiáng)了對(duì)數(shù)據(jù)結(jié)構(gòu)方面應(yīng)用的理解,對(duì)自己今后參與開發(fā)程序積累了不少經(jīng)驗(yàn)。在最近的答辯時(shí),老師問了幾個(gè)我在做課程設(shè)計(jì)時(shí)沒有想到的問題,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國鎳基變形高溫合金行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年尿試紙條項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國激光牙齒漂白機(jī)行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025年木制餐盒項(xiàng)目投資可行性研究分析報(bào)告
- 2025年舞臺(tái)設(shè)備項(xiàng)目安全評(píng)估報(bào)告
- 2024-2025學(xué)年高中政治第一單元生活與消費(fèi)第一課神奇的貨幣課時(shí)1揭開貨幣的神秘面紗課時(shí)精練含解析新人教版必修1
- 2024-2025學(xué)年高中生物第二章減數(shù)分裂和有性生殖第一節(jié)減數(shù)分裂第2課時(shí)生殖細(xì)胞的形成知能演練輕巧奪冠蘇教版必修2
- 中國立式高速刨花機(jī)項(xiàng)目投資可行性研究報(bào)告
- 2024-2025學(xué)年高中生物第三部分生物技術(shù)在食品加工中的應(yīng)用實(shí)驗(yàn)7用蒸氣蒸餾法從芳香植物中提全油略實(shí)驗(yàn)8果酒及果醋的制作知能演練輕巧奪冠浙科版選修1
- 2024-2025學(xué)年高中物理第十四章電磁波第1節(jié)第2節(jié)電磁振蕩練習(xí)含解析新人教版選修3-4
- 2024年俄羅斯高空作業(yè)平臺(tái)車行業(yè)應(yīng)用與市場(chǎng)潛力評(píng)估
- 【中考真題】2024年河南省普通高中招生考試歷史試卷(含答案)
- 2024版年度經(jīng)濟(jì)法基礎(chǔ)完整全套課件
- JT-T-445-2021汽車底盤測(cè)功機(jī)
- 體育科學(xué):田徑考試考試題(三)
- 2024年4月自考03200預(yù)防醫(yī)學(xué)(二)試題
- 《研學(xué)旅行市場(chǎng)營銷》課件-模塊八 研學(xué)旅行促銷策略
- 糖尿病孕婦護(hù)理:案例分析
- 《過華清宮絕句(其一)》-【中職專用】高一語文(高教版2023基礎(chǔ)模塊下冊(cè))
- (2024年)新版藥品管理法培訓(xùn)課件
- 2022年4月自考00808商法試題及答案含解析
評(píng)論
0/150
提交評(píng)論