简单的程序,需要自取:
#include<iostream>
#include<cstring>
using namespace std;
class Account
{
public:
Account(char name[], long num, float amount);
Account();
void deposit(float amount);
int withdraw(float amount);
float getBalance();
void addCreditCard(); // 添加信用卡功能
void setCreditFreePeriod(int days); // 设置信用卡免息期
float getCreditFreePeriod(); // 获取信用卡免息期
float getCashLimit(); // 获取取现金额度
void setCashLimit(float limit); // 设置取现金额度
void changePassword(char oldPass[], char newPass[]); // 修改密码功能
void closeAccount(); // 销户
private:
char mName[20];
long mSN;
float mBalance;
struct CreditCard { // 信用卡结构体
char cardNumber[20]; // 卡号
int freePeriod; // 免息期
float cashLimit; // 取现金额度
char password[10]; // 密码
};
CreditCard mCreditCard; // 信用卡对象
};
void Account::addCreditCard()
{
cout << "请输入信用卡卡号:";
cin >> mCreditCard.cardNumber;
cout << "请输入信用卡免息期(天数):";
cin >> mCreditCard.freePeriod;
cout << "请输入信用卡取现金额度:";
cin >> mCreditCard.cashLimit;
cout << "请输入信用卡密码:";
cin >> mCreditCard.password;
}
void Account::setCreditFreePeriod(int days)
{
mCreditCard.freePeriod = days;
}
float Account::getCreditFreePeriod()
{
return mCreditCard.freePeriod;
}
float Account::getCashLimit()
{
return mCreditCard.cashLimit;
}
void Account::setCashLimit(float limit)
{
mCreditCard.cashLimit = limit;
}
void Account::changePassword(char oldPass[], char newPass[])
{
if (strcmp(oldPass, mCreditCard.password) == 0) // 检查旧密码是否正确
{
strcpy(mCreditCard.password, newPass); // 更新密码
cout << "密码修改成功!" << endl;
}
else
{
cout << "旧密码错误,修改失败!" << endl;
}
}
//类的有参构造函数
Account::Account(char name[], long num, float amount)
{
strcpy(mName, name); //字符串复制函数
mSN = num;
mBalance = amount;
}
//类的无参构造函数
Account::Account()
{
cout << "无参函数被调用!" << endl;
}
//往当前账户中存款
void Account::deposit(float amount)
{
mBalance = mBalance + amount;
}
//从当前账户中取款
int Account::withdraw(float amount)
{
if (amount > mBalance)
{
return 0;
}
else if (amount <= mBalance)
{
mBalance = mBalance - amount;
return 1; //return 1 结束
}
}
//查询当前账户的余额
float Account::getBalance()
{
return mBalance;
}
//主函数
int displayMenuAndGetChoice() {
int choice;
cout << "------------------------------------------------" << endl;
cout << " 菜单栏 " << endl;
cout << "1、存款请输入“1”" << endl;
cout << "2、取款请输入“2”" << endl;
cout << "3、查询账户余额请输入“3”" << endl;
cout << "4、添加信用卡并设置相关信息请输入“4”" << endl;
cout << "5、退出请输入“5”" << endl;
cout << "6、销户请输入“6”" << endl;
cout << "------------------------------------------------" << endl;
cout << "请输入选择: " << endl;
cin >> choice;
return choice;
}
void handleCreditCardOperations(Account& account) {
char cardNumber[20];
int freePeriod;
float cashLimit;
char oldPass[10], newPass[10];
cout << "请输入信用卡卡号:";
cin >> cardNumber;
// 验证卡号
cout << "请输入信用卡免息期(天数):";
cin >> freePeriod;
// 验证免息期
cout << "请输入信用卡取现金额度:";
cin >> cashLimit;
// 验证取现金是否合理
cout << "请输入当前信用卡密码:";
cin >> oldPass; // 验证旧密码的正确性
cout << "请输入新信用卡密码:";
cin >> newPass;
// 验证新密码
}
void Account::closeAccount() { // 将账户余额设置为0
mBalance = 0.0f;
mCreditCard.cardNumber[0] = '\0'; // 清空卡号
mCreditCard.freePeriod = 0; // 设置免息期为0
mCreditCard.cashLimit = 0.0f; // 设置取现金额度为0
mCreditCard.password[0] = '\0'; // 清空密码
cout << "账户已销户。" << endl;
}
int main() {
int NO, m;
char name[20];
long num;
float amount;
cout << "请输入所开账户户名:";
cin >> name;
cout << "请输入所开账户帐号:";
cin >> num;
cout << "请输入所开账户初始存款金额:";
cin >> amount;
Account A(name, num, amount);
while (true) {
int choice = displayMenuAndGetChoice();
switch (choice) {
case 1:
cout << "请输入存款金额:";
cin >> amount;
A.deposit(amount);
break;
case 2:
cout << "请输入取款金额:";
cin >> amount;
m = A.withdraw(amount);
if (m == 0) {
cout << "当前账户余额不足!" << endl;
} else {
cout << "取款成功!" << endl;
}
break;
case 3:
cout << "当前账户余额为:" << A.getBalance() << endl;
break;
case 4:
handleCreditCardOperations(A);
break;
case 5:
cout << "已退出程序" << endl;
return 0;
case 6:
cout << "您确定销户吗?(Y/N): ";
char response;
cin >> response;
if (tolower(response) == 'y') { // 使用tolower确保不区分大小写
A.closeAccount(); // 确保Account类中有这个公有方法的声明
cout << "账户已销户,退出程序。" << endl;
return 0; // 销户后直接退出程序
} else {
cout << "未执行销户操作。" << endl;
}
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}