这是我刚学完流程控制的时候照着敲得一个小项目!
class familyAccount{public static void main(String[] args){boolean isFlag=true;String details="收支\t账户金额\t收支金额\t说  明\n";//用于记录用户的收支明细//初始金额int balance=10000;while(isFlag){System.out.println("***************欢迎来到家庭记账软件****************\n");System.out.println("--------------------1.收支明细");System.out.println("--------------------2.登记收入");System.out.println("--------------------3.登记支出");System.out.println("--------------------4.退出软件");System.out.print("--------------请输入你要选择的操作(1-4):");char selection = Utility.readMenuSelection();//获取用户选择System.out.println();switch(selection){case '1'://System.out.println("1.收支明细");System.out.println("------------------当前收支明细记录------------------");System.out.println(details);System.out.println("----------------------------------------------------");break;case '2'://System.out.println("2.登记收入");System.out.print("本次收入金额:");int money=Utility.readNumber();System.out.print("本次收入说明:");String info=Utility.readString();balance += money;//处理detailsdetails +=("收入\t"+balance+"\t\t"+money+"\t\t"+info+"\n");System.out.println("------------登记完成-------------");break;case '3'://System.out.println("3.登记支出");System.out.print("本次支出金额:");int money1=Utility.readNumber();System.out.print("本次支出说明:");String info1=Utility.readString();//处理balanceif(balance>=money1){balance-=money1;details +=("支出\t"+balance+"\t\t"+money1+"\t\t"+info1+"\n");}else{System.out.println("支出超出额度,支付失败!");}System.out.println("------------登记完成-------------");break;case '4'://System.out.println("4..退出");System.out.println("确认是否退出(Y/N):");char isExit=Utility.readConfirmSelection();if(isExit=='Y'){isFlag=false;}break;}}}
}
import java.util.Scanner;
public class Utility {private static Scanner scanner=new Scanner(System.in);private static String readKeyBoard(int limit) {String line = "";while (scanner.hasNext()) {line = scanner.nextLine();if (line.length() < 1 || line.length() > limit) {System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");continue;}break;}return line;}public static char readMenuSelection(){char c;for(;;){String str = readKeyBoard(1);c=str.charAt(0);if(c!='1'&&c!='2'&&c!='3'&&c!='4'){System.out.println("选择错误,请重新输入:");}else break;}return c;}public static int readNumber(){int n;for(;;){String str=readKeyBoard(9);try{n=Integer.parseInt(str);break;}catch (NumberFormatException e){System.out.println("选择错误,请重新输入:");}}return n;}public static String readString(){String str=readKeyBoard(8);return str;}public static char readConfirmSelection(){char c;for(;;){String str =readKeyBoard(1).toUpperCase();c=str.charAt(0);if(c=='Y'||c=='N'){break;}else{System.out.println("输入错误,请重新输入:");}}return c;}}

我的第一个Java项目实训--家庭记账软件!相关推荐

  1. java质数和合数的程序_《java项目实训》课程设计计算器.doc

    <java项目实训>课程设计计算器.doc 课程设计报告课程名称JAVA项目实训课程设计设计名称基于JAVA计算器的设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓 ...

  2. 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw ...

  3. 第二次Java项目实训

    一.创建项目 1.创建一个Java项目--学生信息管理系统(XXX)V1.0 具体步骤:File--New--project--next--next--写上项目名称--finish 2.在项目里创建文 ...

  4. 项目一:家庭记账软件

    需求说明: 1.模拟实现一个基于文本界面的<家庭记账软件> 2.该软件能够记录家庭的收入.支出,并能够打印收支明细表 3.假设家庭起始的生活基本金为0元. 每次登记收入后,收入的金额应累加 ...

  5. 【项目1】家庭记账软件

    目录 目标 涉及知识点 需求说明 流程图(活动图) -主流程 -收入和支出处理流程 实现 1.Utility工具类 2.2.FamilyAccount框架及功能实现源码 ​​​​​​​ 目标 模拟实现 ...

  6. 【Java小案例】家庭记账软件

    一.概述 1.具体需求: 1.首页设有收支明细.登记收入.登记支出.退出四个选项 2.若用户输入不存在的选项数字,请用户重新输入 3.当用户输入一个选项对应的数字,打开该选项的界面,并再次打开首页界面 ...

  7. 第一次Java项目实训:GUI学生管理系统

    一.实训概述 1.实训目的 让学生综合运用J2SE有关知识开发[学生信息管理系统].主要涉及程序控制结构.面向对象编程.图形用户界面.Java数据库应用.MySQL数据库这几个方面的内容.通过本项目的 ...

  8. Java基础项目一:家庭记账软件

    项目需求: 模拟实现家庭收支记账功能 一.需要以下方面: 1.家庭基金 2.存储收入的数据源:数组1 3.存储支出的数据源:数组2 4.退出软件 二.实现 1.数据源: String[] day=ne ...

  9. JAVA项目实训struts2_Java Web项目搭建过程记录(struts2)

    开发工具:eclipse 搭建环境:jdk1.7   tomcat 8.0 基础的java开发环境搭建过程不再赘述,下面从打开eclipse 之后的操作开始 第一步: 创建项目,File -> ...

最新文章

  1. linux setup 进步了网卡,linux 网卡修改小结
  2. 你说我画,你画我说:全球最大中文跨模态生成模型文心ERNIE-ViLG来了!
  3. Java里main的写法_main方法的深入理解和例子
  4. 如何拓展外链引流,让网站成为“顶牛”?
  5. Codeforces Round #304 C(Div. 2)(模拟)
  6. SolrPerformanceFactors--官方文档
  7. 几句话总结21种设计模式。
  8. 最长上升子序列——动态规划
  9. T研究:国内云BPM市场规模尚小,预计2018年仅为3.29亿元
  10. centos7上使用chrony自动同步时间
  11. WPF仿微信保存与查看聊天记录
  12. 斐波那契数列PHP非递归数组实现
  13. 手撕源码之SpringApplication.java【Spring Boot 2.4.4】
  14. 贴片led极性_贴片发光二极管正负极判断方法详解
  15. 华硕飞行堡垒Fx50j4200H 4600HD 黑苹果High Sierra10.13.6心得
  16. 数据链路层(以太网、MTU、ARP协议)
  17. 微博、微信上的假消息害苦了哥
  18. 小升初 择校简历标准
  19. HDU 6146:Pokémon GO
  20. ios 表情符号 键盘_字体键盘表情符号

热门文章

  1. Juc00_多线程基础小知识
  2. 转载——glPushMatrix(百度百科)
  3. 在阿里做了2个月后,我选择了裸辞···
  4. VScode 更新失败
  5. nyoj-137 取石子(三) (博弈,楼教主真男人八题)
  6. Loadrunner-IP欺骗
  7. intel IOMMU内核代码阅读笔记
  8. 2021年茶艺师(初级)报名考试及茶艺师(初级)考试资料
  9. FPGA设计中约束设计和时序分析方法
  10. 10岁谷歌变“网络克格勃”?