zuoye1019

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值