add readme and book_manager

pull/1/head
katon 5 months ago
parent bcb380c117
commit e94faa5473

@ -0,0 +1,180 @@
import json
import os
from datetime import datetime
class BookManager:
"""图书管理类,负责图书信息的增删改查操作"""
def __init__(self, data_file='books.json'):
"""初始化图书管理器,加载已有图书数据"""
self.data_file = data_file
self.books = self._load_books()
def _load_books(self):
"""从文件加载图书数据"""
if os.path.exists(self.data_file):
try:
with open(self.data_file, 'r', encoding='utf-8') as f:
return json.load(f)
except (json.JSONDecodeError, IOError) as e:
print(f"加载图书数据失败: {e}")
return []
return []
def _save_books(self):
"""将图书数据保存到文件"""
try:
with open(self.data_file, 'w', encoding='utf-8') as f:
json.dump(self.books, f, ensure_ascii=False, indent=2)
return True
except IOError as e:
print(f"保存图书数据失败: {e}")
return False
def add_book(self, isbn, title, author, category, quantity=1):
"""
添加新图书
参数:
isbn (str): 图书ISBN编号
title (str): 图书标题
author (str): 图书作者
category (str): 图书分类
quantity (int): 图书数量默认为1
返回:
bool: 添加成功返回True失败返回False
"""
# 检查ISBN是否已存在
for book in self.books:
if book['isbn'] == isbn:
print(f"错误: ISBN为 {isbn} 的图书已存在")
return False
new_book = {
'isbn': isbn,
'title': title,
'author': author,
'category': category,
'quantity': quantity,
'available': quantity, # 可借阅数量
'added_date': datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
self.books.append(new_book)
return self._save_books()
def search_books(self, keyword=None, category=None, author=None):
"""
搜索图书
参数:
keyword (str): 标题或ISBN中的关键词
category (str): 图书分类
author (str): 作者名
返回:
list: 符合条件的图书列表
"""
results = []
for book in self.books:
match = True
if keyword and keyword not in book['title'] and keyword not in book['isbn']:
match = False
if category and book['category'] != category:
match = False
if author and author not in book['author']:
match = False
if match:
results.append(book)
return results
def update_book(self, isbn, **kwargs):
"""
更新图书信息
参数:
isbn (str): 图书ISBN编号
** kwargs: 要更新的字段如title, author, category, quantity等
返回:
bool: 更新成功返回True失败返回False
"""
for book in self.books:
if book['isbn'] == isbn:
# 计算可借阅数量的变化
if 'quantity' in kwargs:
quantity_change = kwargs['quantity'] - book['quantity']
book['available'] += quantity_change
# 更新字段
for key, value in kwargs.items():
if key in book:
book[key] = value
return self._save_books()
print(f"错误: 未找到ISBN为 {isbn} 的图书")
return False
def delete_book(self, isbn):
"""
删除图书
参数:
isbn (str): 图书ISBN编号
返回:
bool: 删除成功返回True失败返回False
"""
initial_count = len(self.books)
self.books = [book for book in self.books if book['isbn'] != isbn]
if len(self.books) < initial_count:
return self._save_books()
print(f"错误: 未找到ISBN为 {isbn} 的图书")
return False
def get_book_details(self, isbn):
"""获取图书详细信息"""
for book in self.books:
if book['isbn'] == isbn:
return book
return None
def list_all_books(self):
"""列出所有图书"""
return self.books
# 示例用法
if __name__ == "__main__":
manager = BookManager()
# 添加示例图书
manager.add_book("9780134685991", "Effective Python", "Brett Slatkin", "Programming", 5)
manager.add_book("9780596007126", "Head First Design Patterns", "Eric Freeman", "Programming", 3)
manager.add_book("9780141988511", "Sapiens: A Brief History of Humankind", "Yuval Noah Harari", "History", 4)
print("所有图书:")
for book in manager.list_all_books():
print(f"{book['title']} by {book['author']} (ISBN: {book['isbn']}) - 可借: {book['available']}/{book['quantity']}")
print("\n搜索编程类图书:")
programming_books = manager.search_books(category="Programming")
for book in programming_books:
print(f"- {book['title']}")
print("\n更新图书数量:")
manager.update_book("9780134685991", quantity=7)
book = manager.get_book_details("9780134685991")
print(f"更新后数量: {book['available']}/{book['quantity']}")
print("\n删除图书:")
manager.delete_book("9780596007126")
print(f"删除后剩余图书数量: {len(manager.list_all_books())}")

@ -0,0 +1,120 @@
# 图书管理系统 (Library Management System)
## 项目简介
本图书管理系统是一个用于高效管理图书馆资源的软件解决方案,支持图书信息录入、借阅、归还、查询、用户管理等核心功能。系统旨在简化图书馆日常运营流程,提升管理员工作效率,同时为读者提供便捷的图书查询与借阅服务。
## 功能特点
- **图书管理**支持图书信息书名、作者、ISBN、分类、数量等的新增、修改、删除及批量导入导出。
- **借阅/归还管理**:记录图书借阅信息(借阅人、借阅时间、应还时间),支持归还操作及逾期提醒。
- **用户管理**:分为管理员和读者两种角色,管理员可管理用户权限,读者可查看个人借阅记录。
- **查询统计**支持按书名、作者、ISBN等多条件查询图书提供借阅量统计、热门图书分析等功能。
- **数据安全**:用户密码加密存储,操作日志记录关键行为,保障数据完整性与安全性。
## 技术栈
- **后端**[例如Java (Spring Boot) / Python (Django) / Node.js (Express)]
- **前端**[例如Vue.js / React / HTML+CSS+JavaScript]
- **数据库**[例如MySQL / PostgreSQL / SQLite]
- **开发工具**[例如IntelliJ IDEA / VS Code]
- **其他**[例如Maven / Git / Redis (缓存)]
## 环境要求
- 操作系统Windows 10/11、macOS 12+、Linux (Ubuntu 20.04+)
- 数据库MySQL 8.0+ 或兼容版本
- JDK1.8+若使用Java后端
- Node.js14.0+(若使用前端框架)
- 内存至少4GB RAM
## 安装与部署
1. **克隆项目**
```bash
git clone https://github.com/your-username/library-management-system.git
cd library-management-system
```
2. **配置数据库**
- 新建数据库(例如:`library_db`
- 导入项目根目录下的 `sql/library_init.sql` 文件初始化表结构及测试数据
- 修改后端配置文件(如 `application.properties` 或 `config.js`)中的数据库连接信息
3. **启动后端服务**
```bash
# 以Spring Boot为例
cd backend
mvn spring-boot:run
```
4. **启动前端服务**
```bash
# 以Vue为例
cd frontend
npm install
npm run serve
```
5. **访问系统**
打开浏览器,访问 `http://localhost:8080`(前端端口根据配置调整),使用默认账号登录:
- 管理员:`admin` / `123456`
- 读者:`user1` / `123456`
## 使用指南
### 管理员操作
1. 登录后进入管理员控制台,可在「图书管理」中添加或编辑图书信息。
2. 在「用户管理」中创建读者账号,分配借阅权限(如最大借阅数量、最长借阅天数)。
3. 通过「统计分析」查看图书借阅数据及系统使用情况。
### 读者操作
1. 登录后可在「图书查询」中搜索目标图书,查看库存状态。
2. 在「我的借阅」中查看已借图书、续借(若未逾期)或归还。
## 项目结构
```
library-management-system/
├── backend/ # 后端代码
│ ├── src/ # 源代码
│ ├── pom.xml # 依赖配置Maven
│ └── README.md # 后端开发说明
├── frontend/ # 前端代码
│ ├── src/ # 源代码
│ ├── package.json # 依赖配置
│ └── README.md # 前端开发说明
├── sql/ # 数据库初始化脚本
├── docs/ # 项目文档(接口文档、设计图等)
└── README.md # 项目总说明(本文档)
```
## 开发计划
- [x] 基础功能开发图书CRUD、借阅/归还)
- [x] 用户权限管理
- [ ] 高级搜索(按分类、出版日期等)
- [ ] 移动端适配
- [ ] 对接第三方图书API自动获取ISBN信息
## 贡献指南
1. Fork 本仓库
2. 创建 feature 分支(`git checkout -b feature/xxx`
3. 提交修改(`git commit -m "add xxx"`
4. 推送到分支(`git push origin feature/xxx`
5. 提交 Pull Request
## 许可证
本项目采用 [MIT 许可证](LICENSE) 开源,允许自由使用、修改和分发。
## 联系方式
- 项目维护者:[你的名字]
- 邮箱:[your-email@example.com]
- 问题反馈:欢迎在 GitHub Issues 中提交 Bug 报告或功能建议
---
**备注**:以上内容可根据实际开发情况调整(如技术栈、功能模块等),建议在项目迭代过程中持续更新文档。
Loading…
Cancel
Save