自己写的第一个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 ...
随机推荐
- 2024年1月Java项目开发指南7:增删改查与接口测试
我们之前,是从Controller层写到Service层,然后mapper层. 接下来我们反过来,从mapper层写到Controller层 两种方式都可以,你喜欢就行,甚至你先写service层也可 ...
- centOS7安装nginx及nginx配置
安装所需插件1.安装gccgcc是linux下的编译器在此不多做解释,感兴趣的小伙伴可以去查一下相关资料,它可以编译 C,C++,Ada,Object C和Java等语言 命令:查看gcc版本 gcc ...
- Qt编写ffmpeg本地摄像头显示(16路本地摄像头占用3.2%CPU)
一.前言 内核ffmpeg除了支持本地文件.网络文件.各种视频流播放以外,还支持打开本地摄像头,和正常的解析流程一致,唯一的区别就是在avformat_open_input第三个参数传入个AVInpu ...
- Qt音视频开发8-ffmpeg保存裸流
一.前言 最开始做的ffmpeg保存视频文件,就是直接保存的裸流数据,裸流数据一般是H264格式的数据,这种数据文件可以用部分播放器播放,由于不是标准的格式,很多播放器其实不支持的,需要安装对应的解码 ...
- 生产环境Sentinel改造实践(二):规则管理推送改造
前文介绍了Sentinel相关的核心概念,本文开始动手对规则管理推送进行改造. 这里挑选流控规则模式改造为示例 Sentinel Dashboard 改造 在com.alibaba.csp.senti ...
- WxPython跨平台开发框架之复杂界面内容的分拆和重组处理
复杂界面内容的分拆和重组处理是现代软件开发中常见的做法,尤其在开发大型应用程序时,可以大幅提升开发效率.可维护性和用户体验.通过将复杂的界面内容分拆成更小的模块,每个模块都专注于单一功能或组件,代码更 ...
- 可扩展系统——基于SPI扩展
一.我们为什么讨论SPI? 为具有悠久历史的大型项目(屎山)添加新功能时,我们常常不太好评估变更的影响范围.因为原系统不具备良好的扩展性,导致修改整体发散,且不易单测.此时可以考虑使用接口来描述业务逻 ...
- winform 引用AForge调用摄像头拍照
Nuget安装这个2个: AForge.Controls; AForge.Video.DirectShow; code: namespace WindowsFormsApp1 { partial cl ...
- Springboot集成-ClickHouse
1.clickhouse应⽤场景 1.绝大多数请求都是用于读访问的 2.数据需要以大批次(大于1000行)进行更新,而不是单行更新:或者根本没有更新操作 3.数据只是添加到数据库,没有必要修改 4.读 ...
- Educational Codeforces Round 172 (Rated for Div. 2)(C-D)
题目链接:Dashboard - Educational Codeforces Round 172 (Rated for Div. 2) - Codeforces C. Competitive Fis ...