Python期末大作业 | 管理系统

Python期末大作业——获取北上广深历史天气并做数据可视化 嗨喽,大家好呀~这里是爱看美女的茜茜呐。 阅读详情

在Python的期末大作业中,各种管理系统是非常常见的,如学生管理系统、图书管理系统等。无论是什么管理系统,其核心无非就是“数据操作+用户交互”的组合,现在作者通过一篇文章来讲清如何用python来实现这类项目。

1.实现思路

1.1 管理系统的核心

不管是什么管理系统,本质都是对一类“数据对象”做“CRUD操作”(增、删、改、查),同时确保数据不会丢失。
首先,什么是数据对象?学生管理系统中的“学生”、图书管理系统中的“书”都是数据对象。
所谓的CRUD操作就是对数据对象中的某个属性进行增、删、改、查四个操作。如在图书管理系统中增加一本书,或者修改某本书的数量、价格等。
当管理系统完成了一次CRUD操作后当然需要将数据保存到一个文件中,不然关掉程序后数据会丢失,总不能每次打开都要重新录入数据,所以这里还涉及到了文件操作。

1.2明确需求

这里作者使用图书管理系统为例来讲解。
首先我们来列清需要实现的功能:
对于借阅者来说,应该实现以下基础功能:

  1. 借阅
  2. 归还
  3. 查询

对于管理人员来说,应该实现以下基础功能:

  1. 增加图书
  2. 删除图书
  3. 修改图书信息(数量等)

这里因为仅用于讲解这类项目如何实现,所以只实现基本功能。

1.3 框架搭建

在明确了系统功能需求后,我们进入代码实现的设计阶段。核心思路是采用面向对象编程(OOP)来组织代码,确保结构清晰、可扩展性强。具体框架设计如下:

  • 用户角色划分:系统用户分为借阅者和管理员两类。借阅者负责图书借阅、归还和查询操作;管理员负责增加图书、删除图书和修改图书信息操作。

  • 核心类设计:

    • Book类:用于封装图书数据对象,属性包括图书ID、名称、作者、数量等,并实现基本的数据操作方法(如更新数量)。
    • Borrower类(借阅者):实现借阅、归还和查询功能。
    • Admin类(管理员):实现增加图书、删除图书和修改图书信息功能。
  • 数据持久化:所有操作后的数据需保存到文件(如JSON或CSV格式),避免数据丢失。

这种框架设计不仅符合CRUD操作逻辑,还便于后续功能扩展(如添加日志或权限管理)。

2.代码实现

  1. Book类
    class Book:
        def __init__(self, isbn, name, author, quantity):
            self.isbn = isbn  			# 书的唯一编号
            self.name = name  			# 书名
            self.author = author 		# 作者
            self.quantity = quantity 	# 数量
        def to_dict(self):
            """转换为字典,用于JSON序列化,返回一个包含图书信息的字典"""
            return {
                "isbn": self.isbn,
                "name": self.name,
                "author": self.author,
                "quantity": self.quantity
            }
        @classmethod
        def from_dict(cls, data):
            """从字典创建对象,用于JSON反序列化,从字典创建Book对象"""
            return cls(
                isbn=data["isbn"],
                name=data["name"],
                author=data["author"],
                quantity=data["quantity"]
            )
    
  2. Borrower类
    class Borrower:
        def __init__(self, books):
            self.books = books  # 直接操作内存中的图书列表(后续保存到文件)
        def query_book(self, isbn=None, name=None):
            # 遍历所有图书,找到id或书名符合条件的所有结果
            results = []
            for book in self.books:
                match_id = (isbn is None) or (book.isbn == isbn)
                match_name = (name is None) or (book.name == name)
                if match_id and match_name:
                    results.append(book)
            return results
        def borrow_book(self, isbn, num=1):
            # 首先遍历所有图书,然后找到isbn字段相同的图书
            for book in self.books:
                if book.isbn == isbn:
                	# 借出时需要防止数量不足
                    if book.quantity >= num and book.quantity > 0:
                        book.quantity -= num
                        save_books(self.books)
                        print(f"成功借阅 {num} 本《{book.name}》")
                        return True
                    else:
                        print("图书库存不足,无法借阅")
                        return False
            print("未找到指定ID的图书")
            return False
        def return_book(self, isbn, num=1):
            # 归还时同样遍历所有图书,确定是否是该系统内存在的书,然后再进行归还操作
            for book in self.books:
                if book.isbn == isbn:
                    book.quantity += num
                    save_books(self.books)
                    print(f"成功归还 {num} 本《{book.name}》")
                    return True
            print("未找到指定ID的图书")
            return False
    
  3. Admin类
    class Admin:
        def __init__(self, books):
            self.books = books
        def add_book(self, isbn, name, author, quantity):
            for book in self.books:
            	# 如果新书的id已经存在,说明这本书已经被收录,不能实现添加操作
                if book.isbn == isbn:
                    print("该图书ID已存在,无法添加")
                    return False
            new_book = Book(isbn, name, author, quantity)
            self.books.append(new_book)
            save_books(self.books)
            print("图书添加成功")
            return True
        def delete_book(self, isbn):
            # 删除时需要确认这个id的书是否存在
            for book in self.books:
                if book.isbn == isbn:	# 如果存在则执行删除操作
                    self.books.remove(book)
                    save_books(self.books)
                    print("图书删除成功")
                    return True
            print("未找到指定ID的图书")
            return False
        def modify_book(self, isbn, name=None, author=None, quantity=None):
            """修改图书信息"""
            for book in self.books:
                if book.isbn == isbn:
                    if name:
                        book.name = name
                    if author:
                        book.author = author
                    if quantity is not None:  # 允许数量为0,所以用is not None判断
                        book.quantity = quantity
                    save_books(self.books)
                    print("图书信息修改成功")
                    return True
            print("未找到指定ID的图书")
            return False
    

基本的几个类实现后,创建用于保存和加载数据的函数:

DATA_FILE = "books.json"  # 设置一个用于存放数据的json文件路径
def load_books():
    """加载图书数据,无文件时返回空列表"""
    try:
        with open(DATA_FILE, "r", encoding="utf-8") as f:
            return [Book.from_dict(book_dict) for book_dict in json.load(f)]
    except FileNotFoundError:
        return []
def save_books(books):
    """保存图书数据到JSON文件"""
    with open(DATA_FILE, "w", encoding="utf-8") as f:
        json.dump(
            [book.to_dict() for book in books],
            f,
            ensure_ascii=False,
            indent=2
        )

然后写一个主函数用于启动程序,这里我们使用一个while循环来实现持续操作,进入系统后给用户一个选择身份的菜单,然后通过用户的选择进入子循环,然后在子循环中实现不同用户的具体操作。

# 主函数的大致框架
def main():
	while True:
		# 输出菜单
		# 1 借阅者;2 管理者;3 退出
		# 接收用户的选择(1/2/3)
		choice = input()
		if choice == '1':
			while True:
				# 输出对应的菜单
				# 接收用户的选择
				# 根据选择进入不同的分支完成对应的操作
				pass
		elif choice == '2':
			while True:
				# 输出对应的菜单
				# 接收用户的选择
				# 根据选择进入不同的分支完成对应的操作
				pass
		elif choice == '3':
			exit()
		else:
			print("选择错误")
		

下面是完整代码:

def main():
    books = load_books()  # 加载初始数据
    while True:
        print("\n======================")
        print("   图书管理系统菜单   ")
        print("======================")
        print("1. 以借阅者身份登录")
        print("2. 以管理员身份登录")
        print("3. 退出系统")
        choice = input("请输入选择(1/2/3):")
        if choice == "1":
            borrower = Borrower(books)
            while True:
                print("\n------ 借阅者操作 ------")
                print("1. 查询图书(按ID/名称)")
                print("2. 借阅图书")
                print("3. 归还图书")
                print("4. 返回上一级")
                sub_choice = input("请输入操作(1/2/3/4):")
                if sub_choice == "1":
                    # 查询功能:支持ID和名称模糊查询(空输入则忽略)
                    book_id = input("图书ID(可选,回车跳过):").strip() or None
                    name = input("图书名称(可选,回车跳过):").strip() or None
                    results = borrower.query_book(book_id, name)
                    if results:
                        print("\n查询结果:")
                        for book in results:
                            print(f"ID: {book.isbn} | 名称: {book.name} | 作者: {book.author} | 库存: {book.quantity}")
                    else:
                        print("未找到符合条件的图书")
                elif sub_choice == "2":
                    # 借阅功能
                    book_id = input("要借阅的图书ID:")
                    num = input("借阅数量(默认1):").strip()
                    num = int(num) if num else 1  # 空输入则默认借1本
                    borrower.borrow_book(book_id, num)
                elif sub_choice == "3":
                    # 归还功能
                    book_id = input("要归还的图书ID:")
                    num = input("归还数量(默认1):").strip()
                    num = int(num) if num else 1  # 空输入则默认还1本
                    borrower.return_book(book_id, num)
                elif sub_choice == "4":
                    break # 返回上一级菜单
                else:
                    print("无效选项,请重新输入")
        elif choice == "2":
            admin = Admin(books)
            while True:
                print("\n------ 管理员操作 ------")
                print("1. 新增图书")
                print("2. 删除图书")
                print("3. 修改图书信息")
                print("4. 查看所有图书")
                print("5. 返回上一级")
                sub_choice = input("请输入操作(1/2/3/4/5):")
                if sub_choice == "1":
                    # 新增图书
                    book_id = input("图书ID:")
                    name = input("图书名称:")
                    author = input("作者:")
                    quantity = input("库存数量:")
                    try:
                        quantity = int(quantity)
                        admin.add_book(book_id, name, author, quantity)
                    except ValueError:
                        print("库存数量必须为整数,请重新输入")
                elif sub_choice == "2":
                    # 删除图书
                    book_id = input("要删除的图书ID:")
                    admin.delete_book(book_id)
                elif sub_choice == "3":
                    # 修改图书(支持部分字段更新)
                    book_id = input("要修改的图书ID:")
                    name = input("新名称(可选,回车跳过):").strip() or None
                    author = input("新作者(可选,回车跳过):").strip() or None
                    quantity = input("新库存(可选,回车跳过):").strip()
                    quantity = int(quantity) if quantity else None  # 空输入则不修改数量
                    admin.modify_book(book_id, name, author, quantity)
                elif sub_choice == "4":
                    # 查看所有图书
                    print("\n当前图书列表:")
                    for book in books:
                        print(f"ID: {book.isbn} | 名称: {book.name} | 作者: {book.author} | 库存: {book.quantity}")
                elif sub_choice == "5":
                    # 返回上一级菜单
                    break
                else:
                    print("无效选项,请重新输入")
        elif choice == "3":
            # 退出系统
            print("系统已退出!")
            break
        else:
            print("无效选择,请重新输入")

3.总结

到这里,已经完成了基本功能,并实现了基于控制台的用户交互模式。现实中的管理系统功能更复杂,涉及用户的权限分级、数据加密、多端同步等,交互界面不再是控制台,而是网页或GUI程序,数据的存储是通过数据库来完成,同时程序还需要考虑高并发等需求,但核心依旧是围绕CRUD和用户交互展开的。

python大作业代码及文档,python期末大作业题目 大家好,给大家分享一下python大作业代码及文档,很多人还不知道这一点。2.每一列空格部分都使用前后两个值进行“线性插值”填空,以月为单位进行插值。将多幅图片组织为mp4格式视频,帧率设置为每秒12帧。1.每一列最前面的正整数之前全部设为0。先进行一些库的引入和常规操作。 阅读详情

相关推荐

Python Flask教务管理系统期末大作业完整项目实战

经过这一趟完整的开发之旅,相信你已经掌握了构建专业级Flask应用的核心能力。最后送大家三条心法:分层思维 > 技术堆砌- 不要一开始就想用多少酷炫技术- 先想清楚MVC各层职责边界- 比如模板层绝不出现数据库查询安全是默认选项,不是附加功能- XSS防护不是“要不要做”,而是“怎么做更好”- 每个接口都要问:谁可以访问?有没有越权风险?自动化胜过重复劳动- 手动部署十次必有一次出错- 用Docker+CI/CD实现一键发布。

weixin_42163404的博客 962

Python综合练习:期末大作业使用openpyxl进行模拟学生宿舍管理系统设计与开发

Python综合练习:期末大作业使用openpyxl进行学生宿舍管理系统设计与开发

m0_65723013的博客 1万+

python期末大作业(图书馆管理系统)

python实现图书馆管理系统,采用新用户注册登录、老用户登录系统,以及设置两套管理员密码,保障存入信息的安全性。登入系统内部,主要实现查看图书、图书入库、图书出库、更新图书、借阅图书、归还图书等功能。使用者主要是图书管理员。

【python程序设计】——期末大作业

python期末大作业的实现

小梦的博客 7818

STM32:TTL串口调试

TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

superSmart_Dong的博客 5640

多机器人编队人工势场法协同避障算法原理及实现

ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现避障算法原理避障算法仿真 多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成、保持、变换和路径规划与避障等等都是基于图论的理论基础完成的。 详细请参考ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现 自主避障功能是机器人编队在各种环境中保持自身安全的重要功能,在编队的基础上加入避障的功能,机器人可扫描到一定范围内的障碍物(包括其他机器人),在即将与之发生冲突时提前规避冲突,以保证自身的安全性,同时

Redglass的博客 1万+

Python 宿舍管理管理系统 期末大作业参考

学生入住管理:涵盖登记、退宿和宿舍调换。宿舍房间分配与管理:合理安排和高效利用宿舍房间。宿舍设施维护与管理:保障宿舍环境的舒适性和便利性。宿舍卫生管理:营造整洁卫生的生活环境。宿舍安全保障措施:维护学生人身及财产安全。

weixin_41223575的博客 546

2025.03.14【读书笔记】|GWAS分析神器:BOLT-LMM工具介绍与快速安装

在生物信息学领域,全基因组关联分析(GWAS)已成为揭示遗传与疾病关系的强有力工具。BOLT-LMM作为一款专为大规模样本量设计的GWAS分析工具,将极大地提高研究人员的工作效率。大家好,今天我们来聊聊一个非常强大的生物信息学工具——BOLT-LMM。它是基于线性混合模型(LMM)的全基因组关联分析(GWAS)分析工具,通过快速的方差近似方法在计算效率上实现了显著的提升。BOLT-LMM的高效性能使其成为大规模样本GWAS分析的理想选择,它将进一步推动生物信息学和遗传学研究的发展。

1093

Python 课程设计期末大作业:学生管理系统

Python 课程设计期末大作业:学生管理系统 【下载地址】Python课程设计期末大作业学生管理系统 本仓库提供了一个完整的Python课程设计期末大作业——学生管理系统。该系统涵盖了学生信息管理的基本功能,包括学生信息的录入、查询、修改和删除等操作。此外,系统还包含一个简单的登录页面,确保只有授权用户才能访问系统 ...

gitblog_06682的博客 442

MAIXCAM无线连接实战:5分钟搞定远程调试与代码烧录(避坑版)

本文提供了一份详细的MAIXCAM无线连接实战指南,帮助嵌入式视觉开发者快速配置远程调试与代码烧录。文章重点介绍了通过MaixHub IDE进行Wi-Fi配置、建立远程终端连接、使用SFTP进行文件传输以及管理自启动应用程序的完整流程,并针对IP地址变动、信号中断等常见问题提供了实用的避坑解决方案,旨在提升开发效率与灵活性。

weixin_29188043的博客 299

AVDepthData、LiDAR 深度数据与人像模式全解析:iOS 真实景深图采集与处理实战

在 iOS 高端影像系统中,真实景深信息的采集与利用已成为区分旗舰设备与基础设备的重要能力。Apple 自 iPhone 7 Plus 引入双摄虚化以来,逐步发展出基于 AVDepthData、TrueDepth 与 LiDAR 的多维深度感知技术,并开放接口供开发者获取高精度深度图,构建背景虚化、人像分割、3D 重建等多种功能。本文将深入解析 AVDepthData 的结构与使用方式,系统讲解 LiDAR 采集架构、人像模式的景深融合逻辑,以及如何在实际项目中采集、预览并处理深度图数据,实现具备工程可用性

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1863

python期末大作业:学生信息管理系统(界面+数据库)!

大学生党们又到期末了,今天跟大家分享一下一个python期末大作业的开发思路。大家可以参考思路自己修改完善。我们讲解的是学生信息管理系统。界面还是用tkinter做,数据库使用sqlite。先看一下软件截图数据库设计编写过程1.导库2.初始化3.定义软件主界面函数4.定义添加学生信息子界面函数5.定义显示所有学生信息子界面函数6.定义查找/修改/删除学生信息子界面函数7.在程序主入口调用main()函数,启动软件主界面。

Python_trys的博客 1057

【GameFramework框架内置模块】8、文件系统(File System)

最近好忙,鸽了好久。不能颓废了,继续发力。今天分享的是GF框架的文件系统。首先,引用比较官方的说法:GF的FileSystem虚拟文件系统,使用类似磁盘存储的感念对零散的文件进行集中管理,优化资源加载时产生的内存分配,也可以对资源进行局部片段加载,极大的提升了资源加载的性能。通俗点讲就是,我这个模块就是加载磁盘文件的,优化加载时产生的内存分配。那么,它是怎么优化的呢?

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2452

python程序设计期末大作业,python大作业代码100行

哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,手把手带领大家用python实现学生信息管理系统~ 都是精华内容,可不要错过哟!!!😍😍😍本篇文章旨在分享的是【python程序设计】——期末大作业。希望大家通过阅读此文有所收获!完整的代码和项目文件后续会上传到个人资料主页,有需要的可以下载获取~😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。

2401_84503581的博客 903

8、 使用TPM密钥:从理论到实践的全面指南

本文全面介绍了如何使用TPM(可信平台模块)进行密钥管理,涵盖密钥的创建、存储、加载、迁移以及特殊密钥类型的使用。通过详细的操作步骤和代码示例,帮助读者掌握TPM密钥管理技术,确保系统的安全性和可靠性。

weixin_36212459的博客 242

Open3D点云数据处理(二):读写点云,你真的会吗?

本文详细介绍了open3d加载点云、保存点云的方法,同时打印点云坐标、颜色、法向量等字段信息。

孙悟空 2604

Python基于Flask框架期末大作业之教务管理系统

本项目是基于Python的Flask框架开发的教务管理系统,作为Web开发课程的期末大作业。该系统旨在模拟一个简单的教务管理平台,涵盖学生信息管理、课程管理、成绩管理等核心功能。通过本项目,学生可以深入理解Flask框架的应用,掌握Web开发的基本流程和技巧。 ## 功能模块 1. **学生信息管理**: - 学生信息的录入、修改、删除和查询。 - 学生信息的统计与分析。 2.

gitblog_09706的博客 1026

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

期末大作业:基于Python篮球社团管理系统

1.开发经验总结通过本项目,熟悉了 Python 的面向对象编程和列表操作的实际应用;列表用于存储成员数据,类用于封装单个成员信息,使数据管理更高效;模块化设计确保代码逻辑清晰,便于功能扩展和维护。2.遇到的问题与解决方法逻辑错误:在删除功能中,未正确终止循环导致多次删除,通过 return 提前退出函数解决问题;数据处理:列表筛选操作中,通过列表推导式简化了筛选逻辑;输入验证:为防止非法输入导致程序出错,通过数据类型转换和提示信息增强了输入验证功能。

2501_91025807的博客 2767

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

期末大作业:基于Python宠物领养管理系统

在本次《Python实训》课程中,完成了宠物领养系统的设计与开发,通过实践深入理解了Python在实际项目中的应用。系统实现了宠物信息的增删改查、排序、查找、统计及文件存储等功能,采用模块化编程思想,提升了代码的可读性和可维护性。文件操作:通过json模块实现数据的持久化存储,确保程序重启后数据不丢失。异常处理:对用户输入进行校验,避免非法操作导致程序崩溃。功能封装:将不同功能拆分为独立函数,降低代码耦合度。交互设计:通过清晰的菜单引导用户操作,提升系统易用性。

2501_91025807的博客 4260

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python期末大作业(学生成绩管理系统)

Python期末大作业(学生成绩管理系统)

qq_43379059的博客 5872

期末大作业:基于Python学生成绩管理系统

同时,系统的数据持久化功能确保了数据的安全性与可用性,系统的扩展性和易用性也为后续的功能扩展提供了良好的基础。虽然该系统目前有一定的局限性,但随着技术的进步和需求的增长,未来可以通过功能优化和界面改进来提升系统的整体性能和用户体验。尤其是面对日益复杂的教学数据,如何高效、系统地进行学生成绩的记录、查询、统计和分析,成为学校信息化建设的一个重要问题。通过该平台,教师和管理员可以轻松进行学生成绩的录入、修改、查询、删除、排序、统计和展示等操作,并且支持将学生数据保存至文件中,以便长期存储和备份。

2501_91025807的博客 3036

python期末大作业之职工管理系统

需要定制python大作业可以加一下我QQ2597170348或者微信15060269323!以上就是今天的学习内容啦~3.查询员工个人信息。

weixin_65299897的博客 681

Python期末大作业:学生成绩管理系统

本学生成绩管理系统是基于Python语言开发的控制台应用程序,采用了面向对象编程思想和JSON数据持久化方案。系统通过类实现了对学生成绩信息的全面管理,包括增删改查统计分析和文件存储等功能。本文将详细介绍系统的设计思路、核心代码实现以及功能特点。本系统完整实现了学生成绩管理的基本需求,代码结构清晰,功能完善。通过这个项目,深入掌握了:Python面向对象编程字典和列表的高级应用JSON数据序列化文件读写操作控制台程序交互设计未来可扩展方向:增加成绩排序功能。

weixin_62375676的博客 1711

探索宿舍管理新境界:基于Python的期末大作业神器

探索宿舍管理新境界:基于Python的期末大作业神器 去发现同类优质开源项目:https://gitcode.com/ 随着高校宿舍管理需求的日益增长,一个高效、易用的宿舍管理系统成为了教育技术领域的一股清流。今天,我们深入探索一款专为大学生期末大作业打造的开源宝藏——《Python宿舍管理系统小论文期末大作业版》。这不仅是一份资源,更是一把开启优秀学业成果的钥匙。 项目技术分析 这个项目巧妙地运...

gitblog_06672的博客 506

python基于flask框架期末大作业之教务管理系统

python基于flask框架期末大作业之教务管理系统 去发现同类优质开源项目:https://gitcode.com/ 介绍 本项目是web开发课程的一个期末大作业,采用python语言和flask框架开发的一款教务管理系统。系统包含了教务管理的基本功能,旨在帮助学校或教育机构高效地进行学生信息管理、课程安排、成绩录入等日常工作。 功能特点 学生信息管理:支持学生信息的增删改查。 课程安排:实...

gitblog_06743的博客 367

Python基于Flask框架期末大作业 教务管理系统

欢迎探索我们的 Python 教务管理资源库!这是一个基于 Flask 框架构建的 Web 应用程序套件,专为教务管理任务而设计。我们提供了一个全面且易于使用的平台,旨在简化您的日常工作流程。

weixin_41223575的博客 726
下一篇: Python爬虫入门实践之爬取豆瓣top250
moonlight113
博客等级 码龄3年 9粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值