程序是银行登陆的简单程序

时间:2008-06-20 14:45:47   来源:论坛整理  作者:  编辑:chinaitzhe
/*程序是银行登陆的简单程序,可以存帐号、密码,以便下次直接登陆*/
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
char cFile[] = "date.txt";
zhuce()/*注册*/
{
char count[10 1];
char password[6 1];
int i=0,judge1,judge2;

printf("请输入您的帐号:\n");
flag:
scanf("%s",count);

while(i <strlen(count))
{
if((count[i] < 48) ¦ ¦ (count[i] > 57))
{
judge1=0;
}
i ;
}
if(strlen(count)!=10 ¦ ¦judge1==0)/*判定帐号的正确性*/
{
printf("您输入的帐号不正确,必须为10位纯数字!");
printf("请重新输入:");
goto flag;
}
else
{
printf("请输入您的密码:");
flag1:
scanf("%s",password);
while(i <strlen(password))
{
if((password[i] < 48) ¦ ¦ (password[i] > 57))
{
judge2=0;
}
i ;
}
if(strlen(password)!=6 ¦ ¦judge2==0)/*判定密码的正确性*/
{
printf("您输入不正确!密码必须为6位纯数字!\n");
printf("请重新输入密码:");
goto flag1;
}
else
{
printf("注册成功!");
wenjian(count,password);/*写入文件及判定是否有重复帐号*/

}
}

}
main()
{
FILE *file;
char *fp;
char chiose,h;
printf("\n\n\t\t欢迎使用虚拟银行自动取款机服务!\t\t\n\n");
printf("请选择功能:\n");
printf("\n===============================================\n");
printf(" ¦ ¦ 请输入序号 ¦ ¦\n");
printf(" ¦ ¦ 1.新用户开户。 ¦ ¦\n");
printf(" ¦ ¦ 2.老用户登陆。 ¦ ¦\n");
printf("===============================================\n");
file=cFile;/* 查看数据文件是否已经存在,假如不存在则建立 */
if((fp=fopen(file,"a"))==NULL)
{
printf("目标文件%s不存在!",file);
fclose(fp);
}
else
{
fclose(fp);
}

scanf("%c",&chiose);
getchar();
if(chiose <='0' ¦ ¦chiose>='3')
{
while(chiose <='0' ¦ ¦chiose>='3')
{
printf("您的输入有误,请重新输入:");
h=getchar();
scanf("%c",&chiose);
}
}
if(chiose=='1')
{
system("cls");
zhuce();/*注册*/
}
if(chiose=='2')
{
system("cls");
denglu();/*登陆*/
}
}
写到这里 看了很久的书,还是不会把帐号 密码存进文本,假如存进去了又怎么登陆,有多个帐号密码 怎么验证?哪位高手帮一下忙!
网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





//只是把注册的给你写了..其它的自己多思考.



#include <conio.h> 

#include <string.h> 

#include <stdio.h> 

#include <stdio.h> 

#include <stdlib.h> 

char cFile[] = "date.txt"; 

int search(char* user, char* pwd, char* real_pwd)

{

    FILE* file;

    char user_buff[256], pwd_buff[256];

    file = fopen(cFile, "r");

    if (!file) return 0;

    while (!feof(file))

    {    

        if (fscanf(file, "%s%s\n", user_buff, pwd_buff) == EOF) return 0;

        if (!strcmp(user_buff, user))

        {

            if (real_pwd) strcpy(real_pwd, pwd_buff);

            return 1;

        }

    }

    fclose(file);

    return 0;

}

int add(char* user, char* pwd)

{

    FILE* file;

    int i;

    file = fopen(cFile, "a");

    if (!file) return 0;

    fprintf(file, "%s %s\n", user, pwd);

    fclose(file);

    return 0;

}

int wenjian(char* user, char* pwd)

{

    if (search(user, pwd, NULL)) return 0;

    else add(user, pwd);

    return 1;

}

zhuce()/*注册*/ 

{ 

    char count[10 1]; 

    char password[6 1]; 

    int i=0,judge1,judge2; 

    

    printf("请输入您的帐号:\n"); 

flag: 

    scanf("%s",count); 

    

    while(i <strlen(count)) 

    { 

        if((count[i] < 48) || (count[i] > 57)) 

        { 

            judge1=0; 

        } 

        i  ; 

    } 

    if(strlen(count)!=10 ||judge1==0)/*判定帐号的正确性*/ 

    { 

        printf("您输入的帐号不正确,必须为10位纯数字!"); 

        printf("请重新输入:"); 

        goto flag; 

    } 

    else 

    { 

        printf("请输入您的密码:"); 

flag1: 

        scanf("%s",password); 

        while(i <strlen(password)) 

        { 

            if((password[i] < 48) || (password[i] > 57)) 

            { 

                judge2=0; 

            } 

            i  ; 

        } 

        if(strlen(password)!=6  ||judge2==0)/*判定密码的正确性*/ 

        { 

            printf("您输入不正确!密码必须为6位纯数字!\n"); 

            printf("请重新输入密码:"); 

            goto flag1; 

        } 

        else 

        { 

            if (wenjian(count,password))

                printf("OK");

            else

                printf("Failed");

            

        } 

    } 

    

} 

int main() 

{  

    FILE *file; 

    char *fp; 

    char chiose,h; 

    printf("\n\n\t\t欢迎使用虚拟银行自动取款机服务!\t\t\n\n"); 

    printf("请选择功能:\n"); 

    printf("\n===============================================\n"); 

    printf(" | |                请输入序号                | |\n"); 

    printf(" | |              1.新用户开户。              | |\n"); 

    printf(" | |              2.老用户登陆。              | |\n"); 

    printf("===============================================\n"); 

    

    scanf("%c",&chiose); 

    fflush(stdin);

    getchar(); 

    if(chiose <='0' ||chiose>='3') 

    { 

        while(chiose <='0' || chiose>='3') 

        { 

            printf("您的输入有误,请重新输入:"); 

            h=getchar(); 

            scanf("%c",&chiose); 

            fflush(stdin);

        } 

    } 

    if(chiose=='1') 

    {  

        system("cls"); 

        zhuce();/*注册*/ 

    } 

    if(chiose=='2') 

    { 

        system("cls"); 

    //    denglu();/*登陆*/ 

    } 

} 


网友回复:我不是之前给你写了一个了吗?
似乎是你吧?……
网友回复:我似乎之前把注册和登陆都写了呢!~
后来结贴了……最后发到资源里了……
http://download.csdn.net/source/499947
网友回复:注释已经 很清楚了……慢慢研究吧!~
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





/* bank.c

* 根据选择登陆或注册,读写数据文件 

*/



#include <stdio.h>

#include <stdlib.h>



char cFile[] = "data.txt";

int Line = 0;



void get_line(char *file);

int judge_validity(char *data);

int process(char flag,char *file);

int check(char flag,char *file,char *cAccount,char *cPassword);



int main()

{

    FILE *fpa; 

    char *file;    /* 数据文件名 */

    char cInput;    /* 输入选择信息 */

    char cInfo[20];    /* 提示信息 */

    int iFlag = 0;    /* 标志变量 */

    

    file = cFile;

    

    /* 查看数据文件是否已经存在,假如不存在则建立 */

    if((fpa = fopen(file,"a")) == NULL)

    {

        printf("数据文件%s不存在!\n",file);

        fclose(fpa);

    }

    else

     {

        fclose(fpa);

    }

     

     /* 系统主界面 */      

     while(1)

     {

         /* 初始化变量 */

        iFlag = 0;

        

        /* 输入选择信息 */

        printf("请选择:\n1注册2登陆3退出系统\n");

        cInput = getchar();

        fflush(stdin);

        

        /* 根据具体的输入信息,调用不同的函数,函数返回值赋给标志变量iFlag */

        switch(cInput)

        {

            case '1':strcpy(cInfo,"注册");iFlag = process(cInput,cFile);break;

            case '2':strcpy(cInfo,"登陆");iFlag = process(cInput,cFile);break;

            case '3':return 0;

            default:printf("输入有误!\n");break;

        }

        

        /* 根据函数返回值--标志变量iFlag输出相应的提示信息 */

        if(1 == iFlag)

        {    

            printf("恭喜您,%s成功!\n",cInfo);

            break;

        }

        /* 只有注册或登陆失败时才提示 */

          else if((cInput == '1') || (cInput == '2')) 

        {

            printf("%s失败!\n",cInfo);

         }        

    }

    

    return 0;

}



/* 处理模块,flag为选择的注册标志,file为指向数据文件的指针 */

int process(char flag,char *file)

{

    char cInput;     /* 输入选择信息 */

    char cAccount[32   1];    /* 帐号 */

    char cPassword[6   1];    /* 密码 */

    char cInfo[20];    /* 提示信息 */

    int iFlag = 0;    /* 返回标志 */

    

    /* 注册、登陆系统主界面 */

    while(1)

    {

        /* 初始化变量 */

        memset(cAccount,'\0',sizeof(cAccount));

        memset(cPassword,'\0',sizeof(cPassword));

        iFlag = 0;

          

          /* 输入选择信息 */

        printf("请选择:1返回上层菜单,2退出系统,其他:输入具体信息\n");

        cInput = getchar();

        fflush(stdin);

        

        /* 根据不同的选择,执行不同的操作 */

        switch(cInput)

        {

            case '1':return iFlag;

            case '2':exit(0); 

            default:printf("请输入具体信息\n");

        }

        

        /* 输入帐户 */

        printf("请输入帐户(数字):\n");

         scanf("%s",cAccount);

         fflush(stdin);

         

         /* 帐户的有效性判定,函数返回值为1表示输入的是纯数字--输入有效,然后输入密码,并执行之后的具体操作 */

          if(judge_validity(cAccount) == 1)

        {

            /* 输入6位密码 */

            printf("请输入6位密码(数字):\n");

             scanf("%s",cPassword);

             fflush(stdin);

             

             /* 假如输入足6位,则进行具体的有效性判定,否则输出提示信息 */

             if(strlen(cPassword) < 6)

             {

                 printf("您的输入有误!注重:密码必须是6位数字!\n");

             }

             /* 密码足6位 */

             else 

             {

                 /* 为避免输入多余的密码,限制密码为6位 */

                 cPassword[6] = '\0'; 

                 

                 /* 判定输入密码的有效性,有效时,进行注册 */

                  if(judge_validity(cPassword) == 1)

                  {

                      printf("正在执行操作,请稍等……\n"); 

                      

                      /* 调用函数进行具体的注册,函数返回值赋给iFlag */ 

                      iFlag = check(flag,file,cAccount,cPassword);

                      

                      /*假如注册、登陆成功,返回上层菜单,否则提示相关信息 */

                      if(1 == iFlag)

                      {

                          return iFlag;

                      }

                      else

                      {

                          printf("您的输入有误,可能错误信息为:帐号不存在或重复;密码错误.请重新输入!\n");

                      }

                   }

                   /* 密码无效时,提示错误信息 */

                   else

                   {

                       printf("您的输入有误!注重:密码必须是6位数字!\n");

                   }

             }

        }

        /* 帐户无效时,提示错误信息 */

        else

        {

            printf("您的输入有误!注重:帐户必须是数字!\n");

        }        

    }

}



/* 判定输入的有效性 */

int judge_validity(char *data)

{

    int i;

    

    /* 必须都为数字 */

    for(i = 0;i < strlen(data);)

    {

        if((data[i] >= 48) && (data[i] <= 57))

        {

            i  ;

        }

        else

        {

            return 0;

        }

    }

    

    return 1;

}



/* 具体的操作函数,flag为注册或登陆标志,file为数据文件,cAccount为输入的帐户,cPassword为输入的密码 */

int check(char flag,char *file,char *cAccount,char *cPassword)

{

    FILE *fpr,*fpw;    /* fpr,fpw分别为读写文件指针 */

    char cPerLine[40];    /* 行数据缓存 */

    char cAcc[32   1];    /* 帐号缓存 */    

    char cPwd[6   1];    /* 密码缓存 */

    int ii = 0;    /* 循环控制变量 */

    int num = 0;    /* 写文件成功的字符数 */

    

    /* 获取数据的记录数--为便于控制读取数据的次数,提前获取数据文件的行数,每行表示一条记录 */

    get_line(file);

    

    /* 选择注册的情况 */

    if(flag == '1')

    {

        /* 打开数据文件,判定输入的帐号是否已经存在,假如已经存在,证实输入错误,返回0,须重新输入 */

        if((fpr = fopen(file,"r")) == NULL)

        {

            printf("打开文件%s失败!\n",file);

            exit(0);

        }

            

        /* 逐行读取数据 */

        for(ii = 0;ii < Line;)

        {

            /* 初始化变量 */

            memset(cPerLine,'\0',sizeof(cPerLine));

            memset(cAcc,'\0',sizeof(cAcc));

            memset(cPwd,'\0',sizeof(cPwd));

            

            /* 读一行数据,并进行具体的拆分,分别存入帐号和密码缓存 */

             fgets(cPerLine,sizeof(cPerLine),fpr); /* a */

             sscanf(cPerLine,"%[0-9]|%[0-9]",cAcc,cPwd);    /* b */

/*             fscanf(fpr,"%[0-9]|%[0-9]\n",cAcc,cPwd);   *//* c = a   b */

/*             printf("(%s:%s)\n",cAcc,cPwd);    */

            

            /* 判定帐号是否与输入的相同,相同则返回(注册时不能与已有帐号重复) */

            if(strncmp(cAcc,cAccount,strlen(cAccount)) == 0)

            {

                fclose(fpr);

                return 0; 

            }

            else

            {

                ii  ;

            }

        }

        fclose(fpr); 

        

        /* 假如输入的帐号不在已有帐号列表中,则进行具体的添加操作,将帐号和密码写入文件 */

          if((fpw = fopen(file,"a ")) == NULL)

          {

             printf("打开文件%s失败!\n",file);

             fclose(fpw);

             exit(0);

        } 

        

        /* 初始化行数据缓存,按照"帐号|密码"的格式组合行数据 */

        memset(cPerLine,'\0',sizeof(cPerLine));

        strcpy(cPerLine,cAccount);

         strcat(cPerLine,"|");

          strcat(cPerLine,cPassword);

           strcat(cPerLine,"\n"); 

         

        /* 写数据 */           

           num = fwrite(cPerLine,strlen(cPerLine),1,fpw);

        

        /* 假如写入成功,返回1,否则返回0 */        

           if(num > 0)

           {

               fclose(fpw);

              return 1;

           } 

         else

          {       

              fclose(fpw);

              return 0;

           }

    }

       /* 选择登陆的情况 */

    else

    {

        if((fpr = fopen(file,"r")) == NULL)

        {

            printf("打开文件%s失败!\n",file);

            fclose(fpr);

            exit(0);

        }

          

          /* 逐行读取数据 */

        for(ii = 0;ii < Line;ii  )

        {

            /* 初始化变量 */

            memset(cPerLine,'\0',sizeof(cPerLine));

            memset(cAcc,'\0',sizeof(cAcc));

            memset(cPwd,'\0',sizeof(cPwd));

            

            /* 读一行数据,并进行具体的拆分,分别存入帐号和密码缓存 */

             fgets(cPerLine,sizeof(cPerLine),fpr);

             sscanf(cPerLine,"%[0-9]|%[0-9]",cAcc,cPwd);

/*             printf("(%s:%s)\n",cAcc,cPwd);   */

        

            /* 假如输入的帐号和密码与记录文件中的均相同,说明登陆成功,返回1,否则继续判定 */

            if((strcmp(cAcc,cAccount) == 0) && (strcmp(cPwd,cPassword) == 0))

            {

                fclose(fpr);

                return 1;

            }

        }

        /* 假如记录文件中的数据没有与输入的帐号和密码相匹配的,则返回0 */

        fclose(fpr); 

        return 0;        

    }    

}



/* 读取文件的行数,已有记录数 */

void get_line(char *file)

{

    FILE *fp;

    char c;

    

    if((fp = fopen(file,"r")) == NULL)

    {

        printf("打开文件%s失败!\n",file);

        exit(0);        

    }

    

    while(!feof(fp))

    {

        c = fgetc(fp);

        

        if(c == '\n')

        {

            Line = Line   1;

        }

        

        c = '\0';

    }

    fclose(fp);

}




网友回复:回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!
郁闷……
网友回复:谢谢了 我一定好好学习!!!!
关键字:程序,银行,登陆,简单,程序,
上一篇:SOCKET

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面