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;
				
			}
			
				
		}
	
	}
			
}

posted @ 2020-10-02 17:32  茶凡_Matrix  阅读(1)  评论(0编辑  收藏  举报  来源