项目一:用Java实现家庭收支记账软件

  • Scanner类的简单使用
    • 代码示例
  • 项目实现
    • 第一步,主程序的编写
      • 上代码:
    • 第二步键盘访问的实现
      • 上代码:

Scanner类的简单使用

  • 如何从键盘获取不同类型的变量:需要使用Scanner类
  • 具体步骤
    1.导包:import java.util.Scanner;
    2.Scanner的实例化:Scanner scan = new Scanner(System.in);
    3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
  • 注意:
    需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException导致程序终止。

代码示例

//1.导包:import java.util.Scanner;
import java.util.Scanner;class ScannerTest{public static void main(String[] args){//2.Scanner的实例化Scanner scan = new Scanner(System.in);//3.调用Scanner类的相关方法System.out.println("请输入你的姓名:");String name = scan.next();System.out.println(name);System.out.println("请输入你的年龄:");int age = scan.nextInt();System.out.println(age);System.out.println("请输入你的体重:");double weight = scan.nextDouble();System.out.println(weight);System.out.println("你是否单身呢?(true/false)");boolean isLove = scan.nextBoolean();System.out.println(isLove);//对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串System.out.println("请输入你的性别:(男/女)");String gender = scan.next();//"男"char genderChar = gender.charAt(0);//获取索引为0位置上的字符System.out.println(genderChar);}

项目实现

  • 涉及的知识点
    变量的定义
     基本数据类型的使用
     循环语句
     分支语句
     方法声明、调用和返回值的接收
     简单的屏幕输出格式控制
  • 需求说明
    1.模拟实现基于文本界面的《家庭记账软件》。
    2该软件能够记录家庭的收入、支出,并能够打印收支明细表。
    3.项目采用分级菜单方式。
    4.假设家庭起始的生活基本金为10000元。
    5.每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记
    录本次收入明细,以便后续的查询。
    6.每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记
    录本次支出明细,以便后续的查询。
    7.查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表
  • 相应界面的截图:
    主界面:登记收入:

    登记支出:

    收支明细:

    退出:

第一步,主程序的编写

• 基本金的记录可以使用int类型的变量来实现:
int balance = 10000;
• 收支明细记录可以使用Sting类型的变量来实现,其初始值为明细表的表头。例如:
String details = “收支\t账户金额\t收支金额\t说 明\n”;
• 在登记收支时,将收支金额与balance相加或相减,收支记录直接串接到
details后面即可。

上代码:

package com.family.managesystem;public class FamilyAccount {public static void main(String[] args) {String details = "收支\t账户金额\t收支金额\t说    明\n";int balance = 10000;boolean loopFlag = true;do {System.out.println("\n-----------------家庭收支记账软件-----------------\n");System.out.println("                   1 收支明细");System.out.println("                   2 登记收入");System.out.println("                   3 登记支出");System.out.println("                   4 退    出\n");System.out.print("                   请选择(1-4):");char key = Utility.readMenuSelection();System.out.println();switch (key) {case '1':System.out.println("-----------------当前收支明细记录-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case '2':System.out.print("本次收入金额:");int amount1 = Utility.readNumber();System.out.print("本次收入说明:");String desc1 = Utility.readString();balance += amount1;details += "收入\t" + balance + "\t\t" +amount1 + "\t\t" + desc1 + "\n";System.out.println("---------------------登记完成---------------------");break;case '3':System.out.print("本次支出金额:");int amount2 = Utility.readNumber();System.out.print("本次支出说明:");String desc2 = Utility.readString();balance -= amount2;details += "支出\t" + balance + "\t\t" +amount2 + "\t\t" + desc2 + "\n";System.out.println("---------------------登记完成---------------------");break;case '4':System.out.print("确认是否退出(Y/N):");char yn = Utility.readConfirmSelection();if (yn == 'Y') loopFlag = false;break;}} while (loopFlag);}
}

第二步键盘访问的实现

• 项目中提供了Utility.java类,可用来方便地实现键盘访问。
• 该类提供了以下静态方法:

public static char readMenuSelection() :该方法读取键盘,如果用户键入’1’-’4’中的
任意字符,则方法返回。返回值为用户键入字符。
public static int readNumber() :该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
public static String readString() :该方法从键盘读取一个不超过8位长度的字符串,
并将其作为方法的返回值。
public static char readConfirmSelection() :该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。

上代码:

package com.family.managesystem;import java.util.Scanner;
/**
Utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/
public class Utility {private static Scanner scanner = new Scanner(System.in);/**用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。*/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.print("选择错误,请重新输入:");} else break;}return c;}/**用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。*/public static int readNumber() {int n;for (; ; ) {String str = readKeyBoard(4);try {n = Integer.parseInt(str);break;} catch (NumberFormatException e) {System.out.print("数字输入错误,请重新输入:");}}return n;}/**用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。*/public static String readString() {String str = readKeyBoard(8);return str;}/**用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。*/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.print("选择错误,请重新输入:");}}return c;}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;}
}

用Java实现家庭收支记账软件相关推荐

  1. Java实现家庭收支记账软件

    题目来自于尚硅谷基础项目1,其中没有使用项目提供的现成的方法 测试类 package test;import face.MainInterFace; import code.*; public cla ...

  2. java基础(家庭收支记账软件)

    家庭收支记账软件 目标 模拟实现一个基于文本界面的<家庭记账软件> 掌握初步的编程技巧和调试技巧 主要涉及以下知识点: 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明.调用和 ...

  3. Java实现家庭收支记账软件及编写过程中的注意事项

    一.思路 1.明确需求 总需求也就是家庭收支记账软件要实现的功能,要能实现记录家庭的收入与支出,并打印收支明细表. 2.实现步骤 第一步要展示程序的主界面,内容要包含四个菜单选项. 第二步实现根据用户 ...

  4. java家庭收支记账软件-day01

    import java.util.Scanner; public class itemfamily {public static void main(String[] args) {Scanner s ...

  5. 家庭收支记账软件--Java

    家庭收支记账软件–Java 需求描述: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 需求说明: 假 ...

  6. Java项目:家庭收支记账软件

    目录 前言 一.任务要求 二.实现代码 总结 前言 最近花了一个星期看了JAVA经典书籍<Java核心技术卷I>,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅 ...

  7. java家庭收支记账软件

    说明: 这篇文章主要运用了一些java基础知识的一个综合运用 主要涉及以下知识点:  变量的定义  基本数据类型的使用  循环语句  分支语句  方法声明.调用和返回值的接收  简单的屏幕 ...

  8. Java项目一(案例):家庭收支记账软件

    Java项目一(案例):家庭收支记账软件 项目概述 软件功能 项目说明 涉及Java知识点 软件需求说明 程序代码示例 FamilyAccount.class文件 自定义Utility.class工具 ...

  9. Java开发一个家庭收支记账软件

    4.请开发一个家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 4 退 出 请 ...

  10. 用Java写一个家庭收支记账软件

    需要的内容有:收支明细.登记收入.登记支出和退出四个模块.并且能进入每个功能里面. 最好用的方式是用数组实现这个软件,可以是二维数组,也可以是一维数组,直接附上源码. import java.util ...

最新文章

  1. 1月12号 UIView
  2. oracle增加数据时报没安装java_在linux上安装Oracle Developer Tools for VS Code
  3. springboot配置Druid数据源
  4. configure脚本分析
  5. python List中元素两两组合
  6. google adsense 设置建议
  7. 计算机积木游戏,乐高积木模拟器
  8. android开发入门与实践_我的新书《Android App开发入门与实战》已经出版
  9. 安又琪 -《Angela安又琪》
  10. 51Nod-1384 全排列【全排列】
  11. OC语言-04-OC语言-核心语法
  12. 全网首发:多个mimetypes xml设置某种文件类型的不同图标,LINUX怎样确定使用哪个
  13. OCR电子发票批量自动合成软件
  14. 作为一名优秀的软件测试工程师,需要具备哪些能力?
  15. android微信网页视频播放器,关于微信使用内置播放器播放视频的办法
  16. 武汉大学计算机在职,武汉大学计算机技术工程硕士专业在职研究生 学位论文工作开展步骤概述...
  17. 爱有很多种,但一不小心就会失去……
  18. HTML5 Canvas鼠标与键盘事件
  19. 利用Python基础代码语句,实现2G时代文字小游戏,世界如此简单!
  20. 从进程中获取QQ号码

热门文章

  1. 计算机专业 外文数据库,计算机专业外文翻译+原文-数据库管理系统介绍
  2. Description: Field smsClient in com.atguigu.gmall.pms.service.impl.SpuServiceImpl required a bean o
  3. 推推:产品的规划和商业化分析
  4. 坚果pro2救砖专用(文末包含twrp900E的解决方法)
  5. GSM UMTS E-UTRAN
  6. Win10添加Loopback网卡
  7. 魔百盒ZXV10 B863AV3.2-M/B863AV3.1-M2_S905L3A-B_线刷+卡刷精简固件
  8. 树莓派 linux安装中文语言包6,树莓派安装XBMC并让其支持中文,
  9. 软考常考知识点整理-项目人员配备管理计划
  10. 等保测评--管理机构安全(ORS)