Java基于文件系统的小商城demo 适合初学者
文章目录
前言
提示:如有错误及时更正!
一、系统介绍
通过使用Java去实现基于文件系统的商城
二、具体代码
1.实体类
1.1商品信息类
代码如下(示例):
package com.mall.user;//商品
public class Information {
private String number;
private String name;
private String price;
private String mount;
@Override
public String toString() {
return "[name: " + name + " number:" + number + ", price:" + price + ", mount:" + mount + "]";
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMount() {
return mount;
}
public void setMount(String mount) {
this.mount = mount;
}
}
1.2普通用户类
代码如下(示例):
package com.mall.user;
import java.util.List;
public class SympleUser {
private String id;
private String name;
private String password;
private String Buy_things;
public SympleUser() {
}
public SympleUser(String name, String password) {
this.name = name;
this.password = password;
}
public SympleUser(String id, String name, String password, String buy_things, String num) {
this.id = id;
this.name = name;
this.password = password;
this.Buy_things = buy_things;
}
@Override
public String toString() {
return "SympleUser{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", Buy_things='" + Buy_things + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBuy_things() {
return Buy_things;
}
public void setBuy_things(String buy_things) {
Buy_things = buy_things;
}
}
1.3管理员类
代码如下(示例):
package com.mall.user;
public class SuperUser {
private String name;
private String password;
public SuperUser(){
}
public SuperUser(String name, String password) {
super();
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
String a ="admin";
this.name =a;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "SuperUser{" +
"name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
1.4订单类
代码如下(示例):
package com.mall.user;
public class Order {
private String peo_id;
private String goods_id;
private String goods_name;
private String price;
private String mount;
private String Date_time;
public Order() {
}
public Order(String peo_id, String goods_id, String goods_name, String price, String mount, String date_time) {
this.peo_id = peo_id;
this.goods_id = goods_id;
this.goods_name = goods_name;
this.price = price;
this.mount = mount;
Date_time = date_time;
}
@Override
public String toString() {
return "Order{" +
"peo_id='" + peo_id + '\'' +
", goods_id='" + goods_id + '\'' +
", goods_name='" + goods_name + '\'' +
", price='" + price + '\'' +
", mount='" + mount + '\'' +
", Date_time='" + Date_time + '\'' +
'}';
}
public String getPeo_id() {
return peo_id;
}
public void setPeo_id(String peo_id) {
this.peo_id = peo_id;
}
public String getGoods_id() {
return goods_id;
}
public void setGoods_id(String goods_id) {
this.goods_id = goods_id;
}
public String getGoods_name() {
return goods_name;
}
public void setGoods_name(String goods_name) {
this.goods_name = goods_name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMount() {
return mount;
}
public void setMount(String mount) {
this.mount = mount;
}
public String getDate_time() {
return Date_time;
}
public void setDate_time(String date_time) {
Date_time = date_time;
}
}
2.页面
代码如下(示例):
package com.mall.page;
import java.io.IOException;
import java.util.Scanner;
import com.mall.user.Information;
import com.mall.service.Service;
import com.mall.user.SuperUser;
import com.mall.user.SympleUser;
import com.mall.utils.SuperUtils;
import com.mall.utils.SympleUtils;
public class page {
public static void main(String[] args) throws IOException {
SympleUtils su = new SympleUtils();
SuperUtils sus = new SuperUtils();
SympleUser S_user = null;
Service menu = new Service();
while (true) {
System.out.println("*******欢迎进入电子商城*******");
menu.SympleUserMenu();
System.out.println("******************************");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
if (s.equalsIgnoreCase("A")) {
su.Register();
} else if (s.equalsIgnoreCase("B")) {
S_user = su.Login();
} else if (s.equalsIgnoreCase("C")) {
su.Ctm(S_user);
} else if (s.equalsIgnoreCase("D")) {
su.Query(S_user);
} else if (s.equalsIgnoreCase("E")) {
System.out.println("请输入管理员账户:");
String s1 = sc.nextLine();
System.out.println("请输入密码:");
String s2 = sc.nextLine();
boolean tf = sus.Login(s1, s2);
while (tf) {
System.out.println("******欢迎来到管理员界面******");
menu.SuperUserMenu();
System.out.println("请选择操作:");
String emm = sc.nextLine();
System.out.println("*****************************");
if (emm.equalsIgnoreCase("A")) {
Information i1 = new Information();
sus.Insert();
} else if (emm.equalsIgnoreCase("B")) {
sus.Delete();
} else if (emm.equalsIgnoreCase("C")) {
sus.Modify();
} else if (emm.equalsIgnoreCase("D")) {
sus.View();
} else if (emm.equalsIgnoreCase("E")) {
break;
}
}
} else if (s.equalsIgnoreCase("F")) {
break;
}
}
}
}
3.服务类
代码如下(示例):
package com.mall.service;
public class Service {
//普通用户菜单
public static void SympleUserMenu(){
System.out.println("【A】注册"+"\r\n"+"【B】登录"+"\r\n"+"【C】查看商城"+"\r\n"+"【D】查看已购买的商品"+"\r\n"+"【E】管理员登录"+"\r\n"+"【F】退出");
}
//管理员菜单
public static void SuperUserMenu(){
System.out.println("【A】增加商品"+"\r\n"+"【B】删除商品"+"\r\n"+"【C】修改商品"+"\r\n"+"【D】查看商城"+"\r\n"+"【E】返回");
}
}
4.实现类
4.1管理员方法实现
代码如下(示例):
package com.mall.utils;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.mall.user.Information;
import com.mall.user.SympleUser;
public class SuperUtils {
public static final Scanner sc = new Scanner(System.in);
//Insert添加
public void Insert() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("goods.txt"));
//创建集合对象
List<Information> p = new ArrayList<Information>();
String line;
while ((line = br.readLine()) != null) {
Information s = new Information();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
s.setNumber(read[0]);
s.setName(read[1]);
s.setPrice(read[2]);
s.setMount(read[3]);
p.add(s);
}
br.close();
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//将id放在循环外面,判断是否重复id
String number = null;
while (true) {
System.out.println("请输入注册number~");
number = sc.nextLine();
boolean flag = false;
//便利集合得到每一个登录信息
for (int x = 0; x < p.size(); x++) {
//获取当前键盘录入id与数据库对比
if (number.equals(p.get(x).getNumber())) {
flag = true;
//number被占用,商品存在
break;
}
}
if (flag) {
System.out.println("此代号商品已存在,请查看后重新输入~");
} else {
break;
}
}
Information information = new Information();
//添加商品
System.out.println("请输入商品名:");
String S_name = sc.nextLine();
System.out.println("请输入价格:");
String price = sc.nextLine();
System.out.println("请输入库存数量:");
String K_mount = sc.nextLine();
//赋值
information.setNumber(number);
information.setName(S_name);
information.setPrice(price);
information.setMount(K_mount);
//加入集合
p.add(information);
//注册成功
System.out.println("商品添加成功!");
//将信息写入Information
//创建输入流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("goods.txt"));
for (Information s1:p) {
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(s1.getNumber()).append("|").append(s1.getName()).append("|").append(s1.getPrice()).append("|").append(s1.getMount());
//将StringBuilder采用toString方法写入文本文件当中
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
}
//Delete删除
public void Delete() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("goods.txt"));
//创建集合对象
List<Information> p = new ArrayList<Information>();
String line;
while ((line = br.readLine()) != null) {
Information s = new Information();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
s.setNumber(read[0]);
s.setName(read[1]);
s.setPrice(read[2]);
s.setMount(read[3]);
p.add(s);
}
br.close();
System.out.println("请输入需要修改的商品代号:");
String M_number = sc.nextLine();
//便利集合找到需要修改的商品
for (int i = 0; i < p.size(); i++) {
if (M_number.equals(p.get(i).getNumber())) {
p.remove(p.get(i));
}
}
System.out.println("商品代号不存在请查找确认后重试~");
//创建输入流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("goods.txt"));
for (int j = 0; j < p.size(); j++) {
Information s1 = p.get(j);
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(s1.getNumber()).append("|").append(s1.getName()).append("|").append(s1.getPrice()).append("|").append(s1.getMount());
//将StringBuilder采用toString方法写入文本文件当中
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
}
//Modify修改
public void Modify() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("goods.txt"));
//创建集合对象
List<Information> p = new ArrayList<Information>();
String line;
while ((line = br.readLine()) != null) {
Information s = new Information();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
s.setNumber(read[0]);
s.setName(read[1]);
s.setPrice(read[2]);
s.setMount(read[3]);
p.add(s);
}
br.close();
System.out.println("请输入需要修改的商品代号:");
String M_number = sc.nextLine();
boolean flag_true=false;
//便利集合找到需要修改的商品
for (int i = 0; i < p.size(); i++) {
if (M_number.equals(p.get(i).getNumber())) {
flag_true=true;
System.out.println("该商品的信息如下:");
System.out.println(p.get(i).toString());
System.out.println("请输入商品信息:");
System.out.println("请输入商品名:");
String S_name = sc.nextLine();
System.out.println("请输入价格:");
String price = sc.nextLine();
System.out.println("请输入库存数量:");
String K_mount = sc.nextLine();
p.get(i).setNumber(M_number);
p.get(i).setName(S_name);
p.get(i).setPrice(price);
p.get(i).setMount(K_mount);
}
}
if(flag_true){
//创建输入流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("goods.txt"));
for (int j = 0; j < p.size(); j++) {
Information s1 = p.get(j);
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(s1.getNumber()).append("|").append(s1.getName()).append("|").append(s1.getPrice()).append("|").append(s1.getMount());
//将StringBuilder采用toString方法写入文本文件当中
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
System.out.println("修改成功~");
//释放资源
bw.close();
}else{
System.out.println("商品代号不存在请查找确认后重试~");
}
}
//View 查询
public void View() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("goods.txt"));
//创建集合对象
List<Information> p = new ArrayList<Information>();
String line;
while ((line = br.readLine()) != null) {
Information s = new Information();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
s.setNumber(read[0]);
s.setName(read[1]);
s.setPrice(read[2]);
s.setMount(read[3]);
p.add(s);
}
br.close();
//便利集合输出商品库的商品信息
for (int i = 0; i < p.size(); i++) {
System.out.println(p.get(i).toString());
}
}
//查看已注册用户
public void SympleView(SympleUser s, ArrayList<SympleUser> p) throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("SympleUser.txt"));
//创建集合对象
p = new ArrayList<SympleUser>();
String line;
while ((line = br.readLine()) != null) {
s = new SympleUser();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
s.setId(read[0]);
s.setName(read[1]);
s.setPassword(read[2]);
s.setBuy_things(read[3]);
p.add(s);
}
br.close();
//便利集合输出商品库的商品信息
for (int i = 0; i < p.size(); i++) {
System.out.println(p.get(i).toString());
}
}
//登录
public boolean Login(String s1, String s) {
if (s1.equals("admin") && (s.equals("admin"))) {
System.out.println("登录成功");
return true;
} else {
System.out.println("登录失败");
return false;
}
}
//EDIT退出
}
4.2普通用户方法实现
代码如下(示例):
package com.mall.utils;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import com.mall.user.Information;
import com.mall.user.Order;
import com.mall.user.SympleUser;
public class SympleUtils {
//Register 注册
public void Register() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("./SympleUser.txt"));
//创建集合对象
ArrayList<SympleUser> result = new ArrayList<SympleUser>();
String line;
while ((line = br.readLine()) != null) {
SympleUser p = new SympleUser();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
p.setId(read[0]);
p.setName(read[1]);
p.setPassword(read[2]);
p.setBuy_things(read[3]);
result.add(p);
}
br.close();
SympleUser sympleUser = new SympleUser();
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//判断是否重复id
System.out.println("请输入注册id~");
String id = sc.nextLine();
//便利集合得到每一个登录信息
for (SympleUser item : result) {
//获取当前键盘录入id与数据库对比
if (id.equals(item.getId())) {
System.out.println("id重复");
break;
} else {
sympleUser.setId(id);
}
}
System.out.println("请输入用户名:");
String name = sc.nextLine();
sympleUser.setName(name);
System.out.println("请输入密码,不超过6个字符:");
String password = sc.nextLine();
while (true) {
if (password.length() > 6) {
System.out.println("密码不符合要求~");
break;
} else {
System.out.println("请再次输入密码:");
String repeat = sc.nextLine();
if (repeat.equals(password)) {
//赋值
sympleUser.setPassword(password);
//加入集合
result.add(sympleUser);
//注册成功
System.out.println("用户注册成功,欢迎您开始购物之旅!");
//将信息写入SympleUser,创建输入流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("SympleUser.txt"));
for (int i = 0; i < result.size(); i++) {
SympleUser sp = result.get(i);
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(sp.getId()).append("|").append(sp.getName()).append("|").append(sp.getPassword()).append("|").append(sp.getBuy_things()).append("0");
//将StringBuilder采用toString方法写入文本文件当中
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
break;
} else {
break;
}
}
}
}
//Login登录
public SympleUser Login() throws IOException {
SympleUser user = null;
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("SympleUser.txt"));
//创建集合对象
List<SympleUser> result = new ArrayList<>();
String line;
while ((line = br.readLine()) != null) {
SympleUser p = new SympleUser();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
p.setId(read[0]);
p.setName(read[1]);
p.setPassword(read[2]);
p.setBuy_things(read[3]);
result.add(p);
}
br.close();
//创建键盘输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
//便利数组找寻
for (SympleUser sympleUser : result) {
if (sympleUser.getName().equals(name) && sympleUser.getPassword().equals(password)) {
user = sympleUser;
System.out.println("登录成功~欢迎使用Genius Mall service pages");
return user;
}
}
System.out.println("用户名或密码错误,请返回重试");
return user;
}
//Check the mall
public static void Ctm(SympleUser o) throws IOException {
List<SympleUser> sympleUsers = getSympleUser();
Scanner sc = new Scanner(System.in);
List<Information> list = getInformation();
//便利集合展示商品
for (int i = 0; i < list.size(); i++) {
Information s = list.get(i);
System.out.println(s.toString());
}
System.out.println("请输入您需要购买的商品编号:");
String id = sc.nextLine();
if (o == null) {
System.out.println("请先登录后再进行购买");
} else {
boolean flag = false;
//便利集合找到商品输出信息
Information s = null;
for (int i = 0; i < list.size(); i++) {
if (id.equals(list.get(i).getNumber())) {
System.out.println("您将要购买的商品信息如下:");
s = list.get(i);
System.out.println(s.toString());
flag = true;
}
}
if (flag) {
//输入购买数量
System.out.println("请输入要购买的商品数量");
String s1 = sc.nextLine();
int mount = Integer.parseInt(s.getMount()) - Integer.parseInt(s1);
if (mount < 0) {
System.out.println("购买失败,库存数量不足");
} else {
System.out.println("商品购买成功!");
//修改人员购买记录
BufferedWriter bw = new BufferedWriter(new FileWriter("SympleUser.txt"));
for (SympleUser sympleUser : sympleUsers) {
if (sympleUser.getId().equals(o.getId())) {
sympleUser.setBuy_things(sympleUser.getBuy_things() + "," + s.getNumber());
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(sympleUser.getId()).append("|")
.append(sympleUser.getName()).append("|")
.append(sympleUser.getPassword()).append("|")
.append(sympleUser.getBuy_things());
//将StringBuilder采用toString方法写入文本文件当中
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
}
bw.close();
//增加订单信息
System.out.println("您购买的商品信息如下");
Order order = new Order();
//创建输入流对象
BufferedWriter bw2 = new BufferedWriter(new FileWriter("order.txt", true));
for (Information items : list) {
if (id.equals(items.getNumber())) {
System.out.println("name [number=" + items.getNumber() + ", price="
+ items.getPrice() + ", mount=" + Integer.parseInt(s1) + "]" + "\r\n" +
"总价格为:" + Integer.parseInt(items.getPrice()) * Integer.parseInt(s1));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(o.getId()).append("|")
.append(s.getNumber()).append("|")
.append(s.getName()).append("|")
.append(s.getPrice()).append("|")
.append(s.getMount()).append("|")
.append(simpleDateFormat.format(new Date()));
//将StringBuilder采用toString方法写入文本文件当中
bw2.write(sb.toString());
bw2.newLine();
bw2.flush();
//释放资源
bw2.close();
System.out.println("插入订单完成");
break;
}
}
//修改商品库存
//创建输入流对象
BufferedWriter bw1 = new BufferedWriter(new FileWriter("goods.txt"));
for (Information information : list) {
if (information.getNumber().equals(s.getNumber())) {
information.setMount("" + (Integer.parseInt(information.getMount()) - 1));
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(information.getNumber()).append("|")
.append(information.getName()).append("|")
.append(information.getPrice()).append("|")
.append(information.getMount());
//将StringBuilder采用toString方法写入文本文件当中
bw1.write(sb.toString());
bw1.newLine();
bw1.flush();
} else {
//利用字符串拼接
StringBuilder sb = new StringBuilder();
sb.append(information.getNumber()).append("|")
.append(information.getName()).append("|")
.append(information.getPrice()).append("|")
.append(information.getMount());
//将StringBuilder采用toString方法写入文本文件当中
bw1.write(sb.toString());
bw1.newLine();
bw1.flush();
}
}
bw1.close();
}
} else {
System.out.println("您输入的编号有误,请重新尝试");
}
}
}
private static List<Information> getInformation() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("goods.txt"));
//创建集合对象
List<Information> list = new ArrayList<Information>();
String line;
while ((line = br.readLine()) != null) {
Information information = new Information();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
information.setNumber(read[0]);
information.setName(read[1]);
information.setPrice(read[2]);
information.setMount(read[3]);
list.add(information);
}
br.close();
return list;
}
private static List<SympleUser> getSympleUser() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("SympleUser.txt"));
//创建集合对象
List<SympleUser> list = new ArrayList<SympleUser>();
String line;
while ((line = br.readLine()) != null) {
SympleUser sympleUser = new SympleUser();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
sympleUser.setId(read[0]);
sympleUser.setName(read[1]);
sympleUser.setPassword(read[2]);
sympleUser.setBuy_things(read[3]);
list.add(sympleUser);
}
br.close();
return list;
}
private static List<Order> getOrder() throws IOException {
//创建缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("order.txt"));
//创建集合对象
List<Order> list = new ArrayList<Order>();
String line;
while ((line = br.readLine()) != null) {
Order order = new Order();
//分割字符串
String[] read = line.split("\\|");
//创建对象并赋值
order.setPeo_id(read[0]);
order.setGoods_id(read[1]);
order.setGoods_name(read[2]);
order.setPrice(read[3]);
order.setMount(read[4]);
order.setDate_time(read[5]);
list.add(order);
}
br.close();
return list;
}
//Query查看已购买商品
//TODO ok
public void Query(SympleUser p) throws IOException {
if (p == null) {
System.out.println("请先登录商城后进行再进行查看");
} else {
String[] strings = p.getBuy_things().split(",");
int[] array = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();
//创建输入流
List<Order> list = getOrder();
//便利集合展示商品
for (int i = 0; i < array.length; i++) {
if (array[i] == 0) {
continue;
} else {
for (Order goods : list) {
if (Integer.parseInt(goods.getGoods_id()) == array[i]) {
System.out.println(goods.toString());
}
}
}
}
}
}
}
5.相关文件
goods.txt
1001|中华田园犬|888|10
1002|仓鼠|100|80
1003|麻雀|400|23
1004|甜死人不偿命猫咪|999|9
1005|恐龙|9999|1
SympleUser.txt
1|1|1|0,1001
order.txt
总结
例如:以上就是今天要讲的内容,本文仅仅简单使用Java,适合初学者,感谢观看哦