目录
一、 需求分析
编写一个图书借阅管理系统,对图书馆书籍的借阅情况进行管理。
(1)输入的形式和输入值的范围:
输入的形式:输入的内容在文本文件中,通过daoru这个函数将书籍信息导入进程序中,在后面将最新的信息录入到文本文件中采用的是saveBooks这个函数,将一个包含最新图书借阅情况的信息录入到一个新的文本文件中。
输入值的范围:其中书籍的ISBN号必须为4位数字,学生的借书证号必须为3位数字,书籍的名称,作者,出版社等未做限制,但书籍的定价不可低于0元,库存不可为负数,最多不可超过1000本。
(2)输出的形式;
当想查询一本书籍的信息时,会在控制台上输出包含这本书籍信息的全部内容。书籍的名称,ISBN,作者,出版社以字符的形式(%s)输出,书籍的定价以浮点型数字输出(%f),书籍的库存以整型数字(%d)输出。
(3) 程序所能达到的功能;
本程序可以达到六个功能:
1.将保存在txt文件中的书籍信息导入到管理系统当中。
2.可以通过管理系统新增或者对已有书籍的各个信息进行添加或更新
3.可以通过管理系统快速查找到某一书籍的具体信息和借阅情况。
4.可以通过管理系统对书籍的借阅进行准确的借阅和登记。
5.可以通过管理系统实现对已借阅书籍的快速还书。
6. 用户可以选择将当前最新的图书信息保存到文本文件中,以便下次使用时导入。
(4) 测试数据:
程序开始:
图书借阅管理系统
1. 添加或修改图书信息
2. 查找图书信息
3. 借阅图书
4. 归还图书
5. 打印所有图书信息
6. 保存图书信息到文件
0. 退出
正确输入:1
正确输出:请输入图书信息(ISBN(4位) 书名 主编 出版社 定价 库存):
正确输入:1008 《计算机科学导论》 鲍勃 清华大学出版社 59.99 30
正确输出:图书信息添加成功!
错误输入:abc12e32e9
错误输出:输入无效,请重新输入选项中的数字!
二、 概要设计
(1)编写一个图书借阅管理系统,要求如下:
- 图书信息:包括ISBN、书名、主编、出版社、定价、库存;借阅者信 息包括:借书证号、姓名,联系方式 。
- 要求用线性表实现,采用顺序存储结构实现
- 图书借阅信息应另外设一线性表保存信息
- 界面要求:简单的人机交互界面
(2)设计思想:
我用的是结构体数组去实现的,用一个结构体去装一种书籍的全部信息,很多种书籍就装在一个结构体数组,然后对结构体进行一系列的操作。
(3) 函数的功能:
- 辅助函数:
- findBookIndex(string ISBN):根据ISBN在books数组中查找图书的索引。
- if_number(string str):检查字符串是否仅由数字组成。
- 文件输入输出函数:
- daoru(string filename):从TXT文件导入图书信息到程序中。
- saveBooks(string filename):将程序中的图书信息保存到TXT文件中。
- 图书管理函数:
- add_or_up(Book book):添加或更新图书信息到books数组中。
- findBook(string ISBN):根据ISBN查找图书信息。
- jie_book(string ISBN, string cardNumber, string jie_date):处理图书借阅操作。
- huan_book(string ISBN, string cardNumber):处理图书归还操作。
- printBooks():打印程序中存储的所有图书信息。
- 主要功能:
- main()函数:
- 在开始时从文件中导入图书信息。
- 显示菜单,提供添加/修改图书信息、查找图书信息、借阅图书、归还图书、打印所有图书信息、保存图书信息到文件和退出等选项。
- 根据用户选择调用相应的函数执行相应的操作。
- 循环执行,直到用户选择退出(输入0)。
三、详细设计
(1)数据及数据类型
- 结构体定义:
- Book:存储图书信息,包括ISBN、书名、作者、出版社、定价和库存数量。
- jie_info:存储借阅信息,包括ISBN、借书证号和借出日期。
- 全局变量:
- MAX_BOOKS:允许存储的最大图书数量。
- books[MAX_BOOKS]:用于存储图书信息的数组。
- numBooks:当前存储的图书数量。
- jie_infos[MAX_BOOKS]:用于存储借阅信息的数组。
- numjie_infos:当前的借阅记录数量。
- 数据类型:
- 字符串类型(string):用于存储图书信息、借阅者信息等的字符串。在结构体 jie、Book、jie_info 中,用来表示借书证号、ISBN号、书名、作者、出版社等信息。
- 浮点数类型(double):用于表示图书的定价。在结构体 Book 中,表示图书的定价。
- 整数类型(int):用于表示图书的库存数量、借阅信息数量等。
- 文件流类型(ifstream、ofstream):用于文件输入输出的类和函数。在函数 daoru 和 saveBooks 中,分别用于从文件导入图书信息和将图书信息保存到文件。
- 字符串流类型(stringstream):用于字符串流的类和函数,主要用于将字符串转换为其他类型的数据。在函数 daoru 中,用于解析读取的每行文本,提取图书信息。
(2)操作流程
① 导入图书信息:
- 通过函数 daoru 从文件中导入图书信息。
② 显示菜单:
- 在主函数 main 中,使用循环显示菜单,等待用户输入选择操作。
③ 选择操作:
- 根据用户输入的数字选择相应的操作:
1:添加或修改图书信息。
2:查找图书信息。
3:借阅图书。
4:归还图书。
5:打印所有图书信息。
6:保存图书信息到文件。
0:退出程序。
④ 执行相应操作:
- 根据用户选择执行相应的操作,具体操作包括:
1.添加或修改图书信息:用户输入图书信息,并调用 add_or_up 函数进行处理。
2.查找图书信息:用户输入 ISBN,调用 findBook 函数查找图书信息并打印。
3.借阅图书:用户输入图书 ISBN、借书证号和借出日期,调用 jie_book 函数进行借阅处理。
4.归还图书:用户输入图书 ISBN 和借书证号,调用 huan_book 函数进行归还处理。
5.打印所有图书信息:调用 printBooks 函数打印当前所有图书信息。
6.保存图书信息到文件:调用 saveBooks 函数将当前图书信息保存到文件。
⑤ 循环操作:
- 用户可以反复选择操作,直到选择退出程序(输入 0)为止。
(3)流程图
四、用户使用说明
该程序是一个简单的图书借阅管理系统,可以实现图书信息的添加、修改、查找,图书的借阅和归还以及打印所有图书信息等功能。以下是对程序中各功能的使用说明:
程序一开始会出现一个可交互的功能选择界面:
(1)添加或修改图书信息:
选择菜单中的选项1,按照提示输入图书的ISBN(4位数字)、书名、作者、出版社、定价和库存数量。
如果要修改已存在的图书信息,程序会提示是否覆盖原有信息,选择Y即可更新信息,选择N则取消更新。
(2)查找图书信息:
选择菜单中的选项2,按照提示输入要查找的图书的ISBN(4位数字)。
如果图书存在,则会显示该图书的详细信息;如果不存在或ISBN输入错误,则会提示未找到图书信息。
(3)借阅图书:
选择菜单中的选项3,按照提示依次输入要借阅的图书的ISBN(4位数字)、借书证号(3位数字)和借出日期。
如果图书库存充足且借阅成功,会显示借阅成功的提示;否则会提示库存不足。
(4)归还图书:
选择菜单中的选项4,按照提示依次输入要归还的图书的ISBN(4位数字)和借书证号(3位数字)。
如果归还成功,会显示归还成功的提示;如果未找到借阅记录或借书证号错误,则会提示相应信息。
(5) 打印所有图书信息:
选择菜单中的选项5,会打印出所有图书的详细信息,包括ISBN、书名、作者、出版社、定价和库存数量。
(6) 保存图书信息到文件:
选择菜单中的选项6,会将当前的图书信息保存到文件中,以便下次程序运行时导入已有信息。
退出程序:
选择菜单中的选项0,即可退出程序。
注意事项:
在使用各项功能之前,请根据程序提示输入相应的信息。
如果要查看或修改程序中新建的文件内容,用户可以在删除文件之前设置断点,以便在程序执行过程中查看文件内容。
在程序结束后,新建的文件(如books_xin.txt)会被自动删除,以防止文件内容重复。如需保留文件内容,请在程序结束后手动删除对应的删除操作。
五、程序演示
纯代码(无界面):
(1)测试数据:
books.txt:
1001 红楼梦 曹雪芹 人民文学出版社 59.8 0
1002 西游记 吴承恩 人民文学出版社 39.80 80 0
1003 水浒传 施耐庵 人民文学出版社 45 119
1004 三国演义 罗贯中 人民文学出版社 59.8 90
(2)正确的输入输出:
(a) 查询所有图书信息:
(b) 添加或修改图书信息:
输入:‘1’
(c) 查询一本图书信息:
输入:‘2’
(d) 借阅图书:
输入:‘3’
(e) 还书:
输入‘4’
(f) 保存图书信息到文件:
输入‘6’