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

合集下载

图书管理系统数据库设计说明书

图书管理系统数据库设计说明书

图书管理系统数据库设计说明书图书管理系统数据库设计说明书1、引言本文档旨在对图书管理系统的数据库设计进行详细说明,包括数据库架构、表结构设计、数据流图等内容,以便于系统开发人员进行系统开发和维护。

2、数据库架构设计2.1 数据库类型本系统将采用关系型数据库,具体使用的数据库管理系统为MySQL。

2.2 数据库服务器架构本系统将采用分布式数据库架构,包括一个主数据库服务器和多个副本数据库服务器。

2.3 数据库服务器部署主数据库服务器和副本数据库服务器将部署在不同的物理机器上,以实现数据的冗余备份和负载均衡。

3、数据库表设计3.1 用户表(User)字段:用户ID、用户名、密码、姓名、年龄、性别、联系方式、电子邮箱、注册时间3.2 图书表(Book)字段:图书ID、图书名称、作者、出版社、出版日期、图书类别、价格、库存数量3.3 图书借阅表(Borrow)字段:借阅ID、用户ID、图书ID、借阅日期、归还日期、借阅状态3.4 图书类别表(Category)字段:类别ID、类别名称、类别描述3.5 出版社表(Publisher)字段:出版社ID、出版社名称、联系方式、地质4、数据流图设计4.1 用户注册流程图描述用户注册过程,包括用户输入信息、系统验证信息、保存用户信息等流程。

4.2 用户借阅图书流程图描述用户借阅图书的过程,包括用户查找图书、用户借阅图书、系统更新库存数量等流程。

4.3 用户归还图书流程图描述用户归还图书的过程,包括用户查找借阅记录、用户归还图书、系统更新借阅状态等流程。

5、附件本文档附带的相关附件包括:- 数据库表结构设计文档- 数据流图设计文档- ER图设计文档6、法律名词及注释本文档涉及的法律名词及其注释如下:- 数据库管理系统(Database Management System,简称DBMS):是一种管理和整理数据库的软件系统。

- 关系型数据库(Relational Database):是一种基于关系模型的数据库,采用表格来组织和管理数据。

《图书管理系统》需求规格说明书

《图书管理系统》需求规格说明书

《图书管理系统》需求规格说明书《图书管理系统》需求规格说明书一、引言随着图书馆藏书数量的增加,读者数量的增多,图书管理成为一项重要的任务。

为了提高图书管理的效率和便利性,开发一款全新的图书管理系统变得十分必要。

本文将详细阐述《图书管理系统》的需求规格,包括系统的功能和特性,以及每个功能的详细需求。

二、需求列表1、系统设计1、界面设计:提供直观、易用的用户界面,以便读者进行图书查询、借阅、归还等操作。

2、功能模块:将系统分为多个功能模块,如用户管理、借阅管理、库存管理、数据统计等。

3、数据库设计:设计适合系统需求的数据库结构,包括读者信息、图书信息、借阅记录等。

2、用户管理1、注册:提供用户注册功能,收集用户基本信息。

2、登录:提供用户登录功能,验证用户身份。

3、信息修改:允许用户修改个人信息。

4、密码修改:允许用户修改密码。

3、借阅管理1、图书查询:提供多种查询方式,如按书名、作者、出版社等查询。

2、借书:允许用户借阅图书。

3、还书:允许用户归还图书。

4、续借:允许用户续借图书。

4、库存管理1、图书入库:将新图书入库,更新库存。

2、图书出库:将图书借出,更新库存。

3、库存查询:查询当前库存状态。

5、数据统计1、借阅统计:统计借阅记录,生成报表。

2、库存统计:统计库存记录,生成报表。

3、其他统计:根据需求进行其他相关统计。

三、需求分析1、系统设计1、界面设计:要求界面简洁、美观,易于使用,提供良好的用户体验。

2、功能模块:要求各模块之间耦合度低,高内聚,便于系统维护和扩展。

3、数据库设计:要求数据库结构合理,能够满足系统的查询、更新等操作需求。

2、用户管理1、注册:要求用户信息存储安全,不可泄露。

2、登录:要求登录过程简单、快捷,避免长时间等待。

3、信息修改:要求信息修改过程简单易用,保障信息安全。

4、密码修改:要求密码修改过程安全可靠,防止密码泄露。

3、借阅管理1、图书查询:要求查询速度快,结果准确,支持多种查询方式。

图书馆管理系统概要设计说明书

图书馆管理系统概要设计说明书

图书馆管理系统概要设计说明书目录1引言 (2)1.1 背景 (2)1.2 系统概述 (2)1.3 文档概述 (2)2引用文档 (3)3设计与决策 (3)4软件体系结构设计 (3)4.1 体系结构 (4)4.1.1 程序模块划分 (4)4.1.2 程序功能模块关系 (6)4.2接口设计 (6)4.2.1接口描述 (6)4.2.2 用户接口 (7)4.2.3 外部接口 (7)4.2.4 内部接口 (7)5各模块设计 (7)5.1用户登录模块 (8)5.2图书管理模块 (9)5.3读者信息管理模块 (9)5.4借阅信息管理模块 (10)5.5系统管理模块 (11)6数据库设计 (12)6.1数据库逻辑结构设计 (12)6.2 数据库物理结构 (17)6.3数据结构与程序的关系 (17)7需求的可追踪性 (17)8系统运行与维护设计 (17)8.1运行设计 (17)8.2维护设计 (18)1引言1.1 背景随着信息化水平的不断扩大,计算机技术的不断应用和提高,计算机已经深入到社会生活的各个角落。

而中小型租、借书图书馆仍采用手工管理图书的方法,不仅效率低、易出错、手续繁琐,而且耗费大量的人力。

为了满足其管理人员对图书馆书籍,读者资料,借还书等进行高效的管理,在工作人员具备一定的计算机操作能力的前提下,此图书管理馆系统软件力求提高其管理效率,代替人工处理提高图书馆的信息化和自动化。

1.2 系统概述根据需求分析说明书所得出的客户需求,本图书馆管理系统的主要实现的功能有:图书馆管理员对图书的系统化管理,包括图书信息的增删改以及查询、读者信息的增删改以及查询;读者借书和还书的处理以及相关信息的管理,用户信息管理、图书信息检索查询、用户登录操作等。

本图书馆管理系统属于一个数据管理型系统。

包括数据的处理加工,数据的存储,以及用户交互等;运行的现场不应该出现太多的错误,能够准确的根据用户的操作进行一系列的交互,以满足用户的需求。

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

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

图书馆管理系统设计说明书图书馆管理系统设计说明书1、引言1.1 编写目的本文档旨在阐述设计一个图书馆管理系统的各个方面,包括功能需求、数据结构、系统架构以及交互界面等内容,以供开发人员参考和实施。

1.2 范围本文档涵盖了整个图书馆管理系统的设计过程,包括系统的基本功能和各个模块的详细设计。

1.3 定义、缩略语和缩写- 图书馆管理系统:指用于管理图书馆资源、借还书籍、查询图书信息等功能的计算机系统。

- 用户:指在图书馆管理系统中使用系统服务的人员,包括管理员和读者。

- 管理员:指负责管理图书馆资源和用户信息的工作人员。

- 读者:指在图书馆借阅图书的人员。

- 数据库:指存储系统数据的集合。

2、功能需求2.1 用户管理2.1.1 注册用户2.1.2 管理员登录2.1.3 读者登录2.2 图书管理2.2.1 图书录入2.2.2 图书查询2.2.3 图书借阅2.2.4 图书归还2.3 借阅管理2.3.1 借阅记录查询2.3.2 借阅期限管理2.3.3 逾期罚款计算2.4 系统管理2.4.1 权限管理2.4.2 数据备份与恢复2.4.3 系统日志记录3、数据结构3.1 用户表3.2 图书表3.3 借阅记录表4、系统架构4.1 前端设计4.1.1 用户界面设计4.1.2 系统交互设计4.2 后端设计4.2.1 数据库设计4.2.2 业务逻辑设计4.2.3 接口设计5、附件本文档所涉及的附件包括系统页面设计图、数据库表结构设计文档、接口定义文档等。

6、法律名词及注释- 数据保护法:指保护个人数据隐私及数据泄露的法规。

- 版权法:指保护原创作品著作权的法规。

- 数字化管理:指将实体资源转化为数字形式进行管理的方式。

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

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

软件工程文件名称:系统设计说明书项目名称:图书管理系统作者: 顾金俐日期: 2010—6—221 引言1.1 编写目的编写本报告的目的是明确本系统的详细需求,供使用单位确认系统的功能和性能,并作为软件设计人员的设计依据和使用单位的验收标准.1.2 背景1。

开发软件名称:图书管理系统2。

项目开发者:计算机工程学院计算机科学与技术软件071班202070402 顾金俐3。

用户单位:南京工程学院1.3 定义和缩略语本文使用了表 1.1所显示的面向用户的术语、定义,包括通用词语在本文档中的专用解释.表 1。

2所列为本文用到的缩略语.1.4 参考资料本文使用了表1。

3所列为本文用到的参考资料。

1。

5 用户1..本软件的最终用户是面向管理员(图书管理员和其它管理人员)、读者(老师和同学等),他们都具有一定的计算机应用基础,可以比较熟练操作计算机.管理员和读者都是经常性用户。

2。

系统维护人员为计算机专业人员,熟悉数据库、操作系统、网络维护工作。

维护人员为间隔性用户.2 系统设计2。

1 系统架构依据前期的需求调研,用户已经有完善的内部局域网,网络和硬件条件都较好,虽然C/S架构有其特有的优势,但最终不采用C/S架构。

系统采用目前最为流行的B/S架构,即用户的所有操作都在浏览器上进行.这种架构最大的优势是方便部署.架构示意如图2—1。

图2-1 系统架构图2。

2 系统设计模式系统采用目前最为流行的MVC设计模式,即Model-View—Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层--模型层、视图层、控制层。

视图(View):代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。

模型(Model):就是业务流程/状态的处理以及业务规则的制定.业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果.控制(Controller):可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。

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

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

图书馆管理系统设计说明书院系:专业:班级:小组成员:********摘要图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面,一方面要求建立起数据一致性和完整性强、数据安全性好的库另一方面则要求应用程序功能完备,易使用等特点。

从九年制义务教育建设至今,全国大多数中小学校已经按国家标准建立起学校图书室。

但是相应的图书室的管理却不到位,一是管理方式落后,二是中小学校图书管理人员多数为兼职,图书借还的效率低,特别是手工操作,误差率高。

不方便查找和归位,导致好书找不到,查询资料困难等问题,所以一套简明、高效的图书管理系统对学校图书管理工作是不可缺少的。

结合学校图书借阅的要求,完成对图书管理系统的需求分析、功能模块划分,并由此设计了数据库结构和应用程序。

本文所设计的图书管理系统可以满足借阅者、和管理员两方面的需要。

本文首先分析了图书管理信息系统的应用需求,按照数据库设计理论一步一步地给出了系统需求说明书、概要设计、详细设计,建立了数据库.然后进行了具体的程序设计,实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了条件查询和模糊查询,图书种类统计功能。

引入了图书的计算机化管理,可使整体计算机应用水平的提高和藏书规模的扩大、方便读者查询、借阅操作,解决流通中存在的问题。

它能使图书馆工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高图书馆的管理效率及服务质量,从而使图书馆管理水平和业务水平跃上一个新的台阶。

本程序采用可视化编辑程序(Microsoft Visual Basic 6.0)进行编辑的目录前言 (4)第1章数据库设计 (3)1.1数据库的引入 (3)1.2 数据库的完整性和安全性 (4)1.2.1数据的完整性 (4)1.2.2数据的安全性 (5)1.3数据库结构设计 (5)第2章系统功能模块的设计实现 (5)2.1账号登陆 (6)2.2图书信息管理 (6)2.2.1 图书信息添加模块 (6)2.2.2 图书信息的修改 (9)2.2.3 图书信息的删除 (9)2.2.4 图书信息查询 (10)2.3用户管理界面 (10)第3章程序调试中遇到的主要问题及解决方法 (13)3.1 注册帐号出现的错误 (13)3.2 密码的非文本信息输入时出错 (13)3.3 文件以文本(txt)形式输出时出错 (12)结论 (12)前言随着人类社会的发展,人类对知识的需求也不断地增长。

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

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

图书管理系统系统设计说明书图书管理系统系统设计说明书1:引言1.1 编写目的本文档是为了说明图书管理系统的设计细节,以便开发团队和相关人员了解系统架构、功能模块、数据流和数据结构。

1.2 背景图书管理系统是用于管理图书馆馆藏图书及读者信息的软件系统,它可以实现图书的借阅、归还、图书检索等功能,提高图书馆的管理效率和读者的服务质量。

2:系统概述2.1 系统简介图书管理系统是建立在计算机网络环境下的一种管理系统,可以帮助图书馆管理者实现对图书馆馆藏图书和读者信息的管理和控制。

2.2 系统功能2.2.1 图书管理功能- 图书的采购、入库和分类管理- 图书的借阅、续借和归还管理- 图书的检索和查询功能- 图书的盘点和报废处理2.2.2 读者管理功能- 读者的注册和信息管理- 读者的借阅记录和逾期管理- 读者的账户充值和消费管理2.2.3 系统管理功能- 管理员账号的添加、删除和权限管理- 数据备份和恢复功能- 系统配置和参数设置2.3 系统架构图书管理系统采用B/S架构,即浏览器/服务器架构。

用户通过浏览器与服务器进行交互,服务器负责处理用户的请求并返回相应的结果。

3:系统详细设计3.1.1 登录模块- 用户账号验证- 权限管理- 用户登录日志记录3.1.2 图书管理模块- 图书的入库管理- 图书的分类管理- 图书的借阅和归还管理3.1.3 读者管理模块- 读者信息的注册和管理- 读者的借阅记录和逾期管理- 读者账户的充值和消费管理3.1.4 系统管理模块- 管理员账号的添加、删除和权限管理- 数据备份和恢复功能- 系统配置和参数设置3.2.1 登录过程- 用户输入账号和密码- 系统验证用户账号和密码的正确性- 系统根据用户权限跳转到对应页面3.2.2 图书借阅过程- 用户查询图书- 用户选择要借阅的图书- 系统检查图书库存和用户借阅限额- 系统记录借阅信息并更新图书库存和用户借阅记录3.2.3 图书归还过程- 用户选择要归还的图书- 系统根据图书的借阅记录计算逾期天数和罚款金额- 用户支付罚款金额- 系统更新图书库存和用户借阅记录3.3 数据结构设计3.3.1 图书信息表- 图书名称- 作者- 出版社- 价格- 库存数量3.3.2 读者信息表- 读者编号- 姓名- 性别- 年龄- 方式号码- 邮箱- 账户余额3.3.3 借阅记录表- 借阅编号- 图书编号- 借阅日期- 归还日期- 是否逾期- 罚款金额4:附件本文档涉及的附件包括系统原型图、数据库设计文档和源代码。

图书馆管理系统需求说明书

图书馆管理系统需求说明书

图书馆管理系统需求说明书图书馆管理系统需求说明书一、项目概述随着图书馆藏书数量的增加和读者人数的增多,图书馆管理面临着越来越多的挑战。

为了提高图书馆的管理效率和服务质量,我们计划开发一款图书馆管理系统。

该系统旨在实现图书馆业务的自动化和数字化,包括图书管理、借阅管理、读者管理和系统管理等模块。

通过该系统,图书馆工作人员可以更方便地管理图书和读者信息,读者也可以更快捷地查询和借阅图书。

二、用户需求1、功能需求:系统应具备以下功能:(1)图书管理:包括图书入库、查询、修改、删除等操作。

(2)借阅管理:读者借书、还书、续借等操作。

(3)读者管理:管理读者信息,包括注册、登录、信息修改等操作。

(4)系统管理:包括系统设置、权限管理、数据备份等操作。

2、非功能需求:(1)易用性:系统应该易于使用,界面简洁明了。

(2)安全性:系统应保证数据的安全性,防止数据泄露和非法访问。

(3)稳定性:系统应稳定可靠,能够保证连续工作。

(4)可扩展性:系统应易于扩展,以满足未来业务发展的需求。

三、系统架构1、总体架构:系统采用B/S架构,前端使用Web浏览器,后端使用服务器和数据库管理系统。

2、模块划分:根据功能需求,系统划分为以下模块:(1)用户管理模块:包括用户注册、登录、信息修改等操作。

(2)图书管理模块:包括图书入库、查询、修改、删除等操作。

(3)借阅管理模块:包括读者借书、还书、续借等操作。

(4)读者管理模块:包括读者信息管理、借阅记录查询等操作。

(5)系统管理模块:包括系统设置、权限管理、数据备份等操作。

3、技术实现:系统采用Java语言开发,使用MySQL数据库管理系统,采用MVC设计模式,采用Spring框架实现业务逻辑层和数据访问层的分离。

四、技术实现1、用户管理模块:采用JSP技术实现用户界面的展示,使用JavaBean 实现用户信息的处理。

2、图书管理模块:使用JavaSwing技术实现图书界面的展示,使用JavaBean实现图书信息的处理。

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

图书管理系统的设计说明书一、设计容与设计要求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 具体调试过程。

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

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

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

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

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

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

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

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

我们三个人分工合作,组长爱贤负责对程序的编译,通过不断的尝试和学习,最终制成程序的最初模式!经纬负责对程序的修改。

维健负责后期制作,总结组的制作经验!通过努力,得以在规定的时间完成任务。

这一次的C++课程设计让我们学到了很多知识,懂得如何发现问题,并解决!非常感老师及同学们的帮助,让我们有这一个机会好好学习C++的更广泛的知识。

7、7.1 源程序清单:#include <iostream>#include <iomanip> //定义控制符#include <string> //包含string的头文件#include <fstream> //用来支持对磁盘文件的输入输出using namespace std;const int Maxr=100;const int Maxb=100;const int Maxbor=5; //以上三行声明Maxr、Maxb、Maxbor为常数据成员class Reader //声明类类型为读者{private: //声明以下部分为私有的int tag; //int no; //定义编号为整型char name[10]; //定义长度为10的名字数组字符串int borbook[Maxbor]; //定义整型借书数组public: //声明以下部分为公用的Reader() {} //Reader类构造函数char *getname() {return name;} //虚函数,返回nameint gettag() {return tag;} //虚函数,返回tagint getno() {return no;} //虚函数,返回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<<"借书编号:["; /*设置编号字段宽度为5位,设置名字字段宽度为10位*/for(int i=0;i<Maxbor;i++)if(borbook[i]!=0)cout << borbook[i] << "|";cout << "]"<<endl;}};class RDatabase //定义RDatabase类{private:int top;Reader read[Maxr];public:RDatabase() //构造函数{Reader s;top=-1;fstream file("reader.txt",ios::in); //在reader.txt以输入方式打开文件while (1){file.read((char *)&s,sizeof(s));if (!file)break; //如果非file,结束循环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) //定义query指针,且读者编号为整型{for (int i=0;i<=top;i++)if (read[i].getno()==readerid &&read[i].gettag()==0){return &read[i]; //指向read[i]}return NULL;}void disp(){for (int i=0;i<=top;i++)read[i].disp();}void readerdata();{fstream file("reader.txt",ios::out); //使用文件与reader.txt文件建立关联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; //输出子菜单cin >> choice;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;}r->delbook();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 //定义Book类{private:int price;char author[10];int tag;int no;char name[20];int onshelf;public:Book(){}char *getname() { return name; }int getno(){ return no; }int gettag(){ return tag; }char*getauthor(){return author;}char getprice(){return price;}void setname(char na[]){strcpy(name,na);}void setauthor(char au[]){strcpy(author,au);}void delbook(){ tag=1;}void addbook(int n,char *na,char*au,int pr){tag=0;no=n;price=pr;strcpy(author,au);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) <<"作者名: "<<author<<setw(18)<<"图书单价: "<<price<<setw(10)<<(onshelf==1? "在架":"已借") <<endl;}};class BDatabase //定义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,char*au,int pr) {Book *p=query(n);if (NULL==p){top++;book[top].addbook(n,na,au,pr);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); //使文件流与book.txt文件建立关联for (int i=0;i<=top;i++)if (book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i]));file.close();}};void BDatabase::bookdata(){char choice;char bauthor[10];int bprice;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; cout<<" 输入作者名:";cin>>bauthor;cout<<"输入价格:";cin>>bprice;addbook(bookid,bname,bauthor,bprice);break; //结束循环case '2':cout << "输入图书编号:"<<endl;cin >> bookid;b=query(bookid);if (b==NULL){cout << " 该图书不存在 "<<endl;break;}cout << "输入新的书名:"<<endl;cin >> bname;b->setname(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();r->retbook(b->getno());break;case '3':BookDB.bookdata();break;case '4':ReaderDB.readerdata();break;default:cout<<"输入错误,请从新输入:"; }}}。

相关文档
最新文档