激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言實現登錄注冊和忘記密碼功能

C語言實現登錄注冊和忘記密碼功能

2021-10-16 15:03monkey-jie C/C++

這篇文章主要為大家詳細介紹了C語言實現登錄、注冊和忘記密碼功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這是一個用純C語言和文件操作實現的系統的登錄、注冊和忘記密碼功能。可以用于c語言大作業的登錄系統。下面分享一下具體的代碼。

首先定義一個結構體來存放用戶的注冊信息,賬號密碼等。

?
1
2
3
4
5
6
7
8
typedef struct The_users  //typedef 可以定義結構體別名
{
  char id[11]; //賬號
  char pwd[20]; //密碼
  char name[15];//姓名為字符串
  char sex; //性別為單個字符
 long phone; //電話號碼為長整型
}users;

然后寫一個函數用來創建儲存用戶賬號密碼的文件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*創建儲存用戶賬號密碼的文件*/
void Create_File()
{
  FILE *fp;
  if ((fp = fopen("users.txt","rb"))==NULL)         /*如果此文件不存在*/
  {
    if ((fp = fopen("users.txt","wb+"))==NULL)
    {
      printf("無法建立文件!\n");
      exit(0);
      
    }
  }
}

注冊:將存放用戶的信息的結構體直接存入文件中,每次存入分配該結構體大小的空間,然后該用戶的信息就可以按結構體整體來讀取。還加入了一些錯誤提示,如果輸入錯誤就提示重新輸入。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*注冊賬號*/
void registers() //按結構體的大小,一次寫入或者讀入1個結構體大小
   
     users a,b;//結構體 The_users 重命名定義
     FILE *fp;
     char temp[20];
     int count = 0;
     printf("歡迎來到注冊界面!\n");
     Sleep(1000);
     fp = fopen("users.txt","r");
     
     fread(&b, sizeof(struct The_users), 1, fp); //讀入一個結構體字符塊 到b
     printf("請輸入賬號\n");
     scanf("%s",&a.id);
     
     
     while (1)
     
       if (strcmp(a.id, b.id)) /*如果兩串不相等*/
       {
         if (!feof(fp))  /*如果未到文件尾*/               
           
           
         {
           fread(&b, sizeof(struct The_users), 1, fp);
         }
         else
           break;
       }
       else
 
       
         printf("此用戶名已存在!請重新注冊!\n");
         Sleep(1000);
         fclose(fp);
         return;  
       }
     }
     printf("請輸入姓名:\n");
     scanf("%s",&a.name);
     printf("請輸入性別(f(女)/m(男)):\n");
     scanf(" %c",&a.sex);
     do{
     if(a.sex != 'f' && a.sex != 'm'){
   printf("性別輸入錯誤!請重新輸入!\n");
     scanf("%c",&a.sex);
  }
  }while(a.sex != 'f' && a.sex != 'm');
  getchar();
     printf("請輸入電話號碼:\n");
     scanf("%ld",&a.phone);
     printf("請輸入密碼\n");
     scanf(" %s",&a.pwd);
     printf("請確認密碼\n");
     scanf(" %s",&temp);
  do{
     if(!strcmp(a.pwd,temp)){
      fp = fopen("users.txt","a");
      fwrite(&a, sizeof(struct The_users), 1, fp);
      printf("賬號注冊成功,請登錄!\n");
      Sleep(500);
      fclose(fp);
   return;
  }else{
   printf("兩次密碼不匹配!請重新輸入!\n");
      scanf("%s",&a.pwd);
      printf("請確認密碼\n");
      scanf("%s",&temp);
  }
  }while(1);
}

登錄:先輸入賬號和密碼。然后按賬號從文件中讀取,如果賬號匹配就讀取密碼,如果密碼也匹配就登錄成功,否則重新輸入密碼。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*登錄系統*/
void Input_login()
{
  users a,b;//定義結構體The_users別名
  
  FILE *fp;
  printf("歡迎來到登錄界面!\n");
     Sleep(1000);
  fp = fopen("users.txt","r");
  
  fread(&b, sizeof(struct The_users), 1, fp); //讀入一個結構體字符塊 寫入b
  printf("請輸入賬號\n");
  scanf("%s",&a.id); 
  
       while (1)
      
      if (strcmp(a.id, b.id)==0)     //如果有此用戶名
      {
        break;   
      }
      
      else
      {
        if (!feof(fp)) //如果文件沒有讀完             
       
        {
          fread(&b, sizeof(struct The_users), 1, fp);
        }
        
        else
        {
          printf("此用戶名不存在,請重新輸入!\n");
    Sleep(500);
          fclose(fp);
    return;      
        }
      }
    }
    printf("請輸入密碼\n");
    scanf("%s",&a.pwd);
  do
    
 if (strcmp(a.pwd, b.pwd)==0)      /*如果密碼匹配*/
      
    {
      fclose(fp);
      printf("登錄成功,歡迎使用!");
      Sleep(500);
      return;
      }
    else
    printf("密碼不正確!請重新輸入密碼\n");
     scanf("%s",&a.pwd);    
    }
 }while(strcmp(a.pwd, b.pwd)==0);
    
}

找回密碼:根據輸入的賬號獲取該賬號的結構體信息,然后與其他信息進行匹配,如果全部匹配成功,則顯示該賬號的密碼。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*找回密碼*/
 
void reback() //按結構體的大小,一次寫入或者讀入1個結構體大小
   
     users a,b;//結構體 The_users 重命名定義
     FILE *fp;
     char temp[20];
     int count = 0;
     printf("歡迎來到找回密碼界面!\n");
     Sleep(1000);
     fp = fopen("users.txt","r");
  
   fread(&b, sizeof(struct The_users), 1, fp); //讀入一個結構體字符塊 寫入b
   printf("請輸入賬號\n");
   scanf("%s",&a.id); 
  
       while (1)
      
      if (strcmp(a.id, b.id)==0)     //如果有此用戶名
      {
        break;   
      }
      
      else
      {
        if (!feof(fp)) //如果文件沒有讀完             
       
        {
          fread(&b, sizeof(struct The_users), 1, fp);
        }
        
        else
        {
          printf("此用戶名不存在,請重新輸入!\n");
    Sleep(500);
          fclose(fp);
    return;      
        }
      }
    }
     printf("請輸入姓名:\n");
     scanf("%s",&a.name);
     do{
     if(strcmp(a.name,b.name)){
   printf("姓名輸入錯誤!請重新輸入!\n");
     scanf("%s",&a.name);
  }
  }while(strcmp(a.name,b.name));
     printf("請輸入電話號碼:\n");
     scanf("%ld",&a.phone);
     do{
     if(a.phone != b.phone){
   printf("電話號碼輸入錯誤!請重新輸入!\n");
     scanf("%ld",&a.phone);
  }
  }while(a.phone != b.phone);
    printf("您的密碼是:%s",b.pwd);
    Sleep(3000);
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_40663357/article/details/86663598

延伸 · 閱讀

精彩推薦
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
主站蜘蛛池模板: 亚洲成年人免费网站 | 欧美成人免费在线视频 | 午夜久久电影 | 成人在线观看一区二区三区 | 黄色片网页 | 国产麻豆交换夫妇 | 国产毛片aaa一区二区三区视频 | 777午夜精品视频在线播放 | 久久综合伊人 | 91精品最新国内在线播放 | 国产毛片电影 | 久久国产精品免费视频 | 最新在线中文字幕 | xnxx 日本19| 伊人99在线| 精品国产一区二区三区久久久狼牙 | 国产成人小视频在线观看 | 欧美aaa| 一区二区三区日韩 | 欧美黄色小视频 | 日本免费靠逼视频 | 九色激情网 | 免费毛片小视频 | 欧美日韩免费一区 | 亚洲性生活免费视频 | 免费一级特黄毛片 | 精品亚洲午夜久久久久91 | 热re91久久精品国产99热 | 91成人免费视频 | 久久影院国产精品 | 久久精品视频日本 | 国产一级淫片a级aaa | 毛片视频网站在线观看 | 在线免费观看欧美 | 91久久线看在观草草青青 | 一级做受毛片免费大片 | 欧美一区二区三区中文字幕 | 91香草视频 | 久草干 | 久久久久一区二区三区 | 国产资源在线观看 |