这次编写的是一个家庭收支的记录程序,按照客户需求该软件能够记录家庭的收入、支出,并能够打印收支明细表
while (flag) {//主界面设置
System.out.println("-------------------家庭收支记账软件---------------------");//分割线 方便使用及查看
//四个菜单选项
System.out.println(" 1.收支明细");
System.out.println(" 2.登记收入");
System.out.println(" 3.登记支出");
System.out.println(" 4.退 出");
System.out.print(" 请选择(1-4):");
System.out.println();
int a = sc.nextInt();//接收输入的数字进入菜单
//菜单具体功能实现
由于该软件有4个选项,我们使用switch来写,先写入一个收入程序
case 2://菜单2,收入
//if (count>=arr.length){
// arr=Z(arr);
// }
System.out.println("请输入本次收入的金额:");
int num = sc.nextInt();
System.out.println("请输入本次收入的来源:");
String info = sc.next();//这里使用String类型,用next接收键盘输入,生成字符串
//count每次运行都++ 数据会一行一行填入
arr[count][0] = "收入";
sumNum += num;//总余额等于基础的加收入的
arr[count][1] = String.valueOf(sumNum);//直接把sumNum和num都转换成字符串类型
arr[count][2] = String.valueOf(num);
arr[count][3] = info;
count++;
System.out.println("添加成功!");
break;
接着写一个支出程序
case 3://支出录入数据功能
// if (count>=arr.length){
// arr=Z(arr);
// }
System.out.println("请输入本次支出的金额:");
int num1 = sc.nextInt();
System.out.println("请输入本次支出的说明:");
String info1 = sc.next();
arr[count][0] = "支出";
sumNum -= num1;
arr[count][1] = String.valueOf(sumNum);
arr[count][2] = String.valueOf(num1);
arr[count][3] = info1;
System.out.println("添加成功!");
break;
再写入一个能显示收入和支出记录的代码
case 1://菜单1,收支明细
System.out.println("-------------------收支明细记录表-----------------------");
//收支明细的四个要素,及数组设置的每个一维数组的一维数组中的四个元素
System.out.println("收支 账户总金额 收支金额 说 明");
for (int i = 0; i < arr.length; i++) {//循环打印 输入的数据
if (arr[i][0] != null) {
System.out.println(arr[i][0] + " " + arr[i][1] + " " + arr[i][2] + " " + arr[i][3]);
}
}
break;
第四个功能就是记录完成后退出
case 4:
System.out.println("是否要退出(true/false):");
Boolean choice = sc.nextBoolean();//用一个布尔类型来进行是否退出程序的判断
if (choice == true) {
System.out.println("结束本次记录");
flag = false;//因为整个循环的运行基础是flag为true,所以如果是否退出输入true这里需要改变flag值来结束循环。
break;
} else {
break;
}
最后是我们输入了1-4以外的数字要给出相应的显示
default:
System.out.println("输入错误,请输入1-4中的数字");//避免有人还是输入1-4以外的数字
剩下的就是将代码该定义的值定义,该赋值的赋值
完整代码如下
import java.util.Scanner;
public class text7 {
public static String[][] Z(String[][] arr) {
String[][] A = new String[arr.length + 2][4];
for (int i = 0; i < arr.length; i++) {
for (int x = 0; x < 4; x++) {
A[i][x] = arr[i][x];
}
}
return A;
}
public static void main(String[] args) {
String[][] arr = new String[1][4];//这里的行设置多大都无所谓,我们使用了扩容的方式来增大数组容量
int count = 0;//控制行数
int sumNum = 10000;//本金
Scanner sc = new Scanner(System.in);
boolean flag = true;//循环条件
while (flag) {//主界面设置
System.out.println("-------------------家庭收支记账软件---------------------");//分割线 方便使用及查看
//四个菜单选项
System.out.println(" 1.收支明细");
System.out.println(" 2.登记收入");
System.out.println(" 3.登记支出");
System.out.println(" 4.退 出");
System.out.print(" 请选择(1-4):");
System.out.println();
int a = sc.nextInt();//接收输入的数字进入菜单
//菜单具体功能实现
switch (a) {
case 1://菜单1,收支明细
System.out.println("-------------------收支明细记录表-----------------------");
//收支明细的四个要素,及数组设置的每个一维数组的一维数组中的四个元素
System.out.println("收支 账户总金额 收支金额 说 明");
for (int i = 0; i < arr.length; i++) {//循环打印 输入的数据
if (arr[i][0] != null) {
System.out.println(arr[i][0] + " " + arr[i][1] + " " + arr[i][2] + " " + arr[i][3]);
}
}
break;
case 2://菜单2,收入
if (count >= arr.length) {
arr = Z(arr);
}
System.out.println("请输入本次收入的金额:");
int num = sc.nextInt();
System.out.println("请输入本次收入的来源:");
String info = sc.next();//这里使用String类型,用next接收键盘输入,生成字符串
//count每次运行都++ 数据会一行一行填入
arr[count][0] = "收入";
sumNum += num;//总余额等于基础的加收入的
arr[count][1] = String.valueOf(sumNum);//直接把sumNum和num都转换成字符串类型
arr[count][2] = String.valueOf(num);
arr[count][3] = info;
count++;
System.out.println("添加成功!");
break;
case 3://支出录入数据功能
if (count >= arr.length) {
arr = Z(arr);
}
System.out.println("请输入本次支出的金额:");
int num1 = sc.nextInt();
System.out.println("请输入本次支出的说明:");
String info1 = sc.next();
arr[count][0] = "支出";
sumNum -= num1;
arr[count][1] = String.valueOf(sumNum);
arr[count][2] = String.valueOf(num1);
arr[count][3] = info1;
System.out.println("添加成功!");
break;
case 4:
System.out.println("是否要退出(true/false):");
Boolean choice = sc.nextBoolean();//用一个布尔类型来进行是否退出程序的判断
if (choice == true) {
System.out.println("结束本次记录");
flag = false;//因为整个循环的运行基础是flag为true,所以如果是否退出输入true这里需要改变flag值来结束循环。
break;
} else {
break;
}
default:
System.out.println("输入错误,请输入1-4中的数字");//避免有人还是输入1-4以外的数字
}
}
}
}