accounts = {
"622202000001": {
"account_holder": "张三",
"id_card": "110101199001011234",
"balance": 5000.0,
"is_active": True,
"transactions": [
{
"timestamp": "2024-01-15 10:30:00",
"type": "开户",
"amount": 5000.0,
"balance_after": 5000.0,
"description": "初始存款"
}
]
}
}
def show_bank_menu():
"""显示银行菜单"""
print("\n===== 简易银行账户管理系统 =====")
print("1. 账户管理 2. 交易功能 3. 统计分析 4. 退出系统")
return input("请选择功能(1-4):")
def create_account(accounts, account_number, account_holder, id_card, initial_deposit):
if account_number in accounts:
return "账号已存在"
accounts[account_number] = {
"account_holder": account_holder,
"id_card": id_card,
"balance": round(initial_deposit, 2),
"is_active": True,
"transactions": []
}
return
def close_account(accounts, account_number):
if account_number> 0:
return "账户尚有余额,无法销户"
account_number = False
add_transaction(accounts, "销户", 0.0, "账户注销")
return f"销户成功!账号:{account_number}"
def deposit(accounts, account_number, amount):
try:
validate_account_exists(accounts, account_number)
account = accounts[account_number]
validate_amount(amount)
account["balance"] += amount
add_transaction(account, "存款", amount, "现金存款")
return f"存款成功!当前余额:{account['balance']:.2f}元"
except ValueError as e:
return f"存款失败:{str(e)}"
def withdraw(accounts, account_number, amount):
try:
validate_account_exists(accounts, account_number)
account = accounts[account_number]
validate_amount(amount)
validate_sufficient_balance(account, amount)
account["balance"] -= amount
add_transaction(account, "取款", amount, "现金取款")
return f"取款成功!当前余额:{account['balance']:.2f}元"
except ValueError as e:
return f"取款失败:{str(e)}"
def transfer(accounts, from_account, to_account, amount):
try:
validate_account_exists(accounts, from_account)
from_acc = accounts[from_account]
validate_account_exists(accounts, to_account)
to_acc = accounts[to_account]
if from_account == to_account:
raise ValueError("不能向本人账户转账")
validate_amount(amount)
validate_sufficient_balance(from_acc, amount)
from_acc["balance"] -= amount
to_acc["balance"] += amount
add_transaction(from_acc, "转账支出", amount, f"转入账号:{to_account}")
add_transaction(to_acc, "转账收入", amount, f"来自账号:{from_account}")
return f"转账成功!转出账号余额:{from_acc['balance']:.2f}元"
except ValueError as e:
return f"转账失败:{str(e)}"
def get_account_info(accounts, account_number):
try:
validate_account_exists(accounts, account_number)
acc = accounts[account_number]
info = f"\n===== 账户信息 =====\n"
info += (f"账号:{account_number}\n"
f"户名:{acc['account_holder']}\n"
f"身份证号:{acc['id_card']}\n"
f"当前余额:{acc['balance']:.2f}元\n"
f"账户状态:{'正常' if acc['is_active'] else '已销户'}\n"
f"交易记录数:{len(acc['transactions'])}条")
return info
except ValueError as e:
return f"查询失败:{str(e)}"
def get_transaction_history(accounts, account_number):
try:
validate_account_exists(accounts, account_number)
acc = accounts[account_number]
if not acc["transactions"]:
return "暂无交易记录"
history = f"\n===== {acc['account_holder']}({account_number})交易记录 =====\n"
for idx, trans in enumerate(acc["transactions"], 1):
history += (f"{idx}. 时间:{trans['timestamp']}\n"
f" 类型:{trans['type']}\n"
f" 金额:{trans['amount']:.2f}元\n"
f" 余额:{trans['balance_after']:.2f}元\n"
f" 备注:{trans['description']}\n"
"-------------------\n")
return history
except ValueError as e:
return f"查询失败:{str(e)}"
def calculate_total_deposits(accounts):
total = sum(acc["balance"] for acc in accounts.values() if acc["is_active"])
return f"\n===== 统计结果 =====\n当前所有活跃账户总存款:{total:.2f}元"
def find_active_accounts(accounts):
active_accs = [(num, info) for num, info in accounts.items() if info["is_active"]]
if not active_accs:
return "暂无活跃账户"
result = "\n===== 活跃账户列表 =====\n"
for num, info in active_accs:
result += (f"账号:{num}\n"
f"户名:{info['account_holder']}\n"
f"余额:{info['balance']:.2f}元\n"
"-------------------\n")
return result
def add_transaction(account, transaction_type, amount, description):
pass
def bank_main():
while True:
choice = show_bank_menu()
if choice == "1":
print("\n===== 账户管理 =====")
print("1. 开户 2. 销户 3. 查询账户信息 4. 修改账户信息 5. 返回主菜单")
sub_choice = input("请选择(1-5):")
if sub_choice == "1":
acc_num = input("输入账号(如622202000002):")
holder = input("输入户名:")
id_card = input("输入18位身份证号:")
try:
initial = float(input("输入初始存款金额:"))
print(create_account(accounts, acc_num, holder, id_card, initial))
except ValueError:
print("错误:初始金额必须是数字")
elif sub_choice == "2":
acc_num = input("输入要销户的账号:")
print(close_account(accounts, acc_num))
elif sub_choice == "3":
acc_num = input("输入要查询的账号:")
print(get_account_info(accounts, acc_num))
elif sub_choice == "4":
acc_num = input("输入要修改的账号:")
new_holder = input("输入新户名:")
elif sub_choice == "5":
continue
else:
print("输入错误,请选择1-5!")
elif choice == "2":
print("\n===== 交易功能 =====")
print("1. 存款 2. 取款 3. 转账 4. 查询交易记录 5. 返回主菜单")
sub_choice = input("请选择(1-5):")
if sub_choice == "1":
acc_num = input("输入存款账号:")
try:
amount = float(input("输入存款金额:"))
print(deposit(accounts, acc_num, amount))
def validate_amount(amount):
if amount <= 0:
raise ValueError("金额必须大于0")
return True
def validate_account_exists(accounts, account_number):
if account_number not in accounts:
raise ValueError("账户不存在")
return True
def validate_sufficient_balance(account, amount):
if account["balance"] < amount:
raise ValueError("余额不足")
return True
zuote1019(2)
books = {
"B001": {
"title": "Python编程",
"author": "张三",
"publisher": "科技出版社",
"total_count": 5,
"available_count": 3
}
}
members = {
"M001": {
"name": "李四",
"phone": "13800138000",
"borrowed_books": ["B001", "B003"]
}
}
borrow_records = [
{
"record_id": "R001",
"book_id": "B001",
"member_id": "M001",
"borrow_date": "2024-01-15",
"due_date": "2024-02-15",
"return_date": None,
"status": "借阅中"
}
]
def show_library_menu():
print('\n图书管理的系统')
print('1.图书管理')
print('2.借阅管理')
print('3.会员管理')
print('4.退出系统')
return input('请选择功能(1-4)')
def add_book(books, book_id, title, author, publisher, count):
if book_id in books:
return '书名已存在'
if count<=0:
return '数量不正确'
books[book_id]= [{
"title": title,
"author": author,
"publisher": publisher,
"total_count": count,
"available": count
}
]
return f'成功添加图书:{title}'
def delete_book(books, book_id):
if book_id not in books:
return '书名不存在'
for record in borrow_records:
if record[book_id]==book_id and record['status']=='借阅中':
return '书还未归还,无法删除'
del books[book_id]
return f'已成功删除图书:{book_id}'
def display_all_books(books):
if not books:
return '没有该图书'
for book_id,title,author,publisher,total_count,available_count in books.items():
result=(f'书号{book_id}'
f'书名{title}'
f'作者{author}'
f'出版社{publisher}'
f'总库存{total_count}'
f'可借库存{available_count}')
return result
def search_books(books, keyword, search_by="title"):
results = []
for book_id, info in books.items():
if keyword.lower() in info[search_by].lower():
results.append({
"book_id": book_id,
"title": info["title"],
"author": info["author"],
"publisher": info["publisher"],
"available": info["available_count"]
})
if not results:
return f"未找到包含 '{keyword}' 的图书"
result = f"\n===== 搜索结果(按{search_by})=====\n"
for book in results:
result += (f"书号:{book['book_id']}\n"
f"书名:{book['title']}\n"
f"作者:{book['author']}\n"
f"出版社:{book['publisher']}\n"
f"可借数量:{book['available']} 本\n"
"-------------------\n")
return result
def register_member(members, member_id, name, phone):
if member_id in members:
return '会员已存在'
if len(phone)!=11:
return '输入错误'
members[member_id]={
"name": name,
"phone": phone,
"borrowed_books": []
}
return f"成功注册会员:{name}(会员号:{member_id})"
def borrow_book(books, members, borrow_records, book_id, member_id):
if book_id not in books:
return "错误:书号不存在!"
if member_id not in members:
return "错误:会员号不存在!"
if books[book_id]["available_count"] <= 0:
return "错误:该图书暂无库存!"
borrow_records.append({
"record_id": 'record_id',
"book_id": book_id,
"member_id": member_id,
"borrow_date": 'today',
"due_date":'due_date',
"return_date": None,
"status": "借阅中"
})
books[book_id]["available_count"] -= 1
members[member_id]["borrowed_books"].append(book_id)
return (f"借阅成功!\n"
f"记录ID:{'record_id'}\n"
f"图书:《{books[book_id]['title']}》\n"
f"应还日期:{'due_date'}")
def return_book(books, members, borrow_records, book_id, member_id):
target_record = None
for record in borrow_records:
if (record["book_id"] == book_id and
record["member_id"] == member_id and
record["status"] == "借阅中"):
target_record = record
break
if not target_record:
return "错误:未找到该会员的此图书借阅记录!"
def calculate_fine(borrow_record):
if borrow_record["status"] != "借阅中":
return 0.0
today = datetime.date.today()
overdue_days = (today - due_date).days
return max(0, overdue_days * 0.5)
def library_main():
while True:
choice = show_library_menu()
if choice == "1":
print("\n===== 图书管理 =====")
print("1. 添加图书 2. 删除图书 3. 显示所有图书 4. 查询图书")
sub_choice = input("请选择(1-4):")
if sub_choice == "1":
book_id = input("输入书号(如B002):")
title = input("输入书名:")
author = input("输入作者:")
publisher = input("输入出版社:")
count = int(input("输入库存数量:"))
print(add_book(books, book_id, title, author, publisher, count))
elif sub_choice == "2":
book_id = input("输入要删除的书号:")
print(delete_book(books, book_id))
elif sub_choice == "3":
print(display_all_books(books))
elif sub_choice == "4":
search_by = input("选择查询方式(title/author/publisher):")
keyword = input(f"输入要查询的{search_by}关键词:")
print(search_books(books, keyword, search_by))
elif choice == "2":
print("\n===== 借阅管理 =====")
print("1. 借阅图书 2. 归还图书 3. 查看借阅记录")
sub_choice = input("请选择(1-3):")
if sub_choice == "1":
book_id = input("输入书号:")
member_id = input("输入会员号:")
print(borrow_book(books, members, borrow_records, book_id, member_id))
elif sub_choice == "2":
book_id = input("输入书号:")
member_id = input("输入会员号:")
print(return_book(books, members, borrow_records, book_id, member_id))
elif sub_choice == "3":
filter_choice = input("按会员号筛选?(y/n):")
member_id = input("输入会员号:") if filter_choice.lower() == "y" else None
filter_choice2 = input("按书号筛选?(y/n):")
book_id = input("输入书号:") if filter_choice2.lower() == "y" else None
elif choice == "3":
print("\n===== 会员管理 =====")
print("1. 注册会员 2. 删除会员 3. 显示所有会员")
sub_choice = input("请选择(1-3):")
if sub_choice == "1":
member_id = input("输入会员号(如M002):")
name = input("输入姓名:")
phone = input("输入11位联系方式:")
print(register_member(members, member_id, name, phone))
elif sub_choice == "2":
member_id = input("输入要删除的会员号:")
elif sub_choice == '3':
pass
elif choice == "4":
print("感谢使用图书馆管理系统,再见!")
break
else:
print("输入错误,请选择1-4之间的数字!")
if __name__ == "__main__":
library_main()

3

被折叠的 条评论
为什么被折叠?



