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)使 ...
随机推荐
- OpenStack云平台的网络模式及其工作机制
网络,是OpenStack的部署中最容易出问题的,也是其结构中难以理清的部分.经常收到关于OneStack部署网络方面问题和OpenStack网络结构问题的邮件.下面根据自己的理解,谈一谈OpenSt ...
- Redis基本数据类型以及String(一)
前言: Redis也有自己的数据类型,包含string,list,hash,set,sorted set.下面就对每种数据类型原理以及操作做一个详细的介绍. Redis是面向编程的语言 ...
- shell中如何进行算术运算
A=3 B=6 1.let算术运算表达式 let C=$A+$B2.$[算术运算表达式] C=$[$A+$B] 3.$(()) C=$(($A+$NB))
- windows上使用SecureCRT连接linux
前言: SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件.这样操作的时候不必进入到linux桌面,可以更方便的 ...
- javaSE_07Java中类和对象-封装特性-思维导图
思维导图看不清楚时: 1)可以将图片另存为图片,保存在本地来查看 : 2)右击在新标签中打开放大查看 (IE不支持,搜狗,360可以):
- 链表插入和删除,判断链表是否为空,求链表长度算法的,链表排序算法演示——C语言描述
关于数据结构等的学习,以及学习算法的感想感悟,听了郝斌老师的数据结构课程,其中他也提到了学习数据结构的或者算法的一些个人见解,我觉的很好,对我的帮助也是很大,算法本就是令人头疼的问题,因为自己并没有学 ...
- SpringMVC form:form的一个错误(没有传到前台绑定类)
SpringMVC form:form的一个错误(没有传到前台绑定类) 报错信息: Neither BindingResult nor plain target object for bean nam ...
- 文件描述符与FILE
1. 文件描述符(重点) 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件.文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创 ...
- 破解 Adobe 系列的最佳方法,手把手教
此方法是个人认为最方便的而且最安全的方法(可以避免下载到可能捆绑病毒的破解版本) 1.首先到Adobe的官网上下载 Creative Cloud: 打开官网上creative cloud 的下载页面: ...
- PHP:win7 ASP.NET环境与PHP(WAMP)环境如何共存
经验地址:http://jingyan.baidu.com/article/495ba8410f794d38b30ede89.html 笔记本以前安装过asp.net,启用了Windows的IIS服务 ...