mfc界面的图书管理系统(共29页)_第1页
mfc界面的图书管理系统(共29页)_第2页
mfc界面的图书管理系统(共29页)_第3页
mfc界面的图书管理系统(共29页)_第4页
mfc界面的图书管理系统(共29页)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上目录专心-专注-专业数据结构课程设计图书管理1.设计目的“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。对于从事计算机科学及其应用的科技工作者来说,数据结构与算法是必须透彻地掌握的重要基础。学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。课程设计是加强学生实践能力的一个强有力手段。课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编写中小型软件的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际

2、问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。课程设计要求学生在完成程序设计的同时能够撰写比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。2.问题描述采用Visual C+编程语言开发工具和MFC,设计并实现图书管理系统。该系统实现了图书管理中的添加,查询,删除,全部查询,退出等功能,以及汇总图书清单,包括对书籍各项信息的汇总。3.需求分析3.1 数据需求图书信息:书名,所属类型,作者,定价,出版日期以及ISBN。3.2 基本功能需求1.汇总图书清单,包括对书籍各项信息的汇总;(

3、各项信息包括书名,所属类型,作者,定价,出版日期以及ISBN。)2.对书籍信息的增、删、查、全部查询等功能。其中删除功能主要依靠第一无二的ISBN,查询功能可以依靠任何一种图书信息(即书名,所属类型,作者,定价,出版日期以及ISBN任意一种)。3.3 非功能性需求用户界面需求:简洁、易用、易懂、友好的用户界面。硬件要求:装有Visual C+6.0的计算机。可靠性需求:保证用户在正常使用本系统时,用户的操作或误操作不会产生数据的丢失。4.概要设计4.1 数据结构用结构struct定义图书信息,用链表实现对图书信息的存储及维护。以文件的形式保存图书信息到硬盘。4.2 系统包含的函数函数原型:vo

4、id CAddDlg:OnButtonAdd()功能:在链表结尾添加一个结点并将链表信息存入文件“图书管理.txt”函数原型:void CChaxunDlg: OnButtonChaxun()功能: 完成查找用户信息的功能并在编辑框和用户列表中显示出来函数原型:void CDelDlg:OnButton1()功能: 删除链表和用户列表的当前结点函数原型:void CLookDlg:OnButtonDialog()功能: 在编辑框和用户列表中显示全部书籍出来4.3 函数间的关系1.进入程序调用booklist()从硬盘读取数据,并将信息放入链表中。2.用函数CDelDlg:OnButton1()

5、删除链表和用户列表的当前结点。3.可用函数CAddDlg:OnButtonAdd()在链表结尾添加一个结点并在用户列表中显示4.CChaxunDlg: OnButtonChaxun()可实现按不同方式进行图书查询。5.CLookDlg:OnButtonDialog()在编辑框和用户列表中显示全部书籍出来。按书名按从书类型按作者按出版日期按价格按ISBN图书管理系统添加书目查询书目删除书目查询全部书籍退出系统4.4 系统功能模块图图4-1 系统功能模块图5.详细设计5.1 结构体的详细定义class booklistpublic:CString bookname;/书名CString congs

6、huname;/丛书种类CString writer;/作者CString price;/价格CString dateyear;/出版年份CString datemonth;/出版月份CString ISBN;booklist *next;5.2 系统函数详细介绍增加书籍: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("请填写完整图书信息");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; /设置styleSetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);/设置/styleDWORD dwStyle = m_list.GetExtendedStyle();dwStyle |= LVS_EX_FULLROWSELECT;/选中某行使整行高亮 /(只适用与report风格的listctrl)dwStyle |= LVS_EX_GRIDLINES;/网格线(只适用与report /风格的listctrl)/ dwStyle |= LVS_EX_CHECKBOXES;/item前生成checkbox控件m_list.SetExt

15、endedStyle(dwStyle); /设置扩展风格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;/标记查找到的本数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);/设置数据m_list.SetItemText(nRow, 2, p->writer);/设置数据m_list.SetItemText(nRow, 3, p->price);/设置数据m_list.SetItemText(nRow, 4, str);/设置数据m_list.SetItemText(nRow, 5, p->ISBN);/设置数据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查询全部书籍:BOOL CLookDlg:OnInitDialog() CDialog:OnIn

28、itDialog(); LONG lStyle; lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE); /获取当前窗口style lStyle &= LVS_TYPEMASK; /清除显示方式位 lStyle |= LVS_REPORT; /设置style SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle); /设置style DWORD dwStyle = m_list.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT;/选中某行使整行高/亮

29、(只适用与report风格的listctrl) dwStyle |= LVS_EX_GRIDLINES;/网格线(只适用与/report风格的listctrl) / dwStyle |= LVS_EX_CHECKBOXES;/item前生成checkbox控件 m_list.SetExtendedStyle(dwStyle); /设置扩展风格/ 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);/设

32、置数据 m_list.SetItemText(nRow, 2, q->writer);/设置数据 m_list.SetItemText(nRow, 3, q->price);/设置数据 m_list.SetItemText(nRow, 4, str);/设置数据 m_list.SetItemText(nRow, 5, q->ISBN);/设置数据 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 系统功能模块介绍系统有四个模块其中包含了图书的增加,删除,查找(分按书名,所属类型,作者,定价,出版日期以及ISBN查找)及显示全部书籍。5.4 具体模块设计5.4.1增加书籍开始 输入书名 输入丛书类型输入作者输入出版年月输入价格输入ISBN结束图5.

34、1增加书籍5.4.2 删除书籍开始输入ISBN结束图5.2删除书籍5.4.3 查询书籍开始输入书名结束图5.3 查询书籍(注:查找图书分书名,所属类型,作者,定价,出版日期以及ISBN按查找,只是方式不同而已。)6.调试分析本软件是基于Windows的编程开发,所以,软件调试必须在Windows环境下进行。调试前须做好准备工作:(1) 需要安装Visual C+6.0的计算机一台;配置好之后,在Visual C+6.0环境下进行软件的调试。(2) 测试数据:图书信息输入:在“添加”模块中,点击“添加”会新建一个所有信息为空的图书信息,可添加信息。 图书信息删除:输入需要删除的书的ISBN,点击

35、删除,再次确认后即可删除。图书的查询:按书名,所属类型,作者,定价,出版日期以及ISBN进行查询这几个功能模块在具体编程实现上基本上是一样的,因为都是针对图书信息的查询。因此我们仅以“按书名进行查询”为例来说明一下这几个功能模块的详细实现过程。输入需要查询的书名,点击查找,如果存在该书就显示在下方的列表,并且显示详细信息。(3) 算法改进设想:在程序设计前期,我并没有用txt文件来保存图书信息。经过我不断的修改以及调试后,该程序总算可以进行txt文本的读出与写入,并且添加图书信息后可以直接将信息保存在txt文本文件中。7.使用说明1.双击图书管理.exe进入程序主界面。图7.1系统主界面2.添加图书图7.2添加图书3.删除图书图7.3删除图书4.查找图书图7.4查找图书5.显示全部图书图7.5显示全部图书6.退出点击“退出”退出程序,此时系统自动进行存盘。8.设计总结图书管理系统课程设计,通过这次数据结构课程设计,真正达到了学与用的结合,增强了对数据结构方面应用的理解,对自己今后参与开发程序积累了不少经验。在最近的答辩时,老师问了几个我在做课程设计时没有想到的问题,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论