课程综合设计题最终版

1、学校学生成绩管理

假设一个学校成绩管理要管理的学生信息包括:班级、学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。

要求实现如下的功能:

实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。

⑴ 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩

⑵ 显示全部学生各科成绩信息;

⑶ 对各科分班进行成绩统计分析(总分、平均分、最高分、最低分、及格率等);

⑷ 统计各科各分数段人数及班级信息;

⑸ 按学号或姓名查找并显示某个学生的各科成绩;

⑹ 按课程成绩或总分由高到低排序显示;

⑺ 更新某个学生的基本信息或课程成绩;

⑻ 设计一个菜单,具有上述规定的操作要求、退出系统等最基本的功能。

 

 源代码:

#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdlib>
#include <fstream>
#include <string>
#include <cctype>
using namespace std;
const int SIZE=20;
struct student
{
 char classnum[SIZE];//班级
 char id[SIZE];//学号
 char name[SIZE];//姓名
 int *score;
};
void input(student p[], string c_name[],int s_num,int c_num);//输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩
void show(student p[], string c_name[],int s_num,int c_num);// 显示全部学生各科成绩信息;
void statistic(student p[], string c_name[],int s_num,int c_num);//对各科分班进行成绩统计分析(总分、平均分、最高分、最低分、及格率等);
void section(student p[], string c_name[],int s_num,int c_num);//统计各科各分数段人数及班级信息;
void search(student p[], string c_name[],int s_num,int c_num);//按学号或姓名查找并显示某个学生的各科成绩;
void sort(student p[], string c_name[],int s_num,int c_num);//按课程成绩或总分由高到低排序显示;
void update(student p[], string c_name[],int s_num,int c_num);//更新某个学生的基本信息或课程成绩;
void quicksort(int s[],int l,int r);//快速排序
void fileout(student p[], string c_name[],int s_num,int c_num,int semester);//文件形式输出
int main()
{
	cout<<setw(25)<<" "<<"欢迎使用本学生管理系统!"<<endl;
	cout<<"********************************************************************************"<<endl<<endl;
	cout<<"****************************《学生成绩管理系统》********************************"<<endl<<endl;
	cout<<"********************************************************************************"<<endl;
	int n=0;
	int student_num;//学生数
	int semester;//学期
	int cour_num;//课程数
	cout<<"是否从文档中读取基础信息?(Y/N):";
	char first_sel;
	cin>>first_sel;
	cin.get();
	while(tolower(first_sel)!='y'&&tolower(first_sel)!='n')
	{
		cout<<"输入错误,请重新输入(Y/N):";
		cin>>first_sel;
		cin.get();
	}
	if(tolower(first_sel)=='y')
	{
		ifstream fin;
		n=1;
		cout<<">>>>>>>>>>>>>>>>《说明:                                      》<<<<<<<<<<<<<<<<"<<endl;
		cout<<">>>>>>>>>>>>>>>>《     如上次保存的文档名为student.txt        》<<<<<<<<<<<<<<<<"<<endl;
		cout<<">>>>>>>>>>>>>>>>《     则读取的文档名为basic_student.txt。    》<<<<<<<<<<<<<<<<"<<endl;
		cout<<"请输入基本信息文档名:";
		char _fname[SIZE];
		cin.getline(_fname,SIZE);
		fin.open(_fname);
		while(!fin.is_open())
		{
			cout<<"不能打开此文档名的文档,请重新输入:";
			cin.getline(_fname,SIZE);
			fin.open(_fname);
		}
		fin>>student_num;
		fin.get();
		fin>>semester;
		fin.get();
		fin>>cour_num;
		fin.get();
		fin.close();
		system("pause");
	    system("cls");
	}
	else
	{
		cout<<setfill('=')<<setw(32);
		cout<<"请输入学生个数:";
		cin>>student_num;
		while(!cin.good())
		{
			cin.clear();
			cin.sync();
			cout<<"错误!请重新输入学生个数: ";
			cin>>student_num;
			cin.get();
		}
		cout<<"================";
		cout<<"请输入学期(以数字形式):";
		cin>>semester;
		while(!cin.good())
		{
			cin.clear();
			cin.sync();
			cout<<"错误!请重新输入学期: ";
			cin>>student_num;
			cin.get();
		}
		cout<<setfill('=')<<setw(25);
		cout<<"请输入第 "<<semester<<" 学期的课程门数: ";
		cin>>cour_num;
		cin.get();
		while(!cin.good())
		{
			cin.clear();
			cin.sync();
			cout<<"错误!请重新输入第 "<<semester<<" 学期的课程门数: ";
			cin>>cour_num;
			cin.get();
		}

	}
	student *p=new student[student_num];
    string *cour_name=new string[cour_num];
    if(tolower(first_sel)=='y')
	{
		ifstream fin;
		cout<<">>>>>>>>>>>>>>>>《说明:                                      》<<<<<<<<<<<<<<<<"<<endl;
		cout<<">>>>>>>>>>>>>>>>《     如上次保存的文档名为student.txt        》<<<<<<<<<<<<<<<<"<<endl;
		cout<<">>>>>>>>>>>>>>>>《     则读取的文档名为course_student.txt。   》<<<<<<<<<<<<<<<<"<<endl;
		cout<<"请输入课程信息文档名:";
		char _fname[SIZE];
		cin.getline(_fname,SIZE);
		fin.open(_fname);
		while(!fin.is_open())
		{
			cout<<"不能打开此文档名的文档,请重新输入:";
			cin.getline(_fname,SIZE);
			fin.open(_fname);
		}
		for(int i=0;i<cour_num;i++)
		{
			getline(fin,cour_name[i]);
		}
		fin.close();
		system("pause");
	    system("cls");
	}
	else
	{
		for(int i=0;i<cour_num;i++)
		{
			cout<<setfill('=')<<setw(25);
			cout<<"请输入第 "<<i+1<<" 个课程名:";
			getline(cin,cour_name[i]);
		}
	}
	int **all_score=new int*[student_num];
	for(int i=0;i<student_num;i++)
		all_score[i]=new int[cour_num];
	for(int i=0;i<student_num;i++)
		p[i].score=&all_score[i][0];
	if(tolower(first_sel)=='y')
	{
		ifstream fin;
		cout<<">>>>>>>>>>>>>>>>《说明:                                      》<<<<<<<<<<<<<<<<"<<endl;
		cout<<">>>>>>>>>>>>>>>>《     如上次保存的文档名为student.txt        》<<<<<<<<<<<<<<<<"<<endl;
		cout<<">>>>>>>>>>>>>>>>《     则读取的文档名为student_student.txt。  》<<<<<<<<<<<<<<<<"<<endl;
		cout<<"请输入学生信息文档名:";
		char _fname[SIZE];
		cin.getline(_fname,SIZE);
		fin.open(_fname);
		while(!fin.is_open())
		{
			cout<<"不能打开此文档名的文档,请重新输入:";
			cin.getline(_fname,SIZE);
			fin.open(_fname);
		}
		for(int i=0;i<student_num;i++)
		{
			fin.get(p[i].classnum,SIZE);
			fin.get();
			fin.get(p[i].id,SIZE);
			fin.get();
			fin.getline(p[i].name,SIZE);
			for(int j=0;j<cour_num;j++)
			{
				fin>>*(p[i].score+j);
				fin.get();
			}
		}
		fin.close();
	}
	system("pause");
	system("cls");
	char select='a';
	while(select!='q')
	{
		cout<<"********************************************************************************"<<endl;
		cout<<"请输入选择:"<<endl;
		cout<<"【a】输入基本信息         "<<"【b】显示成绩信息           "<<"【c】成绩统计分析"<<endl;
		cout<<"【d】统计各科各分数段人数 "<<"【e】查找某个学生的各科成绩 " <<"【f】由高到低显示成绩"<<endl;
		cout<<"【g】更新学生成绩         "<<"【h】保存学生与成绩信息     "<<"【q】结束"<<endl<<endl;
		cout<<"********************************************************************************"<<endl;
		cout<<"输入:";
		cin.get(select);
		cin.get();
		while(n==0&&select!='a')
		{
			cout<<"错误,请先输入基本信息!"<<endl;
			select='a';
		}
		if(select=='a')
			input(p,cour_name,student_num,cour_num);
		else if(select=='b')
			show(p,cour_name,student_num,cour_num);
		else if(select=='c')
			statistic(p,cour_name,student_num,cour_num);
		else if(select=='d')
			section(p,cour_name,student_num,cour_num);
		else if(select=='e')
			search(p,cour_name,student_num,cour_num);
		else if(select=='f')
			sort(p,cour_name,student_num,cour_num);
		else if(select=='g')
			update(p,cour_name,student_num,cour_num);
		else if(select=='h')
			fileout(p,cour_name,student_num,cour_num,semester);
		else if(select=='q')
			;
		else
			cout<<"输入错误,请重新输入: "<<endl;
		n++;
	}
	cout<<"********************************************************************************"<<endl;
	cout<<"欢迎使用,再见!"<<endl;
	delete p;
	delete cour_name;
	for(int i=0;i<student_num;i++)
		delete[] all_score[i];
	delete all_score;
	return 0;
}
void input(student p[], string c_name[],int s_num,int c_num)
{
	for(int i=0;i<s_num;i++)
	{
		if(i>0)
		{
			cout<<"《……………………………………………………………………………………………………》";
			cout<<"《……………………………………………………………………………………………………》";
			cout<<"《…………………………………………请继续输入……………………………………………》";
			cout<<"《……………………………………………………………………………………………………》";
			cout<<"《……………………………………………………………………………………………………》";
			cout<<endl;
		}
		cout<<setfill('=')<<setw(25);
		cout<<"请输入第 "<<i+1<<"个学生的班级(例如:自动化1122):";
		cin.get(p[i].classnum,SIZE);
		cin.get();
		while(!cin.good())
		{
			cin.clear();
			cin.sync();
			cout<<"错误!请重新输入: ";
			cin.get(p[i].classnum,SIZE);
			cin.get();
		}
		cout<<setfill('=')<<setw(24);
		cout<<"请输入"<<i+1<<"个学生的学号:";
		cin.get(p[i].id,SIZE);
		cin.get();
		while(!cin.good())
		{
			cin.clear();
			cin.sync();
			cout<<"错误!请重新输入: ";
			cin.get(p[i].id,SIZE);
			cin.get();
		}
		for(int k=0;k<s_num;k++)
		{
			if(k==i)
				k++;
			if(strcmp(p[k].id,p[i].id)==0)
			{
				cout<<setfill('=')<<setw(25);
				cout<<"与已有学生的学号重复,请重新输入:";
				cin.get(p[i].id,SIZE);
				cin.get();
			while(!cin.good())
			{
				cin.clear();
				cin.sync();
				cout<<"错误!请重新输入: ";
				cin.get(p[i].id,SIZE);
				cin.get();
			}
			}
		}
		cout<<setfill('=')<<setw(32);
		cout<<"请输入其姓名:";
		cin.getline(p[i].name,SIZE);
		while(!cin.good())
		{
			cin.clear();
			cin.sync();
			cout<<"错误!请重新输入: ";
			cin.getline(p[i].name,SIZE);
		}
		for(int j=0;j<c_num;j++)
		{
			cout<<setfill('=')<<setw(24);
			cout<<"请输入"<<c_name[j]<<"的成绩:";
			cin>>*(p[i].score+j);
			cin.get();
			while(!cin.good())
			{
				cin.clear();
				cin.sync();
				cout<<"错误!请重新输入: ";
				cin>>*(p[i].score+j);
				cin.get();
			}
			while(*(p[i].score+j)>100||*(p[i].score+j)<0)
			{
				cout<<setfill('=')<<setw(25);
				cout<<"输入错误,请输入0到100之内的数:";
				cin>>*(p[i].score+j);
				cin.get();
				while(!cin.good())
				{
					cin.clear();
					cin.sync();
					cout<<"错误!请重新输入: ";
					cin>>*(p[i].score+j);
					cin.get();
				}
			}
		}
		system("pause");
		system("cls");
		}
}
void show(student p[], string c_name[],int s_num,int c_num)
{
	cout<<"********************************************************************************";
	cout<<"科目:\t\t";
	for(int j=0;j<c_num;j++)
		cout<<"\t"<<c_name[j];
	cout<<endl;
	cout<<"********************************************************************************";
	for(int i=0;i<s_num;i++)
	{
		cout<<p[i].classnum<<"班:"<<p[i].name<<":";
		if(isalpha(p[i].name[0]))
			cout<<"\t\t";
		else
			cout<<"\t";
		for(int j=0;j<c_num;j++)
			cout<<*(p[i].score+j)<<"\t";
		cout<<endl;
		cout<<"********************************************************************************";
	}
	system("pause");
	system("cls");
	}
void statistic(student p[], string c_name[],int s_num,int c_num)
{
	int sum,ave,max,min,pass,trigger,cl_num;
	double pass_rate;
	for(int i=0;i<c_num;i++)
	{
		cout<<"【"<<c_name[i]<<"科目】"<<endl;
		for(int k=0;k<s_num;k++)
		{
			sum=0;
			trigger=0;
			ave=0;
			cl_num=0;
			pass_rate=0;
			pass=0;
			max=*(p[k].score+i);
			min=*(p[k].score+i);
			for(int j=0;j<k;j++)
				if(strcmp(p[k].classnum,p[j].classnum)==0)
					trigger=1;
			if(trigger==1)
				continue;
			for(int j=k;j<s_num;j++)
			{
				if(strcmp(p[k].classnum,p[j].classnum)==0)
				{
					sum+=*(p[j].score+i);
					cl_num++;
					if((*p[j].score+i)>max)
						max=*(p[j].score+i);
					if((*p[j].score+i)<min)
						min=*(p[j].score+i);
					if(*(p[j].score+i)>=60)
						pass++;
				}
			}
			cout<<"《"<<p[k].classnum<<"班》"<<endl;
			cout<<"********************************************************************************";
			cout<<"总分为:"<<sum<<" ";
			ave=sum/cl_num;
			cout<<"平均分为:"<<ave<<" ";
			cout<<"最高分为:"<<max<<" ";
			cout<<"最低分为:"<<min<<" ";
			pass_rate=(1.0*pass)/cl_num;
			cout<<"及格率为:"<<pass_rate*100<<"%"<<endl;
			cout<<"********************************************************************************";
		}
	}
	system("pause");
	system("cls");
 }
void section(student p[], string c_name[],int s_num,int c_num)
{
	int s_nopass,s_60,s_70,s_80,s_90,trigger;
	for(int i=0;i<c_num;i++)
	{
		cout<<"【"<<c_name[i]<<"】";
		for(int k=0;k<s_num;k++)
		{
			trigger=0;
			s_nopass=0;
			s_60=0;
			s_70=0;
			s_80=0;
			s_90=0;
			for(int j=0;j<k;j++)
				if(strcmp(p[k].classnum,p[j].classnum)==0)
					trigger=1;
			if(trigger==1)
			continue;
			for(int j=k;j<s_num;j++)
			{
				if(strcmp(p[k].classnum,p[j].classnum)==0)
				{
					if(*(p[j].score+i)>=90)
						s_90++;
					else if(*(p[j].score+i)>=80)
						s_80++;
					else if(*(p[j].score+i)>=70)
						s_70++;
					else if(*(p[j].score+i)>=60)
						s_60++;
					else if(*(p[j].score+i)<60)
						s_nopass++;
				}
			}
			cout<<endl;
			cout<<"《"<<p[k].classnum<<"班》"<<endl;
			cout<<"********************************************************************************";
			cout<<"不及格:"<<s_nopass<<" 人 ";
			cout<<"60至70:"<<s_60<<" 人 ";
			cout<<"70至80:"<<s_70<<" 人 ";
			cout<<"80至90:"<<s_80<<" 人 ";
			cout<<"90至100:"<<s_90<<" 人 "<<endl;
			cout<<"********************************************************************************";
		}
	}
	system("pause");
	system("cls");
}
void search(student p[], string c_name[],int s_num,int c_num)
{
	char name_or_id[SIZE];
	cout<<"请输入学号或名字:";
	cin.get(name_or_id,SIZE);
	cin.get();
	while(!cin.good())
	{
		cin.clear();
		cin.sync();
		cout<<"错误!请重新输入: ";
		cin.get(name_or_id,SIZE);
		cin.get();
	}
	cout<<"********************************************************************************";
	int n=0;
	for(int i=0;i<s_num;i++)
	{
		if(strcmp(p[i].name,name_or_id)==0||strcmp(p[i].id,name_or_id)==0)
		{
			n++;
			cout<<"学号"<<p[i].id<<"的"<<p[i].name<<"同学的成绩如下:"<<endl;
			cout<<"********************************************************************************";
			for(int j=0;j<c_num;j++)
			cout<<c_name[j]<<"科目:"<<*(p[i].score+j)<<"分"<<" ";
			cout<<endl;
			cout<<"********************************************************************************";
		}
	}
	if(n==0)
	cout<<"没有这名同学的信息。"<<endl;
	system("pause");
	system("cls");
}
void sort(student p[], string c_name[],int s_num,int c_num)
{
	int *score_s=new int[s_num];
	for(int i=0;i<c_num;i++)
	{
		for(int j=0;j<s_num;j++)
			score_s[j]=*(p[j].score+i);
		quicksort(score_s,0,s_num-1);
		cout<<"【"<<c_name[i]<<"】由高到低的分数排序如下:"<<endl;
		cout<<"********************************************************************************";
		for(int j=0;j<s_num;j++)
			cout<<score_s[j]<<"分 ";
		cout<<endl;
		cout<<"********************************************************************************";
	}
	system("pause");
	system("cls");
	delete[] score_s;
}
void update(student p[], string c_name[],int s_num,int c_num)
{
	char name_or_id[SIZE];
	cout<<"请输入学号或名字:";
	cin.get(name_or_id,SIZE);
	cin.get();
	char ch;
	int n=0;
	for(int i=0;i<s_num;i++)
	{
		if(strcmp(p[i].name,name_or_id)==0||strcmp(p[i].id,name_or_id)==0)
		{
			n++;
			cout<<"请选择要执行的操作:"<<endl;
			cout<<"********************************************************************************";
			cout<<"(a)更新学生的基本信息 (b)更新学生的成绩"<<endl;
			cout<<"(q)结束"<<endl;
			cout<<"********************************************************************************";
			cout<<"输入:";
			cin.get(ch);
			cin.get();
			cout<<"********************************************************************************";
			if(ch!='q')
			{
				if(ch=='a')
				{
					cout<<"请输入其班级(例如:自动化1122):";
					cin.get(p[i].classnum,SIZE);
					cin.get();
					cout<<"********************************************************************************";
					while(!cin.good())
					{
						cin.clear();
						cin.sync();
						cout<<"错误!请重新输入: ";
						cin.get(p[i].classnum,SIZE);
						cin.get();
						cout<<"********************************************************************************";
					}
					cout<<"请输入其学号:";
					cin.get(p[i].id,SIZE);
					cin.get();
					cout<<"********************************************************************************";
					while(!cin.good())
					{
						cin.clear();
						cin.sync();
						cout<<"错误!请重新输入: ";
						cin.get(p[i].id,SIZE);
						cin.get();
						cout<<"********************************************************************************";
					}
					for(int k=0;k<s_num;k++)
					{
						if(k==i)
							k++;
						if(strcmp(p[k].id,p[i].id)==0)
						{
							cout<<"与已有学生的学号重复,请重新输入:"<<endl;
							cin.get(p[i].id,SIZE);
							cin.get();
							cout<<"********************************************************************************";
							while(!cin.good())
							{
								cin.clear();
								cin.sync();
								cout<<"错误!请重新输入: ";
								cin.get(p[i].id,SIZE);
								cin.get();
								cout<<"********************************************************************************";
							}
						}
					}
					cout<<"请输入其姓名:";
					cin.getline(p[i].name,SIZE);
					cout<<"********************************************************************************";
					while(!cin.good())
					{
						cin.clear();
						cin.sync();
						cout<<"错误!请重新输入: ";
						cin.getline(p[i].name,SIZE);
						cout<<"********************************************************************************";
					}
				}
				else if(ch=='b')
				{
					for(int j=0;j<c_num;j++)
					{
						cout<<"请输入"<<c_name[j]<<"的成绩:";
						cin>>*(p[i].score+j);
						cin.get();
						cout<<"********************************************************************************";
						while(!cin.good())
						{
							cin.clear();
							cin.sync();
							cout<<"错误!请重新输入: ";
							cin>>*(p[i].score+j);
							cin.get();
							cout<<"********************************************************************************";
						}
						while(*(p[i].score+j)>100||*(p[i].score+j)<0)
						{
							cout<<"输入错误,请输入0到100之内的数:";
							cin>>*(p[i].score+j);
							cin.get();
							while(!cin.good())
							{
								cin.clear();
								cin.sync();
								cout<<"错误!请重新输入: ";
								cin>>*(p[i].score+j);
								cin.get();
								cout<<"********************************************************************************";
							}
						}
					}
				}
			else
			{
				cout<<"输入错误,请重新输入:";
				cin.get(ch);
				cin.get();
				cout<<"********************************************************************************";
			}
		}
	}
 }
	if(n==0)
	{
		cout<<"没有这名同学。"<<endl;
		cout<<"********************************************************************************";
	}
	system("pause");
	system("cls");
}
void fileout(student p[], string c_name[],int s_num,int c_num,int semester)
{
	ofstream fout;
	char fname[SIZE];
	char _fname1[SIZE]="basic_";
	char _fname2[SIZE]="course_";
	char _fname3[SIZE]="student_";
	cout<<"请输入要保存的文件名(需要加上后缀.txt):";
	cin.getline(fname,SIZE);
	strcat(_fname1,fname);
	strcat(_fname2,fname);
	strcat(_fname3,fname);
	fout.open(fname);
	for(int i=0;i<s_num;i++)
	{
		fout<<"********************************************************************************"<<endl;
		fout<<"【个人信息】";
		fout<<"姓名:"<<p[i].name<<" "<<"班级:"<<p[i].classnum<<"班 "<<"学号:"<<p[i].id<<endl;
		fout<<"********************************************************************************"<<endl;
		fout<<"【成绩】";
		for(int j=0;j<c_num;j++)
		fout<<c_name[j]<<":"<<*(p[i].score+j)<<" ";
		fout<<endl;
		fout<<"********************************************************************************"<<endl;
		fout<<endl;
	}
	fout.close();
	fout.open(_fname1);
	fout<<s_num<<endl;
	fout<<semester<<endl;
	fout<<c_num<<endl;
	fout.close();
	fout.open(_fname2);
	for(int i=0;i<c_num;i++)
	{
		fout<<c_name[i]<<endl;
	}
	fout.close();
	fout.open(_fname3);
	for(int i=0;i<s_num;i++)
		{
			fout<<p[i].classnum<<endl;
			fout<<p[i].id<<endl;
			fout<<p[i].name<<endl;
			for(int j=0;j<c_num;j++)
			{
				fout<<*(p[i].score+j)<<endl;
			}
		}

	cout<<"已输出到"<<fname<<"中。"<<endl;
	system("pause");
	system("cls");
}
void quicksort(int s[],int l,int r)
{
	if(l<r)
	{
		int i=l,j=r,x=s[l];
		while(i<j)
		{
			while(i<j&&s[j]<=x)
				j--;
			if(i<j)
				s[i++]=s[j];
			while(i<j&&s[i]>=x)
				i++;
			if(i<j)
				s[j--]=s[i];
		}
		s[i]=x;
		quicksort(s,l,i-1);
		quicksort(s,i+1,r);
	}
}






开始界面1:


 


开始界面2:


开始界面3:



选项界面:





基本信息输入界面:




成绩显示界面:



成绩统计分析界面:



分段成绩界面:



查找特定学生信息界面:



排序显示成绩界面:



文件输出:



结束界面:




修改:

1.用动态的方式建立数组,之前的方式虽然某些编译器可通过,但不符合C++的规定.

2.加入了txt的读取以及输出。

注:

如果编译出现问题,请用最新的gcc编译。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值