当前位置:首页 » 编程语言 » c语言登录

c语言登录

发布时间: 2025-08-04 21:11:35

c语言 商品销售系统登入界面该怎么写

登录包括检查数据文件,检测输入格式,检查数据重复性,验证用户名密码。

根据读取写入追加数据的不同要求,fopen选项不同参数,比如"r","w","a"。注意每次用完后用fclose函数关闭数据流。

下面是演示代码:(文件不存在自动创建,登录失败提示注册,输入验证,你自己写,比如:用户名包含几字母数字等)。

#include <stdio.h>

#include <string.h>

#define UFPATH "C:\user.data" //文件路径

#define SMAX 20

typedef struct USER

{

char uName[SMAX];

char pwd[SMAX];

}UR;

UR *logon(char *uName,char *pwd);

int main()

{

UR *ur=NULL;

char uName[SMAX],pwd[SMAX];

printf("请输入用户名及密码: ");

scanf("%s",uName);

scanf("%s",pwd);

if((ur=logon(uName,pwd))==NULL)

printf("登陆失败");

else

printf("欢迎登录!%s ",ur->uName);

return 0;

}

UR *logon(char *uName,char *pwd)

{

int isExcept=1;//标识变量,1:该用户不存在。0:用户名存在

FILE *fp=NULL;

static UR ur;

char c[2];

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

{

printf("该路径未发现记录文件,新建文件! ");

if((fp=fopen(UFPATH,"wt"))==NULL)

{

printf("异常!新建文件失败! ");

return NULL;

}

isExcept=1;

}

else

{

while(fscanf(fp,"%s%s",ur.uName,ur.pwd)!=-1)

{

if(strcmp(ur.uName,uName)==0 && strcmp(ur.pwd,pwd)==0)

{

printf("身份验证通过! ");

fclose(fp);

return &ur;

}

}

printf("用户密码不正确,或用户不存在! ");

fclose(fp);

isExcept=1;

}

if(isExcept==1)

{

printf("是否注册用户?(Y/N) ");

scanf("%s",c);

if(c[0]=='N')

return NULL;

if(c[0]=='Y')

{

while(isExcept)

{

printf("请输入要注册的用户名及密码: ");

scanf("%s",uName);

scanf("%s",pwd);//输入验证在这里添加!!!!!!!!!

//------------验证新建的用户名是否重名-------

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

{

printf("异常!,文件打开失败! ");

return NULL;

}

isExcept=0;

while(fscanf(fp,"%s%s",ur.uName,ur.pwd)!=-1)

{

if(strcmp(ur.uName,uName)==0)

{

printf("用户名已存在,请重新输入! ");

fclose(fp);

isExcept=1;

break;

}

}

fclose(fp);

//-------------------------------------------------------

}


if((fp=fopen(UFPATH,"a"))==NULL)

{

printf("异常!,文件打开失败! ");

return NULL;

}

fprintf(fp,"%s %s%s",uName,pwd," ");

printf("用户注册成功! ");

strcpy(ur.uName,uName);

strcpy(ur.pwd,pwd);

}

}

fclose(fp);

return &ur;

}

//ps:代码是按照你问题写成一个登录函数,但在一个项目中,对文件的读写改,应写成独立函数调用。其它函数调用这些函数。

② C语言实现登录失败三次必须等待一段时间后再登录(如:10秒钟)

C99下编译运行!
#include <stdio.h>
#include <string.h>
#include <time.h>
// Pauses for a specified number of milliseconds.
void do_sleep(clock_t wait) {
clock_t goal;
goal = wait + clock();
while (goal > clock());
}
// correct username and password
const char* u = "admin";
const char* p = "123456";
int main(void)
{
int i = 0;
while (1) {
printf("Login user:");
char user[255] = { 0 };
gets(user);
char pwd[255] = { 0 };
printf("Login password:");
gets(pwd);
// match
if (0 == strcmp(user, u) && 0 == strcmp(pwd, p)) break;
if (++i >= 3) {
puts("Please retry after 10 seconds");
do_sleep((clock_t)10 * CLOCKS_PER_SEC);
i = 0;
}
}
puts("Login success");
return 0;
}

③ c语言写登录界面 账号密码登录错误三次 管理员登录 员工登录两个

#include<stdio.h>
#include<stdlib.h>

#defineMAXL100
#defineMAX_ERROR_TIME3

interrorTime=0;

intgetLen(chars[]){
intl=0;
for(l=0;s[l]!='';l++);
returnl;
}

voidspaceRow(){
printf("|");
for(inti=2;i<MAXL;++i)printf("");
printf("| ");
}

voidborderRow(){
for(inti=0;i<MAXL;++i)printf("-");
printf(" ");
}

voidfill(introw){
if(row<4){
for(inti=0;i<=(5-row)>>1;++i)
spaceRow();
}
elsespaceRow();
}

voidshow(char*s[],introw){
borderRow();
fill(row);

for(inti=0;i<row;++i){
intlen=getLen(s[i]),mid=(MAXL-len)>>2;
printf("|");
for(intj=1;j<mid;++j)printf("");
printf("%s",s[i]);
for(intj=0;j<MAXL-mid-len-1;++j)printf("");
printf("| ");
}

fill(row);
borderRow();
}

intcmp(chara[],charb[]){
for(inti=0;a[i]!=''&&b[i]!='';i++)
if(a[i]!=b[i])return0;
return1;
}

voidIndex(){
char*a[3];
a[0]="1.登录";
a[1]="2.注册";
a[2]="3.退出";
show(a,3);
}

boollog(){
system("cls");
if(errorTime>=MAX_ERROR_TIME){
printf("错误次数达到3次,无法登入 ");
return0;
}
printf("请输入账号:");
charuser[1024],psw[1024],uc[1024],pc[1024];
scanf("%s",user);
printf("请输入密码:");
scanf("%s",psw);

FILE*u=fopen("UserName.txt","r");
FILE*p=fopen("PassWord.txt","r");

while(fgets(uc,1024,u)){
fgets(pc,1024,p);
if(cmp(uc,user)&&cmp(psw,pc)){fclose(u);fclose(p);return1;}
if(feof(u))break;
}
fclose(u);
fclose(p);
return0;
}

boolreg(){
system("cls");
charstr[1024];
printf("请输入账号(为-1则退出注册):");
scanf("%s",str);
if(str[0]=='-'&&str[1]=='1'&&str[2]=='')returnfalse;
FILE*fp=fopen("UserName.txt","a+");
fputs(str,fp);
fputs(" ",fp);
fclose(fp);
printf("请输入密码:");
scanf("%s",str);
fp=fopen("PassWord.txt","a+");
fputs(str,fp);
fputs(" ",fp);
fclose(fp);
returntrue;
}

intmain(){
ints,flag=1;
Index();
while(flag&&scanf("%d",&s)){
switch(s){
case1:if(log())printf("登录成功 ");
else{printf("登录失败 ");errorTime++;}
break;
case2:
if(reg())printf("注册成功 ");
elseprintf("取消注册 ");
break;
case3:flag=0;break;
}
printf("按任意键继续 ");
getchar();
getchar();
system("cls");
Index();
}
}

④ C语言编写用户登录程序

艾达的小刀
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

/*随机码产生函数*/
void RandomCode (char Rcode[])
{
int i;
srand ((unsigned int)time(NULL));
for (i = 0; i < 3; ++i)
Rcode[i] = rand()%10 + '0';
Rcode[i] = '\0';
}
/*登陆函数,判断信息是否匹配,若匹配返回1,否则返回0*/
int LandedApp (char *password[], char Rcode[])
{
char name[10] = {0};
char pword[10] = {0};
char rcode[4] = {0};

printf ("用户名 : ");
gets (name);
printf ("密码 : ");
gets (pword);
printf ("随机码 : ");
gets (rcode);

if (strcmp (name, password[0]) != 0 || strcmp (pword, password[1]) != 0 || strcmp (rcode, Rcode) != 0)
return 0;
else
return 1;
}

int main ()
{
char * password[2] = {"admin", "admin123"}; //用户名和密码
char rc[4] = {0}; //随机码
int count = 3; //可输入次数

puts ("请输入用户名,密码和随机码:");
while (count)
{
RandomCode (rc);
printf ("随机码 : %s\n", rc);
if (LandedApp(password, rc) != 0)
break;
--count;
if (count != 0)
puts ("错误的用户名或密码或随机码,请重新输入: ");
}
if (count != 0)
puts ("\n成功登陆!");
else
puts ("\n登录失败 !");

return 0;
}
艾达的小刀

⑤ 用c语言写登录时,如何将输入的密码显示为*号

要删除*号的话,稍微改一下if(pwd==8)的处理,比如:
if(pwd==8)
{
if (zu > 0)
{
zuce.Pwd[zu-1]='\0';
zu--;
printf("%c",(char)8);
printf(" ");
printf("%c",(char)8);
}
// continue;
}else
用C的话密码可能差不多就这样处理吧,当然你的程式还需要改进一下,比如如果输入的超过数组的容量就skip掉,避免内存溢出。还有对一些无效的字符比如箭头按键,tab键等都skip掉,也就是限制合法字符的范围。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:586
制作脚本网站 发布:2025-10-20 08:17:34 浏览:882
python中的init方法 发布:2025-10-20 08:17:33 浏览:574
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:761
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:678
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1006
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:251
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:108
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:799
python股票数据获取 发布:2025-10-20 07:39:44 浏览:705