C++新生入学管理系统

1. 课题来源

随着新世纪的到来,计算机以前所未有的速度在全世界普及,人们更深切的感受到了计算机在生活和工作中的作用越来越重要,现在,计算机技术以渗透到人类社会生活的各个领域,越来越多的职业需要具有计算机的应用技能。掌握计算机成为职业的需要,更是事业发展的需要。 在C++学习了一段时间之后,我们开始入了课程设计。在看了老师给的题目后我发现例题的学生管理系统仅仅只能让老师使用,且安全性不高,所以我的题目是:《新生管理系统》。里面包含了登入、老师端、学生端。马上就是2020届新生入学再认真思考并且结合自己的实际情况后,我选择了写这个。紧紧围绕着面向对象程序的封装、继承和多态特性。

2. 任务描述 **

马上就是2020届新生入学,老师要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,高考成绩。学生要查询自己的信息,在老师和学生登入时还需要输入账号密码来确认身份。要求设计链表类来实现,并统计学生人数。

**

账号密码界面:
	登录账号请按1
	注册账号请按2
	修改密码请按3
	退出系统请按0
老师端:
	1.新增学生信息
	2.插入学生信息
	3.删除学生信息
	4.学生信息搜索
	5.修改学生信息
	6.按照高考成绩排序
	7.统计男/女人数
	8.读取学生信息
	9.保存信息退出
学生端:
	1.增加本人信息
	2.修改本人信息
	3.搜索本人信息
	4.保存信息退出

仅有部分代码,详细代码请联系我哟

Student *information::statistics(Student*head)//统计男女人数
{
    p1=new Student;//链表 
    p1=head;//头结点 
    int x=0,y=0;
    char sex1[3];
    char sex2[3];
    strcpy(sex1, "男");//字符串复制 
    strcpy(sex2, "女");
    if(p1==NULL){
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
		return 0;
    }
    for(p1=head; p1!=NULL; p1=p1->next)
    {
        if(strcmp(sex1,p1->sex)==0 )
        {
            x=x+1;
        }
        if(strcmp(sex2,p1->sex)==0)
        {
            y=y+1;
        }
    }
    cout<<"男:      "<<x<<endl;
    cout<<"女:      "<<y<<endl;
    return head;
}

Student *information::add(Student *head)//增加学生 
{
    p1=p3=new Student;
    p1=head;
    char sex1[3];
    char sex2[3];
    strcpy(sex1, "男");
    strcpy(sex2, "女");
    if(p1==NULL)
    {
        cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
        return 0;
    }
    else
    {
        cout<<"请输入要添加学生的信息!\n";
        cout<<"姓名:  \t";
        cin>>p3->name;
        cout<<"专业:  \t";
        cin>>p3->study;
        cout<<"性别:  \t";
        cin>>p3->sex;
        while(strcmp(sex1,p3->sex)!=0 &&strcmp(sex2,p3->sex)!=0 )
        {
            cout<<"请输入格式  男/女,请重新输入!"<<endl;
            cout<<"性别:  	\t";
            cin>>p3->sex;
        }
        cout<<"家庭住址:  \t";
        cin>>p3->addr;
        cout<<"出生年:";
        cin>>p3->birth[0];
        while(p3->birth[1]<1 || p3->birth[1]>12)
        {
            cout<<"出生月:";
            cin>> p3->birth[1];
            if(p3->birth[1]<1 || p3->birth[1]>12)
            {
                cout<<"月份应为1-12月,请重新输入!"<<endl;
            }
        }
        cout<<"出生日:";
        cin>>p3->birth[2];
        while(p3->birth[2]<1 || p3->birth[2]>31)
        {
            cout<<"每月应为1-31天,请重新输入!"<<endl;
            cout<<"出生日:";
            cin>>p3->birth[2];
        }
        cout<<"高考成绩:";
        cin>>p3->result;
        while(p3->result<0 || p3->result>750)
        {
                cout<<"高考成绩必须在0-750之间,请重新输入!"<<endl;
                cout<<"高考成绩:";
                cin>>p3->result;
        }
        cout<<"\n";
        p3->next=p1->next;
        p1->next=p3;
        cout<<"添加成功!\n";
    }
    write_file(head);//写入 
    return head;//返回头结点 
}
Student *information::delet(Student *head)//删除学生 
{
    p2=p1=new Student;
    if(head==NULL)
    {
        cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
        return 0;
    }
    cout<<"请输入要删除学生的名字:\n";
    cin>>name;
    p2=p1=head;
    int j=0;
    if( ( strcmp(name,head->name)==0 ) && (head!=NULL))//把输入的名字和P1头结点中的名字对比,如果相等 
    {
        head=head->next;//删除 
        free(p1);//释放P1 
        j=1;
    }
    else
    {
        p1=head->next;//下一个
        while(p1!=NULL)
        {
            if(strcmp(name,p1->name)==0)//继续对比,如果相等 
            {
                p2->next=p1->next;
                free(p1);//删除
                j=1;//删除成功的标记 
                break;
            }
            else//不相等就下一个 
            {
                p2=p1;
                p1=p2->next;
            }
        }
    }
    if(j==0)
        cout<<"此学生不存在,删除失败!\n";
    else
        cout<<"删除成功!\n";
    write_file(head);//写入 
    return head;//返回 
}

void *information::search(Student *head)//查找学生信息 
{
    char name[20];
    p1=new Student;
    cout<<"请输入要查找学生的姓名:\n";
    cin>>name;
    p1=head;
    for(p1=head; p1!=NULL; p1=p1->next)
    {
        if(strcmp(name,p1->name)==0 )//把输入学生名字和P1中名字进行对比
        {
            cout<<"姓名:"<<p1->name<<" 性别:"<<p1->sex<<" 专业:"<<p1->study;
            cout<<" 家庭住址:"<<p1->addr<<endl;
            cout<<p1->birth[0]<<"年";
            cout<<p1->birth[1]<<"月:"<<p1->birth[2]<<"日 出生:";
            cout<<"年龄:"<<2020-p1->birth[0]<<endl;
            cout<<"高考成绩:"<<p1->result<<"\n\n";
        }
    }
    return head;
};
Student *information::modify(Student *head)//修改学生信息 
{

    if(head==NULL)//不存在 
    {
        cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
    	cout<<"请先选择8.读取学生信息"<<endl;
        return 0;
    }
    char name1[12];
    char sex[3];
    char study[12];
    char addr[12];
    int birth[3];
    int result;
    p1=new Student;
    int j=0;//标志 
    p1=head;
    cout<<"请输入你要更改学生的姓名:\n";
    cin>>name;

    if(strcmp( name, head->name)==0)//头结点比较 
    {//把输入的姓名等copy到链表里 
        cout<<"显示要修改学生的信息:\n";
        s.displaynode(p1);//显示 
        cout<<"请输入要更改学生的信息:\n";
        cout<<"姓名:  \t";
        cin>>name1;
        cout<<"性别:  \t";
        cin>>sex;
        cout<<"专业:  \t";
        cin>>study;
        cout<<"家庭住址:  \t";
        cin>>addr;
        cout<<"出生年:";
        cin>>birth[0];
        cout<<"出生月:";
        cin>>birth[1];
        cout<<"出生日:";
        cin>>birth[2];
        cout<<"高考成绩:";
        cin>>result;
        strcpy(head->name,name1);//姓名复制 
        strcpy(head->sex,sex);//性别复制 
        strcpy(head->study,study);//专业复制 
        strcpy(head->addr,addr);//地址复制 
        head->birth[0]=birth[0];
        head->birth[1]=birth[1];
        head->birth[2]=birth[2];
        head->result=result;
        j=1;
    }
    else//除了头结点的下一个 
    {
        p1=head->next;
        while(p1!=NULL)
        {
            if(strcmp(p1->name,name)==0)
                cout<<"显示要修改学生的信息:\n";
            s.displaynode(p1);
            cout<<"请输入要更改学生的信息:\n";
            cout<<"姓名:  \t";
            cin>>name1;
            cout<<"性别:  \t";
            cin>>sex;
            cout<<"专业:  \t";
            cin>>study;
            cout<<"家庭住址:  \t";
            cin>>addr;
            cout<<"出生年:";
            cin>>birth[0];
            cout<<"出生月:";
            cin>>birth[1];
            cout<<"出生日:";
            cin>>birth[2];
            cout<<"高考成绩:";
            cin>>result;
            strcpy(p1->name,name1);
            strcpy(p1->sex,sex);
            strcpy(p1->study,study);
            strcpy(p1->addr,addr);
            p1->birth[0]=birth[0];
            p1->birth[1]=birth[1];
            p1->birth[2]=birth[2];
            p1->result=result;
            j=1;
            break;
        }
    }
    if(j==0)//没有找到 
        cout<<"没有找到你要更改的学生,更改失败!\n";
    else
        cout<<"更改成功!\n";
    write_file(head);
    return head;
}

课程设计总结

通过对C++课程设计,我觉得自己在软件的设计与开发方面有了进一步的提高。完成此次C++课程设计并非想象中的那么简单,类的成员及类之间关系的设计是最重要的,一但设计的不好,后续工作就无法完成。还有就是界面的设计尽量要做到人性化。文件的写入与读取是一个难点,一不小心便会输出乱码或异常现象,所以我在这一块倍加小心,花了很多时间在文件读取上。至于面向对象方面,我基本做到了封装性,继承性,及多态性的设计理念。但我的设计也并非是完美的,由于没有学过MFC的设计,我的界面并非窗口式的,而只是基本的菜单式选择,在这一方面我还要多加学习。在这次程序设计课中,真的是让我受益非浅,突然发现自己写程序还挺有意思的,自己也开始对程序产生了前所未有的兴趣,认真地看老师写的程序,发现我们看懂一个程序,其实不难,难的是对于一个程序里面蕴含的思想的理解,我们要掌握一个算法,不仅仅限于读懂,更重要的是理解老师的思路,学习老师解决问题的方法。自己在学程序的时候发现有很多地方没有真正的落实清楚,有一些知识点是懵懵懂懂的,而且自己在这方面的练习也太少了,所以总是会有各种各样的问题,在自己坚持不懈的查阅资料、查看老师的代码、问同学,终于完成了这个代码,当我全身心的投入时,实际上是一件非常有乐趣的事情。此次的课程设计更让我数据结构这门课的魅力所在,与小组成员讨论各个方面的问题,最终完成了这个代码,非常有成就感。
总的来说,这次课程设计是非常有意义的,让我提前进入了一个程序员的状态,至少是一个初级程序员的状态,还有就是让我明白了成功的两个必备条件就是毅力和思想。

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
修正了已发现的所有错误.欢迎大家下载试用.. 一、项目名称:学校学生信息管理系统。 二、项目目标:实现对学校学生的信息管理——信息的建立和维护、信息的检索。 三、主要功能: 1.信息的输入:建立学生档案文件。 2.信息维护: 添加:增加新学生; 修改:学生信息的改变; 删除:学生减少。 3.信息处理 按要求检索学生信息; 按要求统计信息。 四、界面系统 1.系统管理员进入 (请输入密码) 2.一级菜单 (1 信息维护 2 信息检索 3 信息统计 4 退出) 3. 二级菜单 信息维护 (1 建立学生成绩文件 2 添加学生记录 3 删除学生记录 4 修改学生记录 5 返回上级菜单) 信息检索 (1 按班级查找 2 返回上级菜单) 信息统计 (1 成绩统计 2 返回上级菜单) 五、主要功能说明: 1.用口令(密码)形式验证管理员身份(可输入三次),合法者可进入,否则程序结束。 2.有关功能说明 1)建立学生成绩表(模块a) 建立新的学生成绩文件; 建立若干学生记录,包括姓名、学号、班级、课程编号、成绩。 2)添加学生记录(模块b) 在已存在的学生成绩文件中添加新记录。 3)删除学生记录(模块c) 在学生成绩文件中删除有三门课程不及格的学生记录; 删除前,逐条显示符合删除条件的学生姓名、成绩,确认后再删除。 4)修改学生信息(模块d) 输入学生学号,在学生成绩文件中找出该学生记录; 在屏幕上逐条显示该学生的各条记录; 每显示一条,询问是否修改,如果“Y”,输入修改后数据, 将文件原记录删除,保存新的记录; 5)按姓名和班级查找(模块e) 输入姓名显示相应信息。 6)信息统计(模块f) 同时按照班级和课程统计每门课程、每个班级的平均成绩,最高分、最低分; 在屏幕上先依次显示各门课程,对应的各个班级的统计数据。 7)退出信息管理系统,返回操作系统。
#include "iostream" #include "fstream" #include "iomanip" #include "string" using namespace std; bool equal(char *a,char *b,int n)//判断两个字符串是否一样 { int temp=0; for(int i=0;i<n;i++) if(a[i]==b[i]) temp++; if(temp==n) return 1; else return 0; } int getline(int n)//求文件中信息的行数(既文件中学生的数量,课程的数量) n为5表示为求A.txt中的行数,n为7表示求B.txt中的行数 { int count=0; char temp[20]; char temp1[20]; for(int i=0;i<20;i++) { temp1[i]=0; } ifstream f1; if(n==5) { f1.open("A.txt"); } if(n==7) { f1.open("B.txt"); } while(f1.get()) { if(!equal(temp,temp1,20)) { for(int i=0;i>temp; count++; } else break; } f1.close(); return count/n; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct binfo//学生基本信息 { char num[8],name[8],sex[8],flatnum[4],telenum[11];//学号,姓名,宿舍号,电话号码 }; struct sinfo//学生课程信息 { char num[8],jectnum[8],jectname[20];//学号,课程编号,课程名称 double xuefen,usualscore,labscore,testscore,comscore,turexuefen;//学分,平时成绩,实验成绩,卷面成绩,综合成绩,实得学分 double subxufen,subscore; }; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class studentb { friend ostream &operator;<>(istream &is;,studentb &st;); public: studentb(); void dele();//删除信息 void displayb1(ostream &os;);//查询基本信息 void displayb(ostream &os;); void displaypart(); void inputb(istream &is;); char* getnum(); char* getname(); private: binfo b;//基本信息 }; void studentb::displaypart() { cout<<"学号:"<<b.num<<'\t'<<"姓名:"<<b.name<<endl; } studentb::studentb() { } void studentb::displayb(ostream &os;) { os<<b.num<<'\t'<<b.name<<'\t'<<b.sex<<'\t'<<b.flatnum<<'\t'<<b.telenum<<endl; } void studentb::displayb1(ostream &os;) { os<<"学号:"<<b.num<<" "<<"姓名:"<<b.name<<" "<<"性别:"<<b.sex<<" "<<"宿舍号:"<<b.flatnum<<" "<<"电话号码:"<<b.telenum<>b.num>>b.name>>b.sex>>b.flatnum>>b.telenum; } ///////////////////////////////////////////////////////////////////////////////////////// class students { public: students(){}; void inputs(istream &is;); void displays(); void displays1(); void displays(ostream &os;); void inputsubxuefen(double x); void inputsubscore(double x); char *getnum(); double getxuefen(); double getcomscore(); void cal(); private: sinfo s; }; void students::inputsubscore(double x) { s.subscore=x; } void students::inputsubxuefen(double x) { s.subxufen=x; } double students::getcomscore() { return s.comscore; } double students::getxuefen() { return s.turexuefen; } void students::cal() { if(s.labscore==-1) s.comscore=s.usualscore*0.3+s.testscore*0.7; else s.comscore=s.usualscore*0.15+s.labscore*0.15+s.testscore*0.7; if(s.comscore<60) s.turexuefen=0; else s.turexuefen=s.xuefen; } char* students::getnum() { return s.num; } void students::inputs(istream &is;) { if(is==cin) cout<<"请输入学号,课程编号,课程名称,学分,平时成绩,实验成绩,卷面成绩:"<>s.num>>s.jectnum>>s.jectname>>s.xuefen>>s.usualscore>>s.labscore>>s.testscore; cal(); } void students::displays1() { cout<<"学号:"<<s.num<<" "<<"课程编号:"<<s.jectnum<<'\t'<<"课程名称:"<<s.jectname<<'\t'<<"综合成绩:"<<s.comscore<<'\t'<<"实得学分:"<<s.turexuefen<<endl; } void students::displays() { cout<<"课程编号:"<<s.jectnum<<'\t'<<"课程名称:"<<s.jectname<<'\t'<<"综合成绩:"<<s.comscore<<'\t'<<"实得学分:"<<s.turexuefen<<endl; } void students::displays(ostream &os;) { os<<s.num<<'\t'<<s.jectnum<<'\t'<<s.jectname<<'\t'<<s.xuefen<<'\t'<<s.usualscore<<'\t'<<s.labscore<<'\t'<<s.testscore<<endl; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class allstudentb { public: allstudentb(int n) { studentnum=n; sptr=new studentb [studentnum]; ifstream f("A.txt"); for(int i=0;i<studentnum;i++) sptr[i].inputb(f); f.close(); } ~allstudentb(){delete [] sptr;} void searchb(char *ch);//查询基本信息 void searchpart(char *ch); void deleb(char *ch);//删除信息 void sort();//信息排序 private: studentb *sptr; int studentnum; }; void allstudentb::deleb(char *ch) { int temp=strlen(ch); ofstream f("A.txt"); for(int i=0;i<studentnum;i++) { if(!equal(ch,sptr[i].getnum(),temp)&&!equal(ch,sptr[i].getname(),temp)) sptr[i].displayb(f); } f.close(); } void allstudentb::searchb(char *ch) { int temp=strlen(ch); for(int i=0;i<studentnum;i++) if(equal(ch,sptr[i].getnum(),temp)||equal(ch,sptr[i].getname(),temp)) sptr[i].displayb1(cout); } void allstudentb::searchpart(char *ch) { int temp=strlen(ch); for(int i=0;i<studentnum;i++) if(equal(ch,sptr[i].getnum(),temp)||equal(ch,sptr[i].getname(),temp)) sptr[i].displaypart(); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class allstudents { public: allstudents(int n){ num=n; ifstream f("B.txt"); sptr=new students [n]; for(int i=0;i<n;i++) sptr[i].inputs(f); f.close(); } ~allstudents(){delete [] sptr;} void searchs(char *ch); void inputs(); void displays(); void deles(char *ch); void sortxuefen(int n); void sortcomscore(int n); void print();//在屏幕上显示信息 private: students *sptr; int num; }; void allstudents::print() { for(int i=0;i<num;i++) sptr[i].displays1(); } void allstudents::sortxuefen(int n) { students temp; int i,j; if(n==0) { for(i=1;i<num;i++) for(j=0;j<num-i;j++) if(sptr[j].getxuefen()<sptr[j+1].getxuefen())//降序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } else { for(i=1;i<num;i++) for(j=0;jsptr[j+1].getxuefen())//升序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } displays(); } void allstudents::sortcomscore(int n) { int i,j; students temp; if(n==0) { for(i=1;i<num;i++) for(j=0;j<num-i;j++) if(sptr[j].getcomscore()<sptr[j+1].getcomscore())//降序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } else { for(i=1;i<num;i++) for(j=0;jsptr[j+1].getcomscore())//升序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } displays(); } void allstudents::deles(char *ch) { int temp=strlen(ch); ofstream f("B.txt"); for(int i=0;i<num;i++) { if(!equal(ch,sptr[i].getnum(),temp)) sptr[i].displays(f); } f.close(); } void allstudents::searchs(char *ch) { int count=0; double subxuefen=0; double subscore=0; int temp=strlen(ch); for(int i=0;i<num;i++) { if(equal(ch,sptr[i].getnum(),temp)) { sptr[i].displays(); count++; subxuefen=subxuefen+sptr[i].getxuefen(); subscore=subscore+sptr[i].getcomscore(); } sptr[i].inputsubscore(subscore); sptr[i].inputsubxuefen(subxuefen); } cout<<"共修:"<<count<<"科 实得总学分为:"<<subxuefen<<endl; } void allstudents::inputs() { students *p=new students [num]; for(int i=0;i<num;i++) p[i]=sptr[i]; delete []sptr; num++; sptr =new students [num]; for(int i=0;i<num-1;i++) sptr[i]=p[i]; sptr[num-1].inputs(cin); displays(); } void allstudents::displays() { ofstream f("B.txt"); for(int i=0;i<num;i++) sptr[i].displays(f); f.close(); } int main() { int m,n; m=getline(5);//学生数 n=getline(7); allstudentb stb(m); allstudents sts(n); int *score=new int[m]; int *xuefen=new int[m]; int x; char ch[8]; while(1) { cout<<"\n\n\n" <<"\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n" <<"\t\t※ ※\n" <<"\t\t※ 学生管理系统 ※\n" <<"\t\t※ ※\n" <<"\t\t※ 操作: ※\n" <<"\t\t※ 1--查询学生基本信息 ※\n" <<"\t\t※ 2--查询学生课程信息 ※\n" <<"\t\t※ 3--录入学生课程信息 ※\n" <<"\t\t※ 4--对学生信息进行排序 ※\n" <<"\t\t※ 5--删除学生信息 ※\n" <<"\t\t※ 6--退出 ※\n" <<"\t\t※ ※\n" <<"\t\t※ ※\n" <<"\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl; cout<>x; switch(x) { case 1: { if(m!=0) { cout<>ch; cout<<endl; cout<<endl; stb.searchb(ch); } else { cout<<"无学生基本信息可查!请录入学生信息!!"<<endl; } cout<<endl; cout<<endl; }break; case 2: { cout<>ch; stb.searchpart(ch);//查询学号为ch的学生的基本信息 sts.searchs(ch);//查询学号为ch的学生的所有课程信息 }break; case 3: { int temp1,count=0; cout<>temp1; while(count<temp1) { sts.inputs(); count++; } }break; case 4: { cout<<endl; cout<<endl; cout<<"1--按学分排序"<<endl; cout<<"2--按综合成绩排序"<<endl; cout<>temp1; if(temp1==1) { cout<<endl; cout<<endl; cout<<"输入0按降序排列"<<endl; cout<<"输入1安升序排列"<<endl; cout<>temp2; sts.sortxuefen(temp2); sts.print(); } if(temp1==2) { cout<<endl; cout<<endl; cout<<"输入0按降序排列"<<endl; cout<<"输入1安升序排列"<<endl; cout<>temp2; sts.sortcomscore(temp2); sts.print(); } }break; case 5: { char num[8]; cout<>num; stb.deleb(num); sts.deles(num); cout<<"学生信息已删除!"<<endl; }break; case 6:return 0; default:break; } } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值