要求:

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和面向对象(简单的水果仓库管理系统--可选择操作)...相关推荐

  1. java 输入五种水果_输入5种水果的英文名称,用java编写一个程序,输出这些水果名称按照字典出现的先后循序输出?...

    展开全部 一.思路: 1.建立一个String数组,用来存储用户输入的水果名字. 2.按字62616964757a686964616fe59b9ee7ad9431333363376431典出现的先后顺 ...

  2. java 输入五种水果_java代码,实现输入编号,输出对应水果的单价~~~~

    总结:总感觉有问题,因为输出我写的太不对劲了,直接把price的价格写了出来然输出显示-- package com.badu; import java.util.Scanner; //从键盘输入次数, ...

  3. Java swing五种常见的布局方式【转载】

    Java swing五种常见的布局方式 1. 边界布局(BorderLayout) 2.流式布局(FlowLayout) 3.网格布局(GridLayout) 4.盒子布局(BoxLaYout) 5. ...

  4. java输入商品价格 求总价_Java三种商品总价格大于3500或者某种商品总价大于5000,则打三折,否则八折怎么编写...

    最后的打折计算浮点数直接计算有误差,所以打折后的总金额可能与手算的在精度上有误差.实际场景中一般计算金额都是用BigDecimal. 然后题目的逻辑有点问题,某种商品的总价大于5000了,那这三种商品 ...

  5. LeetCode算法题-Number Complement(Java实现-五种解法)

    这是悦乐书的第240次更新,第253篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第107题(顺位题号是476).给定正整数,输出其补码数.补充策略是翻转其二进制表示的位 ...

  6. java输入和输出路径_Java输入输出

    Java输入输出学习 File类 File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使 ...

  7. java中三种方法_Java文件I/O的三种方法

    Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...

  8. java输入年月输出日历_java 输入年月,获取日历表

    /* 做日历作业: 输入一个时间如: 2016-11 就显示2016年11月的日历显示 */ import java.util.*; class calendar { public static vo ...

  9. java中io流案例_Java IO流的简单使用 通俗易懂 超详细 【内含案例】

    IO流简单使用 输入和输出是相对于程序来说的,读取到程序中叫做输入,写到文件中叫输出. InputStream 字节输入流 InputStream 字节输入流基类,是字节输入流所有类的超类 // 从输 ...

最新文章

  1. iOS 直播专题3-前置处理
  2. 智能算法的应用记录一点点-----TSP 路径规划
  3. OCP笔记部分整理-学习参考
  4. kafka管理神器-kafkamanager
  5. postman怎么导出测试用例_利用Charles抓包巧转接口自动化测试用例
  6. java代码题_精选20道Java代码笔试题
  7. UINavigationBar的系统渲染方式
  8. 《王者荣耀》回应故障:3个工作日内补发排位赛星积分丢失
  9. 小程序-调用公共js对象方法/ app.js
  10. php中月份以星期为单位,PHP的月份第二个星期六
  11. [Scottgu]ASP.NET vNext系列——数据选择
  12. Failed to instantiate [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans]: F
  13. 【Proteus仿真】51单片机+红外测距仪(GP2D12)+ADC0809模数转换
  14. C++实用的闹钟程序
  15. Ansible自动运维工具
  16. 字符串转换成对象的操作
  17. 项目管理十大知识领域和五大过程组
  18. WebRTC RTCP RTP Feedback
  19. 利用SPSS箱线图与Z分数法判别异常值的比较
  20. B2C网站宽度和风格的探讨

热门文章

  1. 软考信息系统监理师,2016年4月1日作业
  2. 手机号码归属地查询接口
  3. SUb Main 的用途
  4. android cpu温控 机制,魔趣 Android 4.X ROM 中 CPU 调节器各种模式介绍和选择
  5. 常吃四类食物能够对抗二手烟
  6. 解决dns被污染的问题
  7. 改变自己 只需要两年
  8. 华为的OD,值得去吗?
  9. Shell 脚本小试牛刀(5) -- 超便捷脚本之高速ssh 登录其它主机
  10. Swift4.2 Xcode10 日记心情追踪APP