精华内容
下载资源
问答
  • C语言实现登录注册

    万次阅读 多人点赞 2019-01-27 09:36:52
    这是一个用纯C语言和文件操作实现...首先定义一个结构体来存放用户注册信息,账号密码等。 typedef struct The_users //typedef 可以定义结构体别名 { char id[11]; //账号 char pwd[20]; //密码 char name[1...

    这是一个用纯C语言和文件操作实现的系统的登录、注册和忘记密码功能。可以用于c语言大作业的登录系统。下面分享一下具体的代码。
    首先定义一个结构体来存放用户的注册信息,账号密码等。

    typedef struct The_users   //typedef 可以定义结构体别名
    {
        char id[11]; //账号 
        char pwd[20]; //密码 
        char name[15];//姓名为字符串 
        char sex; //性别为单个字符
    	long phone; //电话号码为长整型 
    }users;
    

    然后写一个函数用来创建储存用户账号密码的文件。

    /*创建储存用户账号密码的文件*/ 
    void Create_File()
    {
        FILE *fp;
        if ((fp = fopen("users.txt","rb"))==NULL)                 /*如果此文件不存在*/
        {
            if ((fp = fopen("users.txt","wb+"))==NULL)
            {
                printf("无法建立文件!\n");
                exit(0);
                
            }
        }
    }
    

    注册:将存放用户的信息的结构体直接存入文件中,每次存入分配该结构体大小的空间,然后该用户的信息就可以按结构体整体来读取。还加入了一些错误提示,如果输入错误就提示重新输入。

    /*注册账号*/ 
    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);
         }
    

    登录:先输入账号和密码。然后按账号从文件中读取,如果账号匹配就读取密码,如果密码也匹配就登录成功,否则重新输入密码。

    /*登录系统*/ 
    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);
           
    }
    

    找回密码:根据输入的账号获取该账号的结构体信息,然后与其他信息进行匹配,如果全部匹配成功,则显示该账号的密码。

    /*找回密码*/
     
    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);
    }
    

    欢迎访问我的博客网站:http://jie12366.xyz:8081

    展开全文
  • 每位用户应包括用户名,密码,年龄。注册时两次密码不一致提示用户“两次密码不一-致”,年 龄输入...当注册成功提示用户“是否 继续注册(y/n)”,输入y时继续注册用户,输入n时停止注册并打印出已 注册用户信息。
  • 本例是在linux下,利用c语言操作sqlite3数据库,将文本字典插入数据库。用户需要注册登录再查询字典。
  • c语言学生管理系统之用户注册

    千次阅读 2018-09-02 10:17:14
    int ZhuCe(Uers pe[] ,int *C_ount) //注册用户 {  int *p;  p = C_ount;  int i = 1;  int j = *C_ount + 1 ;  char code[20];  int flag = 1;  printf("欢迎...

    int ZhuCe(Uers pe[] ,int *C_ount)                                      //注册用户
    {
        int *p;
        p = C_ount;
        int i = 1;
        int j = *C_ount + 1 ;
        char code[20];
        int flag = 1;
        printf("欢迎进入注册系统\n");
        FILE *fp1;
        FILE *fp2;
        printf("请输入要创建用户名\n");
        scanf("%s",pe[j].user);
        while(1)
        {
            fp1 = fopen(pe[j].user,"r");
            if(!fp1)
            {
                break;
            }
            flag = 0 ;
        }
        if(flag)
        {
            puts(pe[i].user);
            fp2 = fopen(pe[i].user,"wb");
            if(fp2 == NULL)
            {
                printf("文件打开失败\n");
            }
        }
        else                                                                      //判断用户名是否可用
        {
            fclose(fp1);
            printf("该用户名已存在,请重新注册\n");
            printf("\n");
            return 0;
        }
        while(1)
        {
            ++(*p);                                                           //两次验证密码
            fflush(stdin);
            printf("请输入密码\n");
            fflush(stdin);
            scanf("%s",pe[i].password);
            fflush(stdin);
            printf("请再次输入密码\n");
            fflush(stdin);
            scanf("%s",code);
            fflush(stdin);
            if(strcmp(code,pe[i].password) == 0)
            {
                printf("恭喜您,注册成功!\n");
                getchar();
                if(fwrite(&pe[i],sizeof(Uers),1,fp2)!=1)
                {
                    printf("信息写入失败\n");
                }
                fclose(fp2);
                printf("\n");
                fflush(stdin);
                printf("即将进入菜单\n");
                break;

            }
            else
            {
                printf("两次密码输入不同,请重新设定密码!\n");
            }
        }
        return 1;
    }

    展开全文
  • 一个简单的C语言例子,用来实现用户注册,把注册的信息放到文本文件中。不会重复注册信息,可以查看所有的注册信息。 先看头文件(user_data.h): #include typedef struct { char key[10]; char name[20];...

    一个简单的C语言例子,用来实现用户的注册,把注册的信息放到文本文件中。不会重复注册信息,可以查看所有的注册信息。

    先看头文件(user_data.h):

    #include <stdio.h>
    
    typedef struct 
    {
    	char key[10];
    	char name[20];
    	int age;
    }User;
    int regist();
    void read_user();


    再看源文件(user_regist.c):

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <malloc.h>
    #include "user_data.h"
    int regist()
    {
    	User user,temp;
    	FILE* fp;
    	int fr;
    	printf("请输入学号:");
    	//gets(user.key);
    	scanf("%s",user.key);
    	printf("请输入姓名:");
    	//gets(user.name);
    	scanf("%s",user.name);
    	printf("请输入年龄:");
    	scanf("%d",&user.age);
    
    	//先检查数据库中有没有该用户
    	fp=fopen("user.txt","rb");//以二进制的方式打开文本
    	if(fp==NULL)
    		printf("文件打开失败!\n");
    	while(1)
    	{
    		fr=fread(&temp,sizeof(User),1,fp);
    		if(fr==0)
    		{  
    			break;
    		}
    		if(strcmp(temp.key,user.key)==0)
    		{
    			printf("用户已经存在,请重新注册!\n");
    			fclose(fp);
    			return 1;
    		}
    	}
    	fclose(fp);
    	//存储数据
    	fp = fopen("user.txt","ab+");
    	fwrite(&user,sizeof(User),1,fp);
    	fclose(fp);
    	printf("注册成功!\n");
    	return 0;
    }
    void read_user()
    {
    	FILE *fp;
    	int fr;
    	User temp;
    	fp=fopen("user.txt","rb");
    	while(1)
    	{
    		fr=fread(&temp,sizeof(User),1,fp);
    		if(fr==0)
    		{  
    			break;
    		}
    		printf("%s\t%s\t%d\n",temp.key,temp.name,temp.age);
    	}
    }
    int main()
    {
    	int i;
    	printf("**************************\n");
    	printf("请选择:\n1. 注册\t2. 查看\t3. 退出\n");
    	printf("**************************\n");
    	scanf("%d",&i);
    	while(1)
    	{
    		switch (i)
    		{
    		case 1:
    			regist();
    			break;
    		case 2:
    			read_user();
    			break;
    		default:
    			return 0;
    		}
    		printf("**************************\n");
    		printf("请选择:\n1. 注册\t2. 查看\t3. 退出\n");
    		printf("**************************\n");
    		scanf("%d",&i);
    	}
    
    	return 0;
    }
    

    在运行之前先要在该工作目录下建一个名为user.txt的文本文件,用来存放数据。

    运行结果如下





    展开全文
  • C语言实现简单注册登陆功能

    万次阅读 多人点赞 2017-01-03 16:38:35
    之前在学习用C语言建立通讯录管理系统的时候有想过,怎么为每个用户单独设立通讯录,自然而然想到了最常见的注册与登陆功能,通过不同的账号达到单独设立通讯录的目的。这里将用户名密码和用户资料保存在一个文件中...

    之前在学习用C语言建立通讯录管理系统的时候有想过,怎么为每个用户单独设立通讯录,自然而然想到了最常见的注册与登陆功能,通过不同的账号达到单独设立通讯录的目的。肯定还存在许多问题,当给自己立个flag,未来慢慢磨。以下是实现过程:

    注意头文件:

    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #include <stdlib.h>
    #define bool int        //这里用define定义了布尔类型
    #define true 1          //避免一些编译器如vs2010没有该头文件无法使用的情况发生
    #define false 0         //有些编译器如code:blocks可以直接使用头文件<include stdbool.h>
    FILE *fp;               //文件指针,不多说
    bool judge=true;

    先定义一个结构体Users,然后新建结构体pe用来存放用户名和密码。

    typedef struct
    {
        char user[20];
        char code[20];
    }Users;
    Users pe;  

    然后是编写注册模块。这里多增加了一个”阅读用户手册”,可删改。

    /*注册模块*/
    void zhuce()
    {
        char temp[20],txt[100],cha;        //定义两个数组,一个存放键盘输入的用户名和密码一个存放用户手册
        do
        {
            printf("\t\t\t\t用户注册");
            printf("\n\t\t1.直接注册 2.阅读用户手册");
            cha=getch();
            if(cha=='2')
            {
                if((fp=fopen("使用说明.txt","r"))==NULL)
                    {
                    printf("\n\t\t打开失败");
                    exit(0);
                    }
                    fread(txt,2,20,fp);
                    printf("\n\t\t%s",txt);
                    /*txt=fgets(txt,100,fp);
                    printf("%s",txt);
            }
            printf("\n\t\t按任意键继续");
            getch();
            system("cls");
            /*以上部分用于打开用户手册,可删改*/
            printf("\t\t\t\t用户注册");
            printf("\n\t\t用户名:");
            scanf("%s",pe.user);
            fp=fopen(pe.user,"r");
            /*判断用户名是否重复*/
            if(fp!=NULL) 
            {
               printf("\n\t该用户名已存在");
               fclose(fp);
               printf("\n\t继续注册?(Y/N)");
               if(getch()=='Y') return zhuce();
               else return denglu();
            }
            /*确认两次密码输入是否一致*/
            printf("\n\t\t密  码:");
            scanf("%s",pe.code);
            printf("\n\t\t确认密码:");
            scanf("%s",temp);
            if(strcmp(pe.code,temp)!=0)
            printf("\n\t\t两次密码不一致,请重新输入");
        }while(strcmp(pe.code,temp)!=0);
        /*用户名密码无误,写入文档储存用户信息*/
        fp=fopen(pe.user,"w");
        if(fp==NULL)
           {
              printf("\n\t注册失败\n");
              exit(0);
           }
        else 
        {
            system("cls");
            printf("\n\t注册成功");
            write();               //用户信息写入函数,底下给出
            judge = false;
            denglu();             //这里跳转到登陆模块
        }
    }
    /*写入用户信息*/
    void write()
    {
        if(fwrite(&pe,sizeof(User),1,fp)!=1)
        {
            printf("\n\t\t写入文件错误");
            exit(0);                     //写入错误则退出程序
        }
    }

    写完注册模块,接下来就是写登陆模块了,这里的关键就是读取之前存储好的用户信息以及用户的资料

    void denglu()
    {
        char u[20],c[20],temp[20];      //定义两个数组,存放键盘输入的用户名和密码
        printf("\n\t\t\t\t用户登录");
        printf("\n\t\t用户名:");
        scanf("%s",u);
        /*判断用户名是否存在*/
        fp=fopen(u,"r+");
        temp[0]='0';
        if(fp==NULL)
        {
            printf("\n\t\t用户不存在,请注册");
            printf("\n\t\t1.注册   2.重新登陆");
            temp[0]=getch();
            if(temp[0]=='1')
            {
                system("cls");
                zhuce();
            }
            else return denglu();
        }
        /*验证密码是否正确*/
        do
        {
            if(judge==true) fread(&pe,sizeof(Users),1,fp); //读取用户信息,即用户名和密码
            printf("\t\t密  码:");
            scanf("%s",c);
            if(strcmp(pe.code,c)!=0)                      //对比输入的密码和读取的密码
            {
                printf("\n\t\t密码错误(1.退出 2.重新输入)");
                temp[0]=getch();
                printf("\n");
                if(temp[0]=='1')
                {
                    fclose(fp);                           //关闭文件防止错误操作
                    return main();
                }
            }
        }while(temp[0]=='2');
        /*readfile();   
    该函数读取用户自己的资料,需要注意这里用户信息和其资料存储在一个文件中,读取是应适当使用rewind,ftell和fseek跳过一个User大小的空间读取的才是用户的资料*/
        getch();
        //这里可以设置跳转到操作界面
    }

    **到这里登陆模块也编写好了,只需要将它添加到已有代码稍微修改下就可以了O(∩_∩)O~**

    虽然这个思路很简单,但当初思考的时候还是费劲脑汁,毕竟刚接触C语言,很多东西还不能融会贯通,不能运用自如,甚至会在很简单的问题上纠结几个小时,最后发现的时候真的想抽自己几巴掌,但当最后完工了,真的实现了,好开心好开心!O(∩_∩)O~
    然而,实用性确实有限,只能供咱们这些新手小白消遣消遣,而且肯定存在许多漏洞,水平有限,又或者太懒了,真心不找了,这里立个flag,未来的学习之路,咱们慢慢磨!
    (*^__^*) 嘻嘻……

    展开全文
  • 创建储存用户账号密码的文件: void Create_File() { FILE *fp; if ((fp = fopen("users.txt","rb"))==NULL) /*如果此文件不存在*/ { if ((fp = fopen("users.txt","wb+"))==NULL) ...
  • C语言通讯录

    2018-12-03 17:42:08
    C语言实现的多文件、多用户通讯录,增加了中英文切换选项,用户登陆注册等。
  • 近期,由于世界经济的回暖,我国居民储蓄开户的增长量剧增,某银行信息部经理委托你开发一个用户自助注册银行账户的系统,要求如下: 银行自助账户注册系统需要一个欢迎界面,用户在欢迎界面点击回车后,询问用户的...
  • C语言文件读写注册登录功能实现

    万次阅读 多人点赞 2017-06-05 21:00:06
    原来很简单,首先要用户选择注册还是登录,注册时进行文件写入,登录时进行文件读写操作,判断用户输入的字符是否与文件中的某一个字符是否相等,如何有就完成登录,至于文件如何进行读写操作我就不多说,可以参考...
  • c语言 扫雷

    2017-07-12 08:26:23
    C语言 扫雷 主要特色: 1.彩色界面 2.方向键控制方向,Enter键确认 3.支持多用户登录,存储每个用户的游戏记录,支持用户注册 4.可标记雷区
  • C语言利用数组和文件登录注册功能

    千次阅读 多人点赞 2018-09-14 20:50:19
    C语言利用文件系统实现简单的用户登录和注册功能 版本一:利用数组 最近有个朋友让我帮他做一个C语言的登录注册功能,考虑到他没有学到数据库于是想到了存入文件 此版本使用的数组,第二个版本使用的是链表,链表...
  • C语言利用链表与文件实现登录注册

    千次阅读 多人点赞 2018-09-15 08:59:22
    C语言利用文件系统实现简单的用户登录和注册功能 版本二:利用链表 此版本使用的链表,第一个版本使用的是数组 数组版本连接 这里我使用的线性链表,一定要注意在判断语句或赋值语句中不可将...
  • 之前在学习用C语言建立通讯录管理系统的时候有想过,怎么为每个用户单独设立通讯录,自然而然想到了最常见的注册与登陆功能,通过不同的账号达到单独设立通讯录的目的。肯定还存在许多问题,当给自己立个flag,未来...
  • printf("返回用户列表</a><br>"); } if(i==2) { printf("网络或数据库出错可能是用户名已经存在,请重试\n"); printf("返回</a><br>"); } if(i==3) { printf("未知错误有,请重试\n"); printf("返回</a><br>"); } } ...
  • C语言彩票管理系统

    2016-01-05 10:38:42
    C语言开发的彩票管理系统,分为用户注册登录模块验证模块,管理员发行彩票,查询用户信息,公证员开奖三个模块
  • c语言聊天室

    2013-05-16 19:41:27
    c语言开发的C/S架构聊天室代码 可实现注册,登录,私聊,群聊,查看在线用户, 隐身登录,管理员踢人与禁言等功能。
  • C语言图形化操作

    万次阅读 多人点赞 2018-05-25 21:18:57
    例如,做贪吃蛇大作战,简单的用户注册模块。这时,就需要进行图形化操作,来进行美化。例如: 从上面我们发现,这是不是和我们传统的代码运行时的见面有所不同? 这两段代码是不是都具有颜色了呢?而且一些...
  • C语言常见错误

    2012-01-15 21:46:43
     C语言常见错误 -- 六月 -- 编程爱好者博客登陆 | 注册用户 编程爱好者博客 | 编程爱好者首页 六月  http://blog.pfan.cn/sweajie博主介绍博主:  欢迎进入 套路学习编程  文章分类c语言  c++  ...
  • 图书管理系统c语言

    2018-10-18 19:35:21
    图书管理系统C语言版,用户需要先运行注册系统。运行后在根目录下自动生成文件,然后运行图书管理系统即可
  • C语言 银行存储系统

    2012-12-09 09:55:31
    C语言编写的银行系统,能实现正常的注册用户、登录、存取款、转账、查询、退出等功能
  • 两端注册,分别为用户以及店铺,其中店铺的注册成功需要得到管理员的审核。   管理员端可以查看店铺信息,店铺信息修改(分为增删改查),处理申请店铺,和修改本人信息。   用户端分为用户相关(为用户本人对...
  • c语言入门小程序(1) 实现登陆页面

    千次阅读 多人点赞 2021-01-07 00:14:21
    C语言 C语言小案例 登录页面 用户注册 用户登录 c语言实现登陆页面 基于linux C语言 基于liunx 的小程序 基于liunx的c语言登录页面
  • 程序名称:服务器/客户端 程序 功能:1.客户端登录到服务器; 2.客户端在服务器注册 3....运行环境:linux 备注:程序编写后,...注册功能需要在服务器端新建一个userlist的文件,新注册用户信息也写入在该文件中。
  • C语言大作业程序

    2018-12-27 09:37:54
    2.项目目的:用户可以注册一个账户,用用户注册号的账户登录系统去租凭影碟,实现用户与计算机系统交互直接实现租凭影碟,就像图书馆的自助借书机一样。 3.项目软件功能: ①.添加影碟,并储存影碟的信息到文本中...
  • C语言贪吃蛇.zip

    2020-02-24 10:14:39
    大一期末工程实践作品,实现了基础的游戏玩法,用户注册,分数排行等功能,界面简单,附上答辩ppt。供大家参考学习改进

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 326
精华内容 130
关键字:

c语言用户注册

c语言 订阅