Nhờ xem giúp C++ chương trình mô phỏng máy ATM

(Diễn đàn ko cho reply quá 6 lần nên em đành edit cái reply này)
Em vừa tối ưu lại code, ngắn hơn nhiều rồi vì đã bỏ switch case 2 lần và chuyển thành IF anh em xem và thấy chỗ nào còn bị gì thì góp ý giúp em

Hiện chương trình đã chạy được tối đa là 10000 lần cho đến khi người dùng chọn lệnh Thoát :yum:
Ngoài ra còn lưu đc mật khẩu, số dư tài khoản cho lần sử dụng tiếp theo luôn.

#include <iostream>
#include <string>
#include <windows.h> //de su dung ham Sleep()

using namespace std;

int main()
{
	string ten;
	string mat_khau = "123456";
	string mat_khau_luc_dau = "123456";
	int tuy_chon;
	int so_du = 2000000; //ban dau co 2 trieu $$$
	int so_du_moi;
	int tien_rut;
	string mat_khau_moi, mat_khau_moi_kiem_tra;
	string tai_khoan_chuyen;

	for (int i = 0; i < 10000; i++)
	{
		system("cls");
		cout << "(Lan nhap va su dung thu " << i+1 << ")\n";
		cout << "(Sau moi lan lam viec, tai khoan se tu dong dang xuat khoi chuong trinh.)\n\n";
		cout << "\t\t\tDANG NHAP TAI KHOAN CUA BAN\n";
		cout << "\nTen nguoi dung: "; cin >> ten;
		cout << "Mat khau: "; cin >> mat_khau;

		if (ten == "tien" && mat_khau == mat_khau_luc_dau)
		{
			system("cls");
			cout << "\t\t\tDANG NHAP TAI KHOAN CUA BAN\n\n";
			cout << "Dang kiem tra thong tin...\n";
			Sleep(1000);
			cout << "\nDANG NHAP THANH CONG!\a\a\n\n";
			Sleep(2000);
			system("cls");
			cout << "\t\t\tMOI BAN CHON YEU CAU CAN THUC HIEN\n\n";
			cout << "1   :     TRA CUU SO DU TAI KHOAN\n";
			cout << "2   :     RUT TIEN\n";
			cout << "3   :     DOI MAT KHAU\n";
			cout << "4   :     CHUYEN TIEN\n";
			cout << "KHAC:     THOAT\n\n";
			cin >> tuy_chon;

			if (tuy_chon == 1)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tTRA CUU SO DU\n";
				cout << "\nSo du tai khoan hien tai la: " << so_du << " VND\a\n\n";
				system("pause");
			}
			else if (tuy_chon == 2)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tRUT TIEN\n\n";
				cout << "Nhap so tien ban muon rut: ";
				cin >> tien_rut;
				while ((tien_rut % 50000 != 0) || (tien_rut) > so_du)
				{
					cout << "\a\nVUI LONG NHAP SO TIEN NHO HON HOAC BANG SO DU TRONG TAI KHOAN CUA BAN VA LA BOI SO CUA 50000:\n";
					cin >> tien_rut;
				}
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					so_du_moi = so_du - tien_rut;
					so_du = so_du_moi;
					cout << "\nBAN DA RUT TIEN THANH CONG, SO DU CON LAI LA: " << so_du << " VND\a\a\n\n";
					system("pause");
				}
			}
			else if (tuy_chon == 3)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tDOI MAT KHAU\n\n";
				cout << "Moi ban nhap mat khau moi: ";
				cin >> mat_khau_moi;
				cout << "Moi ban nhap lai mat khau moi lan nua: ";
				cin >> mat_khau_moi_kiem_tra;
				Sleep(1000);
				if (mat_khau_moi == mat_khau_moi_kiem_tra)
				{
					mat_khau_luc_dau = mat_khau_moi;
					cout << "\nDang kiem tra thong tin...\n";
					Sleep(1000);
					cout << "\nDOI MAT KHAU THANH CONG!\a\a\n\n";
					cout << "\nVUI LONG DANG NHAP DE KIEM TRA MAT KHAU MOI!\n\n";
					system("pause");
					system("cls");
					cout << "\t\t\t\tDANG NHAP\n\n";
					cout << "Ten nguoi dung: "; cin >> ten;
					cout << "Mat khau: "; cin >> mat_khau;
					if (ten == "tien" && mat_khau == mat_khau_moi)
					{
						system("cls");
						cout << "\t\t\t\tDANG NHAP\n\n";
						cout << "Dang kiem tra thong tin...\n";
						Sleep(1000);
						cout << "\nDANG NHAP THANH CONG!\a\a\n\n";
						system("pause");
					}
					else if (ten != "tien" || mat_khau != mat_khau_moi)
					{
						system("cls");
						cout << "\t\t\t\tDANG NHAP\n\n";
						cout << "Dang kiem tra thong tin...\n";
						Sleep(1000);
						cout << "\nDANG NHAP THAT BAI!\a\a\n\n";
						Sleep(2000);
					}
				}
				else
				{
					cout << "\nDang kiem tra thong tin...\n";
					Sleep(1000);
					cout << "\nDOI MAT KHAU THAT BAI!\a\a\n\n";
					system("pause");
				}
			}
			else if (tuy_chon == 4)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tCHUYEN TIEN\n\n";
				cout << "Moi ban nhap ten nguoi dung can chuyen tien: ";
				cin >> tai_khoan_chuyen;
				while (tai_khoan_chuyen == "tien")
				{
					cout << "\nTen tai khoan nhan tien phai khac ten tai khoan cua ban!\a\n";
					cout << "Moi nhap lai TK can chuyen tien den: ";
					cin >> tai_khoan_chuyen;
				}
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tCHUYEN TIEN\n\n";
				cout << "Moi ban nhap so tien can chuyen: ";
				cin >> tien_rut;
				while ((tien_rut % 50000 != 0) || (tien_rut) > so_du)
				{
					cout << "\a\nVUI LONG NHAP SO TIEN NHO HON HOAC BANG SO DU TRONG TAI KHOAN CUA BAN VA LA BOI SO CUA 50000:\n";
					cin >> tien_rut;
				}
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					so_du_moi = so_du - tien_rut;
					so_du = so_du_moi;
					cout << "\nBAN DA CHUYEN TIEN THANH CONG DEN TAI KHOAN " << tai_khoan_chuyen << ", SO DU CON LAI LA: " << so_du << " VND\a\a\n\n";
					system("pause");
				}
			}
			else
				{
					cout << "\n\t\tBAN DA CHON DANG XUAT KHOI CHUONG TRINH, CAM ON BAN!\a\a\n\n";
					Sleep(1000);
					break;
				}
		}
	}
		
		system("pause");
		return(0);
}

Học hàm giúp cho chương trình gọn hơn
Thao tác với File giúp người dùng đăng kí thêm tài khoản lưu các thông tin vào file. :smile: gọi là Database.
Kiếm file nhạc nào, mỗi lần rút tiền đăng nhập, cho chạy file nhạc như máy thật.
Làm vòng lặp while để chương trình chạy liên tục

1 Like

Thật cảm ơn bạn đã góp ý, mình cũng sắp vào đại học rồi, chắc cũng ko đc rảnh nhiều như ở nhà nhưng mình sẽ giữ ý tưởng này sau này học thêm kiến thức mới sẽ nâng cấp nó lên.
Rất tâm đắc với ý kiến về database, nhạc của bạn :laughing: nhưng có vẻ còn hơi lâu mình mới chạm đến đc mấy cái này
Điều mình đang nghĩ lúc này là làm thế nào để dùng vòng while lặp lại chương trình và lưu lại các thông số như mật khẩu đã đổi, số dư còn lại, … hoặc sau khi dùng một chức năng xong thì có thể dùng tiếp chức năng khác… :confused:

khai báo biến;
vòng lặp
{
    xử lí chương trình;
}

Ok mình đã bỏ đi vòng for 10000 lần rồi, xài đến 10000 lần là cháy máy :laughing:
Đã thay bằng while (true)
Anh em xem còn gì chưa hợp lý góp ý em nha, em mới học C++ đc 1 tháng, trước có học Pascal năm 11 nhưng cũng hơi mơ hồ, chỉ biết chép code cô viết trên bảng là chính thôi :yum:

#include <iostream>
#include <string>
#include <windows.h> //de su dung ham Sleep()

using namespace std;

int main()
{
	string ten;
	string mat_khau = "123456";
	string mat_khau_luc_dau = "123456";
	int tuy_chon;
	int so_du = 2000000; //ban dau co 2 trieu $$$
	int so_du_moi;
	int tien_rut;
	int so_lan_sd = 0;
	string mat_khau_moi, mat_khau_moi_kiem_tra;
	string tai_khoan_chuyen;

	while (true)
	{
		system("cls");
		so_lan_sd++;
		cout << "(Lan nhap va su dung thu " << so_lan_sd << ")\n";
		cout << "(Sau moi lan lam viec, tai khoan se tu dong dang xuat khoi chuong trinh)\n\n";
		cout << "\t\t\tDANG NHAP TAI KHOAN CUA BAN\n";
		cout << "\nTen nguoi dung: "; cin >> ten;
		cout << "Mat khau: "; cin >> mat_khau;

		if (ten == "tien" && mat_khau == mat_khau_luc_dau)
		{
			system("cls");
			cout << "\t\t\tDANG NHAP TAI KHOAN CUA BAN\n\n";
			cout << "Dang kiem tra thong tin...\n";
			Sleep(1000);
			cout << "\nDANG NHAP THANH CONG!\a\a\n\n";
			Sleep(2000);
			system("cls");
			cout << "\t\t\tMOI BAN CHON YEU CAU CAN THUC HIEN\n\n";
			cout << "1   :     TRA CUU SO DU TAI KHOAN\n";
			cout << "2   :     RUT TIEN\n";
			cout << "3   :     DOI MAT KHAU\n";
			cout << "4   :     CHUYEN TIEN\n";
			cout << "KHAC:     THOAT\n\n";
			cin >> tuy_chon;

			if (tuy_chon == 1)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tTRA CUU SO DU\n";
				cout << "\nSo du tai khoan hien tai la: " << so_du << " VND\a\n\n";
				system("pause");
			}
			else if (tuy_chon == 2)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tRUT TIEN\n\n";
				cout << "Nhap so tien ban muon rut: ";
				cin >> tien_rut;
				while ((tien_rut % 50000 != 0) || (tien_rut) > so_du)
				{
					cout << "\a\nVUI LONG NHAP SO TIEN NHO HON HOAC BANG SO DU TRONG TAI KHOAN CUA BAN VA LA BOI SO CUA 50000:\n";
					cin >> tien_rut;
				}
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					so_du_moi = so_du - tien_rut;
					so_du = so_du_moi;
					cout << "\nBAN DA RUT TIEN THANH CONG, SO DU CON LAI LA: " << so_du << " VND\a\a\n\n";
					system("pause");
				}
			}
			else if (tuy_chon == 3)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tDOI MAT KHAU\n\n";
				cout << "Moi ban nhap mat khau moi: ";
				cin >> mat_khau_moi;
				cout << "Moi ban nhap lai mat khau moi lan nua: ";
				cin >> mat_khau_moi_kiem_tra;
				Sleep(1000);
				if (mat_khau_moi == mat_khau_moi_kiem_tra)
				{
					mat_khau_luc_dau = mat_khau_moi;
					cout << "\nDang kiem tra thong tin...\n";
					Sleep(1000);
					cout << "\nDOI MAT KHAU THANH CONG!\a\a\n\n";
					cout << "\nVUI LONG DANG NHAP DE KIEM TRA MAT KHAU MOI!\n\n";
					system("pause");
					system("cls");
					cout << "\t\t\t\tDANG NHAP\n\n";
					cout << "Ten nguoi dung: "; cin >> ten;
					cout << "Mat khau: "; cin >> mat_khau;
					if (ten == "tien" && mat_khau == mat_khau_moi)
					{
						system("cls");
						cout << "\t\t\t\tDANG NHAP\n\n";
						cout << "Dang kiem tra thong tin...\n";
						Sleep(1000);
						cout << "\nDANG NHAP THANH CONG!\a\a\n\n";
						system("pause");
					}
					else if (ten != "tien" || mat_khau != mat_khau_moi)
					{
						system("cls");
						cout << "\t\t\t\tDANG NHAP\n\n";
						cout << "Dang kiem tra thong tin...\n";
						Sleep(1000);
						cout << "\nDANG NHAP THAT BAI!\a\a\n\n";
						Sleep(2000);
					}
				}
				else
				{
					cout << "\nDang kiem tra thong tin...\n";
					Sleep(1000);
					cout << "\nDOI MAT KHAU THAT BAI!\a\a\n\n";
					system("pause");
				}
			}
			else if (tuy_chon == 4)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tCHUYEN TIEN\n\n";
				cout << "Moi ban nhap ten nguoi dung can chuyen tien: ";
				cin >> tai_khoan_chuyen;
				while (tai_khoan_chuyen == "tien")
				{
					cout << "\nTen tai khoan nhan tien phai khac ten tai khoan cua ban!\a\n";
					cout << "Moi nhap lai TK can chuyen tien den: ";
					cin >> tai_khoan_chuyen;
				}
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tCHUYEN TIEN\n\n";
				cout << "Moi ban nhap so tien can chuyen: ";
				cin >> tien_rut;
				while ((tien_rut % 50000 != 0) || (tien_rut) > so_du)
				{
					cout << "\a\nVUI LONG NHAP SO TIEN NHO HON HOAC BANG SO DU TRONG TAI KHOAN CUA BAN VA LA BOI SO CUA 50000:\n";
					cin >> tien_rut;
				}
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					so_du_moi = so_du - tien_rut;
					so_du = so_du_moi;
					cout << "\nBAN DA CHUYEN TIEN THANH CONG DEN TAI KHOAN " << tai_khoan_chuyen << ", SO DU CON LAI LA: " << so_du << " VND\a\a\n\n";
					system("pause");
				}
			}
			else
				{
					cout << "\n\t\tBAN DA CHON THOAT KHOI CHUONG TRINH, CAM ON BAN!\a\a\n\n";
					Sleep(1000);
					break;
				}
		}
	}
		
		system("pause");
		return(0);
}

break trong switch case tác dụng gì tới vòng lặp? Sao không phải là if?

Thế mình thay vòng for bằng

while (true)

Đến khi nào người dùng nhập vào tùy chọn có chứa lệnh Break là nó thoát, ko biết như thế có được ko?

Nếu vậy chương trình của bạn sẽ chỉ chạy được trong chừng đó lần. Sao bạn không thử dùng vòng lặp vô hạn? Bạn muốn break để thoát ra vòng lặp thì đặt mộ câu if, đương nhiên là nó nằm ngoài switch.

Chưa thấy ATM chạy Console bao giờ ??

*có tổ chức hơn :slight_smile:

^ thì luyện tập mà.

Chương trình mô phỏng thôi anh ơi, cứ từ từ rồi sẽ có ngày em nó code giao diện :))

Em là thằng chủ topic đây ạ, vì newbie chỉ đc reply 6 lần trong ngày nên em tạo thêm cái account.
Tình hình là em vừa tối ưu lại cái mớ code này rồi:
Chỉ còn hơn 150 dòng thay vì 300 dòng, ko phải chạy 2 lần switch case nữa cho dài dòng, chương trình có thể nhận diện đổi mật khẩu và ghi nhớ mật khẩu cho lần chạy tiếp theo (dùng mật khẩu mới) cũng như số tiền rút, số dư còn lại trong tài khoản… nói chung là các chức năng đã sử dụng vô tư. Tất nhiên vẫn còn một số lỗi logic mà em mỏi quá với lại thấy ko quan trọng lắm.
Mời anh em tiếp tục góp ý ạ :smile:

#include <iostream>
#include <string>
#include <windows.h> //de su dung ham Sleep()

using namespace std;

int main()
{
	string ten;
	string mat_khau = "123456";
	string mat_khau_luc_dau = "123456";
	int tuy_chon;
	int so_du = 2000000; //ban dau co 2 trieu $$$
	int so_du_moi;
	int tien_rut;
	string mat_khau_moi, mat_khau_moi_kiem_tra;
	string tai_khoan_chuyen;

	for (int i = 0; i < 10000; i++)
	{
		system("cls");
		cout << "(Lan nhap va su dung thu " << i+1 << ")\n";
		cout << "(Sau moi lan lam viec, tai khoan se tu dong dang xuat khoi chuong trinh.)\n\n";
		cout << "\t\t\tDANG NHAP TAI KHOAN CUA BAN\n";
		cout << "\nTen nguoi dung: "; cin >> ten;
		cout << "Mat khau: "; cin >> mat_khau;

		if (ten == "tien" && mat_khau == mat_khau_luc_dau)
		{
			system("cls");
			cout << "\t\t\tDANG NHAP TAI KHOAN CUA BAN\n\n";
			cout << "Dang kiem tra thong tin...\n";
			Sleep(1000);
			cout << "\nDANG NHAP THANH CONG!\a\a\n\n";
			Sleep(2000);
			system("cls");
			cout << "\t\t\tMOI BAN CHON YEU CAU CAN THUC HIEN\n\n";
			cout << "1   :     TRA CUU SO DU TAI KHOAN\n";
			cout << "2   :     RUT TIEN\n";
			cout << "3   :     DOI MAT KHAU\n";
			cout << "4   :     CHUYEN TIEN\n";
			cout << "KHAC:     THOAT\n\n";
			cin >> tuy_chon;

			if (tuy_chon == 1)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tTRA CUU SO DU\n";
				cout << "\nSo du tai khoan hien tai la: " << so_du << " VND\a\n\n";
				system("pause");
			}
			else if (tuy_chon == 2)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tRUT TIEN\n\n";
				cout << "Nhap so tien ban muon rut: ";
				cin >> tien_rut;
				while ((tien_rut % 50000 != 0) || (tien_rut) > so_du)
				{
					cout << "\a\nVUI LONG NHAP SO TIEN NHO HON HOAC BANG SO DU TRONG TAI KHOAN CUA BAN VA LA BOI SO CUA 50000:\n";
					cin >> tien_rut;
				}
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					so_du_moi = so_du - tien_rut;
					so_du = so_du_moi;
					cout << "\nBAN DA RUT TIEN THANH CONG, SO DU CON LAI LA: " << so_du << " VND\a\a\n\n";
					system("pause");
				}
			}
			else if (tuy_chon == 3)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tDOI MAT KHAU\n\n";
				cout << "Moi ban nhap mat khau moi: ";
				cin >> mat_khau_moi;
				cout << "Moi ban nhap lai mat khau moi lan nua: ";
				cin >> mat_khau_moi_kiem_tra;
				Sleep(1000);
				if (mat_khau_moi == mat_khau_moi_kiem_tra)
				{
					mat_khau_luc_dau = mat_khau_moi;
					cout << "\nDang kiem tra thong tin...\n";
					Sleep(1000);
					cout << "\nDOI MAT KHAU THANH CONG!\a\a\n\n";
					cout << "\nVUI LONG DANG NHAP DE KIEM TRA MAT KHAU MOI!\n\n";
					system("pause");
					system("cls");
					cout << "\t\t\t\tDANG NHAP\n\n";
					cout << "Ten nguoi dung: "; cin >> ten;
					cout << "Mat khau: "; cin >> mat_khau;
					if (ten == "tien" && mat_khau == mat_khau_moi)
					{
						system("cls");
						cout << "\t\t\t\tDANG NHAP\n\n";
						cout << "Dang kiem tra thong tin...\n";
						Sleep(1000);
						cout << "\nDANG NHAP THANH CONG!\a\a\n\n";
						system("pause");
					}
					else if (ten != "tien" || mat_khau != mat_khau_moi)
					{
						system("cls");
						cout << "\t\t\t\tDANG NHAP\n\n";
						cout << "Dang kiem tra thong tin...\n";
						Sleep(1000);
						cout << "\nDANG NHAP THAT BAI!\a\a\n\n";
						Sleep(2000);
					}
				}
				else
				{
					cout << "\nDang kiem tra thong tin...\n";
					Sleep(1000);
					cout << "\nDOI MAT KHAU THAT BAI!\a\a\n\n";
					system("pause");
				}
			}
			else if (tuy_chon == 4)
			{
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tCHUYEN TIEN\n\n";
				cout << "Moi ban nhap ten nguoi dung can chuyen tien: ";
				cin >> tai_khoan_chuyen;
				while (tai_khoan_chuyen == "tien")
				{
					cout << "\nTen tai khoan nhan tien phai khac ten tai khoan cua ban!\a\n";
					cout << "Moi nhap lai TK can chuyen tien den: ";
					cin >> tai_khoan_chuyen;
				}
				Sleep(1000);
				system("cls");
				cout << "\t\t\t\tCHUYEN TIEN\n\n";
				cout << "Moi ban nhap so tien can chuyen: ";
				cin >> tien_rut;
				while ((tien_rut % 50000 != 0) || (tien_rut) > so_du)
				{
					cout << "\a\nVUI LONG NHAP SO TIEN NHO HON HOAC BANG SO DU TRONG TAI KHOAN CUA BAN VA LA BOI SO CUA 50000:\n";
					cin >> tien_rut;
				}
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					so_du_moi = so_du - tien_rut;
					so_du = so_du_moi;
					cout << "\nBAN DA CHUYEN TIEN THANH CONG DEN TAI KHOAN " << tai_khoan_chuyen << ", SO DU CON LAI LA: " << so_du << " VND\a\a\n\n";
					system("pause");
				}
			}
			else
				{
					cout << "\n\t\tBAN DA CHON DANG XUAT KHOI CHUONG TRINH, CAM ON BAN!\a\a\n\n";
					Sleep(1000);
					break;
				}
		}
	}
		
		system("pause");
		return(0);
}

:smile: trời ạ mình gợi ý vậy rồi mà.
Nếu phần mềm nào cũng vậy thì ai dùng? Bạn thấy lúc chơi game không. Nếu bạn vẫn cứ để đó thì game mãi mãi chạy đúng không? Và bạn cũng cần làm nó chạy mãi mãi tới khi bạn tắt đi mà thôi :smile:. Để làm được việc đó thì vòng lặp 10000 lần cũng không si nhê :smile:

Đúng rồi, ai cũng dùng while True hết. Một số người thích lạ thì họ làm khác (while khác, for khác) nhưng nói chung bản chất vẫn là vòng lặp vô hạn.

1 Like

Bạn có thể cải tiến thêm chương trình như sau:
• Chia ra các hàm để dễ quản lý hơn, ví dụ hàm kiểm tra tài khoản, chuyển tiền,…v…v…
• Thay cái vòng lặp 10000 đó thành 1 vòng lặp vô hạn, chỉ thoát khi người dùng chọn thoát, (ví dụ ấn phím 4 thì thoát)
• Bạn học thêm về xử lý file input output, để lưu tên, mật khẩu số dư lại, để khi tắt hoàn toàn thì dữ liệu của chương trình vẫn còn. Bước tiến xa hơn nữa thì mã hoá cái user và pass khi lưu vào file để hacker khó có thể đọc đc tài khoản ngân hàng của bạn :smile:

Chúc thành công.

cảm ơn bạn đã góp ý.
mình đã thay vòng lặp 10000 lần bằng vòng lặp while (true) rồi, chỉ thoát CT khi người dùng chọn lệnh
2 đóng góp còn lại mình chưa học tới phần kiến thức đó, cũng rất tâm đắc cái vụ lưu đc nhiều user, password và lưu dữ liệu sau khi tắt chương trình luôn :sunglasses:
còn cái vụ mà mình nhập mật khẩu vào nó chuyển thành dấu ****** thì em ko biết làm sao, có ai biết ko chỉ em với :blush:

Lệnh này ko có trong C/C++. Dùng getch() nếu trên VS.

Cái khoản mật khẩu thì bạn có thể search Google mà.
Mình tìm được trang này: http://www.cplusplus.com/forum/general/3570/
Cụ thể thì đây là đoạn code nhập pass :sunglasses:

#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int main(){
   string pass ="";
   char ch;
   cout << "Enter pass\n";
   ch = _getch();
   while(ch != 13){ //13 là mã của phím Enter
      pass.push_back(ch);
      cout << '*';
      ch = _getch();
   }
   //Làm gì đó với pass...
}
1 Like

làm như thế này thì có kiểm tra mật khẩu bằng câu lệnh if đc ko ạ?

Được chứ bạn, đơn giản đoạn code trên chỉ nhận các kí tự bạn nhập thông qua hàm _getch() vào biến ch, kiểm tra xem kí tự nhập vào có phải phím enter ko, nếu là enter thì kết thúc việc nhập mật khẩu, còn không phải thì thêm kí tự ch mà mình get được vào biến pass. Sau đó bạn kiểm tra mật khẩu bình thường từ biến pass.

Tuy nhiên đoạn code trên chưa xoá được mật khẩu khi nhập sai (có nghĩa là khi mình ấn Backspace hay Delete không được) phần xử lý này dành cho bạn, Gợi ý cho bạn là mã hệ 10 của phím Backspace là 8 và Delete là 127.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?