java 输入五种水果_java--IO和面向对象(简单的水果仓库管理系统--可选择操作)...
要求:
1、完成一个对水果仓库管理的简单系.。
2、完成,增加、查询、修改简单的操作。
分析:
1、首先我们要有进行分成分析 表层----操作层----底层;
2、表层有什么 :可供操作的选项即(增、查、改);
3、操作层有什么:完成不同的操作(读文件和写文件);
4、底层有什么:完成数据的写出和读入;
步骤:
先完成如下javaproject的创建:
//下面为每个类中的具体内容(按我做改程序的顺须写的)
//Fruit
package VO;
import java.io.Serializable;
@SuppressWarnings("serial")
public class Fruit implements Serializable {
//属性
private String name;
private String area;
private float kg;
//构造方法
public Fruit(){}
public Fruit(String name,String area,float kg){
this.name =name;
this.area =area;
this.kg =kg;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public float getKg() {
return kg;
}
public void setKg(float kg) {
this.kg = kg;
}
public String toString (){
return "水果名:"+this.name +" 源产地:"+this.area+" 现重量:"+this.kg ;
}
}
//主方法
package Main;
import Menu.Menu;
public class Main {
//主方法
public static void main(String[] args){
System.out.println("简单的水果仓库管理系统");
//调用Menu方法
new Menu();
}
}
//Menu
package Menu;
import OP.FruitOperate;
import Util.InputDate;
public class Menu {
InputDate input= null;
public Menu(){
this.input=new InputDate();
//循环出现菜单
while (true){
this.show();
}
}
//需要定义的菜单内容
private void show() {
System.out.println("\t\t\t1、增加水果库存");
System.out.println("\t\t\t2、浏览库存信息");
System.out.println("\t\t\t3、修改库存信息");
System.out.println("\t\t\t4、注销管理系统");
System.out.print("\n\n请选择您要使用的操作:");
int temp = input.getInt();
switch(temp){
case 1:{ // 增加水果库存
new FruitOperate().add(); //业务处理层
break;
}
case 2:{ // 浏览库存信息
new FruitOperate().show();
break;
}
case 3:{ // 修改库存信息
new FruitOperate().update();
break;
}
case 4:{ //注销管理系统
System.out.println("注销中******************");
System.out.println("注销成功!");
System.exit(1);
}
default:{ //错误信息提示
System.out.println("请选择正确的操作范围如下:");
break;
}
}
}
}
//对度入数据的相关操作
package Util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputDate {
private BufferedReader buf =null;
public InputDate(){
buf = new BufferedReader(new InputStreamReader(System.in));
};
public String getString(){
String str = null;
try {
str = buf.readLine();
} catch (IOException e) {}
return str;
}
public int getInt(){
int temp = 0;
//如果输入的不是数字,告诉用户输入错了~
//可以使用正则验证
String str = null;
boolean flag = true;
while(flag){
//输入数据
str = this.getString();
if (!(str.matches("\\d+"))){
//如果输入的不是一个数字,则必须重新输入
System.out.print("输入的内容必须是上面操作代号的范围,请重新输入:");
}else{
//输入的是一个正确的数字,则可以进行转换
temp = Integer.parseInt(str);
//表示退出循环
flag = false;
}
}
return temp;
}
public float getFloat() {
float f = 0.0f;
//如果输入的不是数字,提示告诉用户输入错了~
//可以使用正则验证
String str = null;
boolean flag = true;
while(flag){
//输入数据
str = this.getString();
if (!(str.matches("\\d+?.\\d{1,2}"))){
//如果输入的不是一个数字,则必须重新输入
System.out.print("输入的内容必须是小数(小数点后两位),请重新输入:");
}else{
//输入的是一个正确的数字,则可以进行转换
f = Float.parseFloat(str);
//表示退出循环
flag = false;
}
}
return f;
}
}
///实现管理的方法类
package OP;
import Util.FileOperate;
import Util.InputDate;
import VO.Fruit;
public class FruitOperate {
private InputDate input = null;
public FruitOperate(){
this.input = new InputDate();
}
//完成具体的Fruit对象操作
public void add(){
//要使用输入数据的类
String name = null;
String area = null;
float kg = 0.0f;
System.out.print("输入水果名:");
name = this.input.getString();
System.out.print("输入源产地:");
area = this.input.getString();
System.out.print("输入入库量:");
kg = this.input.getFloat();
//生成Fruit对象,把对象保存在文件中
Fruit f = new Fruit(name,area,kg);
try{
new FileOperate().save(f); //io操作层
System.out.println("数据保存成功!");
}catch(Exception e){
System.out.println("数据保存失败!");
}
}
public void show(){
//从文件中把内容读进来
Fruit f = null;
try{
f = (Fruit) new FileOperate().read();
}catch(Exception e){
System.out.println("内容显示失败,请确定数据是否存在!");
}
if(f != null){
System.out.println(f);
}
}
public void update(){
//先将之前的信息查出来
Fruit f = null;
try{
f = (Fruit) new FileOperate().read();
}catch(Exception e){
System.out.println("内容显示失败,请确定数据是否存在!");
}
if(f != null){
String name = null;
String area = null;
float kg =0.0f;
System.out.print("请输入新的水果名(原水果名:"+f.getName()+")");
name = this.input.getString();
System.out.print("请输入新的源产地(原源产地:"+f.getArea()+")");
area = this.input.getString();
System.out.print("请输入新的库总量(原库总量:"+f.getKg()+")");
kg = this.input.getFloat();
//信息重新设置
f.setName(name);
f.setArea(area);
f.setKg(kg);
try{
new FileOperate().save(f);
System.out.println("数据更新成功!");
}catch(Exception e){
System.out.println("数据更新失败!");
}
}
}
}
//底层操作 文件的读入和读出
package Util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class FileOperate {
public static final String FILENAME = "E:\\fruit.txt";
//把对象保存在文件之中
public void save(Object obj){
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(new FileOutputStream(new File(FILENAME)));
//写入对象
out.writeObject(obj);
}catch(Exception e){
try {
throw e;
} catch (Exception e1) {}
}finally {
try {
out.close();
}catch(Exception e){}
}
}
//把对象从文件之中读出来
public Object read() throws Exception{
Object obj = null;
ObjectInputStream input =null;
try {
input = new ObjectInputStream(new FileInputStream(new File(FILENAME)));
obj = input.readObject();
} catch (Exception e) {
throw e;
}finally{
try{
input.close();
}catch(Exception e){}
}
return obj;
}
}
运行结果如下:
这篇文章只是一个原理 ,感谢阅读 希望能够提供宝贵意见!QQ:237333696
java 输入五种水果_java--IO和面向对象(简单的水果仓库管理系统--可选择操作)...相关推荐
- java 输入五种水果_输入5种水果的英文名称,用java编写一个程序,输出这些水果名称按照字典出现的先后循序输出?...
展开全部 一.思路: 1.建立一个String数组,用来存储用户输入的水果名字. 2.按字62616964757a686964616fe59b9ee7ad9431333363376431典出现的先后顺 ...
- java 输入五种水果_java代码,实现输入编号,输出对应水果的单价~~~~
总结:总感觉有问题,因为输出我写的太不对劲了,直接把price的价格写了出来然输出显示-- package com.badu; import java.util.Scanner; //从键盘输入次数, ...
- Java swing五种常见的布局方式【转载】
Java swing五种常见的布局方式 1. 边界布局(BorderLayout) 2.流式布局(FlowLayout) 3.网格布局(GridLayout) 4.盒子布局(BoxLaYout) 5. ...
- java输入商品价格 求总价_Java三种商品总价格大于3500或者某种商品总价大于5000,则打三折,否则八折怎么编写...
最后的打折计算浮点数直接计算有误差,所以打折后的总金额可能与手算的在精度上有误差.实际场景中一般计算金额都是用BigDecimal. 然后题目的逻辑有点问题,某种商品的总价大于5000了,那这三种商品 ...
- LeetCode算法题-Number Complement(Java实现-五种解法)
这是悦乐书的第240次更新,第253篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第107题(顺位题号是476).给定正整数,输出其补码数.补充策略是翻转其二进制表示的位 ...
- java输入和输出路径_Java输入输出
Java输入输出学习 File类 File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使 ...
- java中三种方法_Java文件I/O的三种方法
Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...
- java输入年月输出日历_java 输入年月,获取日历表
/* 做日历作业: 输入一个时间如: 2016-11 就显示2016年11月的日历显示 */ import java.util.*; class calendar { public static vo ...
- java中io流案例_Java IO流的简单使用 通俗易懂 超详细 【内含案例】
IO流简单使用 输入和输出是相对于程序来说的,读取到程序中叫做输入,写到文件中叫输出. InputStream 字节输入流 InputStream 字节输入流基类,是字节输入流所有类的超类 // 从输 ...
最新文章
- iOS 直播专题3-前置处理
- 智能算法的应用记录一点点-----TSP 路径规划
- OCP笔记部分整理-学习参考
- kafka管理神器-kafkamanager
- postman怎么导出测试用例_利用Charles抓包巧转接口自动化测试用例
- java代码题_精选20道Java代码笔试题
- UINavigationBar的系统渲染方式
- 《王者荣耀》回应故障:3个工作日内补发排位赛星积分丢失
- 小程序-调用公共js对象方法/ app.js
- php中月份以星期为单位,PHP的月份第二个星期六
- [Scottgu]ASP.NET vNext系列——数据选择
- Failed to instantiate [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans]: F
- 【Proteus仿真】51单片机+红外测距仪(GP2D12)+ADC0809模数转换
- C++实用的闹钟程序
- Ansible自动运维工具
- 字符串转换成对象的操作
- 项目管理十大知识领域和五大过程组
- WebRTC RTCP RTP Feedback
- 利用SPSS箱线图与Z分数法判别异常值的比较
- B2C网站宽度和风格的探讨