Java实现商品管理系统(文件操作,面向对象)
一、需求分析
- 商品管理系统所具备功能
- 管理员登录账号
- 对商品信息进行增删改查
- 将商品信息保存至对应文件
二、系统分析
-
系统管理员登录模块
-
商品信息管理模块
1)添加商品模块
2)更改商品模块
3)删除商品模块
4)显示所有商品模块
5)查寻商品模块
三、详细代码
1、Good类
package Goods;
public class Good {
String id;
String name;
int store=0;
double price;
public Good() {}
public Good(String id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
Good(String id, String name,int store, double price) {
this(id,name,price);
if(store>=0)
this.store=store;
else
this.store=0;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getStore() {
return store;
}
public void setStore(int store) {
this.store = store;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {//显示格式
String remarks="";
if(store<10)
remarks="*该商品不足10件!";
return id+"\t"+name+"\t"+store+"\t"+price+"\t"+remarks;
}
public String tranString() {//存储&读取格式
return id+"|"+name+"|"+store+"|"+price+"\n";
}
}
2、ManageGood类
package Goods;
import java.io.*;
import java.util.ArrayList;
public class ManageGood {
private String route = "e:\\good.txt";
ArrayList<Good> goods=new ArrayList<Good>();
//添加商品
boolean add(Good good){
boolean t=true;
//判断集合是否有商品
if(goods.size()==0) {
goods.add(good);
}else {
//判断是否存在重复商品
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(good.id)){
t=false;
break;
}
}
//若没有重复则添加
if(t) {
goods.add(good);
}
}
return t;
}
//删除商品
boolean delete(String id){
boolean t=false;
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(id) ){
goods.remove(i);
t=true;
}
}
return t;
}
//修改商品名称
boolean update(String id,String name){
boolean t=false;
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(id) ){
goods.get(i).setName(name);
t=true;
}
}
return t;
}
//修改商品库存
boolean update(String id,int store){
boolean t=false;
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(id) ){
goods.get(i).setStore(store);
t=true;
}
}
return t;
}
//修改商品价格
boolean update(String id,double price){
boolean t=false;
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(id) ){
goods.get(i).setPrice(price);
t=true;
}
}
return t;
}
//商品入库
boolean inStore(String id,int store){
boolean t=false;
if(store<=0) {
System.out.println("入库信息错误,入库失败!");
}else {
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(id) ){
int n=store+goods.get(i).getStore();
goods.get(i).setStore(n);
t=true;
}
}
}
return t;
}
//商品出库
boolean outStore(String id,int store){
boolean t=false;
if(store<=0) {
System.out.println("出库信息错误,出库失败!");
}else {
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(id) ){
int n=goods.get(i).getStore();
//判断库存是否充足
if(n>=store) {
goods.get(i).setStore(n-store);
t=true;
}else {
System.out.println("库存不足,出库失败!");
}
}
}
}
return t;
}
//显示商品信息
void show(){
System.out.println("商品ID\t商品名\t库存\t单价\t备注");
for(int i=0;i<goods.size();i++){
System.out.println(goods.get(i).toString());
}
}
//查询商品信息
boolean check_id(String id) {
boolean t=false;
for(int i=0;i<goods.size();i++){
if(goods.get(i).id.equals(id) ){
t=true;
System.out.println("商品ID\t商品名\t库存\t单价\t备注");
System.out.println(goods.get(i).toString());
break;
}
}
return t;
}
boolean check_name(String name) {
boolean t=false;
int x=0;
for(int i=0;i<goods.size();i++){
if(goods.get(i).name.equals(name) ){
t=true;
x++;
if(x==1)
System.out.println("商品ID\t商品名\t库存\t单价\t备注");
System.out.println(goods.get(i).toString());
}
}
return t;
}
//存储商品信息
public boolean storage() throws Exception {
boolean t=false;
FileWriter out=new FileWriter(route);
for(int i=0;i<goods.size();i++){
out.write(goods.get(i).tranString());
t=true;
}
out.close();
return t;
}
//读取商品信息
public boolean fetch() throws Exception {
boolean t=false;
FileReader in=new FileReader(route);
int n=0;
String s="";
while(true) {
n=in.read();
if(n==-1) break;
s+=(char)n;
}
char[] a= s.toCharArray();
int len=a.length;
for(int i=0;i<len;i++) {
String[] nisp=new String[4];
nisp[0]=nisp[1]=nisp[2]=nisp[3]="";
for(int j=0;j<4;) {
if(a[i]=='|') {
j++;
i++;
}
if(a[i]=='\n') break;
nisp[j]+=a[i++];
}
Good good=new Good(nisp[0],nisp[1],Integer.valueOf(nisp[2]),Double.valueOf(nisp[3]));
goods.add(good);//将商品信息存入集合
}
in.close();
return t;
}
}
3、Main类
package Goods;
import java.io.IOException;
import java.util.Scanner;
public class Main {
static String pass="12345";
public static void main(String[] args) throws Exception {
Scanner in =new Scanner(System.in);
ManageGood mGood=new ManageGood();
int x=1;//记录输入密码次数
System.out.println("欢迎使用商品管理系统");
boolean t =false;
while(x<=3) {
System.out.print("请输入密码:");
String ps=in.next();
t =pass.matches(ps);
if(t) break;
if(x!=3)
System.out.println("密码输入错误,还可以输入"+(3-x)+"次!");
else
System.out.println("输入错误密码次数已到上限,退出系统!");
x++;
}
mGood.fetch();//读取商品信息
while (t) {
char a='y';
String id = null ;
String name;
int store=0;
double price;
print_1();
int n=in.nextInt();
switch (n) {
case 0:t=false;break;
case 1: {
while(a=='y') {
System.out.println("正在执行添加商品功能...\n");
System.out.print("请输入商品ID:");
id=in.next();
System.out.print("请输入商品名称:");
name=in.next();
System.out.print("请输入商品单价:");
price=in.nextDouble();
Good good=new Good(id,name,price);
if (mGood.add(good)) {
System.out.print("添加成功,是否继续(y/n):");
a=(char) System.in.read();
}else {
System.out.println("添加失败!");
a='n';
}
}
}break;
case 2:{
print_2();
int m=in.nextInt();
while(a=='y') {
boolean t1=false;
if(m<=5&&m>0) {
System.out.print("请输入要修改商品ID:");
id=in.next();
}
switch(m) {
case 0:a='n';break;
case 1:{
System.out.print("商品名称修改为:");
name=in.next();
t1=mGood.update(id,name);
}break;
case 2:{
System.out.print("商品库存修改为:");
store=in.nextInt();
t1=mGood.update(id,store);
}break;
case 3:{
System.out.print("商品价格修改为:");
price=in.nextDouble();
t1=mGood.update(id,price);
}break;
case 4:{
System.out.print("请输入入库数量:");
store=in.nextInt();
t1=mGood.inStore(id, store);
}break;
case 5:{
System.out.print("请输入出库数量:");
store=in.nextInt();
t1=mGood.outStore(id, store);
}break;
default:{
System.out.println("指令输入错误!");
m=0;
}
}
if (t1) {
System.out.print("修改成功,是否继续(y/n):");
a=(char) System.in.read();
}else if(m!=0){
System.out.println("修改失败!");
a='n';
}
}
}break;
case 3:{
while(a=='y') {
System.out.print("请输入商品ID:");
id=in.next();
if (mGood.delete(id)) {
System.out.print("删除成功,是否继续(y/n):");
a=(char) System.in.read();
}else {
System.out.println("删除失败!");
a='n';
}
}
}break;
case 4: mGood.show();break;
case 5:{
print_3();
int m=in.nextInt();
while(a=='y') {
switch(m) {
case 0: a='n';break;
case 1:{
System.out.print("请输入商品ID:");
id=in.next();
if (mGood.check_id(id)) {
System.out.print("查询成功,是否继续(y/n):");
a=(char) System.in.read();
}else {
System.out.println("查询失败!");
a='n';
}
}break;
case 2:{
System.out.print("请输入商品名:");
name=in.next();
if (mGood.check_name(name)) {
System.out.print("查询成功,是否继续(y/n):");
a=(char) System.in.read();
}else {
System.out.println("查询失败!");
a='n';
}
}break;
default:{
System.out.println("指令输入错误!");
m=0;
}
}
}
}break;
default:
System.out.println("指令输入错误!");
}
}
mGood.storage();//存储商品信息
}
public static void print_1() {
System.out.println("*****************************************");
System.out.println("*\t 超市商品管理系统 *");
System.out.println("*****************************************");
System.out.println("*\t 1.添加商品 *");
System.out.println("*\t 2.更改商品 *");
System.out.println("*\t 3.删除商品 *");
System.out.println("*\t 4.显示所有 *");
System.out.println("*\t 5.查寻商品 *");
System.out.println("*\t 0.退出系统 *");
System.out.println("*****************************************");
System.out.print("请输入指令(0~5):");
}
public static void print_2() {
System.out.println("*****************************************");
System.out.println("*\t 修改商品属性系统 *");
System.out.println("*****************************************");
System.out.println("*\t 1.修改名称 *");
System.out.println("*\t 2.修改库存 *");
System.out.println("*\t 3.修改价格 *");
System.out.println("*\t 4.商品入库 *");
System.out.println("*\t 5.商品出库 *");
System.out.println("*\t 0.返回上级 *");
System.out.println("*****************************************");
System.out.print("请输入指令(0~5):");
}
public static void print_3() {
System.out.println("*****************************************");
System.out.println("*\t 查询商品属性系统 *");
System.out.println("*****************************************");
System.out.println("*\t 1.按ID *");
System.out.println("*\t 2.按名称 *");
System.out.println("*\t 0.返回上级 *");
System.out.println("*****************************************");
System.out.print("请输入指令(0~2):");
}
}
**注:**登录密码为
12345
,在Main类
中可以更改;文件保存路径为e:\\good.txt
在ManageGood类
中。