因为今天刚好一整天没课,所有就把上次的登陆系统给做了出来,由于是第一次做,且有些函数是第一次看,老师还没教到,所有浪费了很多时间看博客和是思考问题,但最终还是把系统做出来了,挺高兴的,话不多说,上代码
这是我定义的一些函数体,比较乱,但有注释。最近也在看这方面的博客,尽量下次不把函数名弄那么乱。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void xuanzhe(); //功能选择
void denglu(); //登录函数
void zhuche(); //注册函数
void xiugai(); //资料修改函数
char name1[100]; //用来临时储存姓名
char password1[100]; //用来临时储存密码
char password2[100]; //用来临时储存密码
FILE *A; //登录指针 也可当注册指针,为方便看,所以写两个指针区别开来
FILE *D; //注册指针
int i,k;
char z;
char name[32],password[64],name_tmp[32],password_tmp[64];
char *B;
char *C;
char shuju[100];
int main()
接下来便是主函数,主函数我打算再加一些东西在里面的,但时间不够,所以就只写到这里
int main()
{
xuanzhe(); //调用选择函数
//下面这部门是我为登陆后做的,今天太晚了,就不继续想下去,有空继续做
/*printf("******交换机系统******\n1.资料管理\n2.账号管理\n3.退出\n");
scanf("%s",&z);
if(z=='2');
{xiugai();} */
return 0;
}
接下来是登陆模块的定义
void denglu()
{
A=fopen("D:\\c语言作业\\平时\\ni.txt","r+"); //以读的方式打开TXT文件ni,增加了“写”
if(!A) //如果文件为空或不存在,则打开失败
{printf("文件打开失败!");
exit (1);}
for(i=0;i<3;i++)
{
printf("\n*******登陆系统******* \n\n");
printf("用户名:");
scanf("%s",&name);
printf("密码:");
scanf("%s",&password);
while(1)
{
B=fgets(shuju,sizeof(shuju),A); //从文件逐行读取数据
if(!B) //当文件读取到空行时,结束循环。防止死循环
{break;}
sscanf(shuju,"%s %s",name_tmp,password_tmp); //把读取到的数据临时存储到name_tmp和password_tmp中
if(!strcmp(name,name_tmp) && !strcmp(password,password_tmp)) //如果输入的账号和密码与文件中的符合,结束循环
{break;}
}
if(B) //如果B不为0,结束大循环,执行下一部分
{break;}
else if(i>=2) //输入三次错误就停止程序
{system("cls");
printf("输入次数已到!!\n");
system("pause");
}
else //错误时返回执行大循环
{system("cls");
printf("用户名或密码错误!请重新输入!\n");
rewind(A); //让文件回到开头
}
}
}
再接下来是注册模块的定义
void zhuche()
{
for(i=0;i<5;i++)
{
printf("******注册系统******\n");
printf("用户名:\n");
scanf("%s",name1);
printf("请输入密码:\n");
scanf("%s",password1);
printf("重新输入密码:\n");
scanf("%s",password2);
D=fopen("D:\\c语言作业\\平时\\ni.txt","a+"); //以追加的形式打开TXT文件ni ,增加了”读“
while(1)
{
C=fgets(shuju,sizeof(shuju),D); //从文件逐行读取数据
if(!C) //当文件读取到空行时,结束循环。防止死循环
{break;}
sscanf(shuju,"%s",name_tmp); //把读取到的数据临时存储到name_tmp中
if(!strcmp(name1,name_tmp)) //如果输入的账号符合,结束循环
{break;}
}
if(!C) //如果文件中没有该用户名,把用户名和密码存储进文件中
{
fprintf(D,"\n%s %s",name1,password1); //把用户名和密码写入文件
fclose(D); //释放缓冲区
system("cls");
printf("注册成功!\n");
system("pause"); //结束该函数
}
else
{system("cls");
printf("用户名已存在\n");
rewind(A);//让文件回到开头
}
}
}
最后是选择模块的定义
void xuanzhe()
{
while(k==0)
{
printf("欢迎使用交换机系统\n1.登录\n2.注册\n3.退出\n请选择你要的功能:");
scanf("%s",&z);
if(z=='1') //如果选择1,调用登陆函数
{system("cls");
denglu();
k=1;
}
else if(z=='2') //如果选择2,调用注册函数
{system("cls");
zhuche();
k=1;
}
else if(z=='3') //如果选择3退出,让程序结束
{system("pause");}
else //输入的数字不符合,让用户重新输入
{printf("输入错误!请重新输入!\n");}
}
}
全部代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void xuanzhe(); //功能选择
void denglu(); //登录函数
void zhuche(); //注册函数
void xiugai(); //资料修改函数
char name1[100]; //用来临时储存姓名
char password1[100]; //用来临时储存密码
char password2[100]; //用来临时储存密码
FILE *A; //登录指针 也可当注册指针,为方便看,所以写两个指针区别开来
FILE *D; //注册指针
int i,k;
char z;
char name[32],password[64],name_tmp[32],password_tmp[64];
char *B;
char *C;
char shuju[100];
int main()
{
xuanzhe(); //调用选择函数
//下面这部门是我为登陆后做的,今天太晚了,就不继续想下去,有空继续做
/*printf("******交换机系统******\n1.资料管理\n2.账号管理\n3.退出\n");
scanf("%s",&z);
if(z=='2');
{xiugai();} */
return 0;
}
void denglu()
{
A=fopen("D:\\c语言作业\\平时\\ni.txt","r+"); //以读的方式打开TXT文件ni,增加了“写”
if(!A) //如果文件为空或不存在,则打开失败
{printf("文件打开失败!");
exit (1);}
for(i=0;i<3;i++)
{
printf("\n*******登陆系统******* \n\n");
printf("用户名:");
scanf("%s",&name);
printf("密码:");
scanf("%s",&password);
while(1)
{
B=fgets(shuju,sizeof(shuju),A); //从文件逐行读取数据
if(!B) //当文件读取到空行时,结束循环。防止死循环
{break;}
sscanf(shuju,"%s %s",name_tmp,password_tmp); //把读取到的数据临时存储到name_tmp和password_tmp中
if(!strcmp(name,name_tmp) && !strcmp(password,password_tmp)) //如果输入的账号和密码与文件中的符合,结束循环
{break;}
}
if(B) //如果B不为0,结束大循环,执行下一部分
{break;}
else if(i>=2) //输入三次错误就停止程序
{system("cls");
printf("输入次数已到!!\n");
system("pause");
}
else //错误时返回执行大循环
{system("cls");
printf("用户名或密码错误!请重新输入!\n");
rewind(A); //让文件回到开头
}
}
}
void zhuche()
{
for(i=0;i<5;i++)
{
printf("******注册系统******\n");
printf("用户名:\n");
scanf("%s",name1);
printf("请输入密码:\n");
scanf("%s",password1);
printf("重新输入密码:\n");
scanf("%s",password2);
D=fopen("D:\\c语言作业\\平时\\ni.txt","a+"); //以追加的形式打开TXT文件ni ,增加了”读“
while(1)
{
C=fgets(shuju,sizeof(shuju),D); //从文件逐行读取数据
if(!C) //当文件读取到空行时,结束循环。防止死循环
{break;}
sscanf(shuju,"%s",name_tmp); //把读取到的数据临时存储到name_tmp中
if(!strcmp(name1,name_tmp)) //如果输入的账号符合,结束循环
{break;}
}
if(!C) //如果文件中没有该用户名,把用户名和密码存储进文件中
{
fprintf(D,"\n%s %s",name1,password1); //把用户名和密码写入文件
fclose(D); //释放缓冲区
system("cls");
printf("注册成功!\n");
system("pause"); //结束该函数
}
else
{system("cls");
printf("用户名已存在\n");
rewind(A);//让文件回到开头
}
}
}
void xuanzhe()
{
while(k==0)
{
printf("欢迎使用交换机系统\n1.登录\n2.注册\n3.退出\n请选择你要的功能:");
scanf("%s",&z);
if(z=='1') //如果选择1,调用登陆函数
{system("cls");
denglu();
k=1;
}
else if(z=='2') //如果选择2,调用注册函数
{system("cls");
zhuche();
k=1;
}
else if(z=='3') //如果选择3退出,让程序结束
{system("pause");}
else //输入的数字不符合,让用户重新输入
{printf("输入错误!请重新输入!\n");}
}
}
void xiugai() //登陆后修改资料的函数,没时间写下去,大家不用的话可以去掉,不影响整个程序
{
printf("");
}
最后这函数是为登陆后写的,取点也没关系。好了,有时间再继续做这个系统,争取做的和真的登陆系统一样