//商场类
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. 【js实例】js中的5种基本数据类型和9种操作符

    js中的5中基本数据类型 js标识符 第一个字符必须为字母,下划线,或美元符 其他字符可以是字母,下划线,美元符,数字 js标识符区分大小写 标识符不能使关键字和保留字 关键字: break do i ...

  2. linux中搭建java开发环境

    JDK安装 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载对应jdk版本, ...

  3. C语言之循环结构

    程序结构: 顺序结构 条件结构(分支结构) if结构,if-else结构 ,多重if分支结构,switch结构 循环结构:做重复的事情 while循环,do..while循环和for循环. 写循环结构 ...

  4. 矢量量化(VQ)

    作者:桂. 时间:2017-05-31  21:14:56 链接:http://www.cnblogs.com/xingshansi/p/6925955.html 前言 VQ(Vector Quant ...

  5. 导入数据到mysql服务器上,报错,以及停止的解决办法

    两次都是因为磁盘不够,这次得以解决: =>下面是可能会用到的命令行: 1.查看磁盘占用大小: df -hl 发现:   从上面看出来,根目录 / 下的东西沾满了  /dev/sda1  但是 / ...

  6. APUE-文件和目录(一)

    4.1 函数stat 函数stat返回与此命名文件有关的信息结构.下面的代码实现了一个工具,显示树形目录结构,需要加两个参数,一个为目录名,一个为显示目录的深度. #include <sys/s ...

  7. 多线程异步编程示例和实践-Task

    上篇博文中,我们介绍了Thread和ThreadPool: 多线程异步编程示例和实践-Thread和ThreadPool 本文中我们继续,说一下TPL(Task Parallel Library, 简 ...

  8. 【基础】C#异常处理的总结

    一.异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常. 因此处理这种错误,就称为异常处理. 二.异常处理如何操作? C# 异常处理时建立在四个关键词之上的: ...

  9. PHP的面向对象 — 封装、继承、多态

    K在上一次的基础篇中给大家介绍了一下关于PHP中数组和字符串的使用方法等,这一次,K决定一次性大放送,给大家分享一下PHP中面向对象的三大特性:封装.继承.多态三个方面的知识. 一.封装 在PHP中, ...

  10. NodeMCU入门(5):Docker Image 构建固件,开启SmartConfig

    准备工作 1.NodeMCU模块 2.ESP8266Flasher.exe 3.EspTouch.apk 3.docker toolbox(win7系统) 或 docker(win10以上),本教程是 ...