//商场类
public class Goods {
int no;    //编号
String name;  //商品名称
double price;  //商品价格
int number;  //商品数量

  //初始化数据方法
public void setData(int iNo, String sName, double dPrice, int iNumber) {
no = iNo;
name = sName;
price = dPrice;
number = iNumber;
} // 按格式输出
public void showGoods() {
System.out.println(no + "\t\t" + name
+ (name.getBytes().length > 10 ? "\t" : "\t\t") + price
+ "\t\t" + number);
}
}
//用户类
public class User { String username;  //用户名
String password;  //密码
String nickName;  //昵称// 购物车
Goods[] cart = new Goods[10];

  //显示用户信息方法
public void showInfo() {
System.out.println("用户名:\t" + username);
System.out.println("密码:\t" + password);
System.out.println("昵称:\t" + nickName);
}

  //购买商品 --> 传入商品参数
public void buyGoods(Goods goods) {
// 1.购物车中没有该商品
// 2.购物车中有了该商品
int index = searchGoodsByName(goods.no);
if (index != -1) {
// 购物车已经有了该商品,直接增加数量
cart[index].number += goods.number;
} else {
// 没有呢,就把他放入 第一个为null的位置
for (int i = 0; i < cart.length; i++) {
if (cart[i] == null) {
cart[i] = goods;
return;
}
}
System.out.println("商品已满,请清空购物车后,在来购买");
}
}

  //查找购物车是否有相同的商品
public int searchGoodsByName(int goodsNo) {
for (int i = 0; i < cart.length; i++) {
if (cart[i] == null)
return -1;
else if (goodsNo == cart[i].no) {
return i;
}
}
return -1;
}

  //显示商品
public void showGoods() {
System.out.println("商品编号\t\t商品名称\t\t商品价格\t\t库存");
for (int i = 0; i < cart.length; i++) {
if (cart[i] == null)
return;
cart[i].showGoods();   //调用商场的显示方法 显示商品
}
} // 返回购物车中需要的金额
public double getGoodsMoney() {
double sum = 0;
for (int i = 0; i < cart.length; i++) {
if (cart[i] == null)
break;
double value = cart[i].price * cart[i].number;
sum += value; }
return sum;
} // 清空购物车
public void clearCart() {
for (int i = 0; i < cart.length; i++) {
cart[i] = null;
}
}
}
import java.util.Scanner;

//商场系统
public class ShoppingManager { //用户数组
User[] users = new User[10];
//商品数组
Goods[] goods = new Goods[10];
Scanner input = new Scanner(System.in); //当前登录用户
User loginUser; // 显示menu之前,先初始化数据
public void init() {
goods[0] = new Goods();
goods[0].setData(10101, "海尔冰箱", 3999.9, 50);
goods[1] = new Goods();
goods[1].setData(10102, "格力冰箱", 2888.8, 50);
goods[2] = new Goods();
goods[2].setData(10103, "TCL冰箱", 3333.0, 100);
goods[3] = new Goods();
goods[3].setData(10104, "美的冰箱", 5100.5, 80);
goods[4] = new Goods();
goods[4].setData(10105, "海尔空调", 4622, 50);
goods[5] = new Goods();
goods[5].setData(10106, "格力空调", 1555, 70);
goods[6] = new Goods();
goods[6].setData(10107, "TCL空调", 2100.5, 30);
goods[7] = new Goods();
goods[7].setData(10108, "美的空调", 3355.5, 150);
goods[8] = new Goods();
goods[8].setData(10109, "小天鹅洗衣机", 2500, 30);
goods[9] = new Goods();
goods[9].setData(10110, "西门子冰箱", 3800, 80); // 预存用户 测试用的
User user = new User();
user.nickName = "李四";
user.username = "lisi";
user.password = "123456";
users[0] = user;
} //显示商场菜单
public void showMenu() {
// 初始化商品
init();
String choose = "";
do {
// 打印菜单系统
System.out.println("*****************国美电器*****************");
System.out.println("\t\t1.用户登录");
System.out.println("\t\t2.用户注册");
System.out.println("\t\t3.退出系统");
System.out.println("*****************国美电器*****************");
choose = input.next();
switch (choose) {
case "1":
userLogin(); //登录
break;
case "2":
userRegister(); //注册
break;
case "3":
System.out.println("退出系统成功!");
break;
default:
System.out.println("输入错误,请重新输入");
break;
}
} while (!choose.equals("3"));
// 退出系统
input.close();
} //用户注册
private void userRegister() {
System.out.print("请输入用户名:");
String name = input.next();
if (isDuplicationName(name)) {
System.out.println("用户名已存在!注册失败");
return;
}
// 没有重名
System.out.print("请输入密码:");
String password = input.next();
if (password.length() < 6) {
System.out.println("密码输入错误!注册失败");
return;
}
System.out.print("请输入昵称:");
String nickName = input.next();
if (addUser(name, password, nickName)) {
System.out.println("注册成功");
} else {
System.out.println("注册失败,用户已满!");
}
} //添加用户方法,判断用户数组中是否存在该用户
public boolean addUser(String username, String password, String nickname) {
User user = new User();
user.username = username;
user.nickName = nickname;
user.password = password;
for (int i = 0; i < users.length; i++) {
if (users[i] == null) {
users[i] = user;
return true;
}
}
return false;
} //判断用户名是否存在,返回ture或false
private boolean isDuplicationName(String name) {
for (int i = 0; i < users.length; i++) {
// 为空就跳出循环
if (users[i] == null)
break;
// 有重名
else if (users[i].username.equals(name))
return true;
}
return false;
} private void userLogin() {
System.out.print("请输入用户名:");
String username = input.next();
System.out.print("请输入密码:");
String password = input.next();
User user = login(username, password);
if (user == null) {
System.out.println("登录失败!");
} else {
// 下一级菜单
loginUser = user;
System.out.println("登录成功,你好:" + loginUser.nickName);
userMenu(); //用户菜单
}
} public User login(String username, String password) {
for (int i = 0; i < users.length; i++) {
if (users[i] == null)
return null;
else if (users[i].username.equals(username)
&& users[i].password.equals(password)) {
return users[i];
}
}
return null;
} // 用户登录后的菜单
public void userMenu() {
String choose = "";
do {
System.out.println("1.商品购买");
System.out.println("2.我的购物车");
System.out.println("3.个人信息");
System.out.println("4.注销");
choose = input.next();
switch (choose) {
case "1":
buyGoods(); //购买商品
break;
case "2":
showMyGoods(); //显示购物车
break;
case "3":
showUserInfo(); //显示用户信息
break;
case "4":
System.out.println("注销成功");
break;
default:
System.out.println("输入错误,请重新输入!");
break;
} } while (!choose.equals("4"));
} private void showUserInfo() {
loginUser.showInfo();
} //显示购物车
private void showMyGoods() {
System.out.println("********************购物车********************");
loginUser.showGoods();
// 开始付款
System.out.println("\t\t你购买的商品总价格为:" + loginUser.getGoodsMoney());
// 是否付款
if (loginUser.getGoodsMoney() == 0)
return;
System.out.println("是否付款?Y/N");
String choose = input.next();
if (choose.equalsIgnoreCase("y")) {
// 付款
System.out.println("输入实付金额:");
double money = input.nextDouble();
if (money < loginUser.getGoodsMoney()) {
System.out.println("输入的金额不够啊!");
} else {
double zero = money - loginUser.getGoodsMoney();
System.out.println("恭喜你付款成功,找您" + zero + "元");
loginUser.clearCart();
}
}
} private void buyGoods() {
System.out.println("********************商品购买*********************");
showGoodsList();
String choose = "";
while (!choose.equalsIgnoreCase("exit")) {
System.out.print("请输入需要购买的商品编号,输入exit后退出");
choose = input.next();
if (!choose.equalsIgnoreCase("exit")) {
// 购买商品
int index = getGoodsIndex(choose);
if (index == -1) {
System.out.println("没有该商品,请重新输入");
} else {
System.out.print("请输入商品数量:");
int number = input.nextInt();
// 判断由没有这么多库存
if (number <= goods[index].number) {
// 1.商城需要减少数量
// 2.购物车是增加
goods[index].number -= number;
// 用户买的商品
Goods good = new Goods();
good.setData(goods[index].no, goods[index].name,
goods[index].price, number);
loginUser.buyGoods(good);
System.out.println("购买成功");
} else {
System.out.println("商品不够了。。。");
}
}
}
}
// 显示购物车
showMyGoods();
} //显示商品列表
public void showGoodsList() {
System.out.println("商品编号\t\t商品名称\t\t商品价格\t\t库存");
for (int i = 0; i < goods.length; i++) {
Goods good = goods[i];
if (good == null)
return;
good.showGoods();
}
} // 判断购买的商品在数组中的位置
/**
*
* @param no
* 输入的商品编号
* @return 找到 返回索引号,没有找到返回-1
*/
public int getGoodsIndex(String no) {
// 将编号转成int
// int iNo = Integer.parseInt(sNo);
for (int i = 0; i < goods.length; i++) {
if ((goods[i].no + "").equals(no)) {
return i;
}
}
return -1;
} }
//测试类
public class Test { public static void main(String[] args) {
ShoppingManager manager = new ShoppingManager();
manager.showMenu();
}
}

Java电器商场小系统--简单的java逻辑的更多相关文章

  1. java基础学习02(简单的java程序)

    简单的java程序 一.完成的目标 1. 理解java程序的基本组成 2. 如何对程序代码进行注释 3. java标识符的命名规则 4. 了解java中的关键字 5. 使用java定义变量或声明变量 ...

  2. Java学习第一天之简单了解java语言及开发环境的安装

    一.初步了解Java语言 Java语言是由Sun公司的James Gosling创造的一门面向对象的高级语言. 2009年4月20日,Sun公司被Oracle以总价值约为74亿美元的价格收购,Java ...

  3. java客房管理小项目,适合java小白练手的项目!

    java客房管理小项目 这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全! 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私 ...

  4. Java基础——第一个记事本代码与Java注释

    一 .使用记事本编辑java文件: 1.打开记事本,重命名文件名,文件拓展名“.java”.(必须要的,系统才能识别java文件) 2.编写一个简单的java代码: public class Hell ...

  5. Java消息系统简单设计与实现

    前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...

  6. java小知识点简单回顾

    1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...

  7. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  8. JAVA配置&注解方式搭建简单的SpringMVC前后台交互系统

    前面两篇文章介绍了 基于XML方式搭建SpringMVC前后台交互系统的方法,博文链接如下: http://www.cnblogs.com/hunterCecil/p/8252060.html htt ...

  9. [Java 缓存] Java Cache之 DCache的简单应用.

    前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...

随机推荐

  1. laravel实现excel表格导出

    记得引用一下excel,现在laravel5.2都默认自带的,不需要自己再 Composer安装依赖了. use Excel; 然后方法里这样写 //$cellData自己要进行导出的数组 Array ...

  2. windows上使用SecureCRT连接linux

    前言: SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件.这样操作的时候不必进入到linux桌面,可以更方便的 ...

  3. java GUI (课堂笔记)

    关于java GUI Swing组件: JFrame 窗口组件 JLabel 标签 JButton 按钮组件 JTextField 单行文本框 系统控件(JDK自带) 自定义控件(模仿系统控件): 继 ...

  4. Sizzle 源码分析 (二)

    在Sizzle函数中,如果能快速处理或者通过querySelector处理,那么就使用它处理.否则使用select函数处理 . select函数 select = Sizzle.select = fu ...

  5. 关于oracle数据库备份还原-impdp,expdp

    初始化: -- 创建表空间 CREATE TABLESPACE 表空间名 DATAFILE '文件名.dat' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNL ...

  6. 搞不懂SSH与JAVA+Servlet+javabean有什么关系

    在SSH中:struts 是控制层,同时与Jsp结合代表表现层,同时负责客户端请求的处理,Spring主要处理逻辑事物处理,Hibernate主要对数据库的持久化操作. Jsp+Servlet+Jav ...

  7. 转 使用HAProxy,PHPRedis,和MySQL支撑10亿请求每周架构细节

    [编者按]在公司的发展中,保证服务器的可扩展性对于扩大企业的市场需要具有重要作用,因此,这对架构师提出了一定的要求.Octivi联合创始人兼软件架构师Antoni Orfin将向你介绍一个非常简单的架 ...

  8. Linux 进程,线程 -- (未完)

    系统调用 Linux 将系内核的功能接口制作成系统调用, Linux 有 200 多个系统调用, 系统调用是操作系统的最小功能单元. 一个操作系统,以及基于操作系统的应用,都不能实现超越系统调用的功能 ...

  9. h5之scrollIntoView控制页面元素滚动

    如果滚动页面也是DOM没有解决的一个问题.为了解决这个问题,浏览器实现了一下方法,以方便开发人员如何更好的控制页面的滚动.在各种专有方法中,HTML5选择了scrollIntoView()作为标准方法 ...

  10. 高效率遍历Map以及在循环过程中移除 remove指定key

    //高效率遍历Map以及在循环过程中移除 remove指定key //使用iter循环的时候 可以在循环中移除key,for在循环的过程中移除会报错哦 //本方法效率高 Iterator iter = ...