c++程序设计课程设计-图书管理系统

上传人:aa****6 文档编号:38118203 上传时间:2018-04-27 格式:DOC 页数:15 大小:127.50KB
返回 下载 相关 举报
c++程序设计课程设计-图书管理系统_第1页
第1页 / 共15页
c++程序设计课程设计-图书管理系统_第2页
第2页 / 共15页
c++程序设计课程设计-图书管理系统_第3页
第3页 / 共15页
c++程序设计课程设计-图书管理系统_第4页
第4页 / 共15页
c++程序设计课程设计-图书管理系统_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《c++程序设计课程设计-图书管理系统》由会员分享,可在线阅读,更多相关《c++程序设计课程设计-图书管理系统(15页珍藏版)》请在金锄头文库上搜索。

1、1C+C+程序设计课程设计程序设计课程设计图书管理系统图书管理系统一、目的与要求学生已学完C+语言程序设计课程,并进行了第一次课程设计,学习了如何将有 关处理文件的数据结构和操作进行封装,从而掌握了 C+语言程序设计中的一些基本知识 与方法,且对抽象、封装、继承与多态有了一定的了解。为巩固 C+有关知识,加强面向 对象编程的方法训练,增加学生软件设计能力和动手能力,学习使用现有工具,特设计了 这个利用 MFC 类开发一个小型完整应用程序的题目。主要要求如下: 通过本课程设计,学生应达到以下要求: 1、学会在自己的软件工程中利用 MFC 提供的成熟数据类型(class) ,这里主要要用的 类有,

2、CString,CFile,CArchive,CObject 以及 CObArray 等一些通用类; 2、掌握冒泡法。掌握数据类型大小(operator )的重载,进而利用冒泡法 对数据进行排序。 3、学习 MFC 中数据序列化(Serialize)的方法,掌握如何利用 MFC 提供的数据类型 进行数据序列化。二、设计任务题目:图书管理系统 要求: 设计一个小型图书管理系统。 1)数据上要求保存图书的如下几各方面的信息 编号(应是图书的唯一标识符) 、分类号、书名、作者、出版社(版次) 、出版日期、 单价、借阅者、借出日期、归还日期。 借阅者要有,证件编号、姓名、性别、类别(大学生、研究生、教

3、师等) 。 日期数据应包含,年、月、日。 2)界面上要含有以下主要功能 主菜单:预览,添加,删除,排序,查找,修改,借书、还书、打印催还书通知,保 存,退出等 预览预览 选择此菜单,列出所有图书; 添加添加 选择此菜单,由用户在系统的提示下输入图书资料,系统根据用户资料添加图书;删除删除 让用户选择按照什么原则删除; 排序排序 让用户选择排序的原则,比如按人名排序、按书名排序等; 查找查找 由用户给出查找的依据,书名、作者或借阅者等,然后根据用户所给信息进行查 找,并列出查找结果; 修改修改 利用查找功能将用户要修改的图书显示出来,然后提供一个接口让用户修改数据。借书借书 根据书籍编号借书2还

4、书还书 打印催还书通知打印催还书通知 选择此菜单后,用户给出借书最长期限,然后依据不同类型的借阅 者分别判断借书期限是否超过,然后列出所有逾期不还者名单以及所借书籍。 保存保存 利用序列化技术对所有图书进行保存,还要提供文本文件的数据导入导出的功能;退出退出 退出系统。三、设计准备1、环境准备 需要 WINDOWS 操作系统与 Visual C+6.0 集成开发环境。 2、知识准备 熟悉 WINDOWS 操作系统的基本操作。 掌握 C+基本知识,主要有类的定义与实现,一些简单操作符重载等。 知道 MFC 一些通用类的基本属性与方法以及其使用。 能利用 Visual C+界面的。 知道 C+编译

5、程序的若干调试技术。四、 设计指导1、为什么 计算机语言从最开始的二进制码到第一个高级语言的出现,发展到今天经过了半个多 世纪,语言已由刚开始的面向机器(ASM) ,到面向程序员(过程式程序) ,到面向数据 (OD) ,到面向对象(OO) ,其表述方式愈来愈接近人们的日常语言与思维方式。从数据 的表述上,从刚开始的简单数据类型(int, char, float,double, ) ,到抽象数据类型 (ADT) ,也就是各种编译程序提供的用户数据类型的定义方式(比如,struct, class, enum, enum) ,到范式编程思想(GP) 。语言千变万化,技术日新月异,但是如果学会了利用

6、已有的成果,掌握了阅读源代码(源码之前,了无秘密)的方法,就可以以最短的时间, 获得最高的效益。 掌握 C/C+是计算机科学系学生最重要的基本功。一方面要通过不断地学习以及实践 提高自己编写代码、算法设计以及软件实现的功力,另一方面,由于历史的沉积,前人又 为我们提供了许多宝贵的经验和成果,学会使用前人的成果是一条快速进入科学前沿的捷 径,也是当今科技高速发展的一种必经之路。学习的最好方法,特别是语言的学习,是实 践!有鉴于此,我们设计了这样一个利用 MFC 为我们提供的一些通用类来实现日常管理 中经常需要的一些简单操作。总的目的是让同学们通过此次课程设计,提高自己的编程能 力和应用能力。2、

7、系统设计 系统要求用菜单方式(DOS 或 WINDOWS 均可)提供交互式的应用软件,主要菜单 及其功能的详细说明见第 2 款(设计任务) 。 数据要求 1)为图书设计一个类(CBooks),要有一个用于保存数据的成员函数和以下的数据 唯一标识书籍编号、书名(CString) 、作者(CString) 、出版单位、出版日期、单 价、购买日期、借阅者、借出日期、还书日期等。3其中,所有日期要用一个结构,包含年、月、日。借阅者的结构中包含姓名、证号、 性别与型别(大学生、研究生还是教师) 。 2)为管理图书设计一个类(CManager),有唯一的数据成员(m_list),存放书籍的一个链, 与若干

8、函数,其目的为:保存,删除、查找等。 3、系统实现概述(控制台应用程序) 第一步 开启 VC; 第二步 filenew,在弹出的对话框中作如图所示的选择与填写,然后点击“OK” ;第三步 选择“An application than supports MFC.” ,点击“Finish” ,点击“OK” ; 第四步 打开“CBooksApp.cpp”文件,删除语句“CWinApp theApp;”以及函数体“int _tmain(int argc, TCHAR* argv, TCHAR* envp)” ,添加函数体“void main()” 。 第五步 编译运行,程序框架 OK; 第六步 建立数

9、据结构与算法实现: a)a) 日期结构,包含有年、月、日,以及减法与小于号的重载日期结构,包含有年、月、日,以及减法与小于号的重载 struct Date int m_year; int m_moth; int m_day; int operator (const Date return days; BOOL operator m_serialNumberm_categorym_title m_autherm_pressm_price; arm_lender.m_namem_lender.m_certificateNo m_lender.m_sexm_lender.m_type; arm_pu

10、blicDate.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_purchaseDate.m_day; 第七步 建立管理图书的类 首先建一个基类 class CManager CObArray m_list; public: void A

11、ddTail(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);/获取 index 出的书籍 CManager(); virtual CManager(); virtual int Find(void*para,CobArray

12、virtual void Delete (void*para); viraul void Sort(); void Serialize(CArchive friend ostream for(i=0;im_listi; if(p-m_title=pStr) 8list.Add(p); if(valuem_list.GetSize() CBooks*p=(CBooks*) m_pParent-m_listi; if(p-m_title=pStr) delete p; m_pParent-m_list.RemoveAt(i); else i+; void CManagerTitle:Sort()

13、if(!m_pParent) return; int i,j for(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; 9 类似的,可以构造管理其他项目的子类,只需要重载基类三个虚函数,Find, Delete,Sort。 如果要使用他们只需如下作为 CManager m

14、anager;/这是全局对象,由他保存所有书籍 CManager*pManager;/这是一个操作指针 pManager=new CManagerTitle;/准备管理书名 pManager-m_pParent=/和全局对象联系起来 pManager-Sort();/manager 中的书就按书名排序了 pManager-Delete(“MFC”);/这就删除了 manager 中书名为“MFC”的所有书籍。 注:文件的保存与打开类似于 int Save(char*filename,CManager*mg) CFile file; if(!file.Open(filename,CFile:mo

15、deWrite|CFile:modeCreate) return 0; CArchive ar( Mg-Serialize(ar); return 1; int Open(char*filename,CManager*mg) CFile file; if(!file.Open(filename,CFile:modRead) return 0; CArchive ar( Mg-Serialize(ar); return 1; 第八步 完成主界面的设计与实现 菜单类class CMenuA public: void ShowMain(); void ShowSort(); void ShowFin

16、d(); void ShowDelete(); .10CMenuA(); virtual CMenuA(); ;4、系统测试 首先提供 5 本书籍的资料供程序启动之用,可以见此五本书的资料用一个文本文件保 存,然后每次运行时读入数据。例如编号类别书名作者出版社单价出版日期购书时间00013/TP.141 7编译原理吕映芝清华大学出版社23.5019981120011100021/TP.646STL 源码剖 析侯捷华中科技大学出版社58.8020026120021010003X/TP.12数值分析李庆扬华中科技大学出版社15.2019827120001125、设计报告 要求 5000 字,所名设计思

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号