自己写的第一个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 ...
随机推荐
- 常用bat代码
清除空文件夹 | 清理空文件夹 | 删除空文件夹 @echo off for /f "tokens=*" %%i in ('dir/s/b/ad^|sort /r') do rd ...
- 【深度学习】Tensorflow学习(1)张量与常用函数
关于张量 张量可以表示0阶到N阶的数组 在TensorFlow中,张量(Tensor)表示某种相同数据类型的多维数据 因此张量有两个重要特征: 数据类型 数组形状(各个维度的大小) 张量的数据类型 t ...
- 创建LVM报错:Can't initialize physical volume "/dev/sdb1" of volume group "myvg" without -ff
问题: 在使用fdisk /dev/sdb 删除原有LVM分区,在接着创建LVM新分区/dev/sdb1.完毕保存之后. 执行pvcreate /dev/sdb1出现报错 Can't initiali ...
- PMML讲解及使用
1. PMML概述 PMML全称预言模型标记语言(Predictive Model Markup Language),利用XML描述和存储数据挖掘模型,是一个已经被W3C所接受的标准.使用pmml储存 ...
- Qt编写地图综合应用14-离线地图下载
一.前言 网上其实有很多各种各样的离线地图下载器,大部分都是要收费的,免费的要么是限制了下载的瓦片数量或者级别,要么是下载的瓦片图打上了水印,看起来很难看,由于经常需要用到离线地图,摆脱这个限制,特意 ...
- Qt编写地图综合应用9-行政区划
一.前言 行政区划在地图应用中非常有用,行政区划是行政区域划分的简称,是国家为了进行分级管理而实行的区域划分,百度地图提供的内置的函数类支持传入行政区划的名称来获取对应的边界点集合,然后根据该集合来绘 ...
- 大型IM稳定性监测实践:手Q客户端性能防劣化系统的建设之路
本文来自腾讯手Q基础架构团队杨萧玉.邱少雄.张自蹊.王褚重天.姚伟斌的分享,原题"QQ 客户端性能稳定性防劣化系统 Hodor 技术方案",下文进行了排版和内容优化. 1.引言 接 ...
- 快速上手jquery
优点 强大的选择器机制 优质的隐私迭代 链式编程 选择机制 选择器 标签名 $('div') id $('#id') class $('.clname') 属性 $('div:[name='66']' ...
- Hadoop大数据架构及关键组件-建立大数据知识体系
Hadoop大数据架构及关键组件1. Hadoop生态系统1.1 架构大数据生态的主要组件及其关系大数据生态大数据架构1. HDFS(Hadoop分布式文件系统):2. MapReduce(分布式计算 ...
- 项目PMP之十一项目风险管理
项目PMP之十一--项目风险管理 一.定义:削弱负面风险,增强正面风险,将风险敞口保持在可接受的范围,扩大项目实现的概率 非事件类风险:变异性风险,已规划的不确定性(通过蒙特卡洛分析,缩小结果区间 ...