Java小项目记账本

news/2024/12/5 6:37:24/

1.Utility模块

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("选择错误,请重新输入:");}elsebreak;}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;}
}

2. 账户模块

/*
阶段一的项目:记账软件的实现*/public class GuLiAccount {public static void main(String[] args) {boolean isFlag = true;//控制循环的结束//初始金额int balance = 10000;String info  = "";//记录收支说明while (isFlag) {System.out.println("-------斐秋记账软件---------\n");System.out.println("-------1、收支明细---------");System.out.println("-------2、登记收入---------");System.out.println("-------3、登记支出---------");System.out.println("-------4、退   出---------\n");System.out.println("------- 请选择(1-4):");char selection = Utility.readMenuSelection(); //readMenuSelectionswitch (selection) {case '1':System.out.println("------------------当前收支明细记录-------------------");System.out.println("收支\t账户金额\t收支金额\t说   明");System.out.println(info);System.out.println("--------------------------------------------------");break;case '2':System.out.println("本次收入金额:");int money1 = Utility.readNumber();if (money1 > 0) {balance += money1;}System.out.print("本次收入说明:");String addDesc = Utility.readString();info += "收入\t" + balance + "\t\t" + money1 + "\t" + addDesc + "\n";System.out.println("------------------------登记完成-------------------");break;case '3':System.out.println("本次支出金额:");int money2 = Utility.readNumber();if (money2 > 0 && balance >= money2){balance -= money2;}System.out.println("本次支出说明:");String minusDesc = Utility.readString();info += "支出\t" + balance + "\t\t" + money2 + "\t\t" + minusDesc + "\n";System.out.println("------------------------登记完成--------------------------");break;case '4':System.out.print("\n确认是否退出(Y/N):");char isExit = Utility.readConfirmSelection();if (isExit == 'Y'){isFlag = false;} else {}break;}}}
}

http://www.ppmy.cn/news/758525.html

相关文章

笔记本电脑显示计算机无法启动,笔记本电脑未能启动怎么回事_笔记本电脑显示windows未能启动如何解决-win7之家...

我们电脑使用久了&#xff0c;总是会出现这样那样的问题&#xff0c;例如近日有笔记本电脑用户反映说电脑开机的时候&#xff0c;屏幕上显示windows未能启动&#xff0c;这个问题相比很多用户都遇到过&#xff0c;那遇到笔记本电脑未能启动怎么回事呢&#xff1f;为此小编给大家…

QT从入门到实战学习笔记导引

QT从入门到实战学习笔记导引 一、QT主界面简介和创建一个QT工程二、QT工程中各个文件代表的含义三、QPushButton的使用&#xff0c;信号和槽四、QT设置两个开关&#xff0c;可以控制另外一个页面的开启和关闭 一、QT主界面简介和创建一个QT工程 QT主界面简介和创建一个QT工程 …

28.RocketMQ之消费者的负载均衡源码

highlight: arduino-light 消费者负载均衡流程 当一个业务系统部署多台机器时&#xff0c;每台机器都启动了一个Consumer&#xff0c;并且这些Consumer都在同一个ConsumerGroup也就是在同1个消费组中。此时一个消费组中多个Consumer消费一个Topic,而一个Topic对应多个MessageQu…

panabit

管理口ipputty登录rootpanaos 命令echo "nameserver 114.114.114.114" >> /etc/resolv.conf产看是否写入成功cat /etc/resolv.conf 通过这个命令查 logeye user list 默认密码 rootroot 改密码 passwd 转载于:https://www.cnblogs.com/nxiao/articles/64088…

panabit之Web认证

panabit之Web认证 要求用户通过 WEB 认证实现一机一账号上网。 1、开启 WEB 认证 2、编写 WEB 账号密码

panabit之MAC管控

panabit之MAC管控 原理 对网络进行 MAC 和 IP 地址绑定。 需求 学校要求对违规 IP 地址的流量进行丢弃。 流程 1、开启 MAC 绑定功能 2、MAC 地址绑定 3、修改 IP 地址验证 注意&#xff0c;MAC管控只能用在交换机连接主机的环境中&#xff0c;若是多层的网络拓扑&…

panabit之HTTP管控

panabit之HTTP管控 原理 对网络进行网址过滤。 需求 例如&#xff0c;学校要求教师上班不能访问购物网址&#xff0c;访问则被禁止并提示“上班时间&#xff0c;不得购物”&#xff0c;学生不得访问视频网址&#xff0c;访问则被禁止并提示“好好学习&#xff0c;天天向上”…

panabit部署模式

panabit 部署模式 路由模式 panabit 此时外接互联网&#xff0c;内接内网&#xff0c;相当于一个路由器的功能&#xff0c;除了转发数据流外&#xff0c;还可以部署 NAT。因为内网的流量需要经过 panabit&#xff0c;所以可以起到监管流量的作用。 网桥模式 相较上一幅拓扑多…