学生信息管理系统(静态版)

系统的主界面     系统的操作指令  结构体的创建

目录

1、学生信息的输入

2、学生信息的添加

3、学生信息的删除

4、学生信息的查找,找到并显示

*判断查找函数3和4和5共用

5、学生信息的修改

6、显示学生的信息

7、学生成绩的排序,并打印(代码中有快排和冒泡都行)

综合代码


1、学生信息的输入2、学生信息的添加3、学生信息的删除 4、学生信息的查找

5、学生信息的修改6、显示学生的信息7、学生成绩的排序 0、退出系统

结构体学生的信息和信息系统结构体(1000个空间),静态内存

//结构体:学生的信息
typedef struct Student
{
	char name[20];//名字
	int num;           //学号
	int score[3];         //成绩//语数英
}Stu;


//信息系统结构体(1000个空间),静态
typedef struct System
{
	Stu data[100];//一共的空间
	int ren;           //人数
}Sy

系统的主界面     系统的操作指令 菜单

//菜单,系统主界面
void menu()
{
	printf("                            \n"); 
	printf("*********学生管理系统********\n");
	printf("****************************\n");
	printf("***1:信息输入   2:信息删除***\n");
	printf("***3:信息查找   4:信息修改***\n");
	printf("***5:显示信息   6:信息排序***\n");
	printf("***7:添加信息   0:退出系统***\n");
	printf("****************************\n");
}

main函数

int main()
{
	//定义管理系统
	Sy con;
	//初始化
	InitSy(&con);//初始化管理系统
	int input = 0;//
	do
	{
		menu();//菜单,系统主界面
		scanf("%d", &input);//输入
		switch (input)
		{
		case 1://1、学生信息的输入
			Stuxinxi(&con);
			break;
		case 2://2、学生信息的添加
			AddSy(&con);
			break;
		case 3://3、学生信息的删除 
			DelSy(&con);
			break;
		case 4://4、学生信息的查找
			SeekSy(&con);
			break;
		case 5://5、学生信息的修改
			ModifySy(&con);
			break;
		case 6://6、显示学生的信息
			ShowSy(&con);
			break;
		case 7://7、学生成绩的排序
			SortSy(&con);
			break;
		case 0:
			printf("退出学生信息管理系统\n");
			break;
		default:
			printf("选择错误,重新选择\n");
				break;
		}
	} while (input);
	return 0;
}

初始化管理系统函数

/初始化管理系统函数
void InitSy(Sy* pc)
{
	pc->ren = 0;
	memset(pc->data, 0, sizeof(pc->data));//单位字节,因为传的地址是整个数组的地址所以可以直接用sizeof。
}

1、学生信息的输入

//1、学生信息的输入
void Stuxinxi(Sy* pc)
{
	int n = 0;
	printf("输入相输入成绩的人数->");
	scanf("%d", &n);

	for (int i = 0; i < n; i++)
	{
		printf("请输入第%d名学生姓名>>", i + 1);
		scanf("%s", pc->data[i].name);
		printf("请输入第%d名学生学号>>", i + 1);
		scanf("%d", &pc->data[i].num);
		printf("请输入第%d名学生语文成绩>>", i + 1);
		scanf("%d", &pc->data[i].score[0]);
		printf("请输入第%d名学生数学成绩>>", i + 1);
		scanf("%d", &pc->data[i].score[1]);
		printf("请输入第%d名学生英语成绩>>", i + 1);
		scanf("%d", &pc->data[i].score[2]);
		printf("\n");
	}
	
	pc->ren = n;
}

2、学生信息的添加

//2、学生信息的添加
void AddSy(Sy*pc)
{
	if (pc->ren == 1000)
	{
		printf("成员已满,无法录入新的信息\n");
		return;
	}
	printf("请输入学生姓名>>");
	scanf("%s", pc->data[pc->ren].name);

	printf("请输入学生学号>>");
	scanf("%d", &pc->data[pc->ren].num);

	printf("请输入学生语文成绩>>");
	scanf("%d", &pc->data[pc->ren].score[0]);

	printf("请输入学生数学成绩>>");
	scanf("%d", &pc->data[pc->ren].score[1]);

	printf("请输入学生英语成绩>>");
	scanf("%d", &pc->data[pc->ren].score[2]);
    printf("添加成功\n");

	pc->ren++;//人数加一
}

3、学生信息的删除

//查找函数通过名字,要用在删除,和修改上面
int  FindByname(Sy*pc,char*name)
{
	for (int i = 0; i < pc->ren; i++)
	{
		if (strcmp(name, pc->data[i].name) == 0)//字符比较函数
		{
			return i;//直接返回下标为了让其后面的信息更好覆盖
		}
	}
	//没找到
	return -1;
}

//3、学生信息的删除(用名字删除)
void DelSy(Sy* pc)
{
	//要想删除信息,必须要找到那个人的信息
	//找
	char name[20];
	printf("输入你想删除学生信息的姓名>>");
	scanf("%s", name);
	int n = FindByname(pc, name);//要删除人的下标
	if (n == -1)
	{
		printf("查无此人\n");
		return;
	}

	//不等于-1,也就是找到了
	//找到后直接覆盖

	memmove(pc->data + n, pc->data + n + 1, sizeof(int) * (pc->ren - n));//要传指针!!!!!!!data[n]不是指针
	//for (int j = n; j < pc->ren - 1; j++)//人-1,为了防止空间溢出
	//{
	//	pc->data[j] = pc->data[j + 1];
	//}
	
	pc->ren--;//删除后人数减一
	printf("删除成功\n");
}

4、学生信息的查找,找到并显示

//查找函数通过名字,要用在删除,和修改上面
int  FindByname(Sy*pc,char*name)
{
	for (int i = 0; i < pc->ren; i++)
	{
		if (strcmp(name, pc->data[i].name) == 0)//字符比较函数
		{
			return i;//直接返回下标为了让其后面的信息更好覆盖
		}
	}
	//没找到
	return -1;
}

//4、学生信息的查找,找到并显示
void SeekSy(Sy* pc)
{
	char name[20];
	printf("请输入你想查找学生的姓名>>");
	scanf("%s", name);
	
	int i = FindByname(pc, name);//不等于-1,就是找到了
	if (i == -1)
	{
		printf("没找到\n");
		return;
	}

	//找到了,打印
	printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
	int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
	printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
}

简便::4学生信息的查找和3学生信息的删除(用名字删除)共用的查找函数(判断字符串相不相等函数)

//查找函数通过名字,要用在删除,和修改上面,因为查找和修改和删除都需要先找到这个人

*判断查找函数3和4和5共用

//3和4和5共用

//查找函数通过名字,要用在删除,和修改上面(判断字符串相不相等函数)
int  FindByname(Sy*pc,char*name)
{
	for (int i = 0; i < pc->ren; i++)
	{
		if (strcmp(name, pc->data[i].name) == 0)//字符比较函数
		{
			return i;//直接返回下标为了让其后面的信息更好覆盖
		}
	}
	//没找到
	return -1;
}

5、学生信息的修改

//查找函数通过名字,要用在删除,和修改上面,因为修改和删除都需要先找到这个人(判断字符串相不相等函数)
int  FindByname(Sy*pc,char*name)
{
	for (int i = 0; i < pc->ren; i++)
	{
		if (strcmp(name, pc->data[i].name) == 0)//字符比较函数
		{
			return i;//直接返回下标为了让其后面的信息更好覆盖
		}
	}
	//没找到
	return -1;
}

void ModifySy(Sy*pc)
{
	char name[20];
	printf("输入你想修改学生信息的名字>>");
	scanf("%s", name);
	int n = FindByname(pc, name);//n为-1,就是没是找到
	if (n == -1)
	{
		printf("没找到\n");
		return;
	}
	//找到了
	printf("请重新输入学生姓名>>");
	scanf("%s", pc->data[n].name);

	printf("请重新输入学生学号>>");
	scanf("%d", &pc->data[n].num);

	printf("请重新输入学生语文成绩>>");
	scanf("%d", &pc->data[n].score[0]);

	printf("请重新输入学生数学成绩>>");
	scanf("%d", &pc->data[n].score[1]);

	printf("请重新输入学生英语成绩>>");
	scanf("%d", &pc->data[n].score[2]);



	printf("修改成功\n");
}

6、显示学生的信息

//6、显示学生的信息
void ShowSy(Sy* pc)
{
	printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名","学号","语文成绩","数学成绩","英语成绩","总成绩");
	for (int i = 0; i < pc->ren; i++)
	{
		int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
		printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1],pc->data[i].score[2], k);
	}
}

7、学生成绩的排序,并打印(代码中有快排和冒泡都行)

//7、学生成绩的排序,并打印
void SortSy(Sy* pc)
{
	printf("                               \n");
	printf("*********1:语文成绩排序********\n");
	printf("*********2:数学成绩排序********\n");
	printf("*********3:英语成绩排序********\n");
	printf("*********4:总成绩排序 ********\n");
	int w = 0;
	scanf("%d", &w);
	if (w == 1)
	{
		qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu1);
		printf("语文成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}

	if (w == 2)
	{
		qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu2);
		printf("数学成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}
	if (w == 3)
	{
		qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu3);
		printf("英语成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}

	//冒泡
	if (w == 4)
	{
		printf("总成绩成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int p = 0; p < pc->ren - 1; p++)
		{
			for (int j = 0; j < pc->ren - 1 - p; j++)
			{
				int t1 = pc->data[j].score[0] + pc->data[j].score[1] + pc->data[j].score[2];
				int t2 = pc->data[j+1].score[0] + pc->data[j+1].score[1] + pc->data[j+1].score[2];
				if (t1 < t2)
				{
					Stu tmp = pc->data[j];
					pc->data[j] = pc->data[j + 1];
					pc->data[j + 1] = tmp;
				}
			}
		}
		//打印
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}
}

综合代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//qsort的头文件 
/*
系统的主界面     系统的操作指令

1、学生信息的录入

2、学生信息的添加

3、学生信息的删除 

4、学生信息的查找

5、学生信息的修改

6、显示学生的信息

7、学生成绩的排序学生成绩的排序
*/

//结构体:学生的信息
typedef struct Student
{
	char name[20];//名字
	int num;           //学号
	int score[3];         //成绩//语数英
}Stu;

//信息系统结构体(1000个空间),静态
typedef struct System
{
	Stu data[1000];//一共的空间
	int ren;           //人数
}Sy;

//初始化管理系统函数
void InitSy(Sy* pc)
{
	pc->ren = 0;
	memset(pc->data, 0, sizeof(pc->data));//单位字节,因为传的地址是整个数组的地址所以可以直接用sizeof。
}

//菜单,系统主界面
void menu()
{
	printf("                                                   \n"); 
	printf("*************学生管理系统****************\n");
	printf("*****************************************\n");
	printf("***1:学生信息的输入   2:学生信息的添加***\n");
	printf("***3:学生信息的删除   4:学生信息的查找***\n");
	printf("***5:学生信息的修改   6:显示学生的信息***\n");
	printf("***7:学生成绩的排序   0:退出系统      ***\n");
	printf("*****************************************\n");
}

//2、学生信息的添加
void AddSy(Sy*pc)
{
	if (pc->ren == 1000)
	{
		printf("成员已满,无法录入新的信息\n");
		return;
	}
	printf("请输入学生姓名>>");
	scanf("%s", pc->data[pc->ren].name);

	printf("请输入学生学号>>");
	scanf("%d", &pc->data[pc->ren].num);

	printf("请输入学生语文成绩>>");
	scanf("%d", &pc->data[pc->ren].score[0]);

	printf("请输入学生数学成绩>>");
	scanf("%d", &pc->data[pc->ren].score[1]);

	printf("请输入学生英语成绩>>");
	scanf("%d", &pc->data[pc->ren].score[2]);

	printf("添加成功\n");
	pc->ren++;//人数+1
}

//6、显示学生的信息
void ShowSy(Sy* pc)
{
	printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名","学号","语文成绩","数学成绩","英语成绩","总成绩");
	for (int i = 0; i < pc->ren; i++)
	{
		int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
		printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1],pc->data[i].score[2], k);
	}
}


//查找函数通过名字,要用在删除,和修改上面,因为修改和删除都需要先找到这个人(判断字符串相不相等函数)
//3和4和5共用
int  FindByname(Sy*pc,char*name)
{
	for (int i = 0; i < pc->ren; i++)
	{
		if (strcmp(name, pc->data[i].name) == 0)//字符比较函数
		{
			return i;//直接返回下标为了让其后面的信息更好覆盖
		}
	}
	//没找到
	return -1;
}

//3、学生信息的删除(用名字删除)
void DelSy(Sy* pc)
{
	//要想删除信息,必须要找到那个人的信息
	//找
	char name[20];
	printf("输入你想删除学生信息的姓名>>");
	scanf("%s", name);
	int n = FindByname(pc, name);//要删除人的下标
	if (n == -1)
	{
		printf("查无此人\n");
		return;
	}

	//不等于-1,也就是找到了
	//找到后直接覆盖

	memmove(pc->data + n, pc->data + n + 1, sizeof(int) * (pc->ren - n));//要传指针!!!!!!!data[n]不是指针
	//for (int j = n; j < pc->ren - 1; j++)//人-1,为了防止空间溢出
	//{
	//	pc->data[j] = pc->data[j + 1];
	//}
	
	pc->ren--;//删除后人数减一
	printf("删除成功\n");
}


//4、学生信息的查找,找到并显示
void SeekSy(Sy* pc)
{
	char name[20];
	printf("请输入你想查找学生的姓名>>");
	scanf("%s", name);
	
	int i = FindByname(pc, name);//不等于-1,就是找到了
	if (i == -1)
	{
		printf("没找到\n");
		return;
	}

	//找到了,打印
	printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
	int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
	printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
}


//5、学生信息的修改
void ModifySy(Sy*pc)
{
	char name[20];
	printf("输入你想修改学生信息的名字>>");
	scanf("%s", name);
	int n = FindByname(pc, name);//n为-1,就是没是找到
	if (n == -1)
	{
		printf("没找到\n");
		return;
	}

	//找到了
	printf("请重新输入学生姓名>>");
	scanf("%s", pc->data[n].name);

	printf("请重新输入学生学号>>");
	scanf("%d", &pc->data[n].num);

	printf("请重新输入学生语文成绩>>");
	scanf("%d", &pc->data[n].score[0]);

	printf("请重新输入学生数学成绩>>");
	scanf("%d", &pc->data[n].score[1]);

	printf("请重新输入学生英语成绩>>");
	scanf("%d", &pc->data[n].score[2]);



	printf("修改成功\n");
}


//放在快排的排序函数
//语文成绩排序
int paixu1(const void* p1, const void* p2)
{
	return ((Sy*)p2)->data->score[0] - ((Sy*)p1)->data->score[0];//->的优先级大于*,所以要加个括号
}
//数学成绩排序
int paixu2(const void* p1, const void* p2)
{
	return ((Sy*)p2)->data->score[1] - ((Sy*)p1)->data->score[1];//->的优先级大于*,所以要加个括号
}
//英语成绩排序
int paixu3(const void* p1, const void* p2)
{
	return ((Sy*)p2)->data->score[2] - ((Sy*)p1)->data->score[2];//->的优先级大于*,所以要加个括号
}

//7、学生成绩的排序,并打印
void SortSy(Sy* pc)
{
	printf("                                                   \n");
	printf("*********1:语文成绩排序********\n");
	printf("*********2:数学成绩排序********\n");
	printf("*********3:英语成绩排序********\n");
	printf("*********4:总成绩排序 ********\n");
	int w = 0;
	scanf("%d", &w);
	if (w == 1)
	{
		qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu1);
		printf("语文成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}

	if (w == 2)
	{
		qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu2);
		printf("数学成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}
	if (w == 3)
	{
		qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu3);
		printf("英语成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}

	//冒泡
	if (w == 4)
	{
		printf("总成绩成绩排序\n");
		printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");
		for (int p = 0; p < pc->ren - 1; p++)
		{
			for (int j = 0; j < pc->ren - 1 - p; j++)
			{
				int t1 = pc->data[j].score[0] + pc->data[j].score[1] + pc->data[j].score[2];
				int t2 = pc->data[j+1].score[0] + pc->data[j+1].score[1] + pc->data[j+1].score[2];
				if (t1 < t2)
				{
					Stu tmp = pc->data[j];
					pc->data[j] = pc->data[j + 1];
					pc->data[j + 1] = tmp;
				}
			}
		}
		//打印
		for (int i = 0; i < pc->ren; i++)
		{
			int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩
			printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
		}
	}
}


//1、学生信息的输入
void Stuxinxi(Sy* pc)
{
	int n = 0;
	printf("输入相输入成绩的人数->");
	scanf("%d", &n);

	for (int i = 0; i < n; i++)
	{
		printf("请输入第%d名学生姓名>>", i + 1);
		scanf("%s", pc->data[i].name);
		printf("请输入第%d名学生学号>>", i + 1);
		scanf("%d", &pc->data[i].num);
		printf("请输入第%d名学生语文成绩>>", i + 1);
		scanf("%d", &pc->data[i].score[0]);
		printf("请输入第%d名学生数学成绩>>", i + 1);
		scanf("%d", &pc->data[i].score[1]);
		printf("请输入第%d名学生英语成绩>>", i + 1);
		scanf("%d", &pc->data[i].score[2]);
		printf("\n");
	}
	
	pc->ren = n;
}

int main()
{
	//定义管理系统
	Sy con;
	//初始化
	InitSy(&con);//初始化管理系统
	int input = 0;//
	do
	{
		menu();//菜单,系统主界面
		scanf("%d", &input);//输入
		switch (input)
		{
		case 1://1、学生信息的输入
			Stuxinxi(&con);
			break;
		case 2://2、学生信息的添加
			AddSy(&con);
			break;
		case 3://3、学生信息的删除 
			DelSy(&con);
			break;
		case 4://4、学生信息的查找
			SeekSy(&con);
			break;
		case 5://5、学生信息的修改
			ModifySy(&con);
			break;
		case 6://6、显示学生的信息
			ShowSy(&con);
			break;
		case 7://7、学生成绩的排序
			SortSy(&con);
			break;
		case 0:
			printf("退出学生信息管理系统\n");
			break;
		default:
			printf("选择错误,重新选择\n");
				break;
		}
	} while (input);
	return 0;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值