課程設計之C/C++實現用戶登錄注冊


最近的一個課程設計要求的一個用戶登錄的程序,通常軟件網頁等的用戶登錄注冊都是涉及到數據庫。但像課程設計這種小程序要求的安全度不高就可以用c/c++實現。

首先,我們要清楚用戶登錄的流程。應該大家對這些並不陌生。

首先說說注冊流程

1、要求輸入用戶名(如果該用戶名已被注冊則重新輸入)

2、要求輸入密碼。

3、要求再次輸入密碼(如果兩次密碼輸入相同則注冊成功,否則重新注冊)。】

其次是登陸流程

1、輸入用戶名(如果該用戶名不存在則重新輸入)

2、輸入密碼(如果正確則進入程序,否則重新登錄)

那么下面就用代碼來實現:

有兩種方式實現,一、使用 fstream 文件讀寫流。二、使用結構體鏈表(該方法以后補充)

一、使用 fstream 文件讀寫流

 

 1 void regist()
 2 {  //注冊
 3     char *password = new char[20];//分配20個字節,然后返回首地址給password,即password可以看做一個20字節的字符數組,即字符串
 4     string name;
 5     /*struct user
 6       {
 7          string password;
 8          string name;
 9       };定義的用戶結構體*/
10     user c;
11     ifstream fin;//聲明 ifstream 對象
12     fin.open("user.txr",ios::in);//關聯文件
13     cout << "請輸入用戶名:";
14     cin>>name;
15     while(fin >> c.name >> c.password)//讀取成功返回1
16     {
17         if(c.name==name)
18         {cout << "該用戶名已被注冊" <<endl;regist();}
19     }
20     char test ;int i=0;
21     cout << "輸入密碼:";
22     while((test=getch())!='\r')
23     {
24         if(test==8)//ASC2碼8為退格
25         {
26             if(i>0)
27             {
28             cout << test << " " << test;
29             password[i--]='\0';
30             }
31         }
32         else
33         {
34             if(i<20)
35             {
36                 cout << "*" ;
37                 password[i]=test;
38                 i++;
39             }
40         }
41     }
42     password[i] = '\0';
43     cout << "再次輸入密碼" ;
44     char *password2 = new char[20];
45     i=0;
46     while((test=getch())!='\r')
47     {
48         if(test==8)
49         {
50             if(i>0)
51             {
52                 cout << test << " " << test ;
53                 password2[i--]='\0';
54             }
55         }
56         else
57         {
58             if(i<20)
59             {
60                 cout << "*";
61                 password2[i]=test;
62                 i++;
63             }
64         }
65         password2[i]='\0';
66     }
67       if(strcmp(password,password2)!=0)
68     {
69 
70         cout << "密碼兩次輸入不正確";
71         regist();
72     }
73     else
74     {
75         cout << "注冊成功";
76     }
77     ofstream fout;
78     fout.open("user.txr",ios_base::out|ios_base::app);
79     fout << name << " " << password << endl;
80     fout.close();//關閉文件連接,但不會刪除流
81     cout << "三秒后返回登陸界面";
82     nterface();//界面
83 }
 1 void logo()
 2 {//登錄
 3     char *password = new char [20];
 4     string name;
 5     cout << "用戶名:"<<endl;
 6     cin>>name;
 7     cout <<" 密碼:"<<endl;
 8     char test;int i=0;
 9    while((test=getch())!='\r')
10     {
11         if(test==8)//ASC2碼8為退格
12         {
13         if(i>0)
14         {
15             cout << test << " " << test;
16             password[i--]='\0';
17         }
18         }
19         else
20         {
21             if(i<20)
22             cout << "*";
23             password[i]=test;
24             i++;
25         }
26     }
27     password[i]='\0';
28     ifstream fin;
29     fin.open("user.txr",ios_base::in);
30     if(fin.fail())
31     {
32         cout << "文件打開失敗";
33     }
34     user c;int f1;
35   while(fin>>c.name>>c.password)
36     {
37         if(c.name==name&&c.password==password)
38         {
39             cout << "登陸成功";
40             f1=1;//登錄成功標志
41             nterface();
42         }
43     }
44     if(f1==0)//f1==0登錄失敗
45     {
46         cout << "用戶名或密碼錯誤";
47         logo();
48     }
49 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM