廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 8066 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
snowfish7
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][求助] 用dev c++寫出帳號登入系統
因為在下還沒學到連結外部資料庫,所以就直接內建一組帳號密碼。

目前希望能夠有這些功能:
判斷帳號是否正確、
判斷密碼是否正確、
最多只能輸入5次錯誤的密碼。

目前構想出來的寫法如上:


而在主函數中特別宣告一個int acc_db 變數
並且設定成acc_datebase(acc,pw)的回傳值,

是不想在執行swith迴圈的時候又算一次,
好像用參照也可以....?"


目前的問題是:
在acc_datebase()函數的定義裡面,

想要用acc_db 、pw_db 來比對帳號lovehina 與密碼 lemon1357
if(acc_db=="lovehina") // 判斷帳號是非
if(pw_db=="lemon1357") // 判斷密碼是非

不過好像不是這麼寫,
因為acc_datebase()函數的回傳值總是3.....


目前也找不到 if迴圈+用字元陣列當判斷條件 的用法;
exp:
if(字元陣列[]==字串XXX)
{
敘述1...
敘述2..
}

還有while(acc_db!=1 || pw_error!=0); 這段邏輯似乎也有問題
在下希望只要pw_error ==0 或者 acc_db==1 其中之一成立就能離開迴圈...


可以請c++的前輩指點嗎?"

還有如果有更適合的寫法也請前輩多多指點,

如果有不懂的功能在下會另外再請教的~


#include <iostream>
#include <cstdlib& ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被snowfish7在2008-05-29 23:00重新編輯 ]



在下是c++的初學者,

如果問了一般c++使用者都應該懂的傻瓜問題
還請見諒了 o (_ _)o
獻花 x0 回到頂端 [樓 主] From:臺灣中華電信 | Posted:2008-05-29 22:52 |
海洋天使 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x35
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

帳號密碼的話
不建議這樣寫,也不應該這樣寫

您使用char 當做宣告,然後陣列表示


值都會是3沒錯 你傳的值會是個指標,當然這組位置是不可能相等的

要這樣子寫
例子:
int acc_datebase(char acc_db[16],char pw_db[16])
// 假的帳密資料庫
{
   char acc[16] = "lovehina";         //這部份這樣寫不知道對不對 不對的話用strcpy來copy
   char pw[16] = "lemon1234";   //這部份就是告知原本帳密

      for(int i=0; i<16; i++)
       if(acc_db[ i ] != acc [ i ] || pw_db[ i ] != pw [ i ])
                return false;   //錯誤傳回0
           else
                return true;   //正確的話傳回1
}


我不是高手,但是給您參考看看︿︿


獻花 x0 回到頂端 [1 樓] From:臺灣 | Posted:2008-05-29 23:59 |
jonaspeng
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x24
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

int acc_datebase(char acc_db[16],char pw_db[16])
{
  /* 相同回傳0, 前大於後回傳正值, 前小於後回傳負值 */
  /* 自己運用吧!!! /
  return strcmp(acc_db, pw_db);
}


獻花 x0 回到頂端 [2 樓] From:臺灣中華 | Posted:2008-05-30 10:50 |
daviddr
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x7
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

> 目前也找不到 if迴圈+用字元陣列當判斷條件 的用法;

試試這個~

複製程式
//判斷字串是否相等
bool str_eq (register const char* a, register const char* b) 
{
    while (*a==*b++) if (!*a++) return true; 
    return !(*a-b[-1]);
}

int acc_datebase (char acc_db[16],char pw_db[16])
// 假的帳密資料庫 
{
    if (!str_eq (acc_db,"lovehina")) return 3;  // 判斷帳號是非  
    return str_eq (pw_db,"lemon1234")? 1: 2;    // 判斷密碼是非 
} 

> 還有while(acc_db!=1 || pw_error!=0); 這段邏輯似乎也有問題
> 在下希望只要pw_error ==0 或者 acc_db==1 其中之一成立就能離開迴圈...

改成這樣:

複製程式
do {  ...  }
while (acc_db!=1 && pw_error>0);


獻花 x0 回到頂端 [3 樓] From:臺灣中華 | Posted:2008-05-30 14:40 |
daviddr
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x7
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

這是.... 雛田莊的資料庫吼.... 表情


獻花 x0 回到頂端 [4 樓] From:臺灣中華 | Posted:2008-05-30 14:55 |
snowfish7
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

海洋天使大:
感謝您提供這種判定法給在下囉~

這種字串比對法在下真的還沒想到過呢 ^ __ ^- 表情

3Q囉~





jonaspeng大;
抱歉,在下還沒學到這種回傳型態

return strcmp(acc_db, pw_db)

剛剛上網找了一下

原來這是字串比對的函式庫

之後讀到這篇的話會特別注意的

多謝您提供個很棒的方法囉~表情





daviddr大;
哎呀呀 , 沒想到還是有人記得雛田莊這部漫畫呢 (感動... 表情

那個字串判斷函數似乎是個很棒的東西...

不過在下目前還看不太懂

我記得register是用命令cpu去計算的指令

const . char* . return !()...這個就完全看不懂了..

如果之後有讀到這種類型的指令

在下會多多注意的~



真的非常感謝三位大大囉~ 表情


在下是c++的初學者,

如果問了一般c++使用者都應該懂的傻瓜問題
還請見諒了 o (_ _)o
獻花 x0 回到頂端 [5 樓] From:臺灣 | Posted:2008-05-31 18:58 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.179331 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言