注意头文件:
#include#include #include #include #define bool int //这里用define定义了布尔类型 #define true 1 //避免一些编译器如vs2010没有该头文件无法使用的情况发生 #define false 0 //有些编译器如code:blocks可以直接使用头文件 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("tttt用户注册");
printf("ntt1.直接注册 2.阅读用户手册");
cha=getch();
if(cha=='2')
{
if((fp=fopen("使用说明.txt","r"))==NULL)
{
printf("ntt打开失败");
exit(0);
}
fread(txt,2,20,fp);
printf("ntt%s",txt);
printf("tttt用户注册");
printf("ntt用户名:");
scanf("%s",pe.user);
fp=fopen(pe.user,"r");
if(fp!=NULL)
{
printf("nt该用户名已存在");
fclose(fp);
printf("nt继续注册?(Y/N)");
if(getch()=='Y') return zhuce();
else return denglu();
}
printf("ntt密 码:");
scanf("%s",pe.code);
printf("ntt确认密码:");
scanf("%s",temp);
if(strcmp(pe.code,temp)!=0)
printf("ntt两次密码不一致,请重新输入");
}while(strcmp(pe.code,temp)!=0);
fp=fopen(pe.user,"w");
if(fp==NULL)
{
printf("nt注册失败n");
exit(0);
}
else
{
system("cls");
printf("nt注册成功");
write(); //用户信息写入函数,底下给出
judge = false;
denglu(); //这里跳转到登陆模块
}
}
void write()
{
if(fwrite(&pe,sizeof(User),1,fp)!=1)
{
printf("ntt写入文件错误");
exit(0);//写入错误则退出程序
}
}
写完注册模块,接下来就是写登陆模块了,这里的关键就是读取之前存储好的用户信息以及用户的资料
void denglu()
{
char u[20],c[20],temp[20]; //定义两个数组,存放键盘输入的用户名和密码
printf("ntttt用户登录");
printf("ntt用户名:");
scanf("%s",u);
fp=fopen(u,"r+");
temp[0]='0';
if(fp==NULL)
{
printf("ntt用户不存在,请注册");
printf("ntt1.注册 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("tt密 码:");
scanf("%s",c);
if(strcmp(pe.code,c)!=0) //对比输入的密码和读取的密码
{
printf("ntt密码错误(1.退出 2.重新输入)");
temp[0]=getch();
printf("n");
if(temp[0]=='1')
{
fclose(fp); //关闭文件防止错误操作
return main();
}
}
}while(temp[0]=='2');
getch();
//这里可以设置跳转到操作界面
}
到这里登陆模块也编写好了,只需要将它添加到已有代码稍微修改下就可以了O(∩_∩)O~
虽然这个思路很简单,但当初思考的时候还是费劲脑汁,毕竟刚接触C语言,很多东西还不能融会贯通,不能运用自如,甚至会在很简单的问题上纠结几个小时,最后发现的时候真的想抽自己几巴掌,但当最后完工了,真的实现了,好开心好开心!O(∩_∩)O~
然而,实用性确实有限,只能供咱们这些新手小白消遣消遣,而且肯定存在许多漏洞,水平有限,又或者太懒了,真心不找了,这里立个flag,未来的学习之路,咱们慢慢磨!
(*^__^*) 嘻嘻……



