⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zuoye.c

📁 数组结构写的程序 可以删除,查找,增加,排序内容
💻 C
字号:
/*
written by 1jjk
mail:lingjiujianke@gmail.com
*/

#include<stdio.h>
typedef struct{
	unsigned int number; 
	char name[20];
	unsigned int english;
	unsigned int math;
	unsigned int computer;
	unsigned int ave;
	}stuinfo;
stuinfo stu[600];
int counter=0;
char filename[50]="/root/11.txt";
FILE *fp;


int output();
int insert();
int search();
int stat();
int taxis();
int delete();

/*显示目录*/
int menu(void)
{
		printf("\n===============================================\n");
		printf("\t\t\tthe main menu\n");
		printf("\t1. insert the data\t\t2. output the data\n");
		printf("\t3. data taxis\t\t\t4. search the data\n");
		printf("\t5. delete the data\t\t6. data stat\n");
		printf("\t7. exit the menu\n");
		printf("===============================================\n");
		printf("please input the number you want to choose [the number form 1----7]:");
		return 0;
}

int main()
{
	int num;
	
		if((fp=fopen(filename,"w"))==NULL)
		{
  		printf(" error");
		}
		fprintf(fp,"%-10s%-10s%-10s%-10s%-10s%-10s","number","name","english","math","computer","ave");
		fclose(fp);

while(1)
{
	menu();
	scanf("%d",&num);
	switch(num)
	{
		case 1:
					insert();
					break;
		case 2:
					output();
					break;
		case 3:
					taxis();
					break;
		case 4:
					search();
					break;
		case 5:
					delete();
					break;
		case 6:
					stat();
					break;
		case 7:
					return 0;
		default:
					printf("you have input other num,please in put the num from 1 to 7.\n");
					break;

	}
}
return 0;
}


/*输入成绩*/
int insert()
{
		
		int aver;
		counter++;
		/*如果人数超过590就自动弹出错误并返回*/
	if(counter>590)
	{
		printf("error!");
		return 0;
	}

		if((fp=fopen(filename,"a"))==NULL)
		{
  		printf(" error");
		}
			/*输入学生姓名*/
			printf("\nplease in put the student name:");
			/*输入学生姓名*/
			scanf("%s",stu[counter].name);
			
			printf("\nplease input the student's english grade:");
			/*输入学生英语成绩*/
			scanf("%d",&stu[counter].english);
				/*如果输入的成绩不符实,则出错*/
			if(stu[counter].english>100)
			{
				printf("input wrong\n");
				return 0;
			}
			if(stu[counter].english<0)
			{
				printf("input wrong\n");
				return 0;
			}
			/*输入数学成绩*/
			printf("\nplease input the student's math grade:");
			/*出入数学成绩*/
			scanf("%d",&stu[counter].math);
				/*如果输入的成绩不符实,则出错*/
			if(stu[counter].math>100)
			{
				printf("input wrong\n");
				return 0;
			}
			if(stu[counter].math<0)
			{
				printf("input wrong\n");
				return 0;
			}
			/*输入计算机成绩*/
			printf("\nplease input the student's computer grade:");
			/*输入计算机成绩*/
			scanf("%d",&stu[counter].computer);
			
			/*如果输入的成绩不符实,则出错*/
			if(stu[counter].computer>100)
			{
				printf("input wrong\n");
				return 0;
			}
		
			if(stu[counter].computer<0)
			{
				printf("input wrong\n");
				return 0;
			}
	

	aver=(stu[counter].english+stu[counter].math+stu[counter].computer)/3;
	stu[counter].ave=aver;
	stu[counter].number=counter;
/*输入文件,内容为姓名,英语成绩,数学成绩,计算机成绩。平均成绩,都是结构数组*/
	fprintf(fp,"\n%-10d%-10s%-10d%-10d%-10d%-10d", stu[counter].number, stu[counter].name, stu[counter].english, stu[counter].math, stu[counter].computer, stu[counter].ave);
/*在屏幕上输出结果*/
	printf("%-10s%-10s%-10s%-10s%-10s%-10s","number","name","english","math","computer","ave");
	printf("\n%-10d%-10s%-10d%-10d%-10d%-10d\n", stu[counter].number, stu[counter].name, stu[counter].english, stu[counter].math, stu[counter].computer, stu[counter].ave);

	fclose(fp);
	return 0;
}



/*输出文件内的所有内容*/
int output()
{
	char ch;
	printf("\n");
	
	if((fp=fopen(filename,"r"))==NULL)
	{
	  printf(" error");
  }

	while((ch=fgetc(fp))!=EOF)
	{
		printf("%c",ch);
	}

	fclose(fp);
	return 0;
}


/*根绝学生的平均成绩的大小排序*/
int taxis()
{
	stuinfo mid;
	unsigned int a=1, b=1;
	
	if((fp=fopen(filename,"rb"))==NULL)
	{
		printf("error!");
		return 0;
	}

	while(b<counter)
	{
		while(a<=counter)
		{
			fscanf(fp,"%d%s%d%d%d%d",&a, stu[a].name,&stu[a].english,&stu[a].math,&stu[a].computer,&stu[a].ave);
			a++;
		}
		a=1;
		while(a<counter)
		{
			if(stu[a].ave>stu[a+1].ave)
			{
			mid=stu[a];
			stu[a]=stu[a+1];
			stu[a+1]=mid;
			}
			a++;
		}

	b++;
	}
		fclose(fp);
		if((fp=fopen(filename,"w"))==NULL)
		{
			printf("error!");
			return 0;
		}
			fprintf(fp,"%-10s%-10s%-10s%-10s%-10s%-10s\n","number","name","english","math","computer","ave");
			printf("%-10s%-10s%-10s%-10s%-10s%-10s\n","number","name","english","math","computer","ave");
			a=1;
		while(a<=counter)
		{
				fprintf(fp,"%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
				printf("%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
				a++;
		}

		fclose(fp);
	return 0;
}



/*根据学号查找学生的成绩*/
int search()
{
	unsigned int a;
	printf("\nplease input the number you want to find:");
	scanf("%d",&a);
	if(a>590)
	{
			printf("the num you input is very large\n");
			return 0;
	}
	if(a<0)
	{
			printf("the num you input is small then 0\n");
			return 0;
	}
	if((fp=fopen(filename,"rb"))==NULL)
	{
		printf("error!");
		return 0;
	}

		fscanf(fp,"%d%s%d%d%d%d",&a, stu[a].name,&stu[a].english,&stu[a].math,&stu[a].computer,&stu[a].ave);
		printf("%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
		fclose(fp);
	return 0;
}


/*删除指定内容*/
int delete()
{

	unsigned int a,b;
	
		printf("\nplease input the number you want to delete:");

		if((fp=fopen(filename,"rb"))==NULL)
		{
			printf("error!");
			return 0;
		}
		a=1;
		
		while(a<=counter)
		{
		fscanf(fp,"%d",&a);
		a++;
		}
	fclose(fp);

	if((fp=fopen(filename,"w"))==NULL)
	{
		printf("error!");
		return 0;
	}
	
	scanf("%d",&a);
	printf("you want delete %d\n",a);
	for(b=a;b<=counter;b++)
	{
		stu[b-1]=stu[b];
		
	}
	counter=counter-1;
	for(a=1;a<=counter;a++)
	{
		
		fprintf(fp,"%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
		printf("%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
	}
		fclose(fp);
	return 0;
}

/*平均分人数统计*/
int stat()
{
unsigned int a=1,c=0,d=0,e=0,f=0,g=0;
	if((fp=fopen(filename,"rb"))==NULL)
	{
		printf("error!");
		return 0;
	}
	
	while(a<=counter)
	{
		fscanf(fp,"%d",&a);
		a++;
	}
	a=1;
	while(a<(counter+1))
	{
		if(stu[a].ave<60)
		{
		c++;
		}
		else if(stu[a].ave>=60&&stu[a].ave<70)
		{
				d++;
		}
		else if(stu[a].ave>=70&&stu[a].ave<80)
		{
				e++;
		}
		else if(stu[a].ave>=80&&stu[a].ave<90)
		{
				f++;
		}
		else if(stu[a].ave>=90&&stu[a].ave<=100)
		{
				g++;
		}
		a++;
	}
	printf("\n============================================================\n");
	printf("%-10s%-10s%-10s%-10s%-10s\n","0--59","60--69","70--79","80--89","90--100");
	printf("%-10d%-10d%-10d%-10d%-10d\n", c, d, e, f, g);
	
	fclose(fp);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -