基于C++編寫一個(gè)密碼系統(tǒng)
1、功能
1.能夠讀取密碼
想要讀取密碼,我們就要利用代碼,來(lái)判斷它是否有保存過(guò)密碼
// 讀取以前保存的密碼 std::string savedPassword = readPassword(); // 如果沒(méi)有保存的密碼,要求設(shè)置新密碼 if (savedPassword.empty()) { std::cout << "歡迎首次使用,請(qǐng)?jiān)O(shè)置新密碼:"; std::cin >> newPassword; } else { // 獲取當(dāng)前密碼
讀取密碼之后,我們要進(jìn)行輸入密碼
if (savedPassword.empty()) { std::cout << "歡迎首次使用,請(qǐng)?jiān)O(shè)置新密碼:"; std::cin >> newPassword; } else { // 獲取當(dāng)前密碼 std::cout << "請(qǐng)輸入當(dāng)前密碼:"; std::cin >> currentPassword; // 驗(yàn)證當(dāng)前密碼 if (currentPassword != savedPassword) { std::cout << "密碼錯(cuò)誤,無(wú)法進(jìn)行修改!" << std::endl; return 0; } // 獲取新密碼 std::cout << "請(qǐng)輸入新密碼:"; std::cin >> newPassword; }
2.能夠保存密碼
輸入了之后我們要能夠檢查密碼
bool checkPassword(const std::string& password) { // 檢查密碼是否符合要求,這里只作簡(jiǎn)單示例 if (password.length() < 6) { return false; } // 還可以進(jìn)行其他復(fù)雜的密碼檢查規(guī)則 return true; }
// 驗(yàn)證新密碼 if (!checkPassword(newPassword)) { std::cout << "新密碼不符合要求,修改失??!" << std::endl; return 0; }
檢查完密碼我們就要進(jìn)行保存
savePassword(newPassword);
void savePassword(const std::string& password) { std::ofstream file("password.txt"); if (file.is_open()) { file << password; file.close(); std::cout << "密碼保存成功!" << std::endl; } else { std::cout << "密碼保存失??!" << std::endl; } }
3.能夠更改密碼
當(dāng)我們想換密碼的時(shí)候,也要有這個(gè)功能
// 獲取當(dāng)前密碼 std::cout << "請(qǐng)輸入當(dāng)前密碼:"; std::cin >> currentPassword; // 驗(yàn)證當(dāng)前密碼 if (currentPassword != savedPassword) { std::cout << "密碼錯(cuò)誤,無(wú)法進(jìn)行修改!" << std::endl; return 0; } // 獲取新密碼 std::cout << "請(qǐng)輸入新密碼:"; std::cin >> newPassword;
2、完整代碼
#include<iostream> #include<string> #include<fstream> #include <iostream> #include <fstream> #include <string> bool checkPassword(const std::string& password) { // 檢查密碼是否符合要求,這里只作簡(jiǎn)單示例 if (password.length() < 6) { return false; } // 還可以進(jìn)行其他復(fù)雜的密碼檢查規(guī)則 return true; } void savePassword(const std::string& password) { std::ofstream file("password.txt"); if (file.is_open()) { file << password; file.close(); std::cout << "密碼保存成功!" << std::endl; } else { std::cout << "密碼保存失??!" << std::endl; } } std::string readPassword() { std::string password; std::ifstream file("password.txt"); if (file.is_open()) { file >> password; file.close(); } return password; } using namespace std; using namespace std; #define MAX 50 int main() { std::string currentPassword; std::string newPassword; // 讀取以前保存的密碼 std::string savedPassword = readPassword(); // 如果沒(méi)有保存的密碼,要求設(shè)置新密碼 if (savedPassword.empty()) { std::cout << "歡迎首次使用,請(qǐng)?jiān)O(shè)置新密碼:"; std::cin >> newPassword; } else { // 獲取當(dāng)前密碼 std::cout << "請(qǐng)輸入當(dāng)前密碼:"; std::cin >> currentPassword; // 驗(yàn)證當(dāng)前密碼 if (currentPassword != savedPassword) { std::cout << "密碼錯(cuò)誤,無(wú)法進(jìn)行修改!" << std::endl; return 0; } // 獲取新密碼 std::cout << "請(qǐng)輸入新密碼:"; std::cin >> newPassword; } // 驗(yàn)證新密碼 if (!checkPassword(newPassword)) { std::cout << "新密碼不符合要求,修改失敗!" << std::endl; return 0; } // 保存密碼 savePassword(newPassword); // 修改密碼成功 std::cout << "密碼修改成功!" << std::endl; }
以上就是基于C++編寫一個(gè)密碼系統(tǒng)的詳細(xì)內(nèi)容,更多關(guān)于C++密碼系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android App仿微信界面切換時(shí)Tab圖標(biāo)變色效果的制作方法
這篇文章主要介紹了Android App仿微信界面切換時(shí)Tab圖標(biāo)變色效果的制作方法,重點(diǎn)講解了圖標(biāo)的繪制技巧,需要的朋友可以參考下2016-04-04C++11中std::declval的實(shí)現(xiàn)機(jī)制淺析
這篇文章主要給大家介紹了關(guān)于C++11中std::declval實(shí)現(xiàn)機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07淺析C++字節(jié)對(duì)齊容易被忽略的兩個(gè)問(wèn)題
今天我就和大家分享一下C++字節(jié)對(duì)齊容易被忽略的兩個(gè)問(wèn)題。以下問(wèn)題也是我實(shí)際開(kāi)發(fā)工作中遇到的,如果有不同意見(jiàn)歡迎交流2013-07-07MATLAB全網(wǎng)最全的colormap的使用教程詳解
眾所周知,MATLAB中的colormap只有少得可憐的幾種,有很多應(yīng)用在很特殊的圖形中的colormap幾乎都沒(méi)有,而每次寫代碼都要去找顏色的圖屬實(shí)太麻煩。所以本文將包全部集成了進(jìn)來(lái),終于有了這套包含200個(gè)colormap的工具函數(shù),希望對(duì)大家有所幫助2023-02-02C++用boost.signal實(shí)現(xiàn)多播委托
這篇文章介紹了C++用boost.signal實(shí)現(xiàn)多播委托的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06基于epoll的多線程網(wǎng)絡(luò)服務(wù)程序設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了基于epoll的多線程網(wǎng)絡(luò)服務(wù)程序設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C語(yǔ)言實(shí)現(xiàn)交換排序算法(冒泡,快速排序)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)交換排序算法(冒泡排序、快速排序),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-07-07Qt自定義控件實(shí)現(xiàn)進(jìn)度儀表盤
這篇文章主要介紹了Qt自定義控件實(shí)現(xiàn)進(jìn)度儀表盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12