C# SQL简单图书管理系统(自学记录)

这个图书管理系统是我在B站观看详细的教学视频制作的,B站的那位老师讲的十分的详细,大家可以去看B站那位老师的讲解

视频网址:C# 图书管理系统 winform 入门教程 SqlServer数据库_哔哩哔哩_bilibili

一.Dao类

using System.Data.SqlClient;

namespace BOOK
{
    class Dao
    {
        SqlConnection sc;
        public SqlConnection connect()
        {
            string str = @"Data Source=127.0.0.1;Initial Catalog=student;User ID=sa;Pwd=123456";//注意前面是Data不是Date
            //链接数据库字符串
            SqlConnection sc = new SqlConnection(str);
            //创建数据库链接对象
            sc.Open();
            //打开数据库链接
            return sc;
            //返回数据库对象
        }
        public SqlCommand command(string sql)
        {
            SqlCommand cmd = new SqlCommand(sql, connect());//创建数据库操作对象
            return cmd;//返回数控库操作对象
        }
        public int Execute(string sql)//更新操作
        {
            return command(sql).ExecuteNonQuery();
        }
        public SqlDataReader read(string sql)//读取操作
        {
            return command(sql).ExecuteReader();
        }
        public void DaoClose()
        {
            //sc.Close();//关闭数据库链接
        }
    }
}

二.Data类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BOOK
{
    class Data
    {
        public static string UID = "", UName = "";//登录用户的id和姓名
    }
}

三·登录界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BOOK
{
    public partial class login : Form
    {
        public login()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "")//判断是否为空
            {
                Login();
            }
            else
            {
                MessageBox.Show("输入有空项,请重新输入");
            }
        }
        public void Login()
        {    //用户
            if (radioButtonUser.Checked == true)
            {
                Dao dao = new Dao();
                string sql = "select * from t_user where id='" + textBox1.Text + "' and psw='" + textBox2.Text + "'";
                IDataReader dc = dao.read(sql);
                if (dc.Read())
                {
                    Data.UID = dc["id"].ToString();
                    Data.UName = dc["name"].ToString();

                    MessageBox.Show("yes");
                    user1 user = new user1();
                    this.Hide();//隐藏旧窗体
                    user.ShowDialog();
                    this.Show();
                    
                }
                else
                {
                    MessageBox.Show("no");
                    
                }
                dao.DaoClose();
            }
            //管理员
            if (radioButtonAdmin.Checked == true)
            {
               
                    Dao dao = new Dao();
                    string sql = "select * from t_admin where id='" + textBox1.Text + "' and psw='" + textBox2.Text + "'";
                    IDataReader dc = dao.read(sql);
                    if (dc.Read())
                    {
                        MessageBox.Show("yes");
                        admin1 admin= new admin1();
                        this.Hide();//隐藏旧窗体
                        admin.ShowDialog();
                        this.Show();

                    }
                    else
                    {
                        MessageBox.Show("no");
                        
                    }
                    dao.DaoClose();
                }
                
                
            }

        private void login_Load(object sender, EventArgs e)
        {

        }
    }
    }

四·管理员主界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BOOK
{
    public partial class admin1 : Form
    {
        public admin1()
        {
            InitializeComponent();
        }

        private void admin1_Load(object sender, EventArgs e)
        {

        }

        private void 图书管理ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            admin2 admin = new admin2();
            admin.ShowDialog();
        }

        private void 图书管理ToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            admin2 admin = new admin2();
            admin.ShowDialog();
        }
    }
}

五·图书管理界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BOOK
{
    public partial class admin2 : Form
    {
        public admin2()
        {
            InitializeComponent();
            
        }

        private void admin2_Load(object sender, EventArgs e)
        {
            Table();
            label2.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号
        }
        //从数据库读取数据显示在表中
        public void Table()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = "select * from t_book";
            IDataReader dc = dao.read(sql);
            while(dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(),dc[1].ToString(),dc[2].ToString(),dc[3].ToString(),dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }
        //根据书号显示数据
        public void TableID()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = $"select * from t_book where id='{textBox1.Text}'";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }
        //根据书名显示数据
        public void TableName()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = $"select * from t_book where name like'%{textBox2.Text}%'";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取书号
                label2.Text=id+ dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                DialogResult dr = MessageBox.Show("确认删除吗","信息提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
                if(dr==DialogResult.OK)
                {
                    string sql = $"delete from t_book where id='{id}'";
                    Dao dao = new Dao();
                    if(dao.Execute(sql)>0)
                    {
                        MessageBox.Show("删除成功");
                        Table();
                    }
                    else
                    {
                        MessageBox.Show("删除失败"+sql);
                    }
                    dao.DaoClose();
                }
            }
            catch
            {
                MessageBox.Show("请先在表格中选中要删除的图书记录!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void dataGridView1_Click(object sender, EventArgs e)
        {
            label2.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号
        }

        private void button5_Click(object sender, EventArgs e)
        {
            TableID();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            admin21 admin = new admin21();
            admin.ShowDialog();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            TableName();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Table();
            textBox1.Text = "";
            textBox2.Text = "";
        }
    }
}

六·添加图书界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BOOK
{
    public partial class admin21 : Form
    {
        public admin21()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && textBox5.Text != "")
            {
                Dao dao = new Dao();
                string sql = $"insert into t_book values('{textBox1.Text}','{textBox2.Text}','{textBox3.Text}','{textBox4.Text}',{textBox5.Text})";
                int n = dao.Execute(sql);
                if (n > 0)
                {
                    MessageBox.Show("添加成功");
                }
                else
                {
                    MessageBox.Show("添加失败");
                }
            }
            else
            {
                MessageBox.Show("输入不允许为空");
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
        }

        private void admin21_Load(object sender, EventArgs e)
        {

        }
    }
}

七·用户主界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BOOK
{
    public partial class user1 : Form
    {
        public user1()
        {
            InitializeComponent();
        }

        private void 图书查看和借阅ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            user2 admin = new user2();
            admin.ShowDialog();
        }

        private void 我的图书和归还ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            user3 admin = new user3();
            admin.ShowDialog();
        }

        private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("还想要帮助想的美!");
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

八·图书和借阅界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BOOK
{
    public partial class user2 : Form
    {
        public user2()
        {
            InitializeComponent();
            Table();
        }

        private void user2_Load(object sender, EventArgs e)
        {

        }
        //从数据库读取数据显示在表中
        public void Table()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = "select * from t_book";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取书号
            int number = int.Parse(dataGridView1.SelectedRows[0].Cells[4].Value.ToString());//库存
            if(number<1)
            {
                MessageBox.Show("库存不足");
            }
            else
            {
                string sql = $"insert into t_lend([uid],bid,[datetime])values('{Data.UID}','{id}',GETDATE());update t_book set number=number-1 where id='{id}'";
                Dao dao = new Dao();
                if (dao.Execute(sql) > 1)//执行两条语句,大于1才是都执行了
                {
                    MessageBox.Show($"用户{ Data.UName}借出了图书{id}!");
                    Table();
                }
            }
        }
    }
}

十·借出和归还界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BOOK
{
    public partial class user3 : Form
    {
        public user3()
        {
            InitializeComponent();
            Table();
        }

        private void user3_Load(object sender, EventArgs e)
        {

        }
        public void Table()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = $"select [no],[bid],[datetime] from t_lend where[uid]='{Data.UID}'";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string no = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            string id = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
            string sql = $"delete from t_lend where[no]={no};update t_book set number=number+1where id='{id}'";
            Dao dao = new Dao();
            if(dao.Execute(sql)>1)
            {
                MessageBox.Show("归还成功");
                Table();
            }
        }
    }
}

SQL Server数据库部分

1.t_admin设计部分

2.t_book设计部分

3.t_lend设计部分

4.t_user设计部分

数据库的数据部分我就不一一展示了。我直接整合在一起发了

最后我把完整的C#项目的百度网盘链接也放在这里。但是我建议还是去看看B站那位老师一步一步来亲手操作一下。

链接: https://pan.baidu.com/s/1qV0obKTwv8mKhymMZ1DfAg 提取码: f8w6 复制这段内容后打开百度网盘手机App,操作更方便哦

  • 18
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
SQL数据库项目示例,该项目包含源码和课程设计主题。DROP DATABASE IF EXISTS `BOOK_SYSTEM`; -- 创建DATABASE CREATE DATABASE BOOK_SYSTEM; -- 使用BOOK_SYSTEM USE BOOK_SYSTEM; -- 用户表 CREATE TABLE IF NOT EXISTS `T_USER` ( `ID` int AUTO_INCREMENT NOT NULL, `USER_NAME` varchar(20), `USER_PASSWORD` varchar(20), PRIMARY KEY (`ID`) ); INSERT INTO `T_USER` VALUES ('1', 'crazyit', 'crazyit'); -- 书种类 CREATE TABLE IF NOT EXISTS `T_BOOK_TYPE` ( `ID` int AUTO_INCREMENT NOT NULL, -- 主键生成策略为自动增长 `TYPE_NAME` varchar(50), -- 种类名称 `TYPE_INTRO` varchar(200), -- 种类简介 PRIMARY KEY (`ID`) ); -- 出版社 CREATE TABLE IF NOT EXISTS `T_PUBLISHER` ( `ID` int AUTO_INCREMENT NOT NULL, -- 主键生成策略为自动增长 `PUB_NAME` varchar(50), -- 出版社名称 `PUB_TEL` varchar(50), -- 联系电话 `PUB_LINK_MAN` varchar(50), -- 联系人 `PUB_INTRO` varchar(200), -- 简介 PRIMARY KEY (`ID`) -- 声明主键 ); -- 书 CREATE TABLE IF NOT EXISTS `T_BOOK` ( `ID` int AUTO_INCREMENT NOT NULL, -- ID字段,自增 `BOOK_NAME` varchar(50), -- 书名称 `BOOK_INTRO` varchar(200), -- 书简介 `BOOK_PRICE` double, -- 书的单价 `TYPE_ID_FK` int NOT NULL, -- 种类外键 `PUB_ID_FK` int NOT NULL, -- 出版社外键 `IMAGE_URL` varchar(200), -- 缩略图URL `AUTHOR` varchar(200), -- 作者 `REPERTORY_SIZE` bigint(10), -- 库存数量 FOREIGN KEY (`TYPE_ID_FK`) REFERENCES `T_BOOK_TYPE` (`ID`), -- 声明种类的外键 FOREIGN KEY (`PUB_ID_FK`) REFERENCES `T_PUBLISHER` (`ID`), -- 声明出版社外键 PRIMARY KEY (`ID`) ); -- 交易记录表, 一个交易记录包括多个书的销售记录, 一次交易可能有多本书 CREATE TABLE IF NOT EXISTS `T_SALE_RECORD` ( `ID` int AUTO_INCREMENT NOT NULL, `RECORD_DATE` datetime,-- 交易日期 PRIMARY KEY (`ID`) ); -- 书的销售记录, 一条记录对应一本书 CREATE TABLE IF NOT EXISTS `T_BOOK_SALE_RECORD` ( `ID` int AUTO_INCREMENT NOT NULL, `BOOK_ID_FK` int, -- 销售的书 `T_SALE_RECORD_ID_FK` int, -- 该书的销售记录所对应的交易记录 `TRADE_SUM` int(10), -- 销售数量 FOREIGN KEY (`BOOK_ID_FK`) REFERENCES `T_BOOK` (`ID`), FOREIGN KEY (`T_SALE_RECORD_ID_FK`) REFERENCES `T_SALE_RECORD` (`ID`), PRIMARY KEY (`ID`) ); -- 入库记录表, 一次入库会入多本书 CREATE TABLE IF NOT EXISTS `T_IN_RECORD` ( `ID` int AUTO_INCREMENT NOT NULL, `RECORD_DATE` datetime, -- 入库日期 PRIMARY KEY (`ID`) ); -- 书的入库记录 CREATE TABLE IF NOT EXISTS `T_BOOK_IN_RECORD` ( `ID` int AUTO_INCREMENT NOT NULL, -- ID自增 `BOOK_ID_FK` int, -- 入库的书 `T_IN_RECORD_ID_FK` int, -- 对应的入库记录 `IN_SUM` int(10), -- 入库数量 FOREIGN KEY (`BOOK_ID_FK`) REFERENCES `T_BOOK` (`ID`), -- 声明书的外键 FOREIGN KEY (`T_IN_RECORD_ID_FK`) REFERENCES `T_IN_RECORD` (`ID`), -- 声明入库记录外键 PRIMARY KEY (`ID`) );
数据库课程设计 目录 1. 设计目的(需求分析) 2. 设计内容(概念结构设计) 3. E——R图设计(概念结构设计) 4. 设计过程(逻辑结构设计) 5. 数据库实施阶段 6. 数据库运行和维护阶段 七、总结 数据库设计就是通过设计反映现实世界信息需求的概念数据模型,并将其转成逻辑模型 和物理模型,最终建立为现实世界服务的数据库。 1. 设计目的(需求分析) 1. 图书信息管理 完成图书的录入、修改、删除和查询功能。在查询图书信息时,可以随时查询书库中现 有书籍的类型、书号、作者、单价等。可随时查询书籍借还情况。包括借书人单位、姓 名、借书证号、借书日期和还书日期。任何人可借多种书,任何一种书可为多个人所借 ,借书证号具有唯一性。 2. 未来方便业务往来,需保存出版社先关信息。这些信息包括出版社编号、名称、 电话、邮编、地址等。 2. 设计内容(概念结构设计) 1. 图书信息,编号、名称、价格、出版社、库存量 2. 读者信息,借书证编号、读者名称、登记日期、有效期 3. 借阅信息,借阅编号,图书编号,读者编号,借阅日期,应还日期 三、E----R图设计(概念结构设计) 图书信息ER图 借阅信息ER图 读者信息ER图 将局部ER图合并、转换成全局ER图,完成概念模型的设计 全局ER图 四、设计过程(逻辑结构设计) 1、图书信息数据表 "字段名称 "数据类型 "是否关键字 " "图书编号 "文本 "是 " "出版社 "文本 "否 " "作者 "文本 "否 " "价格 "数字 "否 " "库存量 "数字 "否 " 2、借阅信息数据表 "字段名称 "数据类型 "是否关键字 " "借阅编号 "文本 "是 " "图书编号 "文本 "否 " "读者编号 "文本 "否 " "借书日期 "日期时间 "否 " "还书日期 "日期时间 "否 " "借阅次数 "数字 "否 " 3、读者信息数据表 "字段名称 "数据类型 "是否关键字 " "读者编号 "文本 "是 " "读者姓名 "文本 "否 " "登记日期 "时间日期 "否 " "有效期 "时间日期 "否 " 五、编码 create schema fjm create table fjm.借阅信息 (图书编号 tinyint primary key, 借阅编号 char(10), 读者编号 char(14), 借书日期 char(14), 还书日期 char(14), ) create table fjm.图书信息 (图书编号 char(10) primary key, 图书名称 tinyint not null foreign key references fjm.借阅信息(图书编号), 库存量 char(8), 作者 char(20), 出版社名称 char(24), ) create table fjm.读者信息 (借书证号 tinyint not null foreign key references fjm.借阅信息(图书编号), 读者姓名 char(16), 读者编号 char(10) ) 六、总结 通过这次对图书管理系统的设计,我对sql软件有了进一步的了解。在这次的课程设计事 件中,让我受益匪浅,我上网查看了大量的资料,到图书馆查阅了相关书籍才摸索到一 点思绪。 在课程设计过程中不但能将知识与实践结合,也培养了我的独立思考能力,增加了 我对书本更深一步的了解。 同时我也发现了自身的缺点,没能更好得运用到书本的知识,遇到问题还是要查阅 书籍,我想我以后可以做到更好的。 ----------------------- 数据库sql图书管理系统全文共8页,当前为第1页。 数据库sql图书管理系统全文共8页,当前为第2页。 作者 出版社 图书编号 库存量 价格 图书信息 数据库sql图书管理系统全文共8页,当前为第3页。 借阅编号 读者编号 图书编号 借阅信息 状态 借书日期 还书时间 借阅次数 读者身份证 读者编号 读者姓名 有效期 读者信息 登记日期 数据库sql图书管理系统全文共8页,当前为第4页。 参照 借阅信息 读者信息 读者编号 读者姓名 登记日期 有效期 读者身份证 借阅次数 应还时间 读者编号 图书编号 库存量 图书编号 出版社 作者 价格 借阅编号 借书日期 图书信息 参考 数据库sql图书管理系统全文共8页,当前为第5页。 数据库sql图书管理系统全文共8页,当前为第6页。 数据库sql图书管理系统全文共8页,当前为第7页。 数据库sql图书管理系统全文共8页,当前为第8页。
WinForm是一种用于Windows桌面应用程序开发的技术,它可以在Windows操作系统上构建具有可视化界面的应用程序。开发图书管理系统,采用WinForm技术是一个不错的选择。下面从以下几个方面详细介绍: 1.用户界面 图书管理系统需要一个良好的用户界面,WinForm可以通过拖放控件、自定义UI等方式来实现这一点。例如,可以在界面中添加图书图书库存、图书借阅等控件,通过设置它们的属性来设置控件大小、颜色、位置等信息,从而创建美观的用户界面。 2.数据库管理 图书管理系统需要管理大量的图书数据,因此需要一个强大的数据库管理系统。WinForm可以与多种数据库管理系统一起使用,例如SQL Server、MySQL等。通过使用这些数据库管理系统,可以轻松地进行数据的添加、修改、删除、查询等操作。 3.打印 图书管理系统需要打印各种报表、借书单等,WinForm内置了打印支持,可以使用PrintDocument类实现打印,而不需要重新编写底层的打印逻辑,这极大地提高了开发的效率。 4.安全性 图书管理系统需要保证数据的安全性,WinForm可以集成Windows身份验证和授权来为应用程序提供安全性。管理员可以通过设置权限来控制不同用户的操作,从而保证系统的安全性。 综上所述,采用WinForm技术开发图书管理系统,可以有效提升开发效率、增强用户体验、提升系统的安全性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲瑿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值