要求:
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