python用csv做图书馆理系统
时间: 2023-09-24 11:11:05 浏览: 180
好的,下面是一个简单的 Python 图书馆管理系统,使用 CSV 文件作为数据存储方式。首先,我们需要创建一个 CSV 文件并添加一些示例书籍:
```
title,author,publisher,isbn
Python for Data Science Handbook,Jake VanderPlas,O'Reilly Media,978-1491912058
Fluent Python,Luciano Ramalho,O'Reilly Media,978-1491946008
Python Crash Course,Eric Matthes,No Starch Press,978-1593276034
```
接下来,我们需要安装并导入 `csv` 和 `os` 模块:
```python
import csv
import os
```
然后,我们需要定义一些函数来执行不同的操作。首先是读取图书信息的函数:
```python
def read_books():
with open('books.csv', 'r', newline='') as f:
reader = csv.DictReader(f)
books = []
for row in reader:
books.append(row)
return books
```
该函数打开 `books.csv` 文件,并使用 `csv.DictReader` 将每一行转换为字典。最后,将所有图书信息存储在一个列表中并返回。
接下来,我们需要定义一个函数来添加新书籍到 CSV 文件:
```python
def add_book(title, author, publisher, isbn):
fields = ['title', 'author', 'publisher', 'isbn']
book = {'title': title, 'author': author, 'publisher': publisher, 'isbn': isbn}
if not os.path.isfile('books.csv'):
with open('books.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=fields)
writer.writeheader()
with open('books.csv', 'a', newline='') as f:
writer = csv.DictWriter(f, fieldnames=fields)
writer.writerow(book)
print('书籍添加成功!')
```
该函数接受四个参数:`title`、`author`、`publisher` 和 `isbn`。它首先定义一个 `fields` 列表,其中包含 CSV 文件的列头。然后,它创建一个字典 `book`,其中包含书籍信息。如果 `books.csv` 文件不存在,则该函数将创建一个新文件并写入列头。最后,将新书籍添加到 CSV 文件中。
接下来,我们需要定义一个函数来搜索图书:
```python
def search_books(keyword):
books = read_books()
results = []
for book in books:
if keyword.lower() in book['title'].lower() or \
keyword.lower() in book['author'].lower() or \
keyword.lower() in book['publisher'].lower() or \
keyword in book['isbn']:
results.append(book)
return results
```
该函数接受一个关键字作为参数,并返回包含该关键字的所有图书信息的列表。它首先使用 `read_books` 函数读取所有图书信息。然后,它循环遍历每一本书,并将包含关键字的书籍添加到 `results` 列表中。
最后,我们需要定义一个主函数来处理用户输入和调用其他函数:
```python
def main():
while True:
print('1. 查看所有书籍')
print('2. 添加新书籍')
print('3. 搜索书籍')
print('4. 退出程序')
choice = input('请选择:')
if choice == '1':
books = read_books()
for book in books:
print(f"{book['title']} | {book['author']} | {book['publisher']} | {book['isbn']}")
elif choice == '2':
title = input('请输入书名:')
author = input('请输入作者:')
publisher = input('请输入出版社:')
isbn = input('请输入ISBN:')
add_book(title, author, publisher, isbn)
elif choice == '3':
keyword = input('请输入关键字:')
results = search_books(keyword)
if len(results) > 0:
for book in results:
print(f"{book['title']} | {book['author']} | {book['publisher']} | {book['isbn']}")
else:
print('未找到匹配的书籍!')
elif choice == '4':
break
else:
print('无效的选择!')
```
该函数显示一个菜单,允许用户选择要执行的操作。如果用户选择查看所有书籍,则调用 `read_books` 函数并打印所有书籍信息。如果用户选择添加新书籍,则调用 `add_book` 函数并提示用户输入书籍信息。如果用户选择搜索书籍,则调用 `search_books` 函数并打印所有匹配的书籍信息。如果用户选择退出程序,则退出循环。
最后,我们只需要调用 `main` 函数即可运行程序:
```python
if __name__ == '__main__':
main()
```
这就是使用 CSV 文件实现图书馆管理系统的基本示例。你可以根据自己的需求进行修改和扩展。
阅读全文