学生信息管理系统-c语言

我写这个所有的对文件数据的操作都是通过二进制实现的fread和fwrite,我感觉这个用起来特别的方便,但是他存储到文件中的数据有点乱感觉,但是不会影响到自己使用。

数据的存储

才用一个简单的结构体来对学生的数据进行存储

struct student{
	char num[20],name[50],sex[50],sx[50],yy[50],cyy[50];
	ll zf; 
};

主函数

主要用来决定显示的界面是什么样的

int main()
{
//	 char aaa[100]="202111000318";
//	 printf("%d",zh1(aaa));
	 int i=1,option;
	 while(i!=0)
	 {
		 system("color 1e");//设置背景颜色颜色
		 printf("*************************************************\n");
		 printf(" 欢迎使用学生信息管理系统\n");
		 printf(" 1、增加数据 \n");
		 printf(" 2、显示数据 \n");
		 printf(" 3、查找数据 \n");
		 printf(" 4、删除数据 \n");
		 printf(" 5、修改数据 \n");
		 printf(" 6、学号排序 \n");
		 printf(" 7、数学成绩排序 \n");
		 printf(" 8、English排序 \n");
		 printf(" 9、c语言成绩排序 \n");
		 printf(" 10、总成绩排序 \n"); 
		 printf(" 0、退出系统 \n");
		 printf("*************************************************\n");
		 scanf("%d",&option);
	//	 printf("%d",option); 
		 while(option<0||option>10)
		 {
		 	printf("选择不合法,请重新输入:");
			scanf("%d",&option); 
		 }
		 switch(option)
		 {
			 case 1:
			 add();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 2:
			 print();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 3:
			 search();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 4:
			 cut();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 5:
			 modify();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 6:
			 xsort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break; 
			 case 7:
			 ssort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 8:
			 esort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 9:
			 csort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 10:
			 zsort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 0:
			 i=0;
			 break;
		 }
	 }
	 printf("您已经退出学生信息管理系统,欢迎再次使用\n");
	 return 0;
	scanf("%d",&n);
	store();//存储 
	add();
	return 0;
}

一些比较关键的自定义函数

因为除了总分之外所有的数据都是直接定义的char类型因此需要一些吧字符串转换成数字的函数

ll zh(char s[])
{
	ll n=0;
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
		n=n*10+s[i]-'0';
	}
	return n;
}
ll zh1(char s[])
{
	ll n=0;
	int len=strlen(s);
	for(int i=len-4;i<len;i++)
	{
		n=n*10+s[i]-'0';
	}
	return n;
}

我通过c自带的qsort完成排序功能所以需要一些函数

int cmp1(const void *a,const void *b)
{
	ll n=zh1((*(struct student*)a).num);
	ll m=zh1((*(struct student*)b).num);
	return n-m;
}
int cmp2(const void *a,const void *b)
{
	ll n=zh((*(struct student*)a).sx);
	ll m=zh((*(struct student*)b).sx);
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}
int cmp3(const void *a,const void *b)
{
	ll n=zh((*(struct student*)a).yy);
	ll m=zh((*(struct student*)b).yy);
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}
int cmp4(const void *a,const void *b)
{
	ll n=zh((*(struct student*)a).cyy);
	ll m=zh((*(struct student*)b).cyy);
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}
int cmp5(const void *a,const void *b)
{
	ll n=(*(struct student*)a).zf;
	ll m=(*(struct student*)b).zf;
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}

我们c语言老师说计算机有输入是垃圾输出是垃圾的特性,所以写了一些函数来吧使用者输入的垃圾不合法的数据来排除掉
其中学号是12位的,成绩都是0-100分的

bool check(char s[])//判断成绩是否合法 
{
	int len=strlen(s);
	if(len>3)return false;
	for(int i=0;i<len;i++)
	{
		if(s[i]<48||s[i]>57)
			return false;
	}
	int n=0; 
	for(int i=0;i<len;i++)
	{
		n=n*10+s[i]-'0';
	}
	if(n<0||n>100)return false;
	return true;
} 
bool check1(char s[])//判断是否为数字
{
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
		if(s[i]<48||s[i]>57)
			return false;
	}
	return true;
} 
bool check2(char s[])//判断是否为数字
{
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
//		printf("%d check\n",s[i]);
//		printf("%d,if\n",s[i]<48||s[i]>57);
		if(s[i]<48||s[i]>54)
			return false;
	}
	return true;
} 
bool check3(char s[])//判断是否为数字
{
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
		if(s[i]<48||s[i]>57)
			return false;
	}
	return true;
} 

增加数据

void add()//添加学生信息 
{
	system("cls");//清屏
	struct student s[500];
	FILE *fp;
	printf("*************************************************\n");
	printf("请输入一个正整数n代表要添加的数据个数输入0代表停止添加:\n");
	printf("*************************************************\n");
	int n;
	char z[100];
	scanf("%s",z);
	while(!check1(z))
	{
		printf("您输入的数字不合法请重新输入:");
		scanf("%s",z);
	}
	n=zh(z);
	if(n==0)return ; 
	for(int i=0;i<n;i++)
	{
		char ss[100];
		printf("添加的第%d位同学的学号(12位数字):",i+1); 
		scanf("%s",ss);
		int len=strlen(ss);
		while(len!=12)
		{
			printf("添加的第%d为同学的学号(12位数字):",i+1); 
			scanf("%s",ss);
			len=strlen(ss);
		} 
		strcpy(s[i].num,ss);
		printf("添加的第%d位同学的姓名:",i+1);
		scanf("%s",s[i].name);
		printf("添加的第%d位同学的性别(男或女):",i+1);
		scanf("%s",s[i].sex);
		while(strcmp(s[i].sex,"男")!=0&&strcmp(s[i].sex,"女")!=0)
		{
			printf("添加的第%d位同学的性别(男或女):",i+1);
			scanf("%s",s[i].sex);
		}
		printf("添加的第%d位同学的数学成绩(0-100):",i+1);
		scanf("%s",ss);
		while(!check(ss))
		{
			printf("您输入的数学成绩不合法请重新输入:");
			scanf("%s",ss);
		}
		strcpy(s[i].sx,ss);
		printf("添加的第%d位同学的英语成绩(0-100):",i+1);
		scanf("%s",ss);
		while(!check(ss))
		{
			printf("您输入的英语成绩不合法请重新输入:");
			scanf("%s",ss);
		}
		strcpy(s[i].yy,ss);
		printf("添加的第%d位同学的c语言成绩(0-100):",i+1);
		scanf("%s",ss);
		while(!check(ss))
		{
			printf("您输入的c语言成绩不合法请重新输入:");
			scanf("%s",ss);
		}
		strcpy(s[i].cyy,ss);
		s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
	}
	open(xxx,ab);//这里的xxx是写完生成的文件名称
	for(int i=0;i<n;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
}

显示数据

用来吧所有已经存储的数据全部显示出来就是一个遍历的过程

void print()//打印全部学生信息 
{
	system("cls");//清屏
	struct student s[500];
	FILE *fp;
	open(xxx,rb);//xxx是文件名
	int n=0;
	for(int i=0;!feof(fp);i++)
	{
//		cout<<i<<' '<<n<<' '<<"i,n"<<endl;
		++n;
		fread(&s[i],sizeof(struct student),1,fp);
//		char ch[500];
//		fgets(ch,100,fp);
	}
	printf("*************************************************\n");
	printf("                   学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<n-1;i++)
	{
		printf("第%3.3d的同学信息为:",i+1);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
//		char ch[10];fgets(ch,10,fp);
//		printf("%s",ch);
	}
	printf("*************************************************\n");
	fclose(fp);
}

删除数据

void cut()//删除某学生信息 
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	int a;
	printf("请输入一个正整数代表要删除学生的个数0代表结束:");
	char z[100];
	scanf("%s",z);
	while(!check3(z)) 
	{
		printf("请输入一个合法的数字:");
		scanf("%s",z); 
	}
	a=zh(z);
	for(int x=1;x<=a;x++)
	{
		printf("请输入第%d个要删除学生的姓名:",x);
		char ss[100];
		scanf("%s",ss);
		int f=0;
		for(int i=0;!feof(fp);i++)
		{
			++cnt;
			fread(&s[i],sizeof(struct student),1,fp);
			if(strcmp(s[i].name,ss)==0)f=1;
		}
		fclose(fp);
		rewind(fp);
		if(f)
		{
			FILE *fp;
			open(xxx,wb);
			for(int i=0;i<cnt-2;i++)
			{
				if(strcmp(s[i].name,ss)==0)
					continue;
//				printf("%s %s %s %s %s %s\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy);
				fwrite(&s[i],sizeof(struct student),1,fp);
			}
			fclose(fp);
		}
		else printf("未能找到姓名为%s的学生信息\n",ss);
	}
}

修改数据

void modify()//修改部分信息
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	printf("*************************************************\n");
	printf("1、修改学号 \n");
	printf("2、修改姓名 \n");
	printf("3、修改性别 \n");
	printf("4、修改数学成绩 \n");
	printf("5、修改英语成绩 \n");
	printf("5、修改c语言成绩 \n"); 
	printf("*************************************************\n");
//	printf("1代表修改学号,2代表修改姓名,3代表修改性别,4代表修改数学成绩,5代表修改英语成绩,6代表修改c语言成绩,输入0代表停止修改");
	printf("请输入一个0-6的数字:");
	int n,cnt=0;
	char z[100];
	scanf("%s",z);
	while(!check2(z))
	{
		printf("您刚刚输入的数字不合法请重新选择\n");
		printf("*************************************************\n");
		printf("1、修改学号 \n");
		printf("2、修改姓名 \n");
		printf("3、修改性别 \n");
		printf("4、修改数学成绩 \n");
		printf("5、修改英语成绩 \n");
		printf("5、修改c语言成绩 \n"); 
		printf("*************************************************\n");
		printf("请输入一个0-6的数字:");
		scanf("%s",z);
	}
	n=zh(z);
	if(n!=0)
	{ 
		open(xxx,rb);
		for(int i=0;!feof(fp);i++)
		{
			++cnt;
			fread(&s[i],sizeof(struct student),1,fp);
		}
		fclose(fp);
		rewind(fp);
		char ss[100];
		int f=0; 
		if(n==1)//修改学号 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的学号(12位)");
			char l[20];
			scanf("%s",l);
			int len=strlen(l);
			while(len!=12)
			{
				printf("请输入一个合法的学号: ");
				scanf("%s",l);
				len=strlen(l); 
			} 
			int f=0; 
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].num,l);
				}
			}
			if(!f)
				printf("未找到姓名为%s的学生的信息\n",ss); 
		}
		else if(n==2)//修改姓名
		{
			printf("请输入要修改学生的学号(12位):");
			scanf("%s",ss);
			int len=strlen(ss);
			while(len!=12)
			{
				printf("请输入一个合法学号:");
				scanf("%s",ss);
				len=strlen(ss); 
			} 
			printf("请输入修改后的姓名");
			char l[20];
			scanf("%s",l);
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].num)==0)
				{
					f=1;
					strcpy(s[i].name,l);
				}
			}
			if(!f)
				printf("未找的学号为%s的学生的信息\n",ss);
		} 
		else if(n==3)//修改性别 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的性别");
			char l[20];
			scanf("%s",l);
			while(strcmp(l,"男")!=0&&strcmp(l,"女")!=0)
			{
				printf("请输入一个合法性别:");
				scanf("%s",l); 
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].sex,l);
				}
			} 
			printf("未找到姓名为%s的学生的信息\n",ss);
		} 
		else if(n==4)//修改数学成绩 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的数学成绩(0-100)");
			char l[20];
			scanf("%s",l);
			while(!check(l))
			{
				printf("请输入一个合法的成绩: ");
				scanf("%s",l);
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].sx,l);
					s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
				}
			}
			if(!f)
				printf("未能找到姓名为%s学生的信息\n",ss);
		//	s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
		} 
		else if(n==5)//修改英语成绩 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的英语成绩(0-100)");
			char l[20];
			scanf("%s",l);
			while(!check(l))
			{
				printf("请输入一个合法的成绩: ");
				scanf("%s",l);
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].yy,l);
					s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
				}
			}
			if(!f)
				printf("未能找到姓名为%s学生的信息\n",ss);
		//	s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
		}
		else if(n==6)//修改c语言成绩 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的c语言成绩(0-100)");
			char l[20];
			scanf("%s",l);
			while(!check(l))
			{
				printf("请输入一个合法的成绩: ");
				scanf("%s",l);
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].cyy,l);
					s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
				}
			}
			if(!f)
				printf("未能找到姓名为%s学生的信息\n",ss);
		//	s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
		}
		open(xxx,wb);
		for(int i=0;i<cnt-1;i++)
		{
			fwrite(&s[i],sizeof(struct student),1,fp);
		}
		fclose(fp);
	}
} 

按照学号排序

void xsort()//学号排序 
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp1);
	printf("                                  学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
//		printf("学号为%s的同学的信息为:学号         姓名       性别 数学 英语 c语言\n",ss);
		printf("按学号升序排列第%2.2d位同学的信息为:",i+1);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld \n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(学号排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件学号排序\n"); 
}

按照数学成绩排序

void ssort()//数学成绩排序 
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp2);
	printf("                                  学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按数学成绩降序第%2.2d位同学的信息为:",i);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld \n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(数学成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件数学成绩排序\n");
}

按照英语成绩排序

void esort()//英语成绩排序
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp3);
	printf("                                  学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按英语成绩降序第%2.2d位同学的信息为:",i);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(英语成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件England排序\n");
} 

c语言成绩排序

void csort()//c语言成绩排序
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(2103,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp4);
	printf("                                   学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按c语言成绩降序第%2.2d位同学的信息为:",i);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(c语言成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件c语言成绩排序\n");
} 

总成绩排序

void zsort()//总成绩排序
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(2103,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp5);
	printf("                                   学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按总成绩降序第%2.2d位同学的信息为:",i);
		printf("   %s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(总成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件总成绩排序\n");
} 

源代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define ll long long 
#define open(f,au) if((fp=fopen(#f,#au))==NULL)\
					  perror("file can't open"),exit(0)
int cnt=0;
struct student{
	char num[20],name[50],sex[50],sx[50],yy[50],cyy[50];
	ll zf; 
};
ll zh(char s[])
{
	ll n=0;
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
		n=n*10+s[i]-'0';
	}
	return n;
}
ll zh1(char s[])
{
	ll n=0;
	int len=strlen(s);
	for(int i=len-4;i<len;i++)
	{
		n=n*10+s[i]-'0';
	}
	return n;
}
int cmp1(const void *a,const void *b)
{
	ll n=zh1((*(struct student*)a).num);
	ll m=zh1((*(struct student*)b).num);
	return n-m;
}
int cmp2(const void *a,const void *b)
{
	ll n=zh((*(struct student*)a).sx);
	ll m=zh((*(struct student*)b).sx);
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}
int cmp3(const void *a,const void *b)
{
	ll n=zh((*(struct student*)a).yy);
	ll m=zh((*(struct student*)b).yy);
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}
int cmp4(const void *a,const void *b)
{
	ll n=zh((*(struct student*)a).cyy);
	ll m=zh((*(struct student*)b).cyy);
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}
int cmp5(const void *a,const void *b)
{
	ll n=(*(struct student*)a).zf;
	ll m=(*(struct student*)b).zf;
	return m-n;
	//	return zh(*(struct student*)a).num<zh(*(struct student*)b).num;
}
bool check(char s[])//判断成绩是否合法 
{
	int len=strlen(s);
	if(len>3)return false;
	for(int i=0;i<len;i++)
	{
		if(s[i]<48||s[i]>57)
			return false;
	}
	int n=0; 
	for(int i=0;i<len;i++)
	{
		n=n*10+s[i]-'0';
	}
	if(n<0||n>100)return false;
	return true;
} 
bool check1(char s[])//判断是否为数字
{
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
		if(s[i]<48||s[i]>57)
			return false;
	}
	return true;
} 
bool check2(char s[])//判断是否为数字
{
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
//		printf("%d check\n",s[i]);
//		printf("%d,if\n",s[i]<48||s[i]>57);
		if(s[i]<48||s[i]>54)
			return false;
	}
	return true;
} 
bool check3(char s[])//判断是否为数字
{
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
		if(s[i]<48||s[i]>57)
			return false;
	}
	return true;
} 
void store()//存储函数 
{
	struct student s[500];
	FILE *fp;
	open(xxx,wb);
	int n;
	printf("请输入一个正整数n:");
	scanf("%d",&n);
	while(n<=0)
	{
		printf("请输入一个正整数n:");
		scanf("%d",&n);
	}
	for(int i=0;i<n;i++)
	{
//		printf("i=%d\n",i);
		scanf("%s %s %s %s %s %s",&s[i].num,&s[i].name,&s[i].sex,&s[i].sx,&s[i].yy,&s[i].cyy);
		s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
	}
	for(int i=0;i<n;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
//		fputs("\n",fp);
	}
	fclose(fp);
} 
void add()//添加学生信息 
{
	system("cls");//清屏
	struct student s[500];
	FILE *fp;
//	open(xxx,ab);
	printf("*************************************************\n");
	printf("请输入一个正整数n代表要添加的数据个数输入0代表停止添加:\n");
	printf("*************************************************\n");
	int n;
	char z[100];
	scanf("%s",z);
//	printf("%d 111\n",check1(z)); 
	while(!check1(z))
	{
	//	printf("*************************************************\n");
		printf("您输入的数字不合法请重新输入:");
	//	printf("*************************************************\n");
		scanf("%s",z);
	}
	n=zh(z);
	if(n==0)return ; 
	for(int i=0;i<n;i++)
	{
		char ss[100];
		printf("添加的第%d位同学的学号(12位数字):",i+1); 
		scanf("%s",ss);
		int len=strlen(ss);
		while(len!=12)
		{
			printf("添加的第%d为同学的学号(12位数字):",i+1); 
			scanf("%s",ss);
			len=strlen(ss);
		} 
		strcpy(s[i].num,ss);
		printf("添加的第%d位同学的姓名:",i+1);
		scanf("%s",s[i].name);
		printf("添加的第%d位同学的性别(男或女):",i+1);
		scanf("%s",s[i].sex);
		while(strcmp(s[i].sex,"男")!=0&&strcmp(s[i].sex,"女")!=0)
		{
			printf("添加的第%d位同学的性别(男或女):",i+1);
			scanf("%s",s[i].sex);
		}
		printf("添加的第%d位同学的数学成绩(0-100):",i+1);
		scanf("%s",ss);
		while(!check(ss))
		{
			printf("您输入的数学成绩不合法请重新输入:");
			scanf("%s",ss);
		}
		strcpy(s[i].sx,ss);
		printf("添加的第%d位同学的英语成绩(0-100):",i+1);
		scanf("%s",ss);
		while(!check(ss))
		{
			printf("您输入的英语成绩不合法请重新输入:");
			scanf("%s",ss);
		}
		strcpy(s[i].yy,ss);
		printf("添加的第%d位同学的c语言成绩(0-100):",i+1);
		scanf("%s",ss);
		while(!check(ss))
		{
			printf("您输入的c语言成绩不合法请重新输入:");
			scanf("%s",ss);
		}
		strcpy(s[i].cyy,ss);
		s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
	}
	open(xxx,ab);
	for(int i=0;i<n;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
}
void print()//打印全部学生信息 
{
	system("cls");//清屏
	struct student s[500];
	FILE *fp;
	open(xxx,rb);
	int n=0;
	for(int i=0;!feof(fp);i++)
	{
//		cout<<i<<' '<<n<<' '<<"i,n"<<endl;
		++n;
		fread(&s[i],sizeof(struct student),1,fp);
//		char ch[500];
//		fgets(ch,100,fp);
	}
	printf("*************************************************\n");
	printf("                   学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<n-1;i++)
	{
		printf("第%3.3d的同学信息为:",i+1);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
//		char ch[10];fgets(ch,10,fp);
//		printf("%s",ch);
	}
	printf("*************************************************\n");
	fclose(fp);
}
void search()//查找学生信息 
{
	system("cls");//清屏
	student s[500];
	FILE *fp;
	int n;
	printf("*************************************************\n");
	printf("1、按学号查找 \n");
	printf("2、按姓名查找 \n");
	printf("0、查找结束 \n");
//	printf("1代表按学号查找,2代表按姓名查找,6代表查找结束\n"); 
	printf("*************************************************\n");
	printf("请输入一个正整数n:");
	char z[100];
	scanf("%s",z);
//	printf("n=%d\n",n);
	while(!check1(z))
	{
		printf("您刚刚输入的数字不合法请输入一个正整数n:");
		scanf("%s",z);
		//cout<<123<<endl;
	} 
	n=zh(z);
	if(n==0)return ;
	open(xxx,rb);
	if(n!=0)
	{
		int cnt=0;
		char ss[100];
		if(n==1)//学号查找 
		{
			printf("请输入一个12位的学号:");
			scanf("%s",ss);
			int len=strlen(ss); 
			while(len!=12)
			{
				printf("请输入一个12位的学号:");
				scanf("%s",ss);
				len=strlen(ss); 
			}
		}
		if(n==2)//姓名查找 
		{
			printf("请输入一个姓名:");
			scanf("%s",&ss); 
		} 
//		if(n==3)
//		{
//			printf("请输入0-100的数学成绩:");
//			scanf("%s",ss);
//			int len=strlen(ss);
//			while(ss<"0"||ss>) 
//		}
		for(int i=0;!feof(fp);i++)//遍历读入数据 
		{
			++cnt;
			fread(&s[i],sizeof(struct student),1,fp);
		}
		int f=0; 
//		cout<<123<<endl;
		for(int i=0;i<cnt-1;i++)//遍历查找数据 
		{
			if(n==1)
			{
				if(strcmp(s[i].num,ss)==0)
				{
					f=1; 
					printf("学号为%s的同学的信息为:学号         姓名       性别 数学 英语 c语言\n",ss);
			//		printf("                   学号         姓名       性别 数学 英语 c语言\n");
					printf("                                  %s %-10s %s    %-2s  %-2s   %-2s\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy);
			//		printf("%s %-10s %s %-2s %-2s %-2s \n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy); 
				}	
			}
			if(n==2)
			{
				if(strcmp(s[i].name,ss)==0)
				{
					printf("姓名为%s的同学的信息为:学号         姓名       性别 数学 英语 c语言 总分\n",ss);
			//		printf("                   学号         姓名       性别 数学 英语 c语言\n");
					printf("                            %s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
					f=1;
				}
			}
		}
		if(!f)
		{
			printf("未能查询到这个学生信息\n"); 
		}
	}
	fclose(fp) ;
}
void modify()//修改部分信息
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	printf("*************************************************\n");
	printf("1、修改学号 \n");
	printf("2、修改姓名 \n");
	printf("3、修改性别 \n");
	printf("4、修改数学成绩 \n");
	printf("5、修改英语成绩 \n");
	printf("5、修改c语言成绩 \n"); 
	printf("*************************************************\n");
//	printf("1代表修改学号,2代表修改姓名,3代表修改性别,4代表修改数学成绩,5代表修改英语成绩,6代表修改c语言成绩,输入0代表停止修改");
	printf("请输入一个0-6的数字:");
	int n,cnt=0;
	char z[100];
	scanf("%s",z);
	while(!check2(z))
	{
		printf("您刚刚输入的数字不合法请重新选择\n");
		printf("*************************************************\n");
		printf("1、修改学号 \n");
		printf("2、修改姓名 \n");
		printf("3、修改性别 \n");
		printf("4、修改数学成绩 \n");
		printf("5、修改英语成绩 \n");
		printf("5、修改c语言成绩 \n"); 
		printf("*************************************************\n");
		printf("请输入一个0-6的数字:");
		scanf("%s",z);
	}
	n=zh(z);
	if(n!=0)
	{ 
		open(xxx,rb);
		for(int i=0;!feof(fp);i++)
		{
			++cnt;
			fread(&s[i],sizeof(struct student),1,fp);
		}
		fclose(fp);
		rewind(fp);
		char ss[100];
		int f=0; 
		if(n==1)//修改学号 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的学号(12位)");
			char l[20];
			scanf("%s",l);
			int len=strlen(l);
			while(len!=12)
			{
				printf("请输入一个合法的学号: ");
				scanf("%s",l);
				len=strlen(l); 
			} 
			int f=0; 
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].num,l);
				}
			}
			if(!f)
				printf("未找到姓名为%s的学生的信息\n",ss); 
		}
		else if(n==2)//修改姓名
		{
			printf("请输入要修改学生的学号(12位):");
			scanf("%s",ss);
			int len=strlen(ss);
			while(len!=12)
			{
				printf("请输入一个合法学号:");
				scanf("%s",ss);
				len=strlen(ss); 
			} 
			printf("请输入修改后的姓名");
			char l[20];
			scanf("%s",l);
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].num)==0)
				{
					f=1;
					strcpy(s[i].name,l);
				}
			}
			if(!f)
				printf("未找的学号为%s的学生的信息\n",ss);
		} 
		else if(n==3)//修改性别 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的性别");
			char l[20];
			scanf("%s",l);
			while(strcmp(l,"男")!=0&&strcmp(l,"女")!=0)
			{
				printf("请输入一个合法性别:");
				scanf("%s",l); 
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].sex,l);
				}
			} 
			printf("未找到姓名为%s的学生的信息\n",ss);
		} 
		else if(n==4)//修改数学成绩 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的数学成绩(0-100)");
			char l[20];
			scanf("%s",l);
			while(!check(l))
			{
				printf("请输入一个合法的成绩: ");
				scanf("%s",l);
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].sx,l);
					s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
				}
			}
			if(!f)
				printf("未能找到姓名为%s学生的信息\n",ss);
		//	s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
		} 
		else if(n==5)//修改英语成绩 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的英语成绩(0-100)");
			char l[20];
			scanf("%s",l);
			while(!check(l))
			{
				printf("请输入一个合法的成绩: ");
				scanf("%s",l);
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].yy,l);
					s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
				}
			}
			if(!f)
				printf("未能找到姓名为%s学生的信息\n",ss);
		//	s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
		}
		else if(n==6)//修改c语言成绩 
		{
			printf("请输入要修改学生的姓名:");
			scanf("%s",ss);
			printf("请输入修改后的c语言成绩(0-100)");
			char l[20];
			scanf("%s",l);
			while(!check(l))
			{
				printf("请输入一个合法的成绩: ");
				scanf("%s",l);
			} 
			int f=0;
			for(int i=0;i<cnt-1;i++)
			{
				if(strcmp(ss,s[i].name)==0)
				{
					f=1;
					strcpy(s[i].cyy,l);
					s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
				}
			}
			if(!f)
				printf("未能找到姓名为%s学生的信息\n",ss);
		//	s[i].zf=zh(s[i].sx)+zh(s[i].yy)+zh(s[i].cyy);
		}
		open(xxx,wb);
		for(int i=0;i<cnt-1;i++)
		{
			fwrite(&s[i],sizeof(struct student),1,fp);
		}
		fclose(fp);
	}
} 
void cut()//删除某学生信息 
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	int a;
	printf("请输入一个正整数代表要删除学生的个数0代表结束:");
	char z[100];
	scanf("%s",z);
	while(!check3(z)) 
	{
		printf("请输入一个合法的数字:");
		scanf("%s",z); 
	}
	a=zh(z);
	for(int x=1;x<=a;x++)
	{
		printf("请输入第%d个要删除学生的姓名:",x);
		char ss[100];
		scanf("%s",ss);
		int f=0;
		for(int i=0;!feof(fp);i++)
		{
			++cnt;
			fread(&s[i],sizeof(struct student),1,fp);
			if(strcmp(s[i].name,ss)==0)f=1;
		}
		fclose(fp);
		rewind(fp);
		if(f)
		{
			FILE *fp;
			open(xxx,wb);
			for(int i=0;i<cnt-2;i++)
			{
				if(strcmp(s[i].name,ss)==0)
					continue;
//				printf("%s %s %s %s %s %s\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy);
				fwrite(&s[i],sizeof(struct student),1,fp);
			}
			fclose(fp);
		}
		else printf("未能找到姓名为%s的学生信息\n",ss);
	}
}
void xsort()//学号排序 
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp1);
	printf("                                  学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
//		printf("学号为%s的同学的信息为:学号         姓名       性别 数学 英语 c语言\n",ss);
		printf("按学号升序排列第%2.2d位同学的信息为:",i+1);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld \n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(学号排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件学号排序\n"); 
}
void ssort()//数学成绩排序 
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp2);
	printf("                                  学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按数学成绩降序第%2.2d位同学的信息为:",i);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld \n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(数学成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件数学成绩排序\n");
}
void esort()//英语成绩排序
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp3);
	printf("                                  学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按英语成绩降序第%2.2d位同学的信息为:",i);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(英语成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件England排序\n");
} 
void csort()//c语言成绩排序
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp4);
	printf("                                   学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按c语言成绩降序第%2.2d位同学的信息为:",i);
		printf("%s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(c语言成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件c语言成绩排序\n");
} 

void zsort()//总成绩排序
{
	system("cls");//清屏
	struct student s[1000];
	FILE *fp;
	open(xxx,rb);
	int cnt=0;
	for(int i=0;!feof(fp);i++)
	{
		++cnt;
		fread(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	rewind(fp);
	qsort(s,cnt-1,sizeof(struct student),cmp5);
	printf("                                   学号         姓名       性别 数学 英语 c语言 总分\n");
	for(int i=0;i<cnt-1;i++)
	{
		printf("按总成绩降序第%2.2d位同学的信息为:",i);
		printf("   %s %-10s %s    %-2s  %-2s   %-2s    %lld\n",s[i].num,s[i].name,s[i].sex,s[i].sx,s[i].yy,s[i].cyy,s[i].zf);
	}
	open(总成绩排序,wb);
	for(int i=0;i<cnt-1;i++)
	{
		fwrite(&s[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
	printf("已生成新的文件总成绩排序\n");
} 

int main()
{
//	 char aaa[100]="202111000318";
//	 printf("%d",zh1(aaa));
	 int i=1,option;
	 while(i!=0)
	 {
		 system("color 1e");//设置背景颜色颜色
		 printf("*************************************************\n");
		 printf(" 欢迎使用学生信息管理系统\n");
		 printf(" 1、增加数据 \n");
		 printf(" 2、显示数据 \n");
		 printf(" 3、查找数据 \n");
		 printf(" 4、删除数据 \n");
		 printf(" 5、修改数据 \n");
		 printf(" 6、学号排序 \n");
		 printf(" 7、数学成绩排序 \n");
		 printf(" 8、English排序 \n");
		 printf(" 9、c语言成绩排序 \n");
		 printf(" 10、总成绩排序 \n"); 
		 printf(" 0、退出系统 \n");
		 printf("*************************************************\n");
		 scanf("%d",&option);
	//	 printf("%d",option); 
		 while(option<0||option>10)
		 {
		 	printf("选择不合法,请重新输入:");
			scanf("%d",&option); 
		 }
		 switch(option)
		 {
			 case 1:
			 add();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 2:
			 print();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 3:
			 search();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 4:
			 cut();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 5:
			 modify();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 6:
			 xsort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break; 
			 case 7:
			 ssort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 8:
			 esort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 9:
			 csort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 10:
			 zsort();
			 printf("继续操作请输入 1,退出系统请输入 0\n");
			 scanf("%d",&i);
			 system("cls");//清屏
			 break;
			 case 0:
			 i=0;
			 break;
		 }
	 }
	 printf("您已经退出学生信息管理系统,欢迎再次使用\n");
	 return 0;
	scanf("%d",&n);
	store();//存储 
	add();
	return 0;
}

总结

这是我写的第一次c语言大作业,写的挺水的,没用啥动态链表啥的直接用普通的数组写了,为了偷懒直接用qsort进行排序。

写了大概刚好一个星期吧,也算是又一次感觉到了学编程的快乐感。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天热写代码不吹空调

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值