自己写的第一个java项目!
项目名为“零钱通”
细节参考
【零基础 快速学Java】韩顺平 零基础30天学会Java
基本版:
1 package project;
2
3 import java.text.SimpleDateFormat;
4 import java.util.Date;
5 import java.util.Scanner;
6
7 public class SmallChangeSys {
8 public static void main(String[] args) {
9 //1.零钱通菜单
10 boolean loop = true;
11 Scanner scanner = new Scanner(System.in);
12 String key = "";
13 //2.零钱通明细
14 String details = "==============零钱通明细==============";
15 //3.收益入账
16 double money = 0;
17 double balance = 0;
18 Date date = null;
19 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化的
20 //4.零钱通消费
21 String note = "";
22 //5.零钱通退出确认
23 String choice = "";
24 //6.判断金额入账和消费时金额是否合理
25
26 do {
27 System.out.println("==============零钱通菜单==============");
28 System.out.println("\t\t\t1 零钱通明细");
29 System.out.println("\t\t\t2 收益入账");
30 System.out.println("\t\t\t3 消费");
31 System.out.println("\t\t\t4 退 出");
32
33 System.out.println("请选择1-4");
34 key = scanner.next();
35
36 //switch 控制
37 switch (key) {
38 case "1":
39 System.out.println(details);
40 break;
41 case "2":
42 System.out.println("收益入账金额");
43 money = scanner.nextDouble();
44 //money范围校验
45 if (money <= 0) {
46 System.out.println("收益入账金额范围 需要 大于 0");
47 break;
48 }
49 balance += money;
50 //拼接信息到收益入账
51 date = new Date();//获取当前日期
52 details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
53 break;
54 case "3":
55 System.out.println("3 消费");
56 money = scanner.nextDouble();
57 //money范围校验
58 if (money <= 0 || money > balance) {
59 if (money <= 0){
60 System.out.println("您的消费金额应该 大于 0");
61 break;
62 }else{
63 System.out.println("消费不能透支余额!");
64 break;
65 }
66 }
67
68 System.out.println("消费说明");
69 note = scanner.next();
70 balance -= money;
71 date = new Date();//获取当前日期
72 details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
73 break;
74 case "4":
75 System.out.println("4 退 出");
76
77 while (true) {
78 System.out.println("你确定要退出吗?y/n");
79 choice = scanner.next();
80 if ("y".equals(choice) || "n".equals(choice)) {
81 break;
82 }
83
84 }
85 //当用户退出while后再判断choice是y还是n,就可以决定是否退出
86 if ("y".equals(choice)) {
87 loop = false;
88 }
89
90 break;
91 default:
92 System.out.println("选择有误,请重新选择");
93 break;
94 }
95 } while (loop);
96 System.out.println("==============退出了零钱通项目==============");
97
98
99 }
100 }
OOP版
SmallChangeSysOOP:
1 package project;
2
3 import java.text.SimpleDateFormat;
4 import java.util.Date;
5 import java.util.Scanner;
6
7 /**
8 * 该类完成零钱通的各个功能
9 * 要求使用OOP(面向对象)
10 */
11 public class SmallChangeSysOOP {
12 //属性
13 //1.零钱通菜单
14 boolean loop = true;
15 Scanner scanner = new Scanner(System.in);
16 String key = "";
17 //2.零钱通明细
18 String details = "==============零钱通明细==============";
19 //3.收益入账
20 double money = 0;
21 double balance = 0;
22 Date date = null;
23 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化的
24 //4.零钱通消费
25 String note = "";
26 //5.零钱通退出确认
27 String choice = "";
28 //6.判断金额入账和消费时金额是否合理
29
30 //完成零钱通菜单
31 public void mainMenu(){
32 do {
33 System.out.println("============零钱通菜单(OOP)============");
34 System.out.println("\t\t\t1 零钱通明细");
35 System.out.println("\t\t\t2 收益入账");
36 System.out.println("\t\t\t3 消费");
37 System.out.println("\t\t\t4 退 出");
38
39 System.out.println("请选择1-4");
40 key = scanner.next();
41
42 //switch 控制
43 switch (key) {
44 case "1":
45 this.detail();
46 break;
47 case "2":
48 this.income();
49 break;
50 case "3":
51 this.pay();
52 break;
53 case "4":
54 this.exit();
55 break;
56 default:
57 System.out.println("选择有误,请重新选择");
58 break;
59 }
60 } while (loop);
61 }
62 //完成零钱通明细
63 public void detail(){
64 System.out.println(details);
65 }
66 //完成收益入账
67 public void income(){
68 System.out.println("收益入账金额");
69 money = scanner.nextDouble();
70 //money范围校验
71 if (money <= 0) {
72 System.out.println("收益入账金额范围 需要 大于 0");
73 return;//退出方法,不再执行后面的代码
74 }
75 balance += money;
76 //拼接信息到收益入账
77 date = new Date();//获取当前日期
78 details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
79 }
80 //完成消费
81 public void pay(){
82 System.out.println("3 消费");
83 money = scanner.nextDouble();
84 //money范围校验
85 if (money <= 0 || money > balance) {
86 if (money <= 0){
87 System.out.println("您的消费金额应该 大于 0");
88 return;
89 }else{
90 System.out.println("消费不能透支余额!");
91 return;
92 }
93 }
94
95 System.out.println("消费说明");
96 note = scanner.next();
97 balance -= money;
98 date = new Date();//获取当前日期
99 details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
100 }
101 //退出
102 public void exit(){
103 System.out.println("4 退 出");
104
105 while (true) {
106 System.out.println("你确定要退出吗?y/n");
107 choice = scanner.next();
108 if ("y".equals(choice) || "n".equals(choice)) {
109 break;
110 }
111
112 }
113 //当用户退出while后再判断choice是y还是n,就可以决定是否退出
114 if ("y".equals(choice)) {
115 loop = false;
116 }
117 }
118
119 }
SmallChangeSysApp:
1 package project;
2
3
4 /**
5 * 直接调用SmallChangeSysOOP对象,显示主菜单
6 */
7 public class SmallChangeSysApp {
8 public static void main(String[] args) {
9 new SmallChangeSysOOP().mainMenu();
10 }
11 }
感谢韩老师精细的视频讲解,推荐新入行的小伙伴学习
链接:【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
自己写的第一个java项目!的更多相关文章
- 作为Java新手,如何才能快速的看透一个Java项目?
前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感&quo ...
- 初学者如何吃透一个Java项目
不少初学者朋友在学习Java过程中,会对着视频敲Java项目,其中遇到的BUG还能解决,但就是每次敲完一个项目,就感觉很空虚,项目里面的知识点感觉懂了但又好像没懂 这些朋友应该怎样才能掌握一个项目所用 ...
- 在Eclipse中,如何把一个java项目变成web项目
经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目.解决步骤:1.进入项目目录,可看到.project文件,打开.2.找到<natures>... ...
- java学习笔记(一):开始第一个java项目
这里使用IntelliJ IDEA 来新建第一个java项目 在新建项目向导,你可以选择你的项目支持的技术,你正在做一个普通的Java项目,只需单击下一步. 下一步,新建一个test的项目. 新建一个 ...
- 【系列教程1】Gradle入门系列二:第一个Java项目
这篇教程的主要内容是讲解如何用Gradle编译和打包一个简单的Java项目. 该Java项目只有一个需求:我们的构建脚本必须创建一个可执行的Jar文件,换句话说,我们必须能够使用命令java -jar ...
- [IntelliJ IDEA入门] 新建一个Java项目
新建一个Project 是否有JDK配置 选择JavaEE 点击Next 项目路径和文件 .idea (directory based) 创建项目的时候自动创建一个 .idea 的项目配置目录来保存项 ...
- Gradle入门(3):构建第一个Java项目
Gradle插件通过引入特定领域的约定和任务来构建你的项目.Java插件是Gradle自身装载的一个插件.Java插件提供的基本功能远比源代码编译和打包多.它为你的项目建立了一个标准的项目布局,并确保 ...
- JetBrains Fleet初体验,如何运行一个java项目
序言 各位好啊,我是会编程的蜗牛,JetBrains 日前宣布其打造的下一代 IDE Fleet 正式推出公共预览版,现已开放下载.作为java开发者,对于JetBrains开发的全家桶可以说是印象深 ...
- 如何创建一个Java项目
目录 新建项目 项目信息配置 创建Java类 编译和运行 新建项目 首先双击eclipse进入到eclipse页面. 菜单"File"下的"New"里" ...
- 一个Java项目的学习
1. java命令行的启动 首先是gradle build 其次是:java -Dabc.appid=1234 -classpath "a.jar:b.jar" com.ctri ...
随机推荐
- 这可能是国内Qt/C++界最受欢迎开源项目之一/5.8Kstar/持续迭代更新
一.前言 本项目大概在2020年开始的,大概在2022年重写了一遍,主要是分门别类存放.本项目主要是QWidget编写的一些开源的demo,支持Qt4.Qt5.Qt6,支持任意系统,预计会有100多个 ...
- Qt音视频开发02-海康sdk解码(支持句柄/回调/gpu模式/支持win/linux)
一.前言 为何还要选用使用海康sdk,之前不是ffmpeg已经牛皮吹上天了吗?这个问题问得好,那是因为无论ffmpeg也好还是vlc/mpv之类的,都是实现的播放相关,不同的监控硬件厂家对应设备还有很 ...
- 9.4classtest rewrite(仓库管理系统)
第一部分,设计界面以及类的定义. import java.util.Scanner; public class viovo { static int number = 5;//五个商品信息 stati ...
- [转]Bundle Adjustment简述
原文链接:https://optsolution.github.io/archives/58892.html或https://blog.csdn.net/optsolution/article/det ...
- IM跨平台技术学习(九):全面解密新QQ桌面版的Electron内存优化实践
本文由QQ技术团队分享,本文收录时有内容修订和大量排版优化. 1.引言 QQ 作为国民级应用,从互联网兴起就一直陪伴着大家,是很多用户刚接触互联网就开始使用的应用. 而 QQ 桌面版最近一次技术架构升 ...
- Next.js + Mongodb CURD
环境 Next.js 14 React 18 Mongodb 前言 花了两周时间学习了Next.js, 自己做了个demo,尝试了下服务器端渲染,客户端渲染,给人的感觉就是又像回到了asp.net M ...
- GRPC-JAVA
近一年来一直在用公司内wiki进行技术调研以及记录,后期有时间将逐步迁移至博客园 参考资料: https://github.com/grpc/grpc-java https://www.cnblogs ...
- 一文读懂 es6 中class方法中的this绑定
一直以来有这么个疑问? class 的方法中没有自动的绑定this 为什么手动绑定之后,在绑定之后的方法里调用class中的其他的方法(这个方法为什么就能使用this,不也应该是null或者undef ...
- vscode python remote debug极速入门
本文适用范围 主要适用于debug python 程序,尤其是深度学习刚入门需要使用remote 连接到linux进行程序运行,想调试一下的同学. 当然非深度学习也可以参考食用本文哈哈哈. 极速入门版 ...
- uni-app配置顶部标题样式
在pages.json中,通过配置这个文件,可以去设置当前页面的标题样式, 赋值的时候,将注册删除哈!!! 这样配置兼容 小程序和H5端 在配置的时候,没有给背景色,我还以为在uniapp中不兼容小程 ...