数据结构课程设计—图书管理系统

/***********************************************************  
* 版权所有 (C)2016,test 
*  
* 文件名称: main.cpp  
* 文件标识:main  
* 内容摘要:函数文件  
* 其它说明:主函数  
* 当前版本: V8.0  
* 作 者:李晓钰 
* 完成日期: 20161227  
*  
* 修改记录1:  
* 修改日期 :20161225  
* 版本号: V1.0  
* 修改人: 李晓钰 
* 修改内容:整理思路,创建基本架构  
*  
* 修改记录2:  
* 修改日期:20161225  
* 版本号: V2.0  
* 修改人: 李晓钰 
* 修改内容:添加基本功能  
*  
* 修改记录3:  
* 修改日期: 20161226  
* 版本号: V3.0  
* 修改人: 李晓钰 
* 修改内容:修复大量的BUG  
*  
* 修改记录4:  
* 修改日期: 20161226 
* 版本号: V4.0  
* 修改人:李晓钰
* 修改内容:探索新功能 
*  
* 修改记录5:  
* 修改日期: 20161227 
* 版本号: V5.0  
* 修改人: 李晓钰  
* 修改内容:测试运行 发现问题 
*  
* 修改记录6:  
* 修改日期: 20161227 
* 版本号: V6.0  
* 修改人:李晓钰 
* 修改内容:更改功能 测试运行 
*  
* 修改记录6:  
* 修改日期: 20161228  
* 版本号: V7.0  
* 修改人: 李晓钰 
* 修改内容:完善系统的功能 
*  
* 修改记录6:  
* 修改日期: 20161228  
* 版本号: V8.0  
* 修改人: 李晓钰 
* 修改内容:将程序添加注释,将初始化数据变成文件存储,修改小部分不完善的地方  
**********************************************************/ 


library.h

#include <iostream>  
using namespace std;  
#include <cstdlib>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <fstream>  
#include <iomanip>   
#define MAX    100   
#define MaxSize 100              //100条记录  
//定义希尔排序结构体  
typedef char InfoType[10];  
typedef struct          //记录类型  
{  
    int key;        //关键字项  
  
} RecType;              //排序的记录类型定义  
//书的结构体  
typedef struct book  
{  
    float price;                //图书单价   
    char name[80];              //图书名  
    long num;                   //图书编号  
    char writername[20];        //作者姓名  
    char publish[40];           //出版社名称    
    struct book *next;          //结点指针  
} Book,*BookList;  
//界面  
void Face();  
void FaceBook();  
void FaceBookSearh();   
//初始化  
Book *Init_B();                             //初始化图书链表  
int BookAdd(BookList &);                    //建立一个带头结点的链表用来存储图书信息  
//查询图书方式  
int BookSearch(BookList &);                 //图书查询菜单  
int Search_BookNum(BookList &);             //按编号查询  
int Search_BookName(BookList &);            //按书名查询  
int Search_BookWritername(BookList &);      //按作者名查询   
int Search_AllB(BookList &);                //查询所有图书信息  
//删除图书  
int BookDel(BookList &);                    //以图书编号作为主键进行删除  
//修改图书信息  
int BookChange(BookList &);  
//排序函数  
int BookPai(BookList &);  
void ShellSort(RecType [],int);  
//全局变量声明  
extern RecType R[MaxSize];  
extern int xer;  
extern int X[100];  
  



/********************************************************* 
* 功能描述:初始化图书链表 
* 输入参数:无 
* 输出参数:无 
* 返回值  :图书链表 
* 其它说明:无 
************************************************************/  
//增加图书  
Book *Init_B()                  //初始化图书链表  
{  
    Book *H;  
    H=(Book *)malloc(sizeof(Book));  
    if(!H) exit(1);  
    H->next=NULL;  
    return H;  
}  

/********************************************************* 
* 功能描述:新建图书 
* 输入参数:X[xer]-图书编号 
* 输出参数:是否成功增加 
* 返回值  :(1) 
* 其它说明:无 
************************************************************/  
int BookAdd(BookList &H)        //建立一个带头结点的链表用来存储图书信息  
{  
    int i=0;                    //统计要增加的图书量  
    Book *p,*q;  
    p=(Book *)malloc(sizeof(Book));  
    if(!p) exit(1);  
    if(H->next==NULL)        //记录第一本书
    {  
        cout<<"                        ○输入图书编号:";  
        cin>>p->num;  
        X[xer]=p->num;  
        if(p->num==0)           //退出"增加图书"  
        {  
            cout<<"                                                   共计"<<i<<"本图书入库!"<<endl;  
            cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
            return 1;  
        }  
        cout<<"                        ○输入书名:";  
        cin>>p->name;  
        cout<<"                        ○输入图书价格:";  
        cin>>p->price;  
        cout<<"                        ○输入作者姓名:";  
        cin>>p->writername;  
        cout<<"                        ○输入出版社名称:";  
        cin>>p->publish;  
        p->next=NULL;  
        H->next=p;  
        q=p;  
        i++;  
        cout<<endl<< X[xer];  
        xer++;  
    }  
  
    else                                    
    {  
        q=H;  
        while(q->next!=NULL)  
            q=q->next;  
        p->num=1;                      //进入循环的条件  记录往后的每一本
        p->next=NULL;  
    }  
    while(p->num!=0)                   //以图书编号作为判断链表是否结束  
    {  
        p=(Book *)malloc(sizeof(Book));  
        if(!p) exit(1);  
        cout<<"                        ○输入图书编号:";  
        cin>>p->num;  
        //希尔数组的加入  
        X[xer]=p->num;  
        if(p->num==0)                  //退出"增加图书"  
        {  
            cout<<"                                                    共计"<<i<<"本图书入库!"<<endl;  
            cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
            break;  
        }  
        cout<<"                        ○输入书名:";  
        cin>>p->name;  
        cout<<"                        ○输入图书价格:";  
        cin>>p->price;  
        cout<<"                        ○输入作者姓名:";  
        cin>>p->writername;  
        cout<<"                        ○输入出版社名称:";  
        cin>>p->publish;  
        p->next=NULL;  
        q->next=p;  
        q=p;  
        i++;  
        //希尔数组的加入  
  
        cout<<endl<< X[xer];  
        xer++;  
    }  
    return 1;  
}  

/********************************************************* 
* 功能描述:查询图书选择模块 
* 输入参数:0~9(对应相应功能) 
* 输出参数:相应界面 
* 返回值  :(1) 
* 其它说明:0是退出 
************************************************************/  
int BookSearch(BookList &H)  
{  
    int m;  
    while(m!=0)  
    {  
        FaceBookSearh();  
        cin>>m;  
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
        switch(m)  
        {  
        case 1:  
            Search_BookName(H);  
            break;        //按书名查询  
        case 2:  
            Search_BookNum(H);  
            break;         //按编号查询  
        case 3:  
            Search_BookWritername(H);  
            break;  //按作者名查询
        case 4:  
            Search_AllB(H);  
            break;            //查询所有图书信息  
        case 0:  
            break;                            //退出  
        }  
    }  
    return 1;  
}  


/********************************************************* 
* 功能描述:查询图书 
* 输入参数:n-要查询的书名 
* 输出参数:要查询书的信息 
* 返回值  :(1) 
* 其它说明:按书名查询 
************************************************************/  
int Search_BookName(BookList &H)            //按书名查询  
{  
    Book *p;  
    p=H->next;  
    char n[80];  
    int flag=0;                    //找的书的标志
    cout<<"                           ○输入要查询的书名:";  
    cin>>n;  
    for(; p!=NULL; p=p->next)  
    {  
        if(strcmp(p->name,n)==0)  
        {  
            if(flag==0)  
                cout<<endl<<"书名       编号        单价        作者        出版社            "<<endl;  
            cout<<" "<<p->name<<"  "<<setw(10)<<p->num<<setw(12)<<p->price<<setw(11)<<p->writername<<setw(13)<<p->publish<<endl;
            flag=1;  
            continue;  
        }  
    }  
    cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    if(p==NULL&&flag==0)  
    {  
        cout<<"                          ※没有相关信息!※"<<endl;  
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    }  
    return 1;  
}  

/********************************************************* 
* 功能描述:查询图书 
* 输入参数:n-书的编号 
* 输出参数:查询的相应信息 
* 返回值  :(1) 
* 其它说明:按编号查询 
************************************************************/  
//查询图书方式  
int Search_BookNum(BookList &H)             //按编号查询  
{  
    Book *p;  
    p=H->next;  
    long n;  
    int flag=0;  
    cout<<"                        ○输入要查询的书的编号:";  
    cin>>n;  
    for(; p!=NULL; p=p->next)  
    {  
        if(n==p->num)  
        {  
            if(flag==0)  
                cout<<endl<<"书名       编号        单价        作者        出版社        "<<endl;  
            cout<<" "<<p->name<<"  "<<setw(10)<<p->num<<setw(12)<<p->price<<setw(11)<<p->writername<<setw(13)<<p->publish<<endl;  
            flag=1;  
            continue;  
        }  
    }  
    cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    if(p==NULL&&flag==0)  
    {  
        cout<<"                        ※没有相关信息※!"<<endl;  
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    }  
    return 1;  
}  


/********************************************************* 
* 功能描述:查询图书 
* 输入参数:n-书的作者名 
* 输出参数:查询的相应信息 
* 返回值  :(1) 
* 其它说明:按作者名查询 
************************************************************/
int Search_BookWritername(BookList &H)      //按作者名查询  
{  
    Book *p;  
    p=H->next;  
    int flag=0;  
    char n[30];  
    cout<<"                        ○输入要查询的书的作者名:";  
    cin>>n;  
    for(; p!=NULL; p=p->next)  
    {  
        if(strcmp(p->writername,n)==0)  
        {  
            if(flag==0)  
                cout<<endl<<"书名       编号        单价        作者        出版社        "<<endl;  
            cout<<" "<<p->name<<"  "<<setw(10)<<p->num<<setw(12)<<p->price<<setw(11)<<p->writername<<setw(13)<<p->publish<<endl;  
            flag=1;  
            continue;  
        }  
    }  
    cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    if(p==NULL&&flag==0)  
    {  
        cout<<"                         ※没有相关信息!※"<<endl;  
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    }  
    return 1;  
}  

/********************************************************* 
* 功能描述:查询图书 
* 输入参数:无 
* 输出参数:图书信息 
* 返回值  :(1) 
* 其它说明:显示所有信息 
************************************************************/  
int Search_AllB(BookList &H)               //查询所有图书信息  
{  
    Book *p;  
    p=H->next;  
    int i=0,flag=0;  
    for(; p!=NULL; p=p->next)  
    {  
        if(flag==0)  
            cout<<endl<<"书名       编号        单价        作者        出版社        "<<endl;  
        cout<<" "<<p->name<<"  "<<setw(10)<<p->num<<setw(12)<<p->price<<setw(11)<<p->writername<<setw(13)<<p->publish<<endl;  
        flag=1;  
        i++;  
    }  
    cout<<"                                                         共计"<<i<<"本书。"<<endl;  
    cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    return 1;  
}  


/********************************************************* 
* 功能描述:实现编号排序 
* 输入参数:无 
* 输出参数:排序后的编号 
* 返回值  :(1) 
* 其它说明:希尔排序 
************************************************************/  
void ShellSort(RecType R[],int n)   //希尔排序算法  (此处利用数组进行排序)
{  
    int i,j,gap;  
    RecType tmp;  
    gap=n/2;                //增量置初值  
    while (gap>0)  
    {  
        for (i=gap; i<n; i++) //对所有相隔gap位置的所有元素组进行排序  
        {  
            tmp=R[i];  
            j=i-gap;  
            while (j>=0 && tmp.key<R[j].key)//对相隔gap位置的元素组进行排序  
            {  
                R[j+gap]=R[j];  
                j=j-gap;  
            }  
            R[j+gap]=tmp;  
            j=j-gap;  
        }  
        gap=gap/2;  //减小增量  
    }  
}  


int BookPai(BookList &H)  
{  
    Book *p;  
    p=H->next;  
    int i;  
  
  
    for(i=0; i<xer; i++)  
        R[i].key=X[i];  
    cout<<"排序前:"<<endl;  
  
    for(; p!=NULL; p=p->next)  
    {  
        cout<<endl<<"书名       编号        单价        作者        出版社        "<<endl;  
        cout<<" "<<p->name<<"  "<<setw(10)<<p->num<<setw(12)<<p->price<<setw(11)<<p->writername<<setw(13)<<p->publish<<endl;  
    }  

  
    ShellSort(R,xer);  
  
    cout<<"排序后编号:"<<endl;  
  
    for(i=0; i<xer; i++)  
  
        cout<<R[i].key<<endl;  
  
    return 1;  
}  

/********************************************************* 
* 功能描述:删除图书 
* 输入参数:n-删除的书的编号 
* 输出参数:是否删除 
* 返回值  :(1) 
* 其它说明:按图书编号删除 
**********************************************************/  
//删除图书  
int BookDel(BookList &H)                           //以图书编号作为主键进行删除  
{  
    Book *p;  
    long n;  
    int flag=0;        
    p=H;  
    cout<<"                           ○输入要删除的书的编号:";  
    cin>>n;  
    for(; p!=NULL; p=p->next)  
    {  
        if(p->next!=NULL&&p->next->num==n)  
        {  
            p->next=p->next->next;            //删除语句  
            cout<<"                              √成功删除!"<<endl;  
            cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
            flag=1;                           //成功删除标记  
            break;  
        }  
    }  
    if(p==NULL&&flag==0)  
    {  
        cout<<"                               删除失败!"<<endl;           //已经被删除或没有这本书  
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    }  
    return 1;  
}  


/********************************************************* 
* 功能描述:修改图书 
* 输入参数:n-修改的书的编号 
* 输出参数:是否修改成功 
* 返回值  :(1) 
* 其它说明:按图书编号修改 
************************************************************/  
//修改图书信息  
int BookChange(BookList &H)                           //以图书编号作为主键进行修改  
{  
    Book *p;  
    long n;  
    int flag=0;  
    p=H;  
    cout<<"                           ○输入要修改的书的编号:";  
    cin>>n;  
    for(; p!=NULL; p=p->next)  
    {  
        if(p->num==n)  
        {  
            cout<<"以下为要修改的图书:"<<endl<<"书名       编号        单价        作者        出版社      "<<endl;  
            cout<<" "<<p->name<<"  "<<setw(10)<<p->num<<setw(12)<<p->price<<setw(11)<<p->writername<<setw(13)<<p->publish<<endl; 
            cout<<"                       请输入相应修改数据"<<endl;  
            cout<<"                        ○输入编号:";  
            cin>>p->num;  
            cout<<"                        ○输入书名:";  
            cin>>p->name;  
            cout<<"                        ○输入图书价格:";  
            cin>>p->price;  
            cout<<"                        ○输入作者姓名:";  
            cin>>p->writername;  
            cout<<"                        ○输入出版社名称:";  
            cin>>p->publish;  
            cout<<"                              √成功修改!"<<endl;  
            cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
            flag=1;                           //成功修改标记  
            break;  
        }  
    }  
    if(p==NULL&&flag==0)  
    {  
        cout<<"                            ERROR!   修改失败,没有这本书!"<<endl;           //没有这本书  
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
    }  
  
    return 1;  
}  

三个界面的设计:

/********************************************************* 
* 功能描述:欢迎界面 
* 输入参数:无 
* 输出参数:无 
* 返回值  :无 
* 其它说明:界面1 
************************************************************/  
void Face()  
{  
    system("color 74");  
    cout<<endl<<"   ———————————— 欢迎进入图书管理系统 ———————————"<<endl;  
    cout<<endl<<"                  ┏━━━━━━━━━━━━━━━━━━┓"<<endl;  
    cout<<"                  ┃                                    ┃"<<endl;  
    cout<<"                  ┃           ◆1◆ 管理图书           ┃"<<endl;  
    cout<<"                  ┃                                    ┃"<<endl;  
    cout<<"                  ┃           ◆0◆ 退出系统           ┃"<<endl;  
    cout<<"                  ┃                                    ┃"<<endl;  
    cout<<"                  ┗━━━━━━━━━━━━━━━━━━┛"<<endl;  
    cout<<"                          →请在此输入您的选择:";  
}  


/********************************************************* 
* 功能描述:图书查询界面 
* 输入参数:无 
* 输出参数:无 
* 返回值  :无 
* 其它说明:界面2 
************************************************************/  
void FaceBookSearh()  
{  
    cout<<"                          ◢━━━━━━━━━━━◣"<<endl;  
    cout<<"                          ┃#欢迎进入图书查询系统#┃"<<endl;  
    cout<<"                          ◥━━━━━━━━━━━◤"<<endl;  
    cout<<"             ┌──────────────┐ "<<endl;  
    cout<<"             │ ① 按书名查询 ----- (NAM) #│ "<<endl;  
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │ ② 按编号查询 ----- (NUM) #│ "<<endl;  
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │ ③ 按作者名查询 --- (SEX) #│ "<<endl;     
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │ ④ 查询所有信息 --- (TIME)#│ "<<endl;  
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │  0. 退   出 ------- (ESC) #│ "<<endl;  
    cout<<"             └──────────────┘ "<<endl;  
    cout<<"                           →请在此输入您的选择:";  
}   


/********************************************************* 
* 功能描述:图书管理界面 
* 输入参数:无 
* 输出参数:无 
* 返回值  :无 
* 其它说明:界面1 
************************************************************/  
void FaceBook()  
{  
  
    cout<<"                         ◢━━━━━━━━━━━◣"<<endl;  
    cout<<"                         ┃#欢迎进入图书管理系统#┃"<<endl;  
    cout<<"                         ◥━━━━━━━━━━━◤"<<endl;  
    cout<<"             ┌──────────────┐ "<<endl;  
    cout<<"             │ ① 增加图书 ----- (ADD) #  │ "<<endl;  
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │ ② 查询图书 ----- (SEA) #  │ "<<endl;  
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │ ③ 删除图书 ----- (DEL) #  │ "<<endl;  
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │ ④ 排序图书 ----- (SORT)#  │ "<<endl;   
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │ ⑤ 修改图书 ----- (CHAB)#  │ "<<endl;   
    cout<<"             ├──────────────┤ "<<endl;  
    cout<<"             │  0. 退   出 ----- (ESC) #  │ "<<endl;  
    cout<<"             └──────────────┘ "<<endl;  
    cout<<"                           →请在此输入您的选择:";  
}  


main.cpp:

#include "Library.h"  
#include <iostream>
using namespace std;
#include <cstdlib>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <fstream>  
#include <iomanip>   
int X[100];            //暂存数组  
int xer=0;             //暂存标记  
RecType R[MaxSize];    //哈希数组  
Book *H;               //图书链表  

  
int main()  
{  
  
    FILE *fpb1,*fpb2;              //文件指针  
    Book *p1,*p2,*s1;  
    H=Init_B();  
    fpb1=fopen("book.txt","rb");               //读方式打开图书文件  
    if(fpb1!=NULL)  
    {  
        p1=(Book *)malloc(sizeof(Book));  
        if(!p1) exit(1);  
        p1->next=NULL;  
        while(fread(p1,sizeof(Book),1,fpb1)==1)  
        {  
            if(H->next==NULL)  
            {  
                H->next=p1;  
                s1=p1;  
            }  
            else  
            {  
                s1->next=p1;  
                s1=p1;  
            }  
            p1=(Book *)malloc(sizeof(Book));  
            if(!p1) exit(1);  
            p1->next=NULL;  
        }  
    }  
    int m,n;  
    while(m!=0)  
    {  
        Face();  
        cin>>m;  
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
        if(m==1)  
        {  
            FaceBook();  
            cin>>n;  
            cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;  
            switch(n)  
            {  
            case 1:  
                BookAdd(H);  
                break;           //增加图书  
            case 2:  
                BookSearch(H);  
                break;        //查询图书  
            case 3:  
                BookDel(H);  
                break;           //删除图书  
            case 4:  
                BookPai(H);  
                break;           //排序图书  
            case 5:  
                BookChange(H);  
                break;          //修改图书信息  
            case 0:  
                break;                       //退出图书管理,返回上一层菜单  
            }  
        }  
        else if(m==0)  
        {  
            cout<<endl<<"┅┅┅┅┅┅┅┅┅┅┅┅┅感谢您使用本系统,再见!┅┅┅┅┅┅┅┅┅┅┅┅"<<endl;  
            fpb2=fopen("book.txt","wb");  
            for(p2=H->next; p2!=NULL; p2=p2->next)  
                fwrite(p2,sizeof(Book),1,fpb2);          //写入文件   保存信息
            fclose(fpb2);    
            exit(0);  
        }  
    }  
    return 0;  
}  


运行截图:

测试文件功能:






接着存入两本:



查询图书:

按书名查询:


按编号查询:



按作者查询:



查询全部:



图书排序:



删除图书:





修改图书:




  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值