Java基础必须项目一(家庭收入支出软件,详细注释,并且添加日期记录功能)
本软件是模拟家庭收入支出软件,所以登记的数据没有和数据库交互,不能保留。学习这个小项目只是为了熟悉Java中知识点的运用并且了解一些编程的思修。本人也是小白一枚,所以代码都有注释,可以帮助你更好的理清思路,希望可以帮助你哦!
需求说明
•模拟实现基于文本界面的《家庭记账软件》。
•该软件能够记录家庭的收入、支出,并能够打印收支明细表。
•项目采用分级菜单方式。主菜单如下:
-----------------家庭收支记账软件-----------------
1收支明细
2登记收入
3登记支出
4退 出
请选择(1-4):
设计思路
方法类:
- 判断输入的长度(不能为零,不能>1位)
- 判断输入的是否正确(1-4)
- 确认选择的输入,该方法从键盘读取Y或N,并将其作为方法的返回值
- 收入和支出的输入,该方法从键盘读取一个不超过4位长度的整数,a将其作为方法的返回值
- 收入和支出说明的输入,该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值
- 收入支出日期注明
package learning;
/**
* @author 茶凡不思
* @2020/04/19:
* @家庭收入支出软件
*
* */
import java.util.Scanner;
public class book {
private static Scanner scan = new Scanner(System.in);
//判断输入的长度(不能为零,不能>1位)
private static String judge_id(int i){
String flag = "";
while(scan.hasNext()){//scan.hasNext() 判断是否还有输入
flag = scan.nextLine();//1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
//2、可以获得空白。
if(flag.length() < 1 || flag.length() > i){
System.out.println("输入长度(不大于" + i + ")错误,请重新输入");
continue;
}else break;
}
return flag;
}
//判断输入的是否正确(1-4)
public static char judge(){
char c;
for(;;){
String str = judge_id(1);
c = str.charAt(0); //charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
if(c!='1'&&c!='2'&&c!='3'&&c!='4'){
System.out.print("输入数字不对,应该输入1-4");
}else
break;
}
return c;
}
// 用于确认选择的输入,该方法从键盘读取Y或N,并将其作为方法的返回值
public static char confirm(){
System.out.println("输入字母Y,N");
char c;
for(;;){
String str = judge_id(1);
c = str.charAt(0);
if(c!='y'&&c!='n'&&c!='Y'&&c!='N'){
System.out.println("输入的字母不对,应该输入Y N");
}else break;
}
return c;
}
//用于收入和支出的输入,该方法从键盘读取一个不超过4位长度的整数,a将其作为方法的返回值
public static int out_of_step(){
int a;
for(;;){
String str = judge_id(4);
try{
a = Integer.parseInt(str);
break;
}catch(Exception e){//使用 catch 来处理异常的方法:规定写法:Exception e
System.out.println("数字输入错误,请重新输入");
}
}
return a;
}
//用于收入和支出说明的输入,该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值
public static String instructions_up(){
String s = judge_id(8);
return s;
}
//用于收入支出日期注明
public static String Date(){
String d = judge_id(10);
return d;
}
}
测试类:
-----------------家庭收支记账软件-----------------
1收支明细
2登记收入
3登记支出
4退 出
请选择(1-4):
package learning;
/**
* @author 茶凡不思
* @2020/04/19:
* @家庭收入支出软件
*
* */
import learning.book;
public class bookTest {
public static void main(String[] args) {
boolean isFead = true;
int ab = 10000;
String details = "收支\t账户金额\t收支金额\t说明\t日期\n";
while(isFead){
System.out.println("------------------- 收支记账软件---------------------");
System.out.println(" 1 收支明细");
System.out.println(" 2 登记收入");
System.out.println(" 3 登记支出");
System.out.println(" 4 退出");
System.out.println(" 请选择(1-4):");
char i = book.judge();
switch(i){
case'1':
System.out.println(details);
break;
case'2':
System.out.println("本次收入金额:");
int a = book.out_of_step();
System.out.println("本次收入说明:");
String cc=book.instructions_up();
System.out.println("本次收入时间:");
String d = book.Date();
ab+=a;
details+= "收入\t" + ab + "\t" + a + "\t" + cc + "\t" + d +"\n";
break;
case'3':
System.out.println("本次支出金额:");
int a1=book.out_of_step();
System.out.println("本次支出说明:");
String cc1=book.instructions_up();
System.out.println("本次收入时间:");
String dd = book.Date();
ab-=a1;
details+= "支出\t" + ab + "\t" + a1 + "\t" + cc1 + "\t" + dd +"\n";
break;
case'4':
char letter= book.confirm();
break;
}
}
}
}