个人银行账户管理系统C++转Java

PersonalBank1

1.Java用包package来管理处存文件
2.C++中不可更改的函数用const,但Java中没有const,用final表示该函数不可重写
3.Java中函数声明与函数体不能分离(除抽象类,接口等)
4.cout与System.out.println(变量名 + “字符串”);
5.c++ 里面建立类的对象可以直接:类名 对象名(参数),而Java里面需要:类名 对象名 = new 类名(参数)
6.Java里是不用写什么math.h等头文件的,类库里都有。比如取整:Math.floor()
7.Java没有id(id);,有this.id=id;

PersonalBank2

相比于第一个版本,增加了total变量
其余无变化

PersonalBank3

增加了Date类

1.C++ void record(const Date &date, double amount, const std::string &desc);
Java private void record(Date date,double amount,String desc){};
2.C++

namespace {	//namespace使下面的定义只在当前文件中有效
	//存储平年中某个月1日之前有多少天,为便于getMaxDay函数的实现,该数组多出一项
	const int DAYS_BEFORE_MONTH[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
}

Java

public final int DAYS_BEFORE_MONTH[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };

3.敲SavingAccount类时,利用Date方法总是报错,由于设置了void,没办法匹配?‍

PersonalBank4

与之前版本相比,增加了Accumulator类、Account类、CreditAccount类,SavingAccount类继承了Account类
Date类与之前一样
CreditAccount继承了Account,要重写show()函数,但Account中show()函数是由final修饰的

PersonalBank5

Date类中少了一个distance()函数,多了一个重载

int operator - (const Date& date) const {
		return totalDays - date.totalDays;
	}

Accumulator类与前一样
Account类变成了抽象类,其中多了deposit、withdraw、settle函数(C++中的虚函数)
SavingsAccount类中多了deposit、withdraw、settle

主函数C++与Java变化对比

cin >> cmd;
switch (cmd) {
		case 'd':	//存入现金
			cin >> index >> amount;
			getline(cin, desc);
			accounts[index]->deposit(date, amount, desc);
			break;
		case 'w':	//取出现金
			cin >> index >> amount;
			getline(cin, desc);
			accounts[index]->withdraw(date, amount, desc);
			break;
		case 's':	//查询各账户信息
			for (int i = 0; i < n; i++) {
				cout << "[" << i << "] ";
				accounts[i]->show();
				cout << endl;
			}
			break;
		case 'c':	//改变日期
			cin >> day;
			if (day < date.getDay())
				cout << "You cannot specify a previous day";
			else if (day > date.getMaxDay())
				cout << "Invalid day";
			else
				date = Date(date.getYear(), date.getMonth(), day);
			break;
		case 'n':	//进入下个月
			if (date.getMonth() == 12)
				date = Date(date.getYear() + 1, 1, 1);
			else
				date = Date(date.getYear(), date.getMonth() + 1, 1);
			for (int i = 0; i < n; i++)
				accounts[i]->settle(date);
			break;
		}
cmd = (char)System.in.read();
switch (cmd) {
			case 'd':	//存入现金
				index = in.nextInt();
				amount = in.nextDouble();
				desc = in.nextLine();
				accounts[index].deposit(date, amount, desc);
				break;
			case 'w':	//取出现金
				index = in.nextInt();
				amount = in.nextDouble();
				desc = in.nextLine();
				accounts[index].withdraw(date, amount, desc);
				break;
			case 's':	//查询各账户信息
				for (int i = 0; i < n; i++) {
					System.out.print("[" + i + "] ");
					accounts[i].show();
					System.out.println();
					if(i<(n-1)) {System.in.read();}
				}
				break;
			case 'c':	//改变日期
				day = in.nextInt();
				if (day < date.getDay())
					System.out.print("You cannot specify a previous day");
				else if (day > date.getMaxDay())
					System.out.print("Invalid day");
				else
					date = new Date(date.getYear(), date.getMonth(), day);
				break;
			case 'n':	//进入下个月
				if (date.getMonth() == 12)
					date = new Date(date.getYear() + 1, 1, 1);
				else
					date = new Date(date.getYear(), date.getMonth() + 1, 1);
				for (int i = 0; i < n; i++) {
					accounts[i].settle(date);
					if(i<(n-1)) {System.in.read();}
				}
				break;

PersonalBank6

与之前版本相比较,仅主函数不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值