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

📄 fun2.c

📁 这是一个基于控制台的彩票管理系统
💻 C
字号:

/*********************************/
/********输出函数*****************/
/********************************/
# include "head2.h"
void print_perf2(DATA2 *head2)
{  
	int i=1;int j=1;
	if(head2==NULL)
	{
		printf("没有任何数据,按任意键返回主菜单:");
		printf("\n*****************************\n");
        getch();
        return;
	}
	else 
		printf("输出以下结果:\n");
	printf("序号**************各序号码\n");
	d1=head2;/*指向头指针*/
	while(d1!=NULL)
	{  
		printf("%ld      ",d1->name2); 
		for(j=0;j<=6;j++)
			printf("%4d",d1->number2[j]);
		printf("\n");
		d1=d1->next2;/*下一个结点**/
	}
	printf("any key to return\n");
	getch();
	return;
}
 /*************************************************/
/**************保存函数***************************/
/**********************************************/
void save2(DATA2 *head2)
{
	printf("input the file name2:\n");
	scanf("%s",filename2);
	if((fp=fopen(filename2,"wb"))==NULL)
	{ 
		printf("文件打开失败,按任意键返回菜单\n");
		getch();
		return;
	}
	d1=d2=head2;/*指向头指针*/
	while(d1!=NULL)
	{  
		if(fwrite(d1,sizeof(DATA2),1,fp)!=1)
		{
		   printf("shi bai\n");
		   getch();
		   return;
		}
		d1=d1->next2;/*下一个结点**/
	}
	fclose(fp);
	printf("saved,input any key to return menu:\n");
	getch();
}

/***********************************************/
/***************插入函数***********************/
 /********************************************/

 DATA2 *insert_perf2(DATA2 *head2)
{
	DATA2 *p3=NULL;
	int i,m;
	m=1;
	d1=head2;
	d2=head2;
	while(m!=0)
	{	/**申请一个新空间,已存放插入的数据**/
		if((p3=(DATA2 *)malloc(LEN2))==NULL)
		{
			printf("内存不足,链表创建失败!\n");
			getch(); 
			return NULL;
		} 
		printf("请输入号码的序号:\n");
		scanf("%d",&p3->name2);
		printf("请输入各个号码:\n");
		for(i=0;i<=6;i++)
			scanf("%d",&p3->number2[i]);
		/**原链表没有一个数据**/
		if(head2==NULL)
		{	
			head2=p3;
			p3->next2=NULL;
		}
		/**原链表有数据**/
		else
		{/*原彩票数据都是按有小到大排序的*/
			/*大于则后移**/
			while((p3->name2>d1->name2)&&(d1->next2!=NULL))
			{
				d2=d1;
				d1=d1->next2;
			}
			/**不是插入到最后则小于等于则前插**/
			if(p3->name2<=d1->name2)
			{
				/**原链表只有一个结点**/
				if(head2==d1)
				{	
					head2=p3;
					p3->next2=d1;
				}
				/**原链表不止有一个结点**/
				else 
				{	
					d2->next2=p3;
					p3->next2=d1;
				}
			}
			/*该数据是最大的 插入到最后**/
			else
			{	
				d1->next2=p3;
				p3->next2=NULL;
			}
		}
		printf("插入成功!想继续插入吗?按数字0退出,按数字1继续\n");
		scanf("%d",&m);
	}/*while循环结束**/
	return(head2);
}

 /********************************/
 
 /*****载入函数*********************/

 /************************************/
 
 DATA2 *openfile2(void)
 {  
	int i,n;
	i=1;
	n=1;
    printf("输入文件名:\n");
    scanf("%s",filename2);
    /*文件打开*/
	if((fp=fopen(filename2,"rb"))==NULL)
	{ 
		printf("文件打开失败,按任意键返回\n");
		getch();
		return(NULL);
	}
    /**申请一个新空间**/
	if((d1=d2=(DATA2*)malloc(LEN2))==NULL)
	{ 
		printf("内存不足,链表创建失败!按任意键返回\n");
		getch();
		return(NULL);
	}
   /**读取整块数据到内存**/
	if(fread(d1,sizeof(DATA2),1,fp)!=1)
	{ 
		printf("文件导入失败,按任意键返回\n");
		getch();
		return(NULL);
	}
	if(d1->next2==NULL)/*只有一个结点*/
	{  
	   head2=d1;
	   fclose(fp);
	   return(head2);
	}
	/*有多个结点*/
	else
	{
		while(d1->next2!=NULL)
		{	
			if(n==1)
				head2=d1;/**表头**/
			else 
				d2->next2=d1;
			n=n+1;/*下一个结点*/
			d2=d1;
			/**申请一个新空间**/
			if((d1=(DATA2*)malloc(LEN2))==NULL)
			{ 
				printf("内存不足,链表创建失败!按任意键返回\n");
				getch();
				return(NULL);
			}
			/**读取整块数据到内存**/
			if(fread(d1,sizeof(DATA2),1,fp)!=1)
			{	
				printf("文件导入失败,按任意键返回\n");
				getch();
				return(NULL);
			}
		}/*while循环结束*/
		d2->next2=d1;
	}/*else结束*/
	fclose(fp);
	printf("文件载入成功,按任意键返回\n");
	getch();
	return(head2);
}/**函数结束**/

 /************************************/
/***********删除函数*****************/
/*************************************/
 
 DATA2 * del_perf2( DATA2 * head2)
{ 
	long int m;
	int n=1;
	/**没有数据**/
	if(head2==NULL)
	{	
		printf("没有任何号码,按任意键返回!\n");
        getch();
		return(head2);
	}  
	while(n==1)
	{  
		printf("输入想删除的彩票号码的序号\n");
		scanf("%ld",&m);
		d1=head2;/**指向头指针**/
		d2=d1;
		if(m==d1->name2)/*删除的是第一个结点*/
		{	
			/*只有一个结点*/
			if(d1->next2==NULL)
			{	
				head2=d1=d2=NULL;
				printf("只有一序号码已被删除,按任意键返回!\n");
                getch();
                return(head2);
			}
			/*不只有一个结点*/
			else
			{   
				head2=d1->next2;
			}
		}/****/
		/*删除的不是第一个结点*/
		while(m!=(d1->name2))/**相等退出**/
		{  
			/**最后一个结点都没有找到相应的期号**/
			if(d1->next2==NULL)
			{	
				printf("没找到相应的序号,按任意键返回!\n");
				getch();
				return(head2);
			}
			/*否则p1,p2后移**/
			else
			{
				d2=d1;
				d1=d1->next2;
			}
		 }
		d2->next2=d1->next2;/**末尾处理**/
		printf("已被删除\n继续删除请按'1'键,按'0'键返回主菜单!");
		scanf("%d",&n);
	}/*大的while循环结束*/
	return(head2);
}/*该函数结束*/

/************************/
/****修改函数************/
/************************/
DATA2 * modify2( DATA2 * head2 )
{ 
	int m,i,n;
	n=1;
	while(n==1)/*大循环*/
	{  
		d1=d2=head2;	
		if(head2==NULL)/**没有数据**/
		{	
			printf("没有任何号码可被修改,按任意键返回!\n");
			getch();
			return(head2);
		}
		printf("请输入你想修改的彩票号码的序号:\n");
		scanf("%d",&m);
		while(m<=0)
		{	
			printf("彩票号码的序号应大于0!按任意键重新输入:\n");
			getch();
			scanf("%d",&m);
		}
		/**在原链表中查找该期期号**/
		while(m!=d1->name2)
		{  
			if(d1->next2==NULL)
			{
				printf("没找到所输入的彩票号码的序号,按任意键返回主菜单\n");
				getch();
                return(head2);
		     }
			else
			{
				d2=d1;
				d1=d1->next2;
			}
		} 
		/**在原链表中查找到该期期号则执行以下程序**/
		printf("以下是你想修改的彩票号码的序号及号码:\n");
		printf("序号:  %4d\n",d1->name2);
		printf("号码:  ");
		for(i=0;i<=6;i++)
			printf("%2d",d1->number2[i]);
		printf("\n修改请按'1',按'0'键返回\n");
		scanf("%d",&n);
		/**想修改**/
		if(n==1)
		{	
			printf("请输入新的序号:  ");
			scanf("%ld",&d1->name2);
			printf("\n输入新号码,以空格相隔:\n");
			for(i=0;i<=6;i++)
				scanf("%d",&d1->number2[i]);
		}
		/**不想修改则返回**/
		else 
			return(head2);
		printf("继续修改请按'1',按'0'键返回主菜单\n");
		scanf("%d",&n);
	}/*结束大循环*/
	return(head2);
}
/****************************/
/*****查找函数***************/
/****************************/
void search2(DATA2 * head2)
{
	int m,i,n;
	n=1;
	while(n==1)/*大循环*/
	{
		d1=d2=head2;	
		if(head2==NULL)
		{	
			printf("没有任何号码可被查找,按任意键返回!\n");
            getch();
			return;
		}
		printf("请输入你想查找的彩票号码的序号:\n");
		scanf("%d",&m);
		if(m<=0)
		{	
			printf("彩票号码的序号应大于0:\n");
			getch();
			return;
		}
		/**在原链表中查找该期期号**/
		while(m!=d1->name2)
		{ 
			if(d1->next2==NULL)
			{	
				printf("没找到所输入的彩票号码的序号, 按任意键返回主菜单\n");
				getch();
				return;
			}
			else
			{
				d2=d1;
				d1=d1->next2;
			}
		} 
		printf("以下是你想查找的彩票号码的序号及号码:\n");
		printf("序号:%ld\n",d1->name2);
		printf("号码:  ");
		for(i=0;i<=6;i++)
			printf("%4d",d1->number2[i]);
		printf("\n继续查找请按'1',按'0'键返回\n");
		scanf("%d",&n);
	}/*结束大循环*/
	return;
}
/************************/
/*************************/
/*****结束文件***********/

⌨️ 快捷键说明

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