mfc界面的圖書管理系統(tǒng)(共29頁)_第1頁
mfc界面的圖書管理系統(tǒng)(共29頁)_第2頁
mfc界面的圖書管理系統(tǒng)(共29頁)_第3頁
mfc界面的圖書管理系統(tǒng)(共29頁)_第4頁
mfc界面的圖書管理系統(tǒng)(共29頁)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目錄專心-專注-專業(yè)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計圖書管理1.設(shè)計目的“數(shù)據(jù)結(jié)構(gòu)”是計算機科學與技術(shù)專業(yè)一門十分重要的專業(yè)技術(shù)基礎(chǔ)課,計算機科學各領(lǐng)域及有關(guān)的應用軟件都要使用到各種數(shù)據(jù)結(jié)構(gòu)。對于從事計算機科學及其應用的科技工作者來說,數(shù)據(jù)結(jié)構(gòu)與算法是必須透徹地掌握的重要基礎(chǔ)。學習數(shù)據(jù)結(jié)構(gòu)與算法的最終目的是解決實際的應用問題,特別是非數(shù)值計算類型的應用問題。課程設(shè)計是加強學生實踐能力的一個強有力手段。課程設(shè)計所安排的題目,在難度和深度方面都大于平時的上機訓練,要求同學在完成設(shè)計和編寫中小型軟件的過程中,深化對數(shù)據(jù)結(jié)構(gòu)與算法課程中基本概念、理論和方法的理解;訓練綜合運用所學知識處理實際

2、問題的能力,強化面向?qū)ο蟮某绦蛟O(shè)計理念;使同學的程序設(shè)計與調(diào)試水平有一個明顯的提高。課程設(shè)計要求學生在完成程序設(shè)計的同時能夠撰寫比較規(guī)范的設(shè)計報告。嚴格實施課程設(shè)計這一環(huán)節(jié),對于學生基本程序設(shè)計素養(yǎng)的培養(yǎng)和軟件工作者工作作風的訓練,將起到顯著的促進作用。2.問題描述采用Visual C+編程語言開發(fā)工具和MFC,設(shè)計并實現(xiàn)圖書管理系統(tǒng)。該系統(tǒng)實現(xiàn)了圖書管理中的添加,查詢,刪除,全部查詢,退出等功能,以及匯總圖書清單,包括對書籍各項信息的匯總。3.需求分析3.1 數(shù)據(jù)需求圖書信息:書名,所屬類型,作者,定價,出版日期以及ISBN。3.2 基本功能需求1.匯總圖書清單,包括對書籍各項信息的匯總;(

3、各項信息包括書名,所屬類型,作者,定價,出版日期以及ISBN。)2.對書籍信息的增、刪、查、全部查詢等功能。其中刪除功能主要依靠第一無二的ISBN,查詢功能可以依靠任何一種圖書信息(即書名,所屬類型,作者,定價,出版日期以及ISBN任意一種)。3.3 非功能性需求用戶界面需求:簡潔、易用、易懂、友好的用戶界面。硬件要求:裝有Visual C+6.0的計算機。可靠性需求:保證用戶在正常使用本系統(tǒng)時,用戶的操作或誤操作不會產(chǎn)生數(shù)據(jù)的丟失。4.概要設(shè)計4.1 數(shù)據(jù)結(jié)構(gòu)用結(jié)構(gòu)struct定義圖書信息,用鏈表實現(xiàn)對圖書信息的存儲及維護。以文件的形式保存圖書信息到硬盤。4.2 系統(tǒng)包含的函數(shù)函數(shù)原型:vo

4、id CAddDlg:OnButtonAdd()功能:在鏈表結(jié)尾添加一個結(jié)點并將鏈表信息存入文件“圖書管理.txt”函數(shù)原型:void CChaxunDlg: OnButtonChaxun()功能: 完成查找用戶信息的功能并在編輯框和用戶列表中顯示出來函數(shù)原型:void CDelDlg:OnButton1()功能: 刪除鏈表和用戶列表的當前結(jié)點函數(shù)原型:void CLookDlg:OnButtonDialog()功能: 在編輯框和用戶列表中顯示全部書籍出來4.3 函數(shù)間的關(guān)系1.進入程序調(diào)用booklist()從硬盤讀取數(shù)據(jù),并將信息放入鏈表中。2.用函數(shù)CDelDlg:OnButton1()

5、刪除鏈表和用戶列表的當前結(jié)點。3.可用函數(shù)CAddDlg:OnButtonAdd()在鏈表結(jié)尾添加一個結(jié)點并在用戶列表中顯示4.CChaxunDlg: OnButtonChaxun()可實現(xiàn)按不同方式進行圖書查詢。5.CLookDlg:OnButtonDialog()在編輯框和用戶列表中顯示全部書籍出來。按書名按從書類型按作者按出版日期按價格按ISBN圖書管理系統(tǒng)添加書目查詢書目刪除書目查詢?nèi)繒顺鱿到y(tǒng)4.4 系統(tǒng)功能模塊圖圖4-1 系統(tǒng)功能模塊圖5.詳細設(shè)計5.1 結(jié)構(gòu)體的詳細定義class booklistpublic:CString bookname;/書名CString congs

6、huname;/叢書種類CString writer;/作者CString price;/價格CString dateyear;/出版年份CString datemonth;/出版月份CString ISBN;booklist *next;5.2 系統(tǒng)函數(shù)詳細介紹增加書籍: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("請?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("書名,叢書名,作者,定價(元),出版年月, 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);/獲/取當前窗口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風格的listctrl)dwStyle |= LVS_EX_GRIDLINES;/網(wǎng)格線(只適用與report /風格的listctrl)/ dwStyle |= LVS_EX_CHECKBOXES;/item前生成checkbox控件m_list.SetExt

15、endedStyle(dwStyle); /設(shè)置擴展風格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, "定價", 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;/標記查找到的本數(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("書名,叢書名,作者,定價(元),出版年月, 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); /獲取當前窗口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風格的listctrl) dwStyle |= LVS_EX_GRIDLINES;/網(wǎng)格線(只適用與/report風格的listctrl) / dwStyle |= LVS_EX_CHECKBOXES;/item前生成checkbox控件 m_list.SetExtendedStyle(dwStyle); /設(shè)置擴展風格/ 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, "定價", 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)有四個模塊其中包含了圖書的增加,刪除,查找(分按書名,所屬類型,作者,定價,出版日期以及ISBN查找)及顯示全部書籍。5.4 具體模塊設(shè)計5.4.1增加書籍開始 輸入書名 輸入?yún)矔愋洼斎胱髡咻斎氤霭婺暝螺斎雰r格輸入ISBN結(jié)束圖5.

34、1增加書籍5.4.2 刪除書籍開始輸入ISBN結(jié)束圖5.2刪除書籍5.4.3 查詢書籍開始輸入書名結(jié)束圖5.3 查詢書籍(注:查找圖書分書名,所屬類型,作者,定價,出版日期以及ISBN按查找,只是方式不同而已。)6.調(diào)試分析本軟件是基于Windows的編程開發(fā),所以,軟件調(diào)試必須在Windows環(huán)境下進行。調(diào)試前須做好準備工作:(1) 需要安裝Visual C+6.0的計算機一臺;配置好之后,在Visual C+6.0環(huán)境下進行軟件的調(diào)試。(2) 測試數(shù)據(jù):圖書信息輸入:在“添加”模塊中,點擊“添加”會新建一個所有信息為空的圖書信息,可添加信息。 圖書信息刪除:輸入需要刪除的書的ISBN,點擊

35、刪除,再次確認后即可刪除。圖書的查詢:按書名,所屬類型,作者,定價,出版日期以及ISBN進行查詢這幾個功能模塊在具體編程實現(xiàn)上基本上是一樣的,因為都是針對圖書信息的查詢。因此我們僅以“按書名進行查詢”為例來說明一下這幾個功能模塊的詳細實現(xiàn)過程。輸入需要查詢的書名,點擊查找,如果存在該書就顯示在下方的列表,并且顯示詳細信息。(3) 算法改進設(shè)想:在程序設(shè)計前期,我并沒有用txt文件來保存圖書信息。經(jīng)過我不斷的修改以及調(diào)試后,該程序總算可以進行txt文本的讀出與寫入,并且添加圖書信息后可以直接將信息保存在txt文本文件中。7.使用說明1.雙擊圖書管理.exe進入程序主界面。圖7.1系統(tǒng)主界面2.添加圖書圖7.2添加圖書3.刪除圖書圖7.3刪除圖書4.查找圖書圖7.4查找圖書5.顯示全部圖書圖7.5顯示全部圖書6.退出點擊“退出”退出程序,此時系統(tǒng)自動進行存盤。8.設(shè)計總結(jié)圖書管理系統(tǒng)課程設(shè)計,通過這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,真正達到了學與用的結(jié)合,增強了對數(shù)據(jù)結(jié)構(gòu)方面應用的理解,對自己今后參與開發(fā)程序積累了不少經(jīng)驗。在最近的答辯時,老師問了幾個我在做課程設(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論