C语言程序设计:“退出并打卡”功能编写

概述

本文编写实现单词本程序中的“退出并打卡”功能模块,在索引文章中我们提到过,当用户选择执行此程序时,退出单词本并打卡。

源代码

void Exit()
{
	typedef struct yhsj            //定义结构体
    {
       char name[20];
       char password[8];
       int dkts;
     }sj;
    sj yhxx[1000];              //定义结构体数组,用来存储用户信息 
	int i=0,a,count=0;          //a为选择变量,
	printf("是否确认退出并打卡(1、是,2、否):");
	scanf("%d",&a);
	system("cls"); 
	if(a==1)   //若用户选择进行打卡,则执行此步骤
	{
		FILE *fp;                   //打开文件,调出用户数据
        fp=fopen("D:\\Ctext\\yonghushuju.txt","r");
        if(!fp)           //判断文件是否成功打开
         {
           printf("file error!\n");
           exit(1);
         }
		fscanf(fp,"%s%s%d",yhxx[i].name,yhxx[i].password,&yhxx[i].dkts);
        while(!feof(fp))
        {
          i++;
		  fscanf(fp,"%s%s%d",yhxx[i].name,yhxx[i].password,&yhxx[i].dkts);
        }
		count=i;        //用户总数
	   fclose(fp);
		for (i=0;i<count;i++)  //用for循环找到该用户对应的结构体,并对打卡次数进行“+1”
       {
        if(!strcmp(mingzi,yhxx[i].name))
       {
		   yhxx[i].dkts++;
		   printf("你已成功退出并累计打卡%d次。\n",yhxx[i].dkts);
		   getchar();getchar();
		   break;
		}
	   }
		fp=fopen("D:\\Ctext\\yonghushuju.txt","w+");
		if(!fp)
         {
           printf("file error!\n");
           exit(1);
         }
		for(i=0;i<count;i++)  //将更新后的用户数据重新写入文件
		{
				fprintf(fp,"%s %s %d\n",yhxx[i].name,yhxx[i].password,yhxx[i].dkts);
		}
	    fclose(fp);
		exit(1);
	}
	else if(a==2)     //不退出则重新回到菜单栏
	{  
		Menu();
	}

}

效果图

(1)选择“退出”功能:
退出功能
(2)按下回车键后:
退出功能(回车后)

后记

上述代码只实现了记录打卡次数的功能,有兴趣的读者可以自行加上一些扩展功能,如用户可以选择是否进行打卡,或者将打卡次数改为打卡天数等。

猜你喜欢

转载自blog.csdn.net/weixin_46269688/article/details/106668497