欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    C++程序设计课程设计-图书管理系统.doc

    • 资源ID:5013994       资源大小:136.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++程序设计课程设计-图书管理系统.doc

    C+程序设计课程设计图书管理系统一、目的与要求学生已学完C+语言程序设计课程,并进行了第一次课程设计,学习了如何将有关处理文件的数据结构和操作进行封装,从而掌握了C+语言程序设计中的一些基本知识与方法,且对抽象、封装、继承与多态有了一定的了解。为巩固C+有关知识,加强面向对象编程的方法训练,增加学生软件设计能力和动手能力,学习使用现有工具,特设计了这个利用MFC类开发一个小型完整应用程序的题目。主要要求如下:通过本课程设计,学生应达到以下要求:1、学会在自己的软件工程中利用MFC提供的成熟数据类型(class),这里主要要用的类有,CString,CFile,CArchive,CObject以及CObArray等一些通用类;2、掌握冒泡法。掌握数据类型大小(operator < 或operator >)的重载,进而利用冒泡法对数据进行排序。3、学习MFC中数据序列化(Serialize)的方法,掌握如何利用MFC提供的数据类型进行数据序列化。二、设计任务题目:图书管理系统要求: 设计一个小型图书管理系统。1)数据上要求保存图书的如下几各方面的信息编号(应是图书的唯一标识符)、分类号、书名、作者、出版社(版次)、出版日期、单价、借阅者、借出日期、归还日期。借阅者要有,证件编号、姓名、性别、类别(大学生、研究生、教师等)。日期数据应包含,年、月、日。2)界面上要含有以下主要功能主菜单:预览,添加,删除,排序,查找,修改,借书、还书、打印催还书通知,保存,退出等预览 选择此菜单,列出所有图书;添加 选择此菜单,由用户在系统的提示下输入图书资料,系统根据用户资料添加图书;删除 让用户选择按照什么原则删除;排序 让用户选择排序的原则,比如按人名排序、按书名排序等;查找 由用户给出查找的依据,书名、作者或借阅者等,然后根据用户所给信息进行查找,并列出查找结果;修改 利用查找功能将用户要修改的图书显示出来,然后提供一个接口让用户修改数据。借书 根据书籍编号借书还书 打印催还书通知 选择此菜单后,用户给出借书最长期限,然后依据不同类型的借阅者分别判断借书期限是否超过,然后列出所有逾期不还者名单以及所借书籍。保存 利用序列化技术对所有图书进行保存,还要提供文本文件的数据导入导出的功能;退出 退出系统。三、设计准备1、环境准备需要WINDOWS操作系统与Visual C+6.0集成开发环境。2、知识准备熟悉WINDOWS操作系统的基本操作。掌握C+基本知识,主要有类的定义与实现,一些简单操作符重载等。知道MFC一些通用类的基本属性与方法以及其使用。能利用Visual C+界面的。知道C+编译程序的若干调试技术。四、 设计指导1、为什么计算机语言从最开始的二进制码到第一个高级语言的出现,发展到今天经过了半个多世纪,语言已由刚开始的面向机器(ASM),到面向程序员(过程式程序),到面向数据(OD),到面向对象(OO),其表述方式愈来愈接近人们的日常语言与思维方式。从数据的表述上,从刚开始的简单数据类型(int, char, float,double, ),到抽象数据类型(ADT),也就是各种编译程序提供的用户数据类型的定义方式(比如,struct, class, enum, enum),到范式编程思想(GP)。语言千变万化,技术日新月异,但是如果学会了利用已有的成果,掌握了阅读源代码(源码之前,了无秘密)的方法,就可以以最短的时间,获得最高的效益。掌握C/C+是计算机科学系学生最重要的基本功。一方面要通过不断地学习以及实践提高自己编写代码、算法设计以及软件实现的功力,另一方面,由于历史的沉积,前人又为我们提供了许多宝贵的经验和成果,学会使用前人的成果是一条快速进入科学前沿的捷径,也是当今科技高速发展的一种必经之路。学习的最好方法,特别是语言的学习,是实践!有鉴于此,我们设计了这样一个利用MFC为我们提供的一些通用类来实现日常管理中经常需要的一些简单操作。总的目的是让同学们通过此次课程设计,提高自己的编程能力和应用能力。2、系统设计系统要求用菜单方式(DOS或WINDOWS均可)提供交互式的应用软件,主要菜单及其功能的详细说明见第2款(设计任务)。数据要求1)为图书设计一个类(CBooks),要有一个用于保存数据的成员函数和以下的数据唯一标识书籍编号、书名(CString)、作者(CString)、出版单位、出版日期、单价、购买日期、借阅者、借出日期、还书日期等。其中,所有日期要用一个结构,包含年、月、日。借阅者的结构中包含姓名、证号、性别与型别(大学生、研究生还是教师)。2)为管理图书设计一个类(CManager),有唯一的数据成员(m_list),存放书籍的一个链,与若干函数,其目的为:保存,删除、查找等。3、系统实现概述(控制台应用程序)第一步 开启VC;第二步 fileànew,在弹出的对话框中作如图所示的选择与填写,然后点击“OK”;第三步 选择“An application than supports MFC.”,点击“Finish”,点击“OK”;第四步 打开“CBooksApp.cpp”文件,删除语句“CWinApp theApp;”以及函数体“int _tmain(int argc, TCHAR* argv, TCHAR* envp)”,添加函数体“void main()”。第五步 编译运行,程序框架OK;第六步 建立数据结构与算法实现:a) 日期结构,包含有年、月、日,以及减法与小于号的重载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)+m_day-d.m_day;return days;BOOL operator <(const Date& d)if(*this-d<0)return TRUE;return FALSE;b) 读者结构,包含有姓名、借书证号、性别与类别,小于号的重载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_type<r.m_type)return TRUE;if(m_certificateNo<r.m_certificateNo)return TRUE;if(m_name<r.m_name)return TRUE;if(m_sex<r.m_sex)return TRUE;return FALSE;c) CBooks类class CBooks : public CObject DECLARE_SERIAL(CBooks)public:CString m_serialNumber;/编号CString m_category;/类别CString m_title;/书名CString m_auther;/作者CString m_press;/出版社Date m_publicDate;/出版日期double m_price;Date m_purchaseDate;/购书时间Reader m_lender;/借阅者Date m_lendDate;/借书日期Date m_returnDate;/还书日期CBooks();virtual CBooks();void Serialize(CArchive&ar);CBooks类具有所需要的数据成员外,需要注意到首先,它是由CObject派生的,CObject是绝大部分MFC类的基类;其次,类中有一个宏DECLARE_SERIAL(CBooks),其作用就是为了实现文件的序列化与类的动态创建。相应的,在此类的实现文件中必定要有宏IMPLEMENT_SERIAL(CBooks,CObject,1)。最后,CBooks应重载CObject虚拟函数Serialize(CArchive&ar)。CBooks类的实现文件类似于: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.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()ar<<m_serialNumber<<m_category<<m_title<<m_auther<<m_press<<m_price;ar<<m_lender.m_name<<m_lender.m_certificateNo<<m_lender.m_sex<<m_lender.m_type;ar<<m_publicDate.m_year<<m_publicDate.m_moth<<m_publicDate.m_day;ar<<m_lendDate.m_year<<m_lendDate.m_moth<<m_lendDate.m_day;ar<<m_returnDate.m_year<<m_returnDate.m_moth<<m_returnDate.m_day;ar<<m_purchaseDate.m_year<<m_purchaseDate.m_moth<<m_purchaseDate.m_day;elsear>>m_serialNumber>>m_category>>m_title>>m_auther>>m_press>>m_price;ar>>m_lender.m_name>>m_lender.m_certificateNo>>m_lender.m_sex>>m_lender.m_type;ar>>m_publicDate.m_year>>m_publicDate.m_moth>>m_publicDate.m_day;ar>>m_lendDate.m_year>>m_lendDate.m_moth>>m_lendDate.m_day;ar>>m_returnDate.m_year>>m_returnDate.m_moth>>m_returnDate.m_day;ar>>m_purchaseDate.m_year>>m_purchaseDate.m_moth>>m_purchaseDate.m_day;第七步 建立管理图书的类首先建一个基类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);/获取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);其实现文件类似于CManager:CManager()CManager:CManager()int num=m_list.GetSize();for(int i=0;i<num;i+)CBooks*p=(CBooks*)m_listi;delete p;m_list.RemoveAll();void CManager:Serialize(CArchive&ar)m_list.Serialize(ar);void CManager:Delete (void*para)void CManager:Sort()int CManager:Find(void*para,CobArray&list)return 1;然后,建管理各种数据的子类。比如,管理书名的子类应为CManagerTitle:public CManagerpublic:CManager* m_pParent;CManagerTitle();int Find(void*para,CobArray&list);void Delete (void*para);void Sort();其实现文件类似于:CManagerTitle:CManagerTitle():m_pParent(0)int CManagerTitle:Find(void*para,CobArray&list)if(!m_pParent)return;CString*pStr= (char*)para;int i,value=-1,num=m_pParent->m_list.GetSize();for(i=0;i<num;i+)CBooks*p=(CBooks*) m_pParent->m_listi;if(p->m_title=pStr)list.Add(p);if(value<0)value=i;return value;void CManagerTitle:Delete (void*para)if(!m_pParent)return;CString pStr= (char*)para;int i=0;while(i< m_pParent->m_list.GetSize()CBooks*p=(CBooks*) m_pParent->m_listi;if(p->m_title=pStr)delete p;m_pParent->m_list.RemoveAt(i);elsei+;void CManagerTitle:Sort() if(!m_pParent)return;int i,jfor(i=0;i<num;i+)CBooks* b1=(CBooks*) m_pParent->m_listi;for(j=i+1;j<num;j+)CBooks*b2=(CBooks*) m_pParent->m_listj;if(b2->m_title<b1->m_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;类似的,可以构造管理其他项目的子类,只需要重载基类三个虚函数,Find, Delete,Sort。如果要使用他们只需如下作为CManager manager;/这是全局对象,由他保存所有书籍CManager*pManager;/这是一个操作指针pManager=new CManagerTitle;/准备管理书名pManager->m_pParent=& manager;/和全局对象联系起来pManager->Sort();/manager中的书就按书名排序了pManager->Delete(“MFC”);/这就删除了manager中书名为“MFC”的所有书籍。注:文件的保存与打开类似于int Save(char*filename,CManager*mg)CFile file;if(!file.Open(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;第八步 完成主界面的设计与实现菜单类class CMenuA public:void ShowMain();void ShowSort();void ShowFind();void ShowDelete();.CMenuA();virtual CMenuA();4、系统测试首先提供5本书籍的资料供程序启动之用,可以见此五本书的资料用一个文本文件保存,然后每次运行时读入数据。例如编号类别书名作者出版社单价出版日期购书时间00013/TP.1417编译原理吕映芝清华大学出版社23.5019981120011100021/TP.646STL源码剖析侯捷华中科技大学出版社58.8020026120021010003X/TP.12数值分析李庆扬华中科技大学出版社15.2019827120001125、设计报告要求5000字,所名设计思想,界面使用,关键技术,函数实现等。五、成绩评定平时考核20分;界面通畅30分;功能齐全30分;实习报告20分。六、封底封面模板程序设计课程设计报告系 (院): 计算机科学学院 专业班级: 姓 名: 学 号: 指导教师: 设计时间: 2011.12.12 - 2011.12.23 设计地点: 4#2号机房 (此处目录根据自己情况可以调整改动)一、课程设计目的3二、设计任务及要求3三、需求分析4四、总体设计4五、详细设计与实现含代码和实现界面7六、课程设计小结 (最后一页要加上下面的格式)指导老师意见:成绩: 教师签名: 年 月 日程序设计课程设计安排表时间:11年12月12日 11年12月23日 班级:网络11001-11002,计科11001-11006地点:4号楼2号机房 人数:248上机学时:40学时 16周节次周一周二周三周四周五上午网络1、2班网络1、2班网络1、2班网络1、2班网络1、2班下午计科123计科456计科123计科456计科123晚上计科456计科123计科456计科123计科45617周节次周一周二周三周四周五上午网络1、2班网络1、2班网络1、2班网络1、2班网络1、2班下午计科456计科123计科456计科123计科456晚上计科123计科456计科123计科456计科123说明:每一个班安排一名指导教师,一名辅导老师,指导老师负责布置任务、指导编程及编写报告、指导学生熟悉开发环境和辅导学生调试程序,并对学生进行考勤。最后对学生完成的系统进行现场验收和评定成绩。网络11001 孙庆生 詹泽梅网络11002 詹泽梅 孙庆生计科11001 包小军 雷 鸣计科11002 雷 鸣 白 凯计科11003 白 凯 包小军计科11004 刘兆良 周云才计科11005 冯 伟 刘兆良计科11006 周云才 冯 伟其中第一个老师为本班指导老师。时间上午8:30-11:30 下午2:00-5:0015

    注意事项

    本文(C++程序设计课程设计-图书管理系统.doc)为本站会员(西安人)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开