数据结构期末课程设计

/*
*Copyright (c)2016,烟台大学计算机学院
*All rights reserved.
*文件名称:传写.cpp
*作者:李欣
*完成日期:2016年12月29日

*问题描述:电子投票系统
*版本号:v1.0

*/

 

 

main.cpp

#include"head.h"
httype xinxi[17]; 
toupiaozhe log[100]; 
int renshu=0; 
int dangqian; 
int main() 

    zhizhenchushihua();//将指针数组所有值置为空 
    duqu(xinxi); 
    duqu2(log);//将文件中的信息读入 
    login();//登录 
    zhuhuanying();//欢迎界面 
    cunpan(xinxi); 
    cunpan2(log);//储存信息 
    return 0; 
}

 

 

xinxihanshu.cpp

#include"head.h"
extern struct httype xinxi[17]; 
extern struct toupiaozhe log[100]; 
extern int renshu; 
extern int dangqian; 
/*********************************************************
* 功能描述: 哈希函数 生成数据存储位置
* 输入参数: 候选人的序号
* 输出参数: 无
* 返回值  : 数值取余运算的结果
* 其它说明: 无
************************************************************/ 
int h(int n)   //实现哈希函数 

    return n%17; 

/*********************************************************
* 功能描述: 存储函数 存储候选人的信息到文件
* 输入参数: l[]-存储指针的数组
* 输出参数: f1.txt-输出文件名
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void cunpan(httype l[]) 

    int i=0; 
    httype a; 
    ofstream outfile("f1.txt",ios::binary); 
    if(!outfile) 
    { 
        exit(1); 
    } 
    i=0; 
    while(i<17) 
    { 
        a=l[i]; 
        while(a.link!=NULL) 
        { 
            outfile<<a.link->name<<' '<<a.link->num<<' '<<a.link->zijie<<' '<<a.link->sex<<' '<<a.link->piaoshu; 
            outfile<<"\r\n"; 
            a.link=a.link->next; 
        } 

        i++; 
    } 
    outfile.close(); 

/*********************************************************
* 功能描述: 读取函数 读取候选人的信息到文件
* 输入参数:`无
* 输出参数: ht[]-指针数组
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void duqu(httype ht[]) 

    int i,j; 
    xuanshou *q; 
    ifstream infile("f1.txt",ios::binary); 
    if(!infile) 
    { 
        cout<<"您是第一次使用本系统"<<endl; 
    } 
    else 
    { 
        for(i=0; i<17; i++) 
        { 
            q=new xuanshou; 
            infile>>q->name>>q->num>>q->zijie>>q->sex>>q->piaoshu; 
            q->next=NULL; 
            j=h(q->num); 
            if(ht[j].link==NULL) 
            { 
                ht[j].link=q; 
            } 
            else 
            { 
                q->next=ht[j].link; 
                ht[j].link=q; 
            } 
            infile.get(); 

        } 
    } 
    infile.close(); 

/*********************************************************
* 功能描述: 哈希函数-建立哈希表
* 输入参数:`xs[]-选手信息
              ht[]-指针数组
              n-需要储存的个数
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void hash(xuanshou xs[],httype ht[],int n) 

    int i,j; //i是计数器,j是制定存储位置的 
    xuanshou *q; 
    for(i=0; i<n; i++) 
    { 

        q=new xuanshou; 
        q->name=xs[i].name; 
        q->num=xs[i].num; 
        q->zijie=xs[i].zijie; 
        q->sex=xs[i].sex; 
        q->piaoshu=xs[i].piaoshu; 
        q->next=NULL; 
        j=h(xs[i].num); 
        if(ht[j].link==NULL) 
        { 
            ht[j].link=q; 
        } 
        else 
        { 
            q->next=ht[j].link; 
            ht[j].link=q; 
        } 
    } 
    cunpan(xinxi); 

/*********************************************************
* 功能描述: 输出函数,显示选手信息
* 输入参数: ht[]-指针数组
* 输出参数: p->num-选手的序号
              p->name->选手的名字
              p->sex->选手的性别
              p->zijie->选手的自我介绍
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
int DispHT(httype ht[]) 

    int i,j=1,k=0; 
    xuanshou *p; 
    for(i=0; i<17; i++) 
    { 
        p=ht[i].link; 
        if(p==NULL) 
            k++; 
        while(p!=NULL) 
        { 
            cout<<j; 
            cout<<" 学号:"<<p->num; 
            cout<<" 姓名:"<<p->name; 
            cout<<" 性别:"<<p->sex; 
            cout<<" 自我介绍:"<<p->zijie; 
            p=p->next; 
            cout<<endl; 
            j++; 
        } 
    } 
    if(k==17) 
    { 
        cout<<"管理员未在此系统中登入信息。"<<endl; 
        return 1; 
    } 

/*********************************************************
* 功能描述: 初始化-将选手信息录入系统
* 输入参数:`xs[]-选手信息
              xinxi[]-指针数组
              n-需要储存的个数
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void chushihua() 

    int n,cuowu;//n人数 
    int yanzheng; 
    int i=0; 
    xuanshou xs[100]; 
    httype a; 
    cout<<"请输入您想录入的人数"<<endl; 
    cin>>n; 
    while(i<n) 
    { 
        cout<<"学号"<<endl; 
        cin>>xs[i].num; 
        yanzheng=h(xs[i].num); 
        a.link=xinxi[yanzheng].link; 
        while(a.link!=NULL) 
        { 
            if(a.link->num==xs[i].num) 
            { 
                cout<<"您输入的选手已录入系统"<<endl; 
                cout<<"如果想更改选手的信息请按1,重新初始化请按0"<<endl; 
               cin>>cuowu; 
                if(cuowu==1) 
                { 
                    genggai(); 
                } 
                else if(cuowu==0) 
                { 
                    chushihua();  
                    root(1); 
                } 
            } 
            a.link=a.link->next; 
        } 
        cout<<"请输入姓名"; 
        cin>>xs[i].name; 

        cout<<"请输入性别"<<endl; 
        cin>>xs[i].sex; 

        cout<<"请输入自我介绍"<<endl; 
        cin>>xs[i].zijie; 
        i++; 
    } 
   hash(xs,xinxi,n); 

/*********************************************************
* 功能描述: 查看选手信息
* 输入参数:`xinxi[]-指针数组
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void chakanxinxi() //查看选手信息 

    DispHT(xinxi); 

/*********************************************************
* 功能描述: 给选手投票
* 输入参数:`n-选手序号
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void toupiao() //投票 

   int n,m; 
    httype a; 
    int k=DispHT(xinxi); 
   if(k==1) 
    { 

   } 
    else 
    { 
        if(log[dangqian].cishu!=0) 
       { 
            cout<<"按照学生的学号进行投票"<<endl; 
            cin>>n; 
            m=h(n); 
            a=xinxi[m]; 
            while(a.link!=NULL) 
           { 
                if(a.link->num==n) 
               { 
                    a.link->piaoshu++; 
                    log[dangqian].cishu=0; 
                    break; 
                } 
                else 
                    a.link=a.link->next; 
            } 
        } 
        else 
        { 
           cout<<"您的投票次数已经用完!"<<endl; 
      } 
        cunpan(xinxi); 
    } 

/*********************************************************
* 功能描述: 管理员函数
* 输入参数:`n-选手序号
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void root(int a) //管理员 

    int xuanxiang; 
    if(a==0) 
        rootmima(); 
   Sleep(1000); 
    system("cls"); 
    system("Color 0C"); 
    while(1) 
   { 
        cout<<"请输入选项:"<<endl; 
        cout<<"请输入您想使用的功能:"<<endl; 
        cout<<"╰★【1】初始化选手信息"<<endl; 
        cout<<"╰★【2】浏览候选人简介"<<endl; 
        cout<<"╰★【3】修改候选人简介"<<endl; 
        cout<<"╰★【4】查看当前投票情况"<<endl; 
        cout<<"╰★【5】清除所有信息"<<endl; 
        cout<<"╰★【6】返回上一层"<<endl; 
        cout<<"请输入您的选择:"; 
        cin>>xuanxiang; 
        switch(xuanxiang) 
        { 

        case 1: 
            chushihua(); 
           break; 
        case 2: 
            chakanxinxi(); 
            break; 
        case 3: 
            genggai(); 
            break; 
        case 4: 
            qingkuang(xinxi); 
            break; 
        case 5: 
            qingchu(); 
            break; 
        case 6: 
            fanhui(); 
            break; 
      

       } 
    } 

/*********************************************************
* 功能描述: 管理员密码管理
* 输入参数:`mima-用户输入的密码
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void rootmima() 

    string mima; 
    int i=3; 
    cout<<"请输入密码:"; 
   while(i>=0) 
   { 
        cin>>mima; 
       if(mima=="admin") 
       { 
           cout<<"密码正确,正在跳转,请稍后"; 
            break; 
        } 
        else 
        { 
            cout<<"密码输入错误,您还有"<<i<<"次机会(如果错误三次将会冻结)"; 
            i--; 
        } 
   } 

/*********************************************************
* 功能描述: 管理员更改选手信息
* 输入参数:`xuhao-选手的序号
              n-更改的项目序号
              na-临时变量可代表名字,性别,自我介绍。
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void genggai() 

    int xuhao; //选择序号 
    DispHT(xinxi); 
    cout<<"请输入需要更改的选手的学号:"; 
    cin>>xuhao; 
   int n,m,p;  //m为哈希表临时变量,n为更改选项 
    httype a;  //指针数组临时变量 
    string na;  //字符串临时变量 
    m=h(xuhao); 
    a=xinxi[m]; 
    while(a.link!=NULL) 
    { 
        if(a.link->num==xuhao) 
        { 
            break; 
        }                                                                                                                                                                                                                                      
        else 
            a.link=a.link->next; 
    } 


    cout<<"╰★【1】请输入新的姓名"<<endl; 
    cout<<"╰★【2】请输入新的性别"<<endl; 
    cout<<"╰★【3】请输入新的自我介绍"<<endl; 
    cout<<"请输入需要更改的项目:"; 
    cin>>n; 
    switch(n) 
    { 
    case 1: 
    { 
        cout<<"请输入新的名字:"; 
        cin>>na; 
        a.link->name=na; 
    } 
    break; 
    case 2: 

        cout<<"请输入新的性别:"; 
        cin>>na; 
        a.link->sex=na; 
    } 
    break; 

    case 3: 
    { 
        cout<<"请输入新的自我介绍:"; 
        cin>>na; 
        cout<<"如果想全部修改请按1,插入到后边请按2."; 
       cin>>p; 
        if(p==1) 
            a.link->zijie=na; 
       else if(p==2) 
        { 
            a.link->zijie=a.link->zijie+na; 
        } 

    } 
    break; 
    } 

/*********************************************************
* 功能描述: 管理员清除选手信息
* 输入参数:`无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 删除系统中储存文件,释放内存中的空间。
************************************************************/ 
void qingchu() 

    int i,j=1; 
   xuanshou *p=NULL; 
    xuanshou *q=NULL; 

    for(i=0; i<17; i++) 
    { 

        p=xinxi[i].link; 
        if(p!=NULL) 
        { 
            q=p; 
            p=p->next; 
        } 
        while(p!=NULL) 
        { 
            delete q; 
            q=p; 
            p=p->next; 


        } 
        if(p==NULL&&q!=NULL) 
        { 
            delete q; 
            q=NULL; 
        } 
    } 
    DeleteFile("f1.dat"); 
    zhizhenchushihua(); 

/*********************************************************
* 功能描述: 管理员清楚选手信息
* 输入参数:`无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 将指针数组置为NULL。
************************************************************/ 
void zhizhenchushihua() 

    int i; 
    for(i=0; i<17; i++) 
    { 
        xinxi[i].link=NULL; 
    } 

/*********************************************************
* 功能描述: 管理员查看选手票数排名
* 输入参数:`k- 1全部输出(排序)
               - 2指定输出
              ht-指针数组
* 输出参数: p->num-选手的序号
             p->name->选手的名字
              p->sex->选手的性别
              p->zijie->选手的自我介绍
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void qingkuang(httype *ht) 

    int i,j=0,k;//k为选择全部输出还是单个输出 
    xuanshou *p; 
    xuanshou a[100]; 
    for(i=0; i<17; i++) 
    { 
        p=ht[i].link; 
        while(p!=NULL) 
        { 
            a[j].num=p->num; 
            a[j].name=p->name; 
            a[j].sex=p->sex; 
            a[j].zijie=p->zijie; 
            a[j].piaoshu=p->piaoshu; 
            p=p->next; 
           j++; 
        } 

    } 
    xierpaixu(a,j); 
    i=j-1; 
    cout<<"查看所有选手的排名请按1,查看某位选手的排名及票数请按2."<<endl; 
    cin>>k; 
    if(k==1) 
   { 
        while(i>=0) 
        { 
            cout<<"学号:"<<a[i].num<<endl; 
           cout<<endl; 
            cout<<"姓名:"<<a[i].name<<endl; 
           cout<<endl; 
           cout<<"性别:"<<a[i].sex<<endl; 
            cout<<endl; 
            cout<<"票数:"<<a[i].piaoshu<<endl; 

            i--; 
        } 
    } 
    else if(k==2) 
    { 
        cout<<"请输入选手的学号"<<endl; 
        cin>>k; 
        int t=h(k); 
        httype a; 
       a=xinxi[t]; 
        while(a.link!=NULL) 
        { 
            if(a.link->num==k) 
            { 
               cout<<"学号:"<<a.link->num<<endl; 
                cout<<"姓名:"<<a.link->name<<endl; 
                cout<<"性别:"<<a.link->sex<<endl; 
                cout<<"票数:"<<a.link->piaoshu<<endl; 
                break; 

           } 
           else 
            { 
                a.link=a.link->next; 
            } 

        } 

    } 

/*********************************************************
* 功能描述: 排序 希尔排序
* 输入参数:`R[] -选手信息
              n - 选手个数
* 输出参数: 无
* 返回值  : 无
* 其它说明: 将链表中的数据读入数组进行排序
************************************************************/ 
void xierpaixu(xuanshou R[],int n)   //希尔排序 

    int i,j,gap; 
    xuanshou tmp; 
    gap=n/2;                //增量置初值 
    while (gap>0) 
    { 
        for (i=gap; i<n; i++) //对所有相隔gap位置的所有元素组进行排序 
        { 
           tmp=R[i]; 
            j=i-gap; 
            while (j>=0 && tmp.piaoshu<R[j].piaoshu)//对相隔gap位置的元素组进行排序 
            { 
                R[j+gap]=R[j]; 
                j=j-gap; 
            } 
            R[j+gap]=tmp; 
            j=j-gap; 
        } 
       gap=gap/2;  //减小增量 
    } 

/*********************************************************
* 功能描述: 从root界面返回一般界面
* 输入参数:`无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 清屏并调用欢迎界面
************************************************************/ 
void fanhui() 

    system("cls"); 
    zhuhuanying(); 


/*********************************************************
* 功能描述: 用户欢迎界面
* 输入参数:`xuanze- 用户的功能输入选择
* 输出参数: 无
* 返回值  : 无
* 其它说明: 输出功能选项并执行相应的功能
************************************************************/ 
void zhuhuanying() 

    int xuanze;//选项号 
    system("cls"); 
    system("color 1A");
    while(1) 
    { 
        system("color 1A");  //1=蓝色 A=淡绿色
        cout<<""<<log[dangqian].name<<"同学欢迎使用电子投票系统!"<<endl; 
        cout<<"********************************************************************************"<<endl; 
        cout<<"               请输入您想使用的功能:"<<endl; 
        cout<<"               ╰★【1】查看候选人的介绍。 "<<endl; 
        cout<<"               ╰★【2】投票。"<<endl; 
        cout<<"               ╰★【6】注销当前用户"<<endl; 
        cout<<"               ╰★【8】管理员选项(非管理员勿动!)"<<endl; 
        cout<<"               ╰★【0】退出。"<<endl; 
        cout<<"********************************************************************************"<<endl; 
        cout<<"               请输入您的选择:"; 
        cin>>xuanze; 


        if(xuanze==0) 
        { 
            cunpan(xinxi); 
            cunpan2(log); 
           exit(1); 
        } 
        switch(xuanze) 
        { 

        case 1: 
            chakanxinxi(); 
            break; 
        case 2: 
            toupiao(); 
            break; 
       case 6: 
            zhuxiao(); 
            break; 
        case 8: 
            root(0); 
            break; 
        } 
    } 

/*********************************************************
* 功能描述: 用户登录界面
* 输入参数:`a -用户名
              t -密码
              k -选项
* 输出参数: 无
* 返回值  : 无
* 其它说明: 输出功能选项并执行相应的功能
************************************************************/ 
void login() 

    string a; //用户名 
    int t; //密码 
    int k;//临时变量 
    int i=0;//计数器 
 system("Color 0F");  //0=黑色背景 F=亮白色字体   (自加)
   printf("     ╔━━═━━━═━━━═━━═━━═━━═━═━━═━━═━━━═╗\n");
    cout<<"       |             \1\1\1\1  欢迎使用电子投票系统! \1\1\1\1                |"<<endl; 
    cout<<"       |                                                              |"<<endl; 
    cout<<"       |             \1\1\1\1     ╰★【1】登陆       \1\1\1\1                |"<<endl;
 cout<<"       |             \1\1\1\1     ╰★【8】注册       \1\1\1\1                |"<<endl;
    cout<<"       |                                                              |"<<endl; 
   printf("     ╚━━═━━━═━━━═━━━═━━━═━━━═━━═━━═━━━╝\n");
    cout<<"           请输入您的选择:     "; 
    cin>>k; 
    if(k==1) 
    { 
        while(1) 
        { 
            cout<<"           请输入您的用户名:"; 
            cin>>a; 
           if(a=="admin")  //若密码正确直接进入管理员系统(自加)
            { 
               rootmima(); 
                root(1); 
            } 
           cout<<"           请输入密码:"; 
            cin>>t; 
           while(i<100) 
           { 
                if(log[i].name==a) 
                { 
                   break; 
               } 
               i++; 
            } 
           dangqian=i; 
            if(i==100) 
            { 
                cout<<"           用户名不存在"<<endl; 
                i=0; 
            } 
            else if(i<=100&&log[i].mima!=t) 
               cout<<"           密码错误"<<endl; 
            else break; 
        } 
    } 
    else if(k==8) 
    { 
        zhuce();   
   } 
   system("cls"); 
    if(log[dangqian].quanxian==1) 
    { 
        root(1); 
    } 

/*********************************************************
* 功能描述: 用户注册界面
* 输入参数:`log[renshu].name -用户名
              i -重复密码
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void zhuce() 

    int i; 
    cout<<"请输入您的姓名:"<<endl; 
    cin>>log[renshu].name; 
    cout<<"请输入您的学号:"<<endl; 
       cin>>log[renshu].num; 
       while(1) 
    { 
        cout<<"请输入您的密码:"<<endl; 
        cin>>log[renshu].mima; 
        cout<<"请再输入您的密码:"<<endl; 
        cin>>i; 
        if(i==log[renshu].mima) 
        { 
            cout<<"注册成功!正在跳转。"<<endl; 
            cout<<log[renshu].cishu<<' '<<log[renshu].quanxian; 
            Sleep(1000); 
            dangqian=renshu; 
            renshu++; 
            break; 
        } 
        else 
           cout<<"两次密码不一致,请重新输入"<<endl; 
    } 
    cunpan2(log); 

/*********************************************************
* 功能描述: 读取投票者信息
* 输入参数:`无
* 输出参数: log[]-用户信息
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void duqu2(toupiaozhe log[]) 

    int i; 
    ifstream in1("f2.txt",ios::binary);  //ifstream 输入文件流,用于从文件读数据(从文件读入)(自加)
    if(!in1) 
    { 
        cout<<"该系统中还未有用户注册"<<endl; 
    } 
    else 
    { 
        i=0; 
        while(in1.peek()!= EOF) 
        { 
            in1>>log[i].name>>log[i].mima>>log[i].cishu>>log[i].quanxian>>log[i].num; 
            i++; 
            in1.get(); 
        } 
        renshu=i-1; 
        in1.close(); 
    } 

/*********************************************************
* 功能描述: 存储投票者信息
* 输入参数:`log[]-用户信息
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/ 
void cunpan2(toupiaozhe log[]) 

    int i; 
    ofstream out1("f2.txt",ios::binary);  //ofstream 输出文件流,用于向文件写数据(输出到文件)(自加)
                                       //binary说明指定文件打开方式为二进制,即换行符为单字符\n(自加)
    if(!out1) 
    { 
        exit(1); 
    } 
    i=0; 
    while(i<renshu) 
    { 
        out1<<log[i].name<<' '<<log[i].mima<<' '<<log[i].cishu<<' '<<log[i].quanxian<<' '<<log[i].num; 
        out1<<"\r\n"; 
        i++; 
    } 
    out1.close(); 
}

 


 
/*********************************************************
* 功能描述: 用户注销
* 输入参数:`无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 用户通过该模块可以登录别的账号
************************************************************/ 
void zhuxiao() 

    cout<<"你确定要注销?(y/n)"; 
    char n; 
    cin>>n; 
    if(n=='y') 
    { 
        system("Color 0A");  //0=黑色背景 A=淡绿色字体
        system("cls"); 
        login(); 
    } 
    else 
    { 
        system("cls"); 
        zhuhuanying(); 
    } 

 

 

 

head.h

#include<stdio.h>
#include<string.h>
#include<string>
#include<malloc.h>
#include<fstream>//文件流。找不到文件时不建立空文件。用while()判断
#include<iostream>
#include<windows.h>//定义了windows的所有资料形态,函数调用,资料结构和常数识别字
using namespace std; 
struct xuanshou 

    string name;//姓名 
    int num;//序号 
    string zijie; //自我介绍 
    string sex; //性别 
    int piaoshu;//票数 
    xuanshou() 
    { 
       piaoshu=0; 
    } 
    struct xuanshou *next; //指向下一个人的指针 
}; 
struct httype 

    xuanshou *link;   //指向第一个人的指针 
}; 
struct toupiaozhe 

    string name; 
    int num; 
    int mima; 
    int quanxian;//0为最低权限,2为最高 
   int cishu;//投票次数1 
   toupiaozhe() 
    { 
        quanxian=0; 
        cishu=1; 
    } 

}; 
int h(int n);   //实现哈希函数 
int DispHT(httype ht[]);//输出哈希表 
void cunpan(httype l[]);//存盘 
void duqu(httype ht[]); //读取 
void hash(string s[],int a[],httype ht[]); //创建哈希表 
void chakanxinxi(); //查看选手信息 
void toupiao(); //投票 
void root(int a); //管理员 
void genggai();//更改选手信息 
void rootmima();//root用户的密码验证 
void qingkuang(httype *ht); 
void qingchu();//清除信息 
void zhizhenchushihua();//ht中的指针置为NULL 
void xierpaixu(xuanshou R[],int n) ;//希尔排序 
void fanhui();//返回程序上一层 
void zhuhuanying();//欢迎界面 
void login();//登录界面 
void zhuce();//注册用户 
void cunpan2(toupiaozhe log[]);//将用户信息存盘 
void duqu2(toupiaozhe l[]);//将用户信息读取 
void zhuxiao();//注销 
void genggai2();//更改用户信息 

 

运行结果:


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值