图书管理系统课程设计说明书

合集下载

最新图书管理系统--课程设计说明书

最新图书管理系统--课程设计说明书

图1母版页登录界面登录界面,用户需要密码登录,进入系统,登录设计效果图如图2所示。

图2登录界面其代码设计如下:using System;图3 添加/修改读者信息页面代码如下:public partial class ReaderManage_AddReader : System.Web.UI.PageValidateClass validate = new ValidateClass();RTypeManage rtypemanage = new RTypeManage();ReaderManage readermanage = new ReaderManage();protected void Page_Load(object sender, EventArgs e)this.Title = "添加/修改读者信息页面";图4 查看读者信息页面public partial class ReaderManage_ReaderManage : System.Web.UI.Page图5 添加/修改图书信息页面代码如下:public partial class BookManage_AddBook : System.Web.UI.PageValidateClass validate=new ValidateClass();BookcaseManage bookcasemanage = new BookcaseManage();BTypeManage btypemanage = new BTypeManage();图6 查看图书信息页面代码如下:public partial class BookManage_BookManage : System.Web.UI.Page图7 图书借阅页面代码如下:public partial class BookBRManage_BorrowBook : System.Web.UI.Page ReaderManage readermanage = new ReaderManage();图8 图书归还页面public partial class BookBRManage_ReturnBook : System.Web.UI.PageReaderManage readermanage = new ReaderManage();RTypeManage rtypemanage = new RTypeManage();BookManage bookmanage = new BookManage();BTypeManage btypemanage = new BTypeManage();BorrowandBackManage borrowandbackmanage = new BorrowandBackManage();protected void Page_Load(object sender, EventArgs e)图9 图书续借页面代码如下:public partial class BookBRManage_RenewBook : System.Web.UI.PageReaderManage readermanage = new ReaderManage();RTypeManage rtypemanage = new RTypeManage();。

图书管理系统详细设计说明书

图书管理系统详细设计说明书

图书管理系统详细设计说明书1 引言1.1 编写目的本文档为图书管理系统的详细设计说明书;向阅读人员介绍本图书管理系统的整体框架和详细设计..1.2 背景说明:项目名称:图书管理系统开发人员:313寝室用户:图书管理系统管理员;图书读者运行程序系统的计算中心:个人服务器站系统描述BMS系统为图书馆书籍管理提供了一个方便的电子平台..该系统分为图书管理模块;图书信息查询、预览模块;图书评价模块;读者信息管理模块;书籍借阅和归还管理模块以及管理员模块等模块..图书管理系统软件是一套功能比较完善的图书数据管理软件;具有数据操作方便高效迅速等优点..该软件采用MySQL数据库软件开发工具进行开发;具有很好的可移植性;可在应用范围较广的Unix、WINDOWS系列等操作系统上使用..除此以外;BMS可通过访问权限控制以及数据备份功能;确保数据的安全性..1.3 定义术语:BMS BookManagementSystem 图书管理系统1.4 参考资料数据库系统概念 Abraham Silberschatz Henry F.korthS.sudarsham 着软件工程Roger S.Pressman 着2 程序系统的组织结构2.1系统架构本系统包含客户层;中间层和图书管理信息系统层..其中;客户层用于用户与客户端的交互;例如显示信息;查询信息;提交信息;输入数据等..中间层为应用服务器部分;主要用来实现数据的接收;发送;并作为一座“桥梁”来连接客户与数据库..图书管理信息系统层主要实现数据的处理功能..从安全的角度看;中间层的引入能有效的对系统与数据进行保护;用户无法直接修改;删除核心信息;从而使系统安全性得到保障;有效地避免数据丢失等问题的出现..2.2系统功能模块系统子模块清单:3 程序1注册登录模块设计说明3.1 程序描述读者第一次使用该系统;需要通过注册才能成为系统的用户..登录系统后;用户可以使用系统开放给普通用户的各种功能..在个人信息中;注册用户还可以查看并修改自己的个人信息..丢失自己密码的注册用户可以通过个人资料认证来重新找回自己的密码..3.2 功能注册部分:非会员输入注册信息;系统判断注册信息的正确性;如果正确;在数据库插入新的读者信息;并返回欢迎信息..取回密码部分:读者输入读者ID;系统取出该读者ID的密码和注册邮箱;将密码发送到该邮箱中..登录部分:管理员输入登录名和密码;系统判断密码正确性;如果正确;向管理员提供管理员相关功能..读者输入登录名和密码;系统判断密码正确性;如果正确;向其提供读者相关功能.3.3 性能–允许读者测试注册读者ID的合法性–提供足够的帮助信息;诱导用户输入–允许读者跳过某些非关键信息;允许读者更改输入次序3.4 输入项–注册部分:输入注册信息;包括用户名;姓名;地址;Email; 电话号码;密码等..–取回密码部分:输入用户名以及Email;电话号码中至少一项–登录部分:读者输入用户名与密码;管理员输入管理员ID与密码..3.5 输入项–注册部分:如果成功;输出欢迎信息;否则出现失败提示信息..–取回密码部分:如果成功;显示成功信息;并将密码发送至Email 中;失败则显示失败提示信息..–登录部分:如果成功;输出欢迎信息;反之则提示失败信息..3.7 流程逻辑用多组重复的读者ID测试错误信息的检查与显示;用不符合要求的读者信息注册测试系统错误处理能力..4 程序2读者功能模块设计说明目的:登录用户可以在这个模块中查询系统中记录的图书信息; 包括书名;编号;作者译者;出版社;定价;存放位置;数量以及可借阅复本数等信息;借阅过图书的读者用户;可以在这个模块中对自己借阅过的书籍进行评价;这些评价将记录在图书信息中..4.1 程序描述前提:读者必须先登陆成功才能对图书信息进行查询..本模块为登录的读者提供精确查询;模糊查询;借阅;归还;评价;修改个人信息预览等功能..4.3 性能利用数据库的排序功能对所有图书数据进行关键字排序使得对数据的查询;修改;插入;删除;显示更具效率;从而使本模块数据处理速度提高;性能得到提升..4.4 接口数据库接口4.5 测试计划使用大量错误数据对借阅;归还图书以及查询图书等核心功能进行错误检查;确保各功能能够高度检错性的进行..4.6 尚未解决的问题图书的预览功能因为缺乏实体书的电子版来进行存储;还为能完全实现;因WPF界面设计技术有限;界面美化工作做得还不够完美..5 程序3管理员功能模块设计说明5.1 程序描述只有管理员有权限操作这个模块..管理员可以进行相应的系统维5.2 功能管理员可以在这个模块中删除或者添加其他管理员账号;并且对图书ID;状态;名字;类别;出版社;作者进行查询; 更新;修改;删除;添加等功能;也可以对读者借阅信息进行查询; 更新;添加等功能..系统的维护也由管理员在此模块中进行..5.3 性能利用数据库的排序功能对所有图书数据进行关键字排序使得对数据的查询;修改;插入;删除;显示更具效率;从而使本模块数据处理速度提高;性能得到提升..5.4 测试计划使用大量错误数据对图书和读者的信息进行查询;修改;更新; 删除以及对系统的维护等核心功能进行严格的错误检查;确保各功能能够有高度检错性的进行..。

图书管理系统的 设计说明书

图书管理系统的 设计说明书

图书管理系统的设计说明书一、设计容与设计要求1.课程设计目的:从课程设计的实践活动中获得知识提高。

要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。

2.总体设计2.1 系统功能分析:系统通过调用函数来实现删除图书、读者信息,添加图书、读者信息等功能。

delbook( )函数用于删除图书信息;addbook( )函数用于增加图书信息;borrowbook( )函数用于实现借书操作;returnbook( )函数用于实现还书操作等等;主函数用于掉用这些函数。

2.2系统功能模块划分与设计本系统定义了Book类、BDatebase类、Reader类、RDatebase类这四个类,定义了addbook ( )、addreader( )、borrowbook ( )、setname( )等函数来实现系统所需功能。

2.3 系统功能模块图:3.3.详细设计3.1 读者类的设计该类定义了借书操作,还书操作,设置读者等功能。

图 3.13.2 读者库类类的设计该类实现了建立读者的个人资料,删除读者信息,输出读者信息等功能。

图 3.23.3 图书类的设计图书类,可以实现对图书的描述,图书的编号,书名,借出,还入等操作。

图 3.33.4 图书库类的设计+clear():void+addbook(int n,char *na):int+bookdata():void+bookdata():void+ disp():void图 3.44.调试与测试:4.1系统调试在调试过程中,出现了一些错误。

1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要注意。

2、一开始主界面输入非正确数字时,没有提示错误。

容易造成用户误解图4.1在主函数的switch语句结束处加上default:cout<<"输入错误,请从新输入:";就可以了,修改后:图4.2 具体调试过程。

图书管理系统课程设计说明书

图书管理系统课程设计说明书

图书管理系统课程设计说明书1、系统需求分析1.1系统设计的目的与意义:图书系统在生活中运用相当广泛,因此需要很多程序对他进行管理。

1.2 系统功能需求:本系统有四个类,Book类,BDatebase类、Reader类、RDatebase类,存储借阅者的个人信息、借阅信息以及预定信息。

持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定等功能。

1.总体设计2.1 系统功能分析:系统通过调用函数来实现删除图书、读者信息,添加图书、读者信息等功能。

delbook( )函数用于删除图书信息;addbook( )函数用于增加图书信息;borrowbook( )函数用于实现借书操作;returnbook( )函数用于实现还书操作等等;主函数用于掉用这些函数。

2.2系统功能模块划分与设计本系统定义了Book类、BDatebase类、Reader类、RDatebase类这四个类,定义了addbook ( )、addreader( )、borrowbook ( )、setname( )等函数来实现系统所需功能。

2.3 系统功能模块图:2.详细设计3.1 读者类的设计该类定义了借书操作,还书操作,设置读者姓名等功能。

图 3.13.2 读者库类类的设计该类实现了建立读者的个人资料,删除读者信息,输出读者信息等功能。

图 3.23.3 图书类的设计图书类,可以实现对图书的描述,图书的编号,书名,借出,还入等操作。

+borrowbook():int+retbook():void+disp ():void图 3.33.4 图书库类的设计Xingzhengrenyuan+top:int+clear():void+addbook(int n,char *na):int+bookdata():void+bookdata():void+ disp():void图 3.43.系统调试在调试过程中,出现了一些错误。

图书管理系统详细设计说明书

图书管理系统详细设计说明书

图书管理系统详细设计说明书随着图书馆藏书的不断增加和管理需求的提升,传统的手工管理方式已经无法满足图书馆的日常运营需求。

因此,我们设计了一个全面的图书管理系统,旨在提高图书馆的管理效率,提升读者的借阅体验,并实现图书资源的最大化利用。

本详细设计说明书将对该系统的功能、架构、数据库设计、界面设计、安全设计等进行详细说明。

图书信息管理:对图书的编号、标题、作者、社、日期、类别、库存等进行详细记录。

读者信息管理:记录读者的姓名、性别、年龄、方式、借书证号等信息。

借阅管理:实现借书、还书、续借等操作,并记录借阅历史。

查询与统计:对图书和读者信息进行查询,并生成统计报告,如借阅排行榜、图书流通率等。

系统设置:设置系统参数,如借阅期限、默认排序方式等。

用户管理:管理员可添加、删除、修改用户,并设置用户权限。

日志管理:记录系统的操作日志和异常日志,便于问题追踪和管理。

本系统采用B/S架构,分为前端和后端两部分。

前端使用HTMLCSS3和JavaScript实现,后端使用Python的Django框架进行开发。

数据库选用MySQL,保证数据的安全性和完整性。

系统架构图如图1所示。

本系统涉及的实体包括图书、读者、借阅记录等,各实体之间的关系如下:图书实体:包括编号、标题、作者、社、日期、类别、库存等属性。

读者实体:包括姓名、性别、年龄、方式、借书证号等属性。

借阅记录实体:包括借书证号、图书编号、借阅日期、归还日期等属性。

根据上述实体及属性设计,我们建立相应的数据表,并使用主键和外键来维护数据的一致性和完整性。

表与表之间的关系通过外键进行关联。

本系统的界面设计遵循简洁明了的原则,以蓝色为主色调,体现图书馆的庄重与学术氛围。

主要界面包括登录界面、主界面、图书信息管理界面、读者信息管理界面、借阅管理界面等。

界面布局合理,操作流程清晰,易于上手。

对用户密码进行加密处理,采用哈希函数保证密码的不可逆性。

限制用户的操作权限,确保不同用户只能访问其具有权限的功能模块。

图书管理系统的设计——课程设计说明书正文

图书管理系统的设计——课程设计说明书正文

目录一、概述 (1)1.1图书管理系统的可行性分析 (1)二、需求分析 (2)2.1系统需求分析 (2)2.2系统实现的目标 (2)2.3系统功能模块设计 (2)三、系统设计 (2)3.1系统功能结构图 (2)3.2系统流程图 (3)3.3数据库逻辑结构设计 (4)3.4图书管理系统的系统E-R图 (5)四、系统实现过程 (6)4.1系统流程分析 (6)4.2主要模块的运行 (7)4.2.1 登陆界面 (7)4.2.2 图书信息管理模块 (8)4.3系统开发的遇到的相关问题及解决 (10)4.3.1 图书管理系统索引 (10)4.3.2 如何验证输入的字符串 (10)4.3.3图书信息管理模块 (10)4.3.5 系统登陆验证码的实现 (15)五、总结 (16)六、参考文献 (17)一、概述随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息系统的作用也越来越大。

图书馆在正常运营中总是面对大量的读者信息,书籍信息以及由两者相互作用产生的借书信息,还书信息。

因此图书管理信息化是发展的必然趋势。

用结构化系统分析与设计的方法,建立一套有效的图书信息管理系统,可以减轻工作,将工作科学化、规范化,提高了图书馆信息管理的工作质量因此根据图书馆目前实际的管理情况开发一套图书管理系统是十分必要的。

在试用了一些个图书管理系统和查阅了大量相关资料文献的基础上,发现那些系统在几个方面已经不符合时代的要求,由于设计人员及其所用的工具的不同,有Visual Basic6.0、Visual ForPro6.0、Power Builder等,再加上这些图书管理系统设计的时间也不一样,所用具体场合也有区别,因此在功能上除了图书资料管理所需的基本功能之外也有所不同。

这些系统解决了以前的那种管理方式所存在着的诸如手续繁琐、工作量大、效率低下、出错率高等缺点,设计出的系统能使读者快速检索到自己喜爱的书,图书管理员能减轻工作量。

图书馆管理系统详细设计说明书

图书馆管理系统详细设计说明书

图书馆管理系统详细设计说明书图书管管理系统详细设计说明书⼆○⼀⼆年六⽉26⽇计算机科学与技术系⽬录1 引⾔1.1编写⽬的 (1)1.2背景 (1)1.3定义 (1)1.4参考资料 (1)2 程序系统的组织结构 (1)3 登录系统设计说明 (2)3.1程序描述 (2)3.2功能 (2)3.3输⼊项 (2)3.4输出项 (2)3.5流程逻辑 (2)3.6接⼝ (3)3.7存储分配 (3)3.8测试计划 (4)4 学⽣信息查询 (4)5 图书信息查询 (5)6 图书借阅 (7)7 图书归还 (9)8 管理员信息管理 (10)9 图书信息管理 (11)10 读者信息管理 (13)1 引⾔1.1编写⽬的图书管理系统详细设计是概要设计的下⼀个阶段,这个阶段的主要任务是在图书管理系统概要设计书基础上,对概要设计中产⽣的功能模块进⾏过程描述,设计功能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明。

概要设计解决了软件系统总体结构设计的问题,包括整个软件系统的结构、模块划分、模块功能和模块间的联系等。

详细设计则要解决如何实现各个模块的内部功能,即模块设计。

具体的说,模块设计就是要为已经产⽣的图书管理各⼦系统设计详细的算法。

但这并不等同于系统实现阶段⽤具体的语⾔编码,它只是对实现细节作精确的描述,这样编码阶段就可以将详细设计中对功能实现的描述,直接翻译、转化为⽤某种程序设计语⾔书写的程序。

1.2背景根据我校希望能够充分利⽤现代科技来提⾼图书管理的效率,在原有的办公系统基础上进⾏扩展,将⼀些可以⽤计算机来管理的都进⾏计算机化,使得图书馆管理⼈员⼯作更加⽅便,⼯作效率也更加的⾼。

1.3定义SQL Server :数据库管理软件DBMS :数据库管理系统Windows XP/7 :运⾏环境C# :软件开发语⾔Microsoft Visual Studio :开发⼯具1.4参考资料[1]《软件⼯程导论—第五版》张海潘编著清华⼤学出版社[2]《实⽤软件⼯程》Leszek A.Maciaszek Bruc Lee Liong著械⼯业出版社[3]《SQL Server实⽤教程(第3版)》郑阿奇电⼦⼯业出版社2 程序系统的组织结构程序系统的组织结构如图1图1 程序系统的组织结构3 登录系统设计3.1程序描述此模块负责⽤户的登陆,其中可分为管理员登陆与读者登陆两部分。

课程设计说明书参考(图书管理系统)

课程设计说明书参考(图书管理系统)

********课程设计说明书课程名称程序设计方法课程设计题目图书管理系统院系**************班级***********学生姓名 XXX指导教师 ********日期******************课程设计任务书(指导教师填写)课程设计名称程序设计方法课程设计学生姓名XXX 专业班级******** 设计题目图书管理系统一、课程设计目的该课程设计是信息管理本科集中实践性环节之一,是学习完《数据库基础与应用》和《程序设计方法》课程后进行的一次全面的综合练习。

其目的是通过本课程设计使学生对具体问题应用《程序设计方法》课程中所学的方法与技术,进行需求分析及软件设计的过程,不仅对程序设计方法课程中的所有知识点进行一个全面的复习巩固,更重要的是增强学生解决实际问题的能力。

二、设计内容、技术条件和要求(1)本环节要求学生根据程序设计方法整个课程的所学内容,自己独立设计完成一个比较复杂的小型管理系统。

(2)所设计的小型管理系统要求功能比较完善,应包含输入输出、查询、插入、删除、打印等基本功能(2)程序内容自己灵活设计,包括规划自己的数据库和设计程序功能和界面设计。

(3)数据库中不能少于两个表。

(5)程序应功能完善,界面友好,容错性好,操作方便。

三、时间进度安排系统分析与规划半周系统设计与调试一周撰写课程设计说明书半周四、主要参考文献郑阿奇,PowerBuilder 实用教程(第二版),电子工业出版社董军,王玉,康祥顺,PowerBuilder案例开发集锦,电子工业出版社张长富,PowerBuilder9.0实例教程,电子科技大学出版社指导教师签字:2009 年12 月23 日图书管理系统一、系统设计:1、系统功能分析:本系统的功能分析是基于系统开发的总体任务基础上完成的,完成的主要功能有:基本信息查询、图书入库、图书出库、图书外借、图书归还等功能2、系统功能模块设计:对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如下的功能模块图(用绘图工具Microsoft Visio绘制所得):图书管理系统书籍信息输入书籍信息处理借阅信息处理还书信息处理二、数据库设计:1、数据库概念结构设计设计规划出的实体有:书籍信息实体、读者信息实体书籍信息实体的E-R图如图示:书籍信息书号书名作者价格借书帐号读者信息实体的E-R图如图示:读者信息学号姓名2、创建数据库:(1)、单击工具栏上的Database图标按钮;(2)、在弹出的Database画板中,打开Object子窗口,展开“ODB ODBC”项下的Utilities目录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书管理系统课程设计说明书1、系统需求分析1.1系统设计的目的与意义:图书系统在生活中运用相当广泛,因此需要很多程序对他进行管理。

1.2 系统功能需求:本系统有四个类,Book类,BDatebase类、Reader类、RDatebase类,存储借阅者的个人信息、借阅信息以及预定信息。

持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定等功能。

1.总体设计2.1 系统功能分析:系统通过调用函数来实现删除图书、读者信息,添加图书、读者信息等功能。

delbook( )函数用于删除图书信息;addbook( )函数用于增加图书信息;borrowbook( )函数用于实现借书操作;returnbook( )函数用于实现还书操作等等;主函数用于掉用这些函数。

2.2系统功能模块划分与设计本系统定义了Book类、BDatebase类、Reader类、RDatebase类这四个类,定义了addbook ( )、addreader( )、borrowbook ( )、setname( )等函数来实现系统所需功能。

2.3 系统功能模块图:图 3.13.2 读者库类类的设计该类实现了建立读者的个人资料,删除读者信息,输出读者信息等功能。

图 3.23.3 图书类的设计图书类,可以实现对图书的描述,图书的编号,书名,借出,还入等操作。

+addbook():void+borrowbook():int+retbook():void+disp ():void图 3.33.4 图书库类的设计Xingzhengrenyuan+top:int+clear():void+addbook(int n,char *na):int+bookdata():void+bookdata():void+ disp():void图 3.43.系统调试在调试过程中,出现了一些错误。

1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要注意。

2、一开始主界面输入非正确数字时,没有提示错误。

容易造成用户误解图4.1在主函数的switch语句结束处加上default:cout<<"输入错误,请从新输入:";就可以了,修改后:图4.2具体调试过程。

主界面图4.3图书维护图4.4读者维护图4.15.结果分析本程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C++的编程思想来完成系统的设计,做到了每个借阅者建立一个账户,账户中存储借阅者的个人信息、借阅信息等要求。

而且界面美观,容易操作。

但是程序太长,不够简练,导致出现错误很难发现和修改。

6.总结6.1 感想和体会:通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c++是多么的重要。

在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。

看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。

虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。

以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。

7、附录7.1 源程序清单:#include <iostream>#include <iomanip>#include <string>#include <fstream>using namespace std;const int Maxr=100;const int Maxb=100;const int Maxbor=5;class Reader{private:int tag;int no;char name[10];int borbook[Maxbor];public:Reader() {}char *getname() {return name;} int gettag() {return tag;}int getno() {return no;}void setname(char na[]){strcpy(name,na);}void delbook(){ tag=1; }void addreader(int n,char *na) {tag=0;no=n;strcpy(name,na);for(int i=0;i<Maxbor;i++) borbook[i]=0;}void borrowbook(int bookid) {for(int i=0;i<Maxbor;i++){if (borbook[i]==0){borbook[i]=bookid;return;}}}int retbook(int bookid){for(int i=0;i<Maxbor;i++){if(borbook[i]==bookid){borbook[i]=0;return 1;}}return 0;}void disp(){cout << setw(5) << no <<setw(10) << name<<"借书编号:["; for(int i=0;i<Maxbor;i++)if(borbook[i]!=0)cout << borbook[i] << "|";cout << "]"<<endl;}};class RDatabase{private:int top;Reader read[Maxr];public:RDatabase(){Reader s;top=-1;fstream file("reader.txt",ios::in); while (1){file.read((char *)&s,sizeof(s));if (!file)break;top++;read[top]=s;}file.close();}void clear(){top=-1;}int addreader(int n,char *na){Reader *p=query(n);if (p==NULL){top++;read[top].addreader(n,na);return 1;}return 0;}Reader *query(int readerid){for (int i=0;i<=top;i++)if (read[i].getno()==readerid && read[i].gettag()==0){return &read[i];}return NULL;}void disp(){for (int i=0;i<=top;i++)read[i].disp();}void readerdata();~RDatabase(){fstream file("reader.txt",ios::out);for (int i=0;i<=top;i++)if (read[i].gettag()==0)file.write((char *)&read[i],sizeof(read[i]));file.close();}};void RDatabase::readerdata(){char choice;char rname[20];int readerid;Reader *r;while (choice!='0'){cout <<"\n\n\t\t\t读者维护\n\n\n\t\t 1 新增\n\n\t\t 2 更改\n\n\t\t 3 删除\n\n\t\t 4 查找\n\n\t\t 5 显示\n\n\t\t 6 全删\n\n\t\t 0 退出"<<endl;switch (choice){case '1':cout << "输入读者编号:";cin >> readerid;cout << "输入读者姓名:";cin >> rname;addreader (readerid,rname); break;case '2':cout << "输入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout << " 该读者不存在 "<<endl; break;}cout << "输入新的姓名:";cin >> rname;r->setname(rname);break;case '3':cout << " 输入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout <<" 该读者不存在" << endl; break;}break;case '4':cout << "读入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout <<"该读者不存在"<< endl;break;}r->disp();break;case '5':disp();break;case '6':clear();break;default:cout<<"输入错误,请从新输入:";break; }}}class Book{private:int tag;int no;char name[20];int onshelf;public:char *getname() { return name; }int getno(){ return no; }int gettag(){ return tag; }void setname(char na[]){strcpy(name,na);}void delbook(){ tag=1;}void addbook(int n,char *na){tag=0;no=n;strcpy(name,na);onshelf=1;}int borrowbook(){if (onshelf==1){onshelf=0;return 1;}return 0;}void retbook(){onshelf=1;}void disp(){cout << setw(6) << no << setw(18) << name << setw(10)}};class BDatabase{private:int top;Book book[Maxb];public:BDatabase(){Book b;top=-1;fstream file("book.txt",ios::in); while (1){file.read((char *)&b,sizeof(b)); if (!file) break;top++;book[top]=b;}file.close();}void clear(){top=-1;}int addbook(int n,char *na){Book *p=query(n);if (NULL==p)top++;book[top].addbook(n,na);return 1;}return 0;}Book *query(int bookid){for (int i=0;i<=top;i++)if (book[i].getno()==bookid &&book[i].gettag()==0) {return &book[i];}return NULL;}void bookdata();void disp(){for (int i=0;i<=top;i++)if (book[i].gettag()==0)book[i].disp();}~BDatabase(){fstream file("book.txt",ios::out);for (int i=0;i<=top;i++)if (book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i])); file.close();}};{char choice;char bname[40];int bookid;Book *b;while (choice!='0'){cout <<"\n\n\n\t\t\t图书维护 "<<endl<<endl;cout<<"\t\t1 新增\n \t\t2 更改\n\t\t3 删除\n\t\t4 查找\n\t\t5 显示\n\t\t6 全删\n\t\t0 退出"<<endl;cin >> choice;switch (choice){case '1':cout << "输入图书编号:"<<endl;cin >> bookid;cout << "输入图书书名:"<<endl;cin >> bname;addbook(bookid,bname);break;case '2':cout << "输入图书编号:"<<endl;cin >> bookid;b=query(bookid);if (b==NULL){cout << " 该图书不存在 "<<endl;break;}cout << "输入新的书名:"<<endl;cin >> bname;break;case '3':cout <<" 读入图书编号:"<<endl;cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该图书不存在" << endl; break;}b->delbook();break;case '4':cout << " 读入图书编号:"<<endl;cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该图书不存在"<< endl;break;}b->disp();break;case '5':disp();break;case '6':clear();break;default:cout<<"输入错误,请从新输入:"; }}void main(){char choice;int bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB;Book *b;while(choice!='0'){cout <<endl<<endl<<"\t\t\t 图书管理系统\n\n\n";cout <<"\t\t\t1 借书\n\n\t\t\t2 还书 \n\n\t\t\t3 图书维护\n\n\t\t\t4 读者维护\n\n\t\t\t0 离开"<<endl;cin >> choice;switch (choice){case '1':cout <<" 借书读者编号:";cin >>readerid;cout <<" 图书编号: ";cin >>bookid;r=ReaderDB.query(readerid);if (NULL==r){cout <<" 不存在该读者,不能借书"<< endl;break;b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在该图书,不能借书"<< endl; break;}if (b->borrowbook()==0){cout << " 该图书已借出,不能借书"<< endl; break;}r->borrowbook(b->getno());break;case '2':cout<<"还书\n 读者编号:";cin >>readerid;cout << " 图书编号:";cin >>bookid;r=ReaderDB.query(readerid);if (r==NULL){cout <<" 不存在该读者,不能还书" << endl; break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在该图书,不能还书" <<endl; break;}b->retbook();break;case '3':BookDB.bookdata();break;case '4':ReaderDB.readerdata();break;default:cout<<"输入错误,请从新输入:";}}}应用技术学院课程设计评分表教师签名:日期:。

相关文档
最新文档