01/10/2018, 10:36

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

Em là newbie mới học lập trình, trước giờ chỉ biết vài ba chữ Pascal học năm 11.
Vừa thi đại học xong chuẩn bị đi học đại học, trong lúc chờ đi học em có tự học C++ ở nhà.
Hiện em đang học khóa C++ free trên cpp.daynhauhoc.com
Em có dùng các lệnh if else, switch case, while và một số thứ đơn giản như Sleep, system(“cls”) để viết chương trình mô phỏng máy ATM (chưa đc hoàn thiện), ban đầu chỉ là chương trình kiểm tra ID, mật khẩu nhưng e nảy sinh thêm ý tưởng dùng switch case để thêm tùy chọn giống như máy ATM
Chương trình này chả có gì rắc rối nhưng dài vì cái switch case em lặp lại 2 lần, các anh em xem code của em, em thấy nó còn dài dòng quá, chắc chắn là chương trình cũng chưa hoàn chỉnh vì em nghĩ trình C++ 1 tháng thì …

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

using namespace std;

int main()
{
	string ten = "tien";
	string mat_khau = "123456";
	string TEN, MAT_KHAU;
	int so_lan_nhap_sai = 0;
	int tuy_chon;
	int so_du = 200000;
	int tien_rut;
	string mat_khau_moi, mat_khau_moi1;
	string tai_khoan_can_chuyen;

	cout << "			DANG NHAP TAI KHOAN CUA BAN
";
	cout << "
Ten nguoi dung: "; cin >> TEN;
	cout << "Mat khau: "; cin >> MAT_KHAU;

	if (TEN == ten && MAT_KHAU == mat_khau)
	{
		system("cls");
		cout << "			DANG NHAP TAI KHOAN CUA BAN

";
		cout << "Dang kiem tra thong tin...
";
		Sleep(1000);
		cout << "
DANG NHAP THANH CONG!aa

";
		Sleep(2000);
		system("cls");
		cout << "			MOI BAN CHON YEU CAU CAN THUC HIEN

";
		cout << "1: TRA CUU SO DU TAI KHOAN
";
		cout << "2: RUT TIEN
";
		cout << "3: DOI MAT KHAU
";
		cout << "4: CHUYEN TIEN

";
		cin >> tuy_chon;
		switch (tuy_chon)
		{
		case 1:
			Sleep(1000);
			system("cls");
			cout << "				TRA CUU SO DU
";
			cout << "
So du tai khoan hien tai la: " << so_du << " VND

";
			break;
		case 2:
			Sleep(1000);
			system("cls");
			cout << "				RUT TIEN

";
			cout << "Nhap so tien ban muon rut: ";
			cin >> tien_rut;
			if (tien_rut <= so_du)
			{
				Sleep(1000);
				cout << "
BAN DA RUT TIEN THANH CONG, SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
				Sleep(1000);
			}
			while (tien_rut > so_du)
			{
				cout << "
So tien rut phai nho hon hoac bang so du con lai!
";
				cin >> tien_rut;
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					cout << "
BAN DA RUT TIEN THANH CONG, SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
					Sleep(1000);
				}
			}
			break;
		case 3:
			Sleep(1000);
			system("cls");
			cout << "				DOI MAT KHAU

";
			cout << "Moi ban nhap mat khau moi: ";
			cin >> mat_khau_moi;
			cout << "Moi ban nhap lai mat khau moi lan nua: ";
			cin >> mat_khau_moi1;
			Sleep(1000);
			if (mat_khau_moi == mat_khau_moi1)
			{
				mat_khau = mat_khau_moi;
				cout << "
Dang kiem tra thong tin...
";
				Sleep(1000);
				cout << "
DOI MAT KHAU THANH CONG!

";
				Sleep(1000);
				system("cls");
				cout << "			DANG NHAP

";
				cout << "Ten nguoi dung: "; cin >> TEN;
				cout << "Mat khau: "; cin >> MAT_KHAU;
				if (TEN == ten && MAT_KHAU == mat_khau)
				{
					system("cls");
					cout << "				DANG NHAP

";
					cout << "Dang kiem tra thong tin...
";
					Sleep(1000);
					cout << "
DANG NHAP THANH CONG!aa

";
				} else 
				{
					system("cls");
					cout << "				DANG NHAP

";
					cout << "Dang kiem tra thong tin...
";
					Sleep(1000);
					cout << "
DANG NHAP THAT BAI!aa

";
				}
			}
			break;
		case 4:
			Sleep(1000);
			system("cls");
			cout << "				CHUYEN TIEN

";
			cout << "Moi ban nhap ten nguoi dung can chuyen tien: ";
			cin >> tai_khoan_can_chuyen;
			cout << "Moi ban nhap so tien can chuyen: ";
			cin >> tien_rut;
			if (tien_rut <= so_du)
			{
				Sleep(1000);
				cout << "
BAN DA CHUYEN THANH CONG "<<tien_rut<<" VND CHO TAI KHOAN "<<tai_khoan_can_chuyen<<" SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
				Sleep(1000);
			}
			while (tien_rut > so_du)
			{
				cout << "
So tien chuyen phai nho hon hoac bang so du con lai!
";
				cin >> tien_rut;
				if (tien_rut <= so_du)
				{
					Sleep(1000);
					cout << "
BAN DA CHUYEN THANH CONG " << tien_rut << " VND CHO TAI KHOAN " << tai_khoan_can_chuyen << " SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
					Sleep(1000);
				}
			}
			break;
		default:
			Sleep(1000);
			system("cls");
			Sleep(1000);
			cout << "Hien chua co chuc nang nay!

";
			break;
		}
	} else while (TEN != ten || MAT_KHAU != mat_khau)
		{
			so_lan_nhap_sai++;
			system("cls"); //xoa man hinh console
			cout << "			DANG NHAP TAI KHOAN CUA BAN

";
			cout << "Dang kiem tra thong tin...
";
			Sleep(1000); //dung chuong trinh 1000 mili giay
			cout << "
BAN DA NHAP SAI TEN NGUOI DUNG HOAC MAT KHAU "<<so_lan_nhap_sai<<" LAN, MOI NHAP LAI!
a";
			cout << "
Ten nguoi dung: "; cin >> TEN;
			cout << "Mat khau: "; cin >> MAT_KHAU;
			if (TEN == ten && MAT_KHAU == mat_khau)
			{
				system("cls");
				cout << "			DANG NHAP TAI KHOAN CUA BAN

";
				cout << "Dang kiem tra thong tin...
";
				Sleep(1000);
				cout << "
DANG NHAP THANH CONG!aa

";
				Sleep(2000);
				system("cls");
				cout << "			MOI BAN CHON YEU CAU CAN THUC HIEN

";
				cout << "1: TRA CUU SO DU TAI KHOAN
";
				cout << "2: RUT TIEN
";
				cout << "3: DOI MAT KHAU
";
				cout << "4: CHUYEN TIEN

";
				cin >> tuy_chon;
				switch (tuy_chon)
				{
				case 1:
					Sleep(1000);
					system("cls");
					cout << "				TRA CUU SO DU
";
					cout << "
So du tai khoan hien tai la: " << so_du << " VND

";
					break;
				case 2:
					Sleep(1000);
					system("cls");
					cout << "				RUT TIEN

";
					cout << "Nhap so tien ban muon rut: ";
					cin >> tien_rut;
					if (tien_rut <= so_du)
					{
						Sleep(1000);
						cout << "
BAN DA RUT TIEN THANH CONG, SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
						Sleep(1000);
					}
					while (tien_rut > so_du)
					{
						cout << "
So tien rut phai nho hon hoac bang so du con lai!
";
						cin >> tien_rut;
						if (tien_rut <= so_du)
						{
							Sleep(1000);
							cout << "
BAN DA RUT TIEN THANH CONG, SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
							Sleep(1000);
						}
					}
					break;
				case 3:
					Sleep(1000);
					system("cls");
					cout << "				DOI MAT KHAU

";
					cout << "Moi ban nhap mat khau moi: ";
					cin >> mat_khau_moi;
					cout << "Moi ban nhap lai mat khau moi lan nua: ";
					cin >> mat_khau_moi1;
					Sleep(1000);
					if (mat_khau_moi == mat_khau_moi1)
					{
						mat_khau = mat_khau_moi;
						cout << "
Dang kiem tra thong tin...
";
						Sleep(1000);
						cout << "
DOI MAT KHAU THANH CONG!

";
						Sleep(1000);
						system("cls");
						cout << "				DANG NHAP

";
						cout << "Ten nguoi dung: "; cin >> TEN;
						cout << "Mat khau: "; cin >> MAT_KHAU;
						if (TEN == ten && MAT_KHAU == mat_khau)
						{
							system("cls");
							cout << "				DANG NHAP

";
							cout << "Dang kiem tra thong tin...
";
							Sleep(1000);
							cout << "
DANG NHAP THANH CONG!aa

";
						}
						else
						{
							system("cls");
							cout << "				DANG NHAP

";
							cout << "Dang kiem tra thong tin...
";
							Sleep(1000);
							cout << "
DANG NHAP THAT BAI!aa

";
						}
					}
					break;
				case 4:
					Sleep(1000);
					system("cls");
					cout << "				CHUYEN TIEN

";
					cout << "Moi ban nhap ten nguoi dung can chuyen tien: ";
					cin >> tai_khoan_can_chuyen;
					cout << "Moi ban nhap so tien can chuyen: ";
					cin >> tien_rut;
					if (tien_rut <= so_du)
					{
						Sleep(1000);
						cout << "
BAN DA CHUYEN THANH CONG " << tien_rut << " VND CHO TAI KHOAN " << tai_khoan_can_chuyen << " SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
						Sleep(1000);
					}
					while (tien_rut > so_du)
					{
						cout << "
So tien chuyen phai nho hon hoac bang so du con lai!
";
						cin >> tien_rut;
						if (tien_rut <= so_du)
						{
							Sleep(1000);
							cout << "
BAN DA CHUYEN THANH CONG " << tien_rut << " VND CHO TAI KHOAN " << tai_khoan_can_chuyen << " SO DU CON LAI LA: " << so_du - tien_rut << " VND

";
							Sleep(1000);
						}
					}
					break;
				default:
					Sleep(1000);
					system("cls");
					Sleep(1000);
					cout << "Hien chua co chuc nang nay!

";
					break;
				}
			}
		} 

	system("pause");
	return(0);
}
MediaFire

mo phong may ATM.exe

MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.

Dark.Hades viết 12:48 ngày 01/10/2018

Bạn chia hàm riêng ra để xử lí sẽ dễ đọc code hơn

Tao Không Ngu. viết 12:37 ngày 01/10/2018

HI Nguyen Dang Tien.
diễn đàn cần những người như bạn.

  1. Thường thì TEN, MAT_KHAU dùng để khai báo hằng số http://geosoft.no/development/cppstyle.html

  2. Tất cả các switch case đều có Sleep(1000); system("cls"); Sao không đặt nó lên đầu luôn ?

  3. Bạn học về hàm con để chia code ra.

P/S Phần logic chương trình hơi sai thì phải.

Nguyen Dang Tien viết 12:44 ngày 01/10/2018

Bạn chia hàm riêng ra để xử lí sẽ dễ đọc code hơn

Mình chỉ mới học tới mảng 1 chiều trên trang cpp.daynhauhoc.com nên chưa biết về hàm, chỉ biết thoáng qua kiểu như

TinhTong(int a, int b)
{
cout<<"Nhap so a: "; cin >>a;
cout<<"Nhap so b: "; cin>>b;    
return a+b;
}

và hàm là cái chương trình con mà mình đã học ở Pascal 11

Nguyen Dang Tien viết 12:40 ngày 01/10/2018

HI Nguyen Dang Tien.
diễn đàn cần những người như bạn.

dạ cảm ơn anh ý tưởng linh tinh của e thôi mà [quote=“Phong_Ky_Vo, post:3, topic:50677”]

  1. Thường thì TEN, MAT_KHAU dùng để khai báo hằng số http://geosoft.no/development/cppstyle.html
    [/quote]

dạ vì có phần đổi mật khẩu nên e phải để nó là biến, lúc đầu chưa có ý tưởng đổi mật khẩu thì em để nó là hằng

Tất cả các switch case đều có Sleep(1000); system(“cls”); Sao không đặt nó lên đầu luôn ?
Bạn học về hàm con để chia code ra.

P/S Phần logic chương trình hơi sai thì phải.

để chúng lên đầu switch case như thế nào ah?
dạ em sắp học đến hàm rồi
Logic có gì sai a góp ý giúp e, e thấy nó vẫn chưa hoàn thiện chức năng lắm.

Huy Lê viết 12:52 ngày 01/10/2018

Mình góp ý tí:

  1. bài bạn hơi dài, nếu gộp vào ctc thì sẽ ngắn gọn hơn.
  2. phần TEN và MAT_KHAU thì như bạn trên nói rồi
  3. chỗ rút tiền bạn nên trừ luôn tiền rút chứ chỉ in ra so_du - tien_rut thì số dư vẫn còn. Và cái này bạn nên vứt vào do…while
  4. Phần đổi pass hình như hơi sai sai thì phải :).
Nguyen Dang Tien viết 12:46 ngày 01/10/2018

Anh em nào biết cách cho dừng chương trình khi mình nhập sai 3 lần ko ah?
Trước khi có các tùy chọn của máy ATM thì khi chỉ kiểm tra tên và mật khẩu em làm đc nhưng sau khi thêm vào nó lỗi em đành xóa đi.
Như thế thì hơi thiếu thực tế vì chẳng máy ATM nào cho nhập sai vô tư lần cả

Tao Không Ngu. viết 12:45 ngày 01/10/2018

HI Nguyen Dang Tien.

  1. Ý mình là với biến bạn viết bằng chữ thường VD: dayLaBien, còn hằng thì viết DAY_LA_HANG_SO.
    Đọc lại link mình gửi.

  2. Cái đó bạ tự nghĩ.

Nguyen Dang Tien viết 12:51 ngày 01/10/2018

dạ dạ em hiểu rồi, lần sau rút KN

Nguyen Dang Tien viết 12:42 ngày 01/10/2018
  1. bài bạn hơi dài, nếu gộp vào ctc thì sẽ ngắn gọn hơn.

sau khi học đến hàm e sẽ làm tiếp[quote=“huyletien, post:6, topic:50677”]
3. chỗ rút tiền bạn nên trừ luôn tiền rút chứ chỉ in ra so_du - tien_rut thì số dư vẫn còn. Và cái này bạn nên vứt vào do…while
[/quote]

tất nhiên là số dư còn chứ ạ? mình in ra tiền còn lại sau khi rút
số dư chính là tài khoản của quý khách hiện tại là … đồng đó, ko biết bạn có hiểu cái này ko hay có ý gì khác

  1. Phần đổi pass hình như hơi sai sai thì phải :).

ý tưởng của em là nhập mk mới, nếu check đúng thì cho đổi, sau đó dùng mk này để đăng nhập lại một lần rồi kết thúc CT

Huy Lê viết 12:47 ngày 01/10/2018

À mình hiểu ý bạn rồi,tại ý mình là nên trừ tiền mỗi lần rút cho nó thiết thực :))). Còn đổi pass thic thêm cái nhập pass cũ nữa thì hay (y)

Nguyen Dang Tien viết 12:50 ngày 01/10/2018

(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

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.

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
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.

MediaFire

ATM by Tien.exe

MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.

#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);
}
Henry viết 12:46 ngày 01/10/2018

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. 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

Nguyen Dang Tien viết 12:52 ngày 01/10/2018

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. 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

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 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…

Henry viết 12:50 ngày 01/10/2018
khai báo biến;
vòng lặp
{
    xử lí chương trình;
}
Nguyen Dang Tien viết 12:47 ngày 01/10/2018

Đú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.

Ok mình đã bỏ đi vòng for 10000 lần rồi, xài đến 10000 lần là cháy máy
Đã 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

#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);
}
Henry viết 12:43 ngày 01/10/2018

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

Nguyen Dang Tien viết 12:37 ngày 01/10/2018

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 . Để làm được việc đó thì vòng lặp 10000 lần cũng không si nhê

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?

Henry viết 12:51 ngày 01/10/2018

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.

Văn Dương viết 12:37 ngày 01/10/2018

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

rogp10 viết 12:47 ngày 01/10/2018

Học hàm giúp cho chương trình gọn hơn

*có tổ chức hơn

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

Bài liên quan
0