Java电器商场小系统--简单的java逻辑
//商场类
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逻辑的更多相关文章
- java基础学习02(简单的java程序)
简单的java程序 一.完成的目标 1. 理解java程序的基本组成 2. 如何对程序代码进行注释 3. java标识符的命名规则 4. 了解java中的关键字 5. 使用java定义变量或声明变量 ...
- Java学习第一天之简单了解java语言及开发环境的安装
一.初步了解Java语言 Java语言是由Sun公司的James Gosling创造的一门面向对象的高级语言. 2009年4月20日,Sun公司被Oracle以总价值约为74亿美元的价格收购,Java ...
- java客房管理小项目,适合java小白练手的项目!
java客房管理小项目 这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全! 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私 ...
- Java基础——第一个记事本代码与Java注释
一 .使用记事本编辑java文件: 1.打开记事本,重命名文件名,文件拓展名“.java”.(必须要的,系统才能识别java文件) 2.编写一个简单的java代码: public class Hell ...
- Java消息系统简单设计与实现
前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...
- java小知识点简单回顾
1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
- JAVA配置&注解方式搭建简单的SpringMVC前后台交互系统
前面两篇文章介绍了 基于XML方式搭建SpringMVC前后台交互系统的方法,博文链接如下: http://www.cnblogs.com/hunterCecil/p/8252060.html htt ...
- [Java 缓存] Java Cache之 DCache的简单应用.
前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...
随机推荐
- 【js实例】js中的5种基本数据类型和9种操作符
js中的5中基本数据类型 js标识符 第一个字符必须为字母,下划线,或美元符 其他字符可以是字母,下划线,美元符,数字 js标识符区分大小写 标识符不能使关键字和保留字 关键字: break do i ...
- linux中搭建java开发环境
JDK安装 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载对应jdk版本, ...
- C语言之循环结构
程序结构: 顺序结构 条件结构(分支结构) if结构,if-else结构 ,多重if分支结构,switch结构 循环结构:做重复的事情 while循环,do..while循环和for循环. 写循环结构 ...
- 矢量量化(VQ)
作者:桂. 时间:2017-05-31 21:14:56 链接:http://www.cnblogs.com/xingshansi/p/6925955.html 前言 VQ(Vector Quant ...
- 导入数据到mysql服务器上,报错,以及停止的解决办法
两次都是因为磁盘不够,这次得以解决: =>下面是可能会用到的命令行: 1.查看磁盘占用大小: df -hl 发现: 从上面看出来,根目录 / 下的东西沾满了 /dev/sda1 但是 / ...
- APUE-文件和目录(一)
4.1 函数stat 函数stat返回与此命名文件有关的信息结构.下面的代码实现了一个工具,显示树形目录结构,需要加两个参数,一个为目录名,一个为显示目录的深度. #include <sys/s ...
- 多线程异步编程示例和实践-Task
上篇博文中,我们介绍了Thread和ThreadPool: 多线程异步编程示例和实践-Thread和ThreadPool 本文中我们继续,说一下TPL(Task Parallel Library, 简 ...
- 【基础】C#异常处理的总结
一.异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常. 因此处理这种错误,就称为异常处理. 二.异常处理如何操作? C# 异常处理时建立在四个关键词之上的: ...
- PHP的面向对象 — 封装、继承、多态
K在上一次的基础篇中给大家介绍了一下关于PHP中数组和字符串的使用方法等,这一次,K决定一次性大放送,给大家分享一下PHP中面向对象的三大特性:封装.继承.多态三个方面的知识. 一.封装 在PHP中, ...
- NodeMCU入门(5):Docker Image 构建固件,开启SmartConfig
准备工作 1.NodeMCU模块 2.ESP8266Flasher.exe 3.EspTouch.apk 3.docker toolbox(win7系统) 或 docker(win10以上),本教程是 ...