图书管理系统c++.docx
- 文档编号:3819636
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:18
- 大小:295.78KB
图书管理系统c++.docx
《图书管理系统c++.docx》由会员分享,可在线阅读,更多相关《图书管理系统c++.docx(18页珍藏版)》请在冰豆网上搜索。
图书管理系统c++
燕山大学
专业综合课程设计报告
学院
年级专业09计算机科学与技术8班
学生姓名李君
学号
指导教师王开宇
设计日期2012年9月27日
2012年10月18日
摘要
21世纪是信息的社会,信息作为社会最主要的资源,将成为战略资引起人们广泛的关注。
然而如何获取信息?
图书是我们最好的获取信息的方式。
但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来,对读者去图书馆借书造成了一定困扰,学校图书馆为了更加快捷的管理学校的图书资源,方便广大读者借阅图书。
节省图书馆管理的经济成本与时间成本,方便图书馆各个部门间的合作以及与图书供应商的联系。
决定开发此借阅系统。
本系统便是尝试用c++架构一个图书管理系统,它是在Windows7下,以visualC++开发平台。
它分为用户部分和管理员部分,用户应该有查找,注册,归还,查看的功能,管理员应该添加,删除,查找,查看,修改等功能。
建成后的系统是一个静态的,具有图书提供、系统管理等功能的基本的图书管理系统。
关键词 C++;visualC++;图书管理系统
第1章专业综合课程设计概述
1.1专业综合课程设计的目的和意义
通过这次课程设计具体了解计算机科学与技术专业相关领域的技术现状和发展动态,了解软件技术的应用和发展,通过在相关软件开发人员指导下进行软件开发基本技能的学习和训练,力求对本专业相关领域形成较为专业、系统、和全面的认识,培养专业兴趣和实践技能。
对于21世纪的计算机人才,走向工作岗位前这次的课程设计显得尤为重要,在前期主要学习理论知识,内容较为抽象,而课程设计是一次将理论知识和时间相结合的过程,将抽象转化为具体。
通过相关的讲座和参观,了解计算机在实际生产中得应用,熟悉各种处理流程,对于计算机处理业务有一定的初步认识。
对于后期的系统开发,在自主的情况下学习各种开发知识,熟悉相关软件的应用,通过设计,编码实现,测试各个环节,对于我们学生来说,学习到软件的开发过程,具有了一定的业务处理能力,为以后的学习或进入工作岗位打下了基础。
1.2专业综合课程设计内容安排
开发系统为学校小型图书管理系统,以C++程序设计为基础,结合使用数组,结构体等技术,实现学校的学生查阅、归还、查看、借阅的功能。
实现管理员添加,删除,修改,查看等基本功能。
1.3本报告主要内容
本文依据综合课程设计安排,阐述过程中所学与所用,介绍相关的内容,对于讲座、参观主要是过程阐述以及相关感受。
对于系统开发,会从系统详细设计、数据库构建、界面设计、编码、测试等方面详细介绍。
做出一个图书管理系统。
第2章技术综述
2.1C++简介
C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“CwithClasses”)。
开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。
虚函数(virtualfunction)、运算符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常(exception)、RTTI、命名空间(namespace)逐渐被加入标准。
1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC1988-1998。
C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。
1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。
C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。
先前被临时命名为C++0x的新标准将被称为C++2011。
C++2011将取代现行的C++标准ISO/IEC14882,它公开于1998年并于2003年更新,通称C++98以及C++03。
国际标准化组织于2011年9月1日出版发布ISO/IEC14882:
2011,名称是:
InfProgramminglanguages--C++Editionormationtechnology
2.2C++技术的优势
C++是严谨、精确、数理化的。
标准定义很细致,如果你对标准深入了解,非“固有不可移植特性”代码的运行时状态是可以通过静态分析确定的;而就其本身的语法思路,是层次分明的、呼应的,有着丰富的逻辑演绎色彩的;其语言结构而言,代码绝大多数是显式的、明确的。
(1)C++是活着的。
它的标准在不断更新,变得更加严谨、易用,却保持着系统性。
(2)C++是支持底层操作的。
虽然许多底层操作的具体效果会随机器变化有所差异(也就是固有不可移植特性),但如果必要,你依然可以使用它们编写程序、改善效率。
(3)C++的标准是庞大、层级分明的。
如果你能熟练掌握全部C++标准(语法、标准库),你的代码编写工作会极其精炼、轻松;而如果你只是用它来实验,不愿学习过多细节,它的基础特性又可以认为是一个“完备集”。
(4)C++兼容C语言的几乎所有特征(部分极少的不严谨、存在歧义的特性被去除),你依旧采用C语言的思路,却可以轻易加入一个C++工程的开发。
(5)C++拥有面向对象(OO)特性,“模板”等高度抽象化特性使大型工程可以通过它进行整体管理。
(6)它考虑了兼容性,为连接其他语言的对象文件留有接口。
2.3C++的基本组成部分
(1)预处理命令,c++提供了三类预处理命令:
宏定义命令,文件包命令,条件编译命令。
输入输出,c++总是少不了输入输出语句,实现程序内部的语句,实现程序内部的信息交流。
特别是屏蔽屏幕输入功能。
几乎程序都要用到,商用它把计算机的结果放在屏幕上
(2)函数,C++程序是由若干个文件组成,函数与函数之间是相对的,并且是并行的,函数之间可以调用体所使用。
在组成一个程序的若干函数中,必须有一个main()函数。
(3)变量,多数程序都需要说明和使用变量,广义讲,对象包含了变量,即将变量也成为一种对象,狭义上讲,将对象看做是类的实例,对象是指整个类的对象。
。
(4)其他,除了以上讲述的五个部分外,还有其他的组成部分。
例如,符号常量和注释信息也是程序的一部分C++中都尽量把常量定义为符号常量,该符号常量代表着某个固定的常量值。
2.4C++程序技术的实现
C++源程序的实现与其他高级程序语言实现原理是一样的。
一般都要经过编辑,编译,运行。
其中最重要的是编译过程,C++是编译方式实现的高级语言。
C++的实现必须使用某种编译器进行编译。
编译器的功能是将程序源代码转换成机器代码的形式成为目标代码,然后再是目标代码连接,生成可执行文件,该过程分为三个过程。
预处理过程,编译过程,连接过程。
2.5本章小结
本章概要介绍了C++技术的基本知识,从多个个方面介绍了c++的技术优势和稳定性,又从多个角度简要阐述了C++的技术方法,最后提出了C++的应用模型。
C++技术是在系统开发上效率高,稳定性好,它在技术方面的优势是明显的,应用C++技术开发有关底层项目将成为主流。
第3章图书管理系统分析
3.1需求分析
通过对一些典型图书网站的观察、分析及实际的调查,本系统主要实现对图书借阅信息的管理,主要功能为管理有关读者、图书、借阅、征订和管理员的信息等。
图书借阅管理系统是一种基于集中统一规划的数据库数据管理新模式。
在对图书、读者的管理,其实是对图书、读者的数据的管理。
本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。
统一友好的操作界面,能保证系统的易用性;规范、完善的基础信息设置;图书分类详尽,可按不同类别查看商品信息;按图书大类及商品名称进行模糊查询;新书及优秀书籍的展示;图书排行榜。
3.2可行性分析
目前,学校计算机都已经普及,为了利于学校管理图书和方便同学的借阅,一个合适高效的图书系统显得那么重要。
目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上十分有限。
而且,目标系统并不是十分的复杂,开发的周期较短,人员经济支出有限。
当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时,也为系统的进一步推广创造了条件。
这带来的经济回报将远超过支出,并且最重要的一点是该软件的开发可以给我们对系统的开发有个全面的认识。
因此,学校需要重新认识市场、读者以及自身市场定位,正确认识到图书系统在学校运行中的重要地位,以少量的时间和资金建立学校信息门户网站并架设一定范围的网络,以此来为学校减少开支,提高效率,使学校图书管理与学生间的活动变得更灵活、更主动。
3.3本章小结
本章主要对图书管理系统分析,分别进行了需求分析和可行性分析。
通过对项目进行全面的分析,有利于项目的顺利进行。
根据软件工程的理论,需求分析和可行性分析是必须予以高度重视的,它们在开发周期中占的比重越高,项目开发的成功率也就越高。
因此,在所有技术工作开始之前,一定要成功地进行需求分析和可行性分析,只有这样,才能保证整个项目的顺利进行。
第4章图书管理系统设计
4.1总体设计
图书管理系统是一个典型的C++开发应用程序,主要有由读者和管理员两部分组成。
(1)读者对书籍的借阅和返还。
该部分主要包括读者对图书按不同方式的查阅、注册、登录,借书,还书等。
(2)管理员对书籍及读者的管理。
该部分主要对系统内的一些基础数据进行有效管理,包括书籍管理、读者管理、借阅管理、返还管理等。
4.2系统功能结构设计
经过需求分析,图书管理系统共设计了五个大模块,分别是书籍数据维护模块、书籍管理模块、读者数据维护模块、读者管理模块和菜单模块。
接着相应定义了五个结构体,分别是书籍结构体(Book)、书籍管理结构体(BookManage)、读者结构体(Reader)、读者管理结构体(ReaderManage)和菜单结构体(Menu)。
书籍结构体(Book)的功能在于存放和维护书籍的基本信息,包括书号、书名、作者、状态(已借/在架)和借阅人;书籍管理结构体(BookManage)的功能在于实现对书籍的相关操作,包括读取书籍文档文件(book.txt)、保存书籍文档文件、添加图书、修改图书、删除图书、显示全部图书和查找图书;读者结构体(Reader)的功能在于存放和维护读者的基本信息,包括姓名、班级和电话;读者管理结构体(ReaderManage)的功能在于实现对读者的相关操作,包括读取读者文档文件(reader.txt)、保存读者文档文件、新读者注册、修改读者、删除读者、显示全部读者和查找读者;菜单结构体(Menu)的功能在于实现各界面的引导工作,包括主登录界面、系统管理界面、读者登录界面、读者服务界面、管理员书籍查找界面和读者书籍查找界面。
(1)由对图书管理信息系统的层次结构分析可得下图,如下图所示:
图4.2.1系统层次结构图
(2)流程图(部分示例)
①管理员登录如图4.2.2
图4.2.2管理员登录图
②读者登录如图4.2.3
图4.2.3读者登录图
③读者借阅图书如图4.2.4
图4.2.4读者借阅图书图
④管理员或读者按书名查找图书如图4.2.5
图4.2.5管理员或读者按书名查找图书图
4.3设计目标
对于典型的图书管理信息管理系统,尤其是对像读书管理系统这样的数据流量特别大的管理系统,必须要满足使用方便、操作灵活等设计需求。
本系统在设计时应该满足以下几个要求:
采用人机对话的操作方式,界面设计美观友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠;全面展示图书馆内所有书籍,并可特别展最新书籍;为读者提供方便、快捷的图书信息查询功能,可采用书号和作者方式查询数据;借阅时要首先登陆;实现图书的借阅或返还;图书的排行,以方便顾客了解读书馆内的热门书籍及帮助图书管理员者做出相应的决策;读者随时都可以查看自己的读书借阅情况;对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误;系统要易维护和易操作;系统运行稳定、安全可靠。
4.4本章小结
本章在前一章系统分析的基础上对图书管理系统进行了系统设计,主要由管理员和读者两部分组成,管理员和读者又由若干功能组成。
第5章图书管理系统实现
5.1详细设计
5.1.1书籍结构体(Book)
(1)私有数据
charbnum[10];//书号
charbname[20];//书名
charbauthor[10];//作者
charrname[10];//借阅人
(2)公有数据及公有函数
inttag;//状态标记判断指标(已借/在架)
Book()//构造函数初始化信息
voidset_bnum(char*no)//设置书号
char*get_bnum()//获得书号
voidset_bname(char*n)//设置书名
char*get_bname()//获得书名
voidset_bauthor(char*a)//设置作者
char*get_bauthor()//获得作者姓名
voidset_tag(intt)//状态设置
voidset_rname(char*rn)//设置借阅人
char*get_rname()//获得借阅人姓名
voidshow_tag()//显示图书状态
voidcopy(Bookm)//Book结构体copy函数
5.1.2书籍管理结构体(BookManage)
(1)私有数据及函数
Bookbooks[100];//定义Book书籍结构体数组对象,最大容量100本
intlength;//计数
voidsaveFile()//保存书籍文件
voidreadFile()//读取书籍文件
(2)公有数据及函数
BookManage()//构造函数,读取磁盘文件
~BookManage()//析构函数,保存磁盘文件
booladd(Bookbook)//添加图书资料
intbnu_search(char*bnu)//按书号查找书籍
intbna_search(char*bna)//按书名查找书籍
intbau_search(char*bau)//按作者查找书籍
intrn_search(char*rn)//按借阅人查找书籍
voidrevise(Bookbook,inti)//带参的修改书籍函数
voiddeleteBook(intindex)//带参的删除书籍资料函数
voidshow_book()//不带参的显示书籍函数
voidshow_book(inti)//带参的显示书籍函数
voidbr_book()//读者借、还书功能函数
boolin(inti)//判断图书是否在架函数
5.1.3读者结构体(Reader)
(1)私有数据及函数
charrname[10];//读者姓名
charrclass[10];//班级
charrtel[10];//电话
(2)公有数据及函数
Reader()//构造函数,实现数据初始化
voidset_rname(char*rn)//设置读者姓名
char*get_rname()//获得读者姓名
voidset_rclass(char*rc)//设置班级
char*get_rclass()//获得班级
voidset_rtel(char*rt)//设置电话
char*get_rtel()//获得电话
voidcopy(Readerm)//读者Reader结构体copy函数
5.1.4读者管理结构体(ReaderManage)
(1)私有数据及函数
Readerreaders[50];//定义读者结构体数组对象,最多50位
intlength;//计数
voidreadFile()//读取读者文件函数
voidsaveFile()//保存读者文件
(2)公有数据及函数
ReaderManage()//构造函数,读取读者文件
~ReaderManage()//析构函数,保存读者文件
voidadd_reader(Readerr)//添加读者用户函数
intsearch(char*rn)//按姓名查找读者函数
boolrevise(Readerreader,inti)//修改读者资料函数
voiddelete_reader(intindex)//删除读者函数
boollog_reader(Readerr)//登录时判断读者用户是否存在函数
voidreg_reader()//注册用户函数
voidshow_reader()//不带参的显示读者信息函数
voidshow_reader(inti)//带参的显示读者信息函数
5.1.5菜单结构体(Menu)
(1)私有数据及函数
BookManagebm;//定义书籍管理结构体对象bm
ReaderManagerm;//定义读者管理结构体对象rm
Readerr;//定义读者结构体对象r
intchoice;//菜单序号选择
intkey;//管理员密码
(2)公有数据及函数
voidheader()//页眉
voidlog_menu()//主界面登录菜单
voidadmin_menu()//管理员管理菜单
voidreader_menu()//读者服务菜单
voidbsearch_menu()//读者查找书籍菜单
voidabsearch_menu()//管理员查找书籍菜单
voidreader_lr()//读者登录或注册菜单
voidlog_admin()//管理员登录
voidrn_search()//按书号查找函数
voidbnu_search()//按书号查找函数
voidbna_search()//按书名查找函数
voidbau_search()//按作者查找函数
voidaddBook()//新增书籍函数
voidreviseBook()//修改书籍函数
voiddelBook()//删除书籍函数
voidreviseReader()//修改读者用户函数
voiddelReader()//删除读者用户函数
5.1.6主函数(main)
intmain()
5.2编码调试、测试
5.2.1各界面菜单显示
(1)主登录界面如图5.2.1
图5.2.1
2系统管理登陆界面如图5.2.1.2
图5.2.1.2
(3)书籍查找界面如图5.2.1.3
图5.2.1.3
(4)读者服务界面图5.2.1.4
图5.2.1.4
(5)书籍查找界面如图5.2.1.5
图5.2.1.5
5.2.2登录验证
(1)管理员登录界面如图5.2.2
图5.2.2.1
(2)读者登录如图5.2.2.2
图5.2.2.2
5.2.3注册新读者用户如图5.2.3
图5.2.3
5.2.4添加新的图书资料如图5.2.4
图5.2.4
5.2.5修改已有图书资料如图5.2.5
图5.2.5
5.4.6删除已有图书资料如图5.4.6
图5.4.6
5.4.7查找已有图书资料(以按书号查找为例)如图5.4.7
图5.4.7
5.4.8显示所有图书资料如图5.4.8
图5.4.8
5.3本章小结
本章是技术层面上的具体工作,首先是编写结构体,然后编写管理员和读者的函数。
接着是读者功能部分的实现,读者各个功能模块都进行了详细的设计和实现,一些关键代码在文中直接给出。
最后是管理员部分的实现,管理员部分各个功能模块的实现相对于前台要复杂一些,因为管理员要进行大量的添加、删除和修改的操作,每次操作都要和数据库连接,因此管理员操作是非常占用系统资源的,健壮的代码是保证系统实现的关键。
专业综合课程设计总结
经过近三个星期的努力,前后修修改改,调试又调试,我的C++图书管理系统终于得以诞生!
在这个过程中,我发现自己还有很多很多知识都没有学好,看别人的例子的时候好像很简单,自己一上机操作就有问题。
调试的时候系统总是报错,还有很多警告,每添加一个函数,往往都要要调试很久,有时候仅仅只是少了一个大括号,却花上近半个小时才找到问题的瓶颈所在。
系统虽然完成了,也可以运行,一些基本的功能也能够实现,但我知道,还有很多的不足。
另外,我发现帮助文件真的很有用,每当我看别人例子看不懂的时候,都是去帮助文件搜索,如果里面的信息不够完整,再利用各大网站的搜索引擎来寻找答案,比如更改背景颜色的问题,之前试了很多次都不行,后来偶然发现一个MS-DOS命令大全,然后再去网上搜索color命令的使用语法,原来以为很复杂的代码,只需一句system(colorfd),问题就迎刃而解了。
以后还会有很多课程设计,一定要吸取这次的教训,知识不是看过就可以了。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
专业综合课程只是一个实践环节,但我们从中学习到很多东西,理论认识的加深、动手能力的提升、开发能力的增强都是我门以往所没有的。
对于我们计算机科学与技术的学生来说,综合课程设计是我们将所学知识从抽象向具体的一次转变,为我们以后的学习或走向工作岗位打下了基础。
参考文献
1陈火旺,徐建波,周新莲.Web设计原理与编程技术.湖南:
中南大学出版社,2005:
25-45
2武延军,黄飞跃.精通JSP编程技术.北京:
人民邮电出版社,2001:
48-62
3徐国智.SQLServer2000数据库系统开发实例精粹.北京:
电子工业出版社,2006:
32-64
4柏亚军.JSP编程基础及应用实例集锦.北京:
人民邮电出版社,2001:
67-82
5王珊,萨师煊.数据库设计.高等教育出版社.2008.198~234
6王晟.图书馆管理系统.北京:
清华大学出版社.2005.223~272
7MS-DOS命令大全[帮助文件]/落雪飞花;网络资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 c+