c++课程设计报告模版图书馆管理系统设计毕业设计实践报告_第1页
c++课程设计报告模版图书馆管理系统设计毕业设计实践报告_第2页
c++课程设计报告模版图书馆管理系统设计毕业设计实践报告_第3页
c++课程设计报告模版图书馆管理系统设计毕业设计实践报告_第4页
c++课程设计报告模版图书馆管理系统设计毕业设计实践报告_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

北华航天工业学院基于C的面向对象程序设计实例实践报告报告题目图书馆管理系统设计作者所在系部计算机科学与工程系作者所在专业计算机科学与技术作者所在班级B12511作者学号20124051117作者姓名王硕指导教师姓名赵辉完成时间2013619北华航天工业学院教务处制摘要随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET因此基于局域网的即时通信工具,就这样应运而生了。所以本文提出了一个更加合理的设计,并在WINDOWS平台上加以了实现在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。本文通过局域网聊天系统来具体共享内存实现进程间的数据交换,利用WINDOWS消息机制实现进程间的同步,两种机制结合使用。关键词局域网;即时通信;客户端;服务端;多线程;共享内存;信息第一章绪论111课程设计的目的112课程设计的背景和意义1121课程设计的背景1122课程设计的意义113课程设计环境1第二章需求分析221问题描述222功能要求223问题的解决方案3第三章系统设计431数据设计4311类设计4312类之间的关系5313函数设计632结构设计6321系统流程图6322界面设计9第四章系统实现1141类实现1142函数实现1343主函数实现31第五章系统测试3251模块测试3252课程设计过程中遇到的问题36总结36致谢37参考文献37附录38第一章绪论11课程设计的目的(1)能够熟练掌握C语言的基本知识和技能。(2)基本掌握面向对象程序设计的基本思路和方法。(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。12课程设计的背景和意义121课程设计的背景1理论研究基础(1)C在C的基础上增加了面向对象的机制(2)充分运用面向对象机制中的继承性与多态性实现函数的设计。2技术层面的支持运用系统为C面向对象程序设计提供的各种设计方法和VC系统提供的库函数实现项目的开发。122课程设计的意义图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。通过设计此系统,熟练掌握C语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,培养学生的动手操作能力,提高自主学艺能力,能够利用所学的基本知识和技能,进行简单应用程序设计。13课程设计环境计算机WINDOWSXPVISUALC60第二章需求分析21问题描述图书馆共有三大类物品资料图书、视频光盘、图画。这三类物品共同具有的属性有编号、标题、作者、评级(未评级,一般,成人,儿童等。其中图书类增加出版社、ISBN号、页数等信息;视频光盘类增加出品者的名字、出品年份和视频时长等信息;图画类增加出品国籍、作品的长和宽(以厘米计,整数)等信息。设计程序能够对图书馆资料进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。22功能要求(1)添加物品主要完成图书馆三类物品信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当物品库已满,则提示不能再添加新的数据。(2)查询物品可按照三种方式来查询物品,分别为按标题查询输入标题,输出所查询的信息,若不存在该记录,则提示“该标题不存在”;按编号查询输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在”;按类别查询输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有物品”;(3)显示物品库输出当前物品库中所有物品信息,每条记录占据一行。(4)编辑物品可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除物品主要完成图书馆物品信息的删除。如果当前物品库为空,则提示“物品库为空”,并返回操作;否则,输入要删除的编号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。(6)统计信息输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。(7)物品存盘将当前程序中的物品信息存入文件中。(8)读出物品从文件中将物品信息读入程序。23问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。第三章系统设计31数据设计311类设计根据题目要求首先设计虚基类THINGS类名物品资料类THINGS数据成员INTNUMBER;STRINGTITLE;STRINGAGE;STRINGRATE;编号标题作者评级成员函数有参构造函数THINGSINTNU,STRINGTI,STRINGAU,STRINGRA;显示函数VIRTUALVOIDSHOW;存盘函数VIRTUALVOIDSAVEFSTREAM存盘函数VOIDSAVEFSTREAM基类THINGS派生出VIDEO类类名视频光盘类VIDEO数据成员INTNUMBER;STRINGTITLE;STRINGAGE;STRINGRATE;编号标题作者评级STRINGAUTHOR_NAMEINTYEARDOUBLETIMEVIDEONEXT出品者的名字出品年份视频时长指向VIDEO类的指针成员函数构造函数VIDEOINTNU,STRINGTI,STRINGAU,STRINGRA,STRINGAN,INTYE,DOUBLETE显示函数VOIDSHOW存盘函数VOIDSAVEFSTREAM基类THINGS派生出PAINT类类名图画类PAINT数据成员INTNUMBER;STRINGTITLE;STRINGAGE;STRINGRATE;编号标题作者评级STRINGCOUNTRYLONGLENGTHLONGWIDTHVIDEONEXT出品国家作品的长作品的宽指向VIDEO类的指针成员函数构造函数PAINTINTNU,STRINGTI,STRINGAU,STRINGRA,STRINGCO,LONGLEN,LONGWI显示函数VOIDSHOW存盘函数VOIDSAVEFSTREAM根据功能要求设计操作类MANAGE类名操作类MANAGE成员函数构造函数MANAGE析构函数MANAGE添加物品函数VOIDADD查询物品函数VOIDQUERY显示物品库函数VOIDDISPLAY编辑(修改)物品函数VOIDMODIFY删除物品函数VOIDDEL统计信息函数VOIDSTATISTICS物品存盘函数VOIDSAVE读出物品函数VOIDLOAD清空内存函数VOIDCLEAR数据成员指向基类的指针THINGSHEADER312类之间的关系BOOK类、VIDEO类、PAINT类都是虚基类THINGS的派生类,因为BOOK类、VIDEO类、PAINT类中有相同的成员,为了在软件开发中减少人力、物力,财力,所以应用类的继承机制解决软件的重用问题。MANAGE类是BOOK类、VIDEO类、PAINT类和THINGS类的友元函数,以便调用他们的私有成员,实现对BOOK类、VIDEO类、PAINT类的增、删、查、改、显、读、写等功能。313函数设计在本次课程设计中,总共用到了以下几种函数。分别是THINGSINTNU,STRINGTI,STRINGAU,STRINGRA/构造函数VIRTUALVOIDSHOW0/纯虚函数,使面向对象的多态性得以体现VIRTUALVOIDSAVEFSTREAM/纯虚函数,同上BOOKINTNU,STRINGTI,STRINGAU,STRINGRA,STRINGPH,STRINGIS,DOUBLEPA/构造函数VIDEOINTNU,STRINGTI,STRINGAU,STRINGRA,STRINGAN,INTYE,DOUBLETE/构造函数PAINTINTNU,STRINGTI,STRINGAU,STRINGRA,STRINGCO,LONGLE,LONGWI;/构造函数VOIDSHOW/派生类的显示函数,为MANAGE的多个成员函数调用。VOIDSAVEFSTREAM/派生类的存盘函数,为MANAGE的存盘函数调用。以上为基类THINGS和派生类BOOK、VIDEO和PAINT的成员函数,为下面的MANAGE类的成员函数调用。VOIDADD/添加物品VOIDQUERY/查询物品,该函数输出所要查询的信息。VOIDDISPLAY/显示物品库,显示物品的具体信息;VOIDMODIFY/编辑(修改)物品,这个函数使得物品信息能够及时改变,这些功能在实际应用中有很大的作用。VOIDDEL/删除物品,及时删除不必要的信息,节省空间。VOIDSTATISTICS/统计信息,这个函数可以达到对物品信息的具体信息的管理。VOIDSAVE/物品存盘VOIDLOAD/读出物品定义了哪些函数;各个函数完成的功能及主要算法描述。32结构设计321系统流程图添加函数流程图添加是是是否种类1种类2种类3BOOK信息录入PAINT信息录入VIDEO信息录入录入成功201100储存已满否否显示函数流程图查询函数流程图是否查找种类1种类3种类2按标题查询按类别查询按标号查询显示物品信息未找到物品找到显示显示物品信息否是322界面设计主菜单样式编辑输入编号找到未找到信息对图书修改编号1编号3编号2对图画修改对光盘修改录入修改信息修改完成物品查询物品修改主要用SWITCH语句来实现这些菜单功能第四章系统实现41类实现CLASSTHINGS/物品资料类PUBLICTHINGSINTNU,STRINGTI,STRINGAU,STRINGRA/构造函数VIRTUALVOIDSHOW0/纯虚函数VIRTUALVOIDSAVEFSTREAMPROTECTEDINTNUMBERSTRINGTITLESTRINGAUTHORSTRINGRATETHINGSNEXTFRIENDCLASSMANAGE/MANAGE是操作类CLASSBOOKVIRTUALPUBLICTHINGS/派生类图书PUBLICBOOKINTNU,STRINGTI,STRINGAU,STRINGRA,STRINGPH,STRINGIS,DOUBLEPAVOIDSHOWVOIDSAVEFSTREAMPRIVATESTRINGPUBLISHING_HOUSESTRINGISBNDOUBLEPAGESBOOKNEXTFRIENDCLASSMANAGECLASSVIDEOVIRTUALPUBLICTHINGS/派生类视频光盘PUBLICVIDEOINTNU101,STRINGTI“E“,STRINGAU“FEI“,STRINGRA“一般“,STRINGAN“FG“,INTYE1002,DOUBLETE3VOIDSHOWVOIDSAVEFSTREAMPRIVATESTRINGAUTHOR_NAMEINTYEARDOUBLETIMEVIDEONEXTFRIENDCLASSMANAGECLASSPAINTVIRTUALPUBLICTHINGS/派生类图画PUBLICPAINTINTNU101,STRINGTI“E“,STRINGAU“FEI“,STRINGRA“一般“,STRINGCO“CHINA“,LONGLE5,LONGWI6VOIDSHOWVOIDSAVEFSTREAMPRIVATESTRINGCOUNTRYLONGLENGTHLONGWIDTHPAINTNEXTFRIENDCLASSMANAGECLASSMANAGE/操作类PUBLICMANAGEMANAGEVOIDADD/添加物品VOIDQUERY/查询物品VOIDDISPLAY/显示物品库VOIDMODIFY/编辑(修改)物品VOIDDEL/删除物品VOIDSTATISTICS/统计信息VOIDSAVE/物品存盘VOIDLOAD/读出物品PRIVATETHINGSHEADER/物品链表,HEADER为头指针VOIDCLEAR/类内部使用函数,清空内存的链表数据42函数实现THINGSTHINGSINTNU0,STRINGTI“C“,STRINGAU“SHI“,STRINGRA“一般“/物品构造函数NUMBERNUTITLETIAUTHORAURATERAVIRTUALVOIDSHOW0/纯虚函数VIRTUALVOIDSAVEFSTREAMBOOKBOOKINTNU1,STRINGTI“D“,STRINGAU“SHU“,STRINGRA“一般“,STRINGPH“廊坊“,STRINGIS“1“,DOUBLEPA345THINGSNU,TI,AU,RA/图书构造函数PUBLISHING_HOUSEPHISBNISPAGESPAVOIDBOOKSHOW/图书显示函数COUTCHSWITCHCHCASE1THINGSPSTRINGPUBLISHING_HOUSE,ISBNDOUBLEPAGESB_NUMIFB_NUMTITLECOUTAUTHORCOUTRATECOUTPUBLISHING_HOUSECOUTISBNCOUTPAGESPNEWBOOKB_NUM,TITLE,AUTHOR,RATE,PUBLISHING_HOUSE,ISBN,PAGESPNEXT0IFHEADER0/如果链表已经存在结点THINGSP2P2HEADERWHILEP2NEXT/查找尾结点P2P2NEXTP2NEXTP/将新结点连接在链表的后面ELSE/若不存在结点(空链表)HEADERP/链表头结点即为新建结点ELSECOUTTITLECOUTAUTHORCOUTRATECOUTAUTHOR_NAMECOUTYEARCOUTTIMEPNEWVIDEOV_NUM,TITLE,AUTHOR,RATE,AUTHOR_NAME,YEAR,TIMEPNEXT0IFHEADER0/如果链表已经存在结点THINGSP2P2HEADERWHILEP2NEXT/查找尾结点P2P2NEXTP2NEXTP/将新结点连接在链表的后面ELSE/若不存在结点(空链表)HEADERP/链表头结点即为新建结点ELSECOUTTITLECOUTAUTHORCOUTRATECOUTCOUNTRYCOUTLENGTHCOUTWIDTHPNEWPAINTP_NUM,TITLE,AUTHOR,RATE,COUNTRY,LENGTH,WIDTHPNEXT0IFHEADER0/如果链表已经存在结点THINGSP2P2HEADERWHILEP2NEXT/查找尾结点P2P2NEXTP2NEXTP/将新结点连接在链表的后面ELSE/若不存在结点(空链表)HEADERP/链表头结点即为新建结点ELSECOUTCHSWITCHCHCASE1THINGSPHEADERSTRINGTICOUTTIIFHEADERTITLETIHEADERSHOWRETURN/RETURN的作用为跳出所在函数即QUERY。ELSEWHILEPNEXTIFPNEXTTITLETIPSHOWBREAKPPNEXTIFPNEXTNULLCOUTNOIFHEADERNUMBERNOHEADERSHOWRETURNELSEWHILEPNEXTIFPNEXTNUMBERNOPSHOWBREAKPPNEXTIFPNEXTNULLCOUTCSWITCHCCASE1IFHEADERNUMBER1ELSEWHILEPNEXTIFPNEXTNUMBER1PPNEXTIFPNEXTNULLCOUTNUMBER101ELSEWHILEPNEXTIFPNEXTNUMBER101PPNEXTIFPNEXTNULLCOUTNUMBER201ELSEWHILEPNEXTIFPNEXTNUMBER201PPNEXTIFPNEXTNULLCOUTSHOWCOUTNEXTELSECOUTNO/查找要修改的结点THINGSP1,P2P1HEADERWHILEP1IFP1NUMBERNOBREAKELSEP2P1/P2记录查找的结点的前一个结点P1P1NEXT/编辑修改物品信息IFP10/找到要修改的结点/INTNUMBER/实参STRINGTITLE,AUTHOR,RATEP1SHOWCHARCCOUTCSWITCHCCASE1STRINGPUBLISHING_HOUSE,ISBNDOUBLEPAGESCOUTTITLECOUTAUTHORCOUTRATECOUTPUBLISHING_HOUSECOUTISBNCOUTPAGES/修改的物品信息,编号不能变THINGSP3P3NEWBOOKB_NUM,TITLE,AUTHOR,RATE,PUBLISHING_HOUSE,ISBN,PAGES/修改结点替换到链表中P3NEXTP1NEXTIFP1HEADER/若要替换结点是头结点HEADERP3ELSEP2NEXTP3/要替换的结点P1的前一个结点连接上P3BREAKCASE2STRINGAUTHOR_NAMEINTYEARDOUBLETIMECOUTTITLECOUTAUTHORCOUTRATECOUTAUTHOR_NAMECOUTYEARCOUTTIMETHINGSP3P3NEWVIDEOV_NUM,TITLE,AUTHOR,RATE,AUTHOR_NAME,YEAR,TIME/修改结点替换到链表中P3NEXTP1NEXTIFP1HEADER/若要替换结点是头结点HEADERP3ELSEP2NEXTP3/要替换的结点P1的前一个结点连接上P3BREAKCASE3STRINGCOUNTRYLONGLENGTH,WIDTHCOUTTITLECOUTAUTHORCOUTRATECOUTCOUNTRYCOUTLENGTHCOUTWIDTHTHINGSP3P3NEWPAINTP_NUM,TITLE,AUTHOR,RATE,COUNTRY,LENGTH,WIDTH/修改结点替换到链表中P3NEXTP1NEXTIFP1HEADER/若要替换结点是头结点HEADERP3ELSEP2NEXTP3/要替换的结点P1的前一个结点连接上P3BREAKDEFAULTCOUTNOTHINGSP1,P2P1HEADERWHILEP1/查找要删除的结点IFP1NUMBERNOBREAKELSEP2P1/P2是删除结点的前一个结点P1P1NEXT/删除结点IFP10/若找到结点,则删除IFP1NUMBER1DELETEP1ELSE/若要删除的结点不是头结点P2NEXTP1NEXT/P2是要删除结点的前一个结点,/要将删除结点的前一个结点和后一个结点连接起来DELETEP1COUTB_NUMV_NUM100P_NUM200是错误的。COUTNUMBERTITLEAUTHORRATESAVEFOUT/指针会自动判别调用哪个派生类的SAVEPPNEXTIFP0FOUTB_NUMV_NUMP_NUM/读取当前学号值CLEAR/清空内存数据HEADER0THINGSP,P1HEADERINTNUMSTRINGTITLE,AUTHOR,RATEWHILEFINEOFFINNUMIFNUM1PNEWBOOKNUM,TITLE,AUTHOR,RATE,PUBLISHING_HOUSE,ISBN,PAGESPNEXT0IFHEADER0/若是空链表,头结点就是PP1HEADERPELSEP1NEXTPP1P/P1总指向最后一个结点IFNUM101PNEWVIDEONUM,TITLE,AUTHOR,RATE,AUTHOR_NAME,YEAR,TIMEPNEXT0IFHEADER0/若是空链表,头结点就是PP1HEADERPELSEP1NEXTPP1P/P1总指向最后一个结点IFNUM201PNEWPAINTNUM,TITLE,AUTHOR,RATE,COUNTRY,LENGTH,WIDTHPNEXT0IFHEADER0/若是空链表,头结点就是PP1HEADERPELSEP1NEXTPP1P/P1总指向最后一个结点FINCLOSECOUTCSWITCHCCASE1AADDBREAKCASE2AQUERYBREAKCASE3ADISPLAYBREAKCASE4AMODIFYBREAKCASE5ADELBREAKCASE6ASTATISTICSBREAKCASE7ASAVEBREAKCASE8ALOADBREAKDEFAULTCOUTSAVE;指针会自动判别调用哪个派生类的SAVE。(3)问题类外定义时参数为默认参数,声明时没加默认值,在主函数中定义对象时没加参数会出现错误。解决方法应该在声明时加默认值。(4)编号NUMBER在添加时自增,不用重新输入NUMBER。(5)查询物品时,RETURN

温馨提示

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

评论

0/150

提交评论