程序是银行登陆的简单程序
时间: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 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面