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

📄 2337-书籍信息管理系统(子图版).c

📁 数据结构课程的一个实训项目(书籍信息管理系统)
💻 C
📖 第 1 页 / 共 3 页
字号:
		if(tmp==1)
		{
			printf("\n你要查找的所有书籍资料:");				
			printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");				
			for(i=0;i<number;i++)
			{					
				if(stu[i].kucun==stu[i1].kucun||stu[i].kucun==stu[i2].kucun)
				{
				  	printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);												
				}
			}            
			printf("\n库存最大值是%d\n",stu[i1].kucun);
            printf("库存最小值是%d\n",stu[i2].kucun);
		}
		printf("\n查找完毕!\n" );						
		if(tmp==0)
		{ 
			printf("\n没有查找到你要的书籍!\n" );								
		}
							
		printf("\n按1继续,按0返回上级菜单:" );		
		while( 1 )
		{										
			char c3;
			scanf("%1s",&c3);
			if( c3=='1')
				goto loop13;
			else break;
		}					  
}

void chaxun6()           /*6.查询给定书名的书籍信息的函数*/
{ 
	int i,tmp;
	char x[50]; 
	loop14:
		if(number==0)
		{
			printf("\n还未有书籍信息!\n");
			return; 
		}		
		tmp=0;
	 	printf("\n请输入要查找书籍的书名:"); 	
	 	scanf("%s",&x);	
	  	printf("\n你要查找的所有书籍资料:");				
	  	printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");	 	
		for(i=0;i<number;i++)
		{				
			if(strcmp(stu[i].name,x)==0)
			{
	  			printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);					
				tmp=1;
			}
		}
		printf("\n查找完毕!\n" );
						
		if(tmp==0)
		{ 
			printf("\n没有查找到你要的书籍!\n" );								
		}
					
		printf("\n按1继续,按0返回上级菜单:" );
	 	while( 1 )
		{			
	        char c3;
			scanf("%1s",&c3);
	        if( c3=='1')
				goto loop14;
	        else break;
		}				
}

void chaxun7()           /*7.查询所有最值的书籍信息的函数*/
{
	if(number==0)
	{
		printf("\n还未有书籍信息!\n");
		return; 
	}	
	int x,y,i,i1,i2,i3,i4,i5,i6,tmp,sum,sum1,sum2,min1,max1,min2,max2,min3,max3;
	max1=0;
	max2=0;
	max3=0;
	tmp=0;	
	y=0;		
	min1=stu[0].kucun;
	min2=stu[0].jiage;
	min3=stu[0].year*365+stu[0].month*30+stu[0].day;
			 	
	for(i=0;i<number;i++)
	{
		sum=stu[i].year*365+stu[i].month*30+stu[i].day;				
		if(stu[i].kucun>=max1)
		{
			max1=stu[i].kucun;
			i1=i;
	  		tmp=1;					
		}
        if(stu[i].kucun<=min1)
        {
			min1=stu[i].kucun;
			i2=i;
	  		tmp=1;
		}
		if(stu[i].jiage>=max2)
		{
			max2=stu[i].jiage;
			i3=i;
	  		tmp=1;					
		}
        if(stu[i].jiage<=min2)
        {
			min2=stu[i].jiage;
			i4=i;
	  		tmp=1;
		}
		if(sum>=max3)
		{
			max3=sum;
			i5=i;
	  		tmp=1;					
		}
        if(sum<=min3)
        {
			min3=sum;
			i6=i;
	  		tmp=1;
		}				
	}		

	if(tmp==1)
	{
		sum1=stu[i5].year*365+stu[i5].month*30+stu[i5].day;
		sum2=stu[i6].year*365+stu[i6].month*30+stu[i6].day;
		printf("\n你要查找的所有书籍资料:");				
		printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");	
		for(i=0;i<number;i++)
		{
			sum=stu[i].year*365+stu[i].month*30+stu[i].day;						
			if(stu[i].kucun==stu[i1].kucun||stu[i].kucun==stu[i2].kucun||stu[i].jiage==stu[i3].jiage||stu[i].jiage==stu[i4].jiage||sum==sum1||sum==sum2)
			{
			  	printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);												
			}
		}			
        printf("\n库存最大值是%d\n",stu[i1].kucun);
        printf("库存最小值是%d\n",stu[i2].kucun);
        printf("价格最大值是%.1f\n",stu[i3].jiage);
        printf("价格最小值是%.1f\n",stu[i4].jiage);
        printf("出版时间最晚是%d-%d-%d\n",stu[i5].year,stu[i5].month,stu[i5].day);
        printf("出版时间最早是%d-%d-%d\n",stu[i6].year,stu[i6].month,stu[i6].day);
	}
	printf("\n查找完毕!\n" );						
	if(tmp==0)
	{ 
		printf("\n没有查找到你要的书籍!\n" );								
	}												  	
}

void paixu1()          /*1.根据库存对书籍内容进行排序输出的函数*/
{		
	if(number==0)
	{
		printf("\n还未有书籍信息!\n");
		return; 
	}	
	int i,j;
	struct book tmp;
	for(i=0;i<number-1;i++)            /*冒泡法*/
	{
		for(j=number-2;j>=i;j--)
		{
			if(stu[j+1].kucun<stu[j].kucun)
			{
				tmp=stu[j+1];
				stu[j+1]=stu[j];
				stu[j]=tmp;				
			}
		}
	}
	
	printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");		
	for(i=0;i<number;i++)
	{
		printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);														
	}
} 

void paixu5()          /*2.根据价格对书籍内容进行排序输出的函数*/
{
	if(number==0)
	{
		printf("\n还未有书籍信息!\n");
		return; 
	}	
	int i,j,k;
	struct book tmp;
	for(i=0;i<number-1;i++)            /*选择法*/
	{
		k=i;
		for(j=i+1;j<number;j++)
			if(stu[j].jiage<stu[k].jiage)
				k=j;
		if(k!=i)		 
		{
			tmp=stu[i];
			stu[i]=stu[k];
			stu[k]=tmp;				
		}		
	}
	
	printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");		
	for(i=0;i<number;i++)
	{
		printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);														
	}
} 

void paixu2()          /*2.根据价格对书籍内容进行排序输出的函数*/
{
	if(number==0)
	{
		printf("\n还未有书籍信息!\n");
		return; 
	}	
	int i1,i,j;
	struct book tmp,tmp1[number];                 /*快速法*/

	for(i1=0;i1<number;i1++)
	{	
		i=0;
		j=number-1;
		tmp=stu[i1];
		do
		{
			while((stu[j].jiage>tmp.jiage)&&(i<j))
				j--;
			if(i<j)
			{
				i++;
			}
			while((stu[i].jiage<=tmp.jiage)&&(i<j))
				i++;
			if(i<j)
			{
				j--;
			}
		}while(i!=j);
		tmp1[i]=tmp;					
	}				
	
	printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");		
	for(i=0;i<number;i++)
	{
		printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",tmp1[i].num,tmp1[i].name,tmp1[i].zuozhe,tmp1[i].leibie,tmp1[i].jiage,tmp1[i].year,tmp1[i].month,tmp1[i].day,tmp1[i].kucun);														
	}	
} 

void sift(struct book *stu,int i,int m)          /*筛选算法*/
{
	int j,sum,sum1,sum2;
	struct book tmp;
	tmp=stu[i];
	sum=tmp.year*365+tmp.month*30+tmp.day;
	j=2*i;
	while(j<=m)
	{
		sum1=stu[j].year*365+stu[j].month*30+stu[j].day;	
		sum2=stu[j+1].year*365+stu[j+1].month*30+stu[j+1].day;
		if(j<m&&(sum1<sum2))
			j++;
		if(sum<sum1)
		{
			stu[i]=stu[j];
			i=j;
			j=2*i;
		}
		else break;
	}
	stu[i]=tmp;
}

void paixu3()           /*3.根据出版时间对书籍内容进行排序输出的函数*/
{
	if(number==0)
	{
		printf("\n还未有书籍信息!\n");
		return; 
	}	
	int i;
	struct book tmp;
	for(i=number/2;i>=1;i--)            /*堆排序法*/
		sift(stu,i,number);
	for(i=number;i>=2;i--)
	{
		tmp=stu[1];
		stu[1]=stu[i];
		stu[i]=tmp;
		sift(stu,1,i-1);
	}
	
	printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");		
	for(i=0;i<number;i++)
	{
		printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);														
	}	
}

void paixu6()           /*3.根据出版时间对书籍内容进行排序输出的函数*/
{
	if(number==0)
	{
		printf("\n还未有书籍信息!\n");
		return; 
	}	
	int i,j,sum1,sum2;
	struct book tmp;
	for(i=0;i<number-1;i++)            /*冒泡法*/
	{
		for(j=number-2;j>=i;j--)
		{
			sum1=stu[j].year*365+stu[j].month*30+stu[j].day;
			sum2=stu[j+1].year*365+stu[j+1].month*30+stu[j+1].day;
			if(sum2<sum1)
			{
				tmp=stu[j+1];
				stu[j+1]=stu[j];
				stu[j]=tmp;				
			}
		}
	}
	
	printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");		
	for(i=0;i<number;i++)
	{
		printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);														
	}	
}
 
void paixu4()          /*4.按照库存、价格组合进行排序输出的函数*/
{
	if(number==0)
	{
		printf("\n还未有书籍信息!\n");
		return; 
	}	
	int i,j;
	struct book tmp;
	for(i=0;i<number-1;i++)            /*冒泡法*/
	{
		for(j=number-2;j>=i;j--)
		{
			if(stu[j+1].kucun<stu[j].kucun)
			{
				tmp=stu[j+1];
				stu[j+1]=stu[j];
				stu[j]=tmp;				
			}
			else if(stu[j+1].kucun==stu[j].kucun)
			{
				if(stu[j+1].jiage<stu[j].jiage)
				{
					tmp=stu[j+1];
					stu[j+1]=stu[j];
					stu[j]=tmp;				
				}				
			} 
		}
	}
	
	printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");		
	for(i=0;i<number;i++)
	{
		printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);														
	}	
} 

void bao()               /*8.保存文件的函数*/      
{
	if(number==0)
	{
		printf("\n\t\t\t还未有书籍信息!\n");
		return; 
	}		
  	FILE  *fp;   
  	int i;
  	char ch,file[20];
  	printf("\n\t\t\t请给文件命名(格式*.txt):");
  	scanf("%s",file);
  	if((fp=fopen(file,"wb+"))==NULL)
  	{
    	printf("此文件打不开");
    	return;
  	}
  
 	for (i=0;i<number;i++)
  	if(fwrite(&stu[i],sizeof(struct book),1,fp)!=1) 
	printf ("文件书写错误!");
  	fclose (fp);
  	printf("\n\t\t\t保存成功!\n");	
}	

void du()                   /*9.读取文件的函数*/
{	

⌨️ 快捷键说明

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