摘 要(四号、黑体)
目的:创建一个家庭收支记账软件,给家庭提供一个文本管理平台,家庭可以将每天的收入、支出进行记录管理操作,方便家庭记录生活中的各种开支。
方法:使用while循环构建循环体,并且在其中提供分支结构,通过Scanner方法读取用户的选择,并为收入支出两种情况的变动进行录入,并使用数组将相关信息进行存储,同时在选择结构内通过输出方法,可以满足对已存储的数组内容输出,并且在该循环体内使用exit()方法来退出循环体结构,结束程序。
结果:通过构造的程序,可以清晰的实现家庭收支情况的录入以及计算家庭资金的变换,能够顺利满足题目中文本界面对相关内容的操作,完成对家庭收支情况的记录。
一、概述
模拟实现基于文本界面的《家庭记账软件》;家庭记账软件主要记录家庭的收入、支出,并能够打印收支明细表。
二、系统需求分析
模拟实现基于文本界面的《家庭记账软件》。
该软件能够记录家庭的收入、支出,并能够打印收支明细表。
项目采用分级菜单方式。
三、总体设计
3.1设计原理
本系统的总体思想基于结构化的程序设计。使用高级语言程序设计中的基本控制结构,如循环和选择,着重实现管理系统的存储,查找等功能,本次实验由while语句构建的循环体开始,重复循环显示菜单界面,后使用分支语句为用户提供选择,并且用数组为用户的信息提供存储空间,另外系统的退出则使用Java中的System.exit()方法。
3.2流程图

3.2.1主流程

3.2.2流程图(活动图)—收入和支出处理流程

3.2.3 流程图(活动图)—打印家庭收支明细处理流程
四、实现步骤
第1步—实现主程序结构
- 创建FamilyAccount类及main方法
- 在main方法中,参照主流程图,实现程序主体结构
- 测试程序,确认可以正常执行第1和第4菜单选项
第2步—实现收入和支出登记处理
- 在main方法中,参照收入和支出流程,实现“登记收入”功能
- 测试“登记收入”功能
- 在main方法中,参照收入和支出流程,实现“登记支出”功能
- 测试“登记支出”功能
第3步—打印收支明细
- 在main方法中,参照打印收支明细流程,实现“打印details”功能
- 测试“打印details”功能
第4步—跳出循环体结束程序
- 在main方法中,首先让用户进行选择
- 后使用java中exit方法结束while死循环以此结束程序
- 测试“结束程序”功能
五、代码调试
package Baogao;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
double[] Get = new double[10];
double[] Use = new double[10];
double basic = 10000;
String[] GetName = new String[10];
String[] UseName = new String[10];
String details = "收支 \t 账户金额 \t 收支金额 \t 说明\n";
Scanner input = new Scanner(System.in);
System.out.println("-------------家庭收支记账软件---------------");
System.out.println("1" + '\t' + "收支明细");
System.out.println("2" + '\t' + "登记收入");
System.out.println("3" + '\t' + "登记支出");
System.out.println("4" + '\t' + "退出");
System.out.println("请选择(1-4):");
while (true) {
int key = input.nextInt();
switch (key) {
case 1 :{
System.out.println("-------------家庭收支记账软件---------------");
System.out.println("1" + '\t' + "收支明细");
System.out.println("2" + '\t' + "登记收入");
System.out.println("3" + '\t' + "登记支出");
System.out.println("4" + '\t' + "退出");
System.out.println("-------------当前收支明细记录---------------");
System.out.println("收支帐户金额说明");
System.out.println(details);
break;
}
case 2 :{
System.out.println("-------------家庭收支记账软件---------------");
System.out.println("1" + '\t' + "收支明细");
System.out.println("2" + '\t' + "登记收入");
System.out.println("3" + '\t' + "登记支出");
System.out.println("4" + '\t' + "退出");
int index = -1;
for(int i= 0; i<GetName.length;i++){
if (GetName[i] == null){
index = i;
break;
}
}
System.out.print("本次收入金额:");
Get[index] = input.nextDouble();
System.out.print("本次收入说明:");
GetName[index] = input.next();
basic += Get[index];
details += "收入 \t " + basic + " \t " + Get[index] + " \t " + GetName[index] + "\n";
System.out.println("----------------------登记完成-----------------------\n");
break;
}
case 3 :{
System.out.println("-------------家庭收支记账软件---------------");
System.out.println("1" + '\t' + "收支明细");
System.out.println("2" + '\t' + "登记收入");
System.out.println("3" + '\t' + "登记支出");
System.out.println("4" + '\t' + "退出");
int index = -1;
for(int i= 0; i<UseName.length;i++){
if (UseName[i] == null){
index = i;
break;
}
}
System.out.print("本次支出金额:");
Use[index] = input.nextDouble();
System.out.print("本次支出说明:");
UseName[index] = input.next();
basic -= Use[index];
details += "支出 \t " + basic + " \t " + Use[index] + " \t " + UseName[index] + "\n";
System.out.println("----------------------登记完成-----------------------\n");
break;
}
case 4 :{
System.out.println("-------------家庭收支记账软件---------------");
System.out.println("1" + '\t' + "收支明细");
System.out.println("2" + '\t' + "登记收入");
System.out.println("3" + '\t' + "登记支出");
System.out.println("4" + '\t' + "退出");
System.out.println("是否退出系统?(Y/N)");
String str = input.next();
if (str.equals("Y") || str.equals("y")) {
System.out.println("退出系统.......");
System.exit(0); //中断程序
break;
}
}
}
}
}
}
908

被折叠的 条评论
为什么被折叠?



