首先我们尝试用一维数组来实现我们的记账软件,我们就可以定义我们的数组,因为是四个属性,所以需要四个数组
String[] shouzhi = new String[100];
double[] balance = new double[100];
double[] money = new double[100];
String [] state = new String[100];
shouzhi用来存放收入还是支出,balance存放我们的总金额,money用来存放本次金额,state用来存放说明
首先我们写一个方法输出我们的菜单
public static void printAction() {
System.out.println("-----------------家庭收支记账软件-----------------");
System.out.println(" 1 收支明细");
System.out.println(" 2 登记收入");
System.out.println(" 3 登记支出");
System.out.println(" 4 退 出");
System.out.println(" 请选择(1-4):");
}
然后我们就需要从键盘得到我们对菜单的选择了,我们开始写方法
public static int getChoice() {
Scanner scanner = new Scanner(System.in);
do {
int choice = scanner.nextInt();
if(choice>=1 && choice<=4) return choice;
System.out.println("请选择正确选项(1-4):");
}while(true);
}
我们加了一个小小的判断,判断我们的数字是不是在1-4之间
要写我们的第一个方法了,收支明细
public static void show(String[] shouzhi,double[] balance,double[] money,String [] state) {
if(total==0) {
System.out.println("-----------------当前收支明细记录-----------------");
System.out.println("没有数据,快去添加吧");
System.out.println("--------------------------------------------------");
}else {
System.out.println("-----------------当前收支明细记录-----------------");
System.out.println("收支\t账户金额\t收支金额\t说 明");
for (int i = 0; i < total; i++) {
System.out.println(shouzhi[i]+"\t"+balance[i]+"\t"+money[i]+"\t"+state[i]);
}
System.out.println("--------------------------------------------------");
}
}
写的时候我们会发现我们需要一个变量来表示当前我们数组内的元素个数,所以我们定义一个的静态全局变量total
还需要判断我们当前数组内有没有元素加一个if else
好那么加下来就是我们的登记收入方法了
public static void add(String[] shouzhi,double[] balance,double[] money,String [] state) {
System.out.print("本次收入金额:");
double moneyT = scanner.nextDouble();
System.out.print("本次收入说明:");
String stateT = scanner.next();
shouzhi[total] = "收入";
if(total==0) {
balance[total]=moneyT;
}else {
balance[total] = balance[total-1] + moneyT;
}
money[total] = moneyT;
state[total] = stateT;
total++;
}
需要判断是不是第一次添加,每次添加完一个数据total就加1
接下来再写一个登记支出的方法,同上
public static void addout(String[] shouzhi,double[] balance,double[] money,String [] state) {
System.out.print("本次支出金额:");
double moneyT = scanner.nextDouble();
System.out.print("本次支出说明:");
String stateT = scanner.next();
shouzhi[total] = "收入";
if(total==0) {
balance[total]=0 - moneyT;
}else {
balance[total] = balance[total-1] - moneyT;
}
money[total] = moneyT;
state[total] = stateT;
total++;
}
最后是我们的退出方法了
public static boolean exit(int a) {
if(a == 4) return false;
return true;
}
最后是我们主函数代码
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] shouzhi = new String[100];
double[] balance = new double[100];
double[] money = new double[100];
String [] state = new String[100];
boolean flag = true;
while(flag) {
printAction();
int choice = getChoice();
switch(choice) {
case 1:
show(shouzhi, balance, money, state);
break;
case 2:
addin(shouzhi, balance, money, state);
break;
case 3:
addout(shouzhi, balance, money, state);
break;
case 4:
flag = exit(choice);
break;
}
}
}