写一个基于python的图书管理系统,该系统可以实现图书的添加图书,删除图书,修改图书,借阅图书,归还图书,查询图书的功能,系统通过命令行界面(CLLI)进行操作,用.txt文档进行数据的储存
时间: 2023-05-27 10:02:08 浏览: 46
以下是一个基于Python的图书管理系统的代码示例:
```python
import os
# 文件名和存储路径
FILENAME = "books.txt"
DATA_DIR = os.path.dirname(os.path.abspath(__file__))
# 图书管理系统
class BookManagementSystem:
def __init__(self):
self.books = []
# 从文件中读取数据
def load_books(self):
# 如果文件不存在则创建一个空文件
filepath = os.path.join(DATA_DIR, FILENAME)
if not os.path.exists(filepath):
open(filepath, "w").close()
with open(filepath, "r") as f:
for line in f:
book = dict(zip(["id", "name", "author", "borrower"], line.strip().split(",")))
self.books.append(book)
# 将数据保存到文件中
def save_books(self):
filepath = os.path.join(DATA_DIR, FILENAME)
with open(filepath, "w") as f:
for book in self.books:
f.write("{},{},{},{}\n".format(book["id"], book["name"], book["author"], book["borrower"]))
# 显示菜单,并返回用户选择的操作
def show_menu(self):
print("=== 图书管理系统 ===")
print("1. 添加图书")
print("2. 删除图书")
print("3. 修改图书")
print("4. 借阅图书")
print("5. 归还图书")
print("6. 查询图书")
print("0. 退出系统")
return input("请选择操作:")
# 添加图书
def add_book(self):
id = input("请输入图书编号:")
name = input("请输入图书名称:")
author = input("请输入图书作者:")
book = {"id": id, "name": name, "author": author, "borrower": ""}
self.books.append(book)
self.save_books()
print("添加图书成功!")
# 删除图书
def remove_book(self):
id = input("请输入要删除的图书编号:")
for book in self.books:
if book["id"] == id:
self.books.remove(book)
self.save_books()
print("删除图书成功!")
return
print("未找到该图书!")
# 修改图书
def modify_book(self):
id = input("请输入要修改的图书编号:")
for book in self.books:
if book["id"] == id:
name = input("请输入新的图书名称:")
author = input("请输入新的图书作者:")
book["name"] = name
book["author"] = author
self.save_books()
print("修改图书成功!")
return
print("未找到该图书!")
# 借阅图书
def borrow_book(self):
id = input("请输入要借阅的图书编号:")
for book in self.books:
if book["id"] == id:
if book["borrower"] == "":
borrower = input("请输入借阅人姓名:")
book["borrower"] = borrower
self.save_books()
print("借阅图书成功!")
else:
print("该图书已被借出!")
return
print("未找到该图书!")
# 归还图书
def return_book(self):
id = input("请输入要归还的图书编号:")
for book in self.books:
if book["id"] == id:
if book["borrower"] != "":
book["borrower"] = ""
self.save_books()
print("归还图书成功!")
else:
print("该图书未被借出!")
return
print("未找到该图书!")
# 查询图书
def search_book(self):
keyword = input("请输入图书名称或作者:")
count = 0
for book in self.books:
if keyword in book["name"] or keyword in book["author"]:
print("{:<10}{:<20}{:<20}{:<20}".format(book["id"], book["name"], book["author"], book["borrower"]))
count += 1
if count == 0:
print("未找到相关图书!")
# 主循环
def run(self):
self.load_books()
while True:
choice = self.show_menu()
if choice == "1":
self.add_book()
elif choice == "2":
self.remove_book()
elif choice == "3":
self.modify_book()
elif choice == "4":
self.borrow_book()
elif choice == "5":
self.return_book()
elif choice == "6":
self.search_book()
elif choice == "0":
break
else:
print("输入错误,请重新输入!")
```
存储图书信息的文件格式为CSV,每行表示一本图书,包含id、name、author和borrower四个数据。其中,borrower表示当前借阅该图书的人,如果为""则表示该图书未被借出。
在命令行界面下启动程序可以使用以下代码:
```python
if __name__ == "__main__":
bms = BookManagementSystem()
bms.run()
```
这个程序使用的是一个BookManagementSystem类,该类包含了各种图书管理的方法。程序通过show_menu方法显示一个简单的命令行菜单,可以让用户选择需要执行的操作。用户选择每个操作后,程序会调用相应的方法,进行相应的操作。
在这个程序的实现中,已经实现了:
* 添加图书
* 删除图书
* 修改图书
* 借阅图书
* 归还图书
* 查询图书
除此之外,程序还支持从文件读取数据,将数据保存到文件中。在每次操作数据库后,程序会自动保存数据。如果需要储存其他类型的数据,可以修改代码中的文件格式。
此外,当执行代码时,需要将.py文件和储存数据的.txt文件放在同一目录下。