c语言编辑问道注册登录程序,C语言实现简单的注册登陆功能
之前在學(xué)習(xí)用C語言建立通訊錄管理系統(tǒng)的時候有想過,怎么為每個用戶單獨設(shè)立通訊錄,自然而然想到了最常見的注冊與登陸功能,通過不同的賬號達到單獨設(shè)立通訊錄的目的。肯定還存在許多問題,當(dāng)給自己立個flag,未來慢慢磨。以下是實現(xiàn)過程:
注意頭文件:
#include
#include
#include
#include
#define bool int //這里用define定義了布爾類型
#define true 1 //避免一些編譯器如vs2010沒有該頭文件無法使用的情況發(fā)生
#define false 0 //有些編譯器如code:blocks可以直接使用頭文件
FILE *fp; //文件指針,不多說
bool judge=true;
先定義一個結(jié)構(gòu)體Users,然后新建結(jié)構(gòu)體pe用來存放用戶名和密碼。
typedef struct
{
char user[20];
char code[20];
}Users;
Users pe;
然后是編寫注冊模塊。這里多增加了一個"閱讀用戶手冊",可刪改。
/*注冊模塊*/
void zhuce()
{
char temp[20],txt[100],cha; //定義兩個數(shù)組,一個存放鍵盤輸入的用戶名和密碼一個存放用戶手冊
do
{
printf("\t\t\t\t用戶注冊");
printf("\n\t\t1.直接注冊 2.閱讀用戶手冊");
cha=getch();
if(cha=='2')
{
if((fp=fopen("使用說明.txt","r"))==NULL)
{
printf("\n\t\t打開失敗");
exit(0);
}
fread(txt,2,20,fp);
printf("\n\t\t%s",txt);
/*txt=fgets(txt,100,fp);
printf("%s",txt);
}
printf("\n\t\t按任意鍵繼續(xù)");
getch();
system("cls");
/*以上部分用于打開用戶手冊,可刪改*/
printf("\t\t\t\t用戶注冊");
printf("\n\t\t用戶名:");
scanf("%s",pe.user);
fp=fopen(pe.user,"r");
/*判斷用戶名是否重復(fù)*/
if(fp!=NULL)
{
printf("\n\t該用戶名已存在");
fclose(fp);
printf("\n\t繼續(xù)注冊?(Y/N)");
if(getch()=='Y') return zhuce();
else return denglu();
}
/*確認兩次密碼輸入是否一致*/
printf("\n\t\t密 碼:");
scanf("%s",pe.code);
printf("\n\t\t確認密碼:");
scanf("%s",temp);
if(strcmp(pe.code,temp)!=0)
printf("\n\t\t兩次密碼不一致,請重新輸入");
}while(strcmp(pe.code,temp)!=0);
/*用戶名密碼無誤,寫入文檔儲存用戶信息*/
fp=fopen(pe.user,"w");
if(fp==NULL)
{
printf("\n\t注冊失敗\n");
exit(0);
}
else
{
system("cls");
printf("\n\t注冊成功");
write(); //用戶信息寫入函數(shù),底下給出
judge = false;
denglu(); //這里跳轉(zhuǎn)到登陸模塊
}
}
/*寫入用戶信息*/
void write()
{
if(fwrite(&pe,sizeof(User),1,fp)!=1)
{
printf("\n\t\t寫入文件錯誤");
exit(0); //寫入錯誤則退出程序
}
}
寫完注冊模塊,接下來就是寫登陸模塊了,這里的關(guān)鍵就是讀取之前存儲好的用戶信息以及用戶的資料
void denglu()
{
char u[20],c[20],temp[20]; //定義兩個數(shù)組,存放鍵盤輸入的用戶名和密碼
printf("\n\t\t\t\t用戶登錄");
printf("\n\t\t用戶名:");
scanf("%s",u);
/*判斷用戶名是否存在*/
fp=fopen(u,"r+");
temp[0]='0';
if(fp==NULL)
{
printf("\n\t\t用戶不存在,請注冊");
printf("\n\t\t1.注冊 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("\t\t密 碼:");
scanf("%s",c);
if(strcmp(pe.code,c)!=0) //對比輸入的密碼和讀取的密碼
{
printf("\n\t\t密碼錯誤(1.退出 2.重新輸入)");
temp[0]=getch();
printf("\n");
if(temp[0]=='1')
{
fclose(fp); //關(guān)閉文件防止錯誤操作
return main();
}
}
}while(temp[0]=='2');
/*readfile();
該函數(shù)讀取用戶自己的資料,需要注意這里用戶信息和其資料存儲在一個文件中,讀取是應(yīng)適當(dāng)使用rewind,ftell和fseek跳過一個User大小的空間讀取的才是用戶的資料*/
getch();
//這里可以設(shè)置跳轉(zhuǎn)到操作界面
}
到這里登陸模塊也編寫好了,只需要將它添加到已有代碼稍微修改下就可以了O(∩_∩)O~
雖然這個思路很簡單,但當(dāng)初思考的時候還是費勁腦汁,畢竟剛接觸C語言,很多東西還不能融會貫通,不能運用自如,甚至?xí)诤芎唵蔚膯栴}上糾結(jié)幾個小時,最后發(fā)現(xiàn)的時候真的想抽自己幾巴掌,但當(dāng)最后完工了,真的實現(xiàn)了,好開心好開心!O(∩_∩)O~
然而,實用性確實有限,只能供咱們這些新手小白消遣消遣,而且肯定存在許多漏洞,水平有限,又或者太懶了,真心不找了,這里立個flag,未來的學(xué)習(xí)之路,咱們慢慢磨!
(*^__^*) 嘻嘻……
總結(jié)
以上是生活随笔為你收集整理的c语言编辑问道注册登录程序,C语言实现简单的注册登陆功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机b级考试基础知识,全国计算机等级考
- 下一篇: 班扎古鲁白玛的沉默