import java.util.ArrayList;

import java.util.Scanner;

/**

* 系统类

*

* @author Administrator

*

*/

public class Systems {

private Scanner input = new Scanner(System.in);

private Database db = new Database();

//用户数据库

private ArrayList<Users> usersList = db.getUsersList();

//商品数据库

private ArrayList<Goods> goodsList = db.getGoodsList();

//登录用户

Users user = null;

//购物车信息

private ArrayList<Goods> shoppingCart = new Database().getShoppingCart();

/**

* 显示主菜单

*/

public int getMainMenu() {

System.out.println("****************** 欢迎使用大神超市管理系统 ******************");

System.out.println("******************    【1】 用 户 登 录        ******************");

System.out.println("******************    【2】 用 户 注 册        ******************");

System.out.println("******************    【3】 退 出 系 统        ******************");

System.out.print("请输入编号选择功能: ");

return input.nextInt();

}

/**

*显示二级菜单

*/

public int getSecondMenu(){

System.out.println("******************     【1】 查看购买商品       ******************");

System.out.println("******************     【2】 查看购物车信息    ******************");

System.out.println("******************     【3】 在线冲值              ******************");

System.out.println("******************     【4】 添加商品              ******************");

System.out.println("******************     【5】 返回上一级菜单     ******************");

System.out.print("请输入编号选择功能: ");

return input.nextInt();

}

/**

* 用户登录

*/

public boolean login(){

System.out.print("请输入帐号: ");

String name = input.next();

System.out.print("请输入密码: ");

String password = input.next();

//标记 false 表示不存在

boolean flag = false;

//遍历用户数据库 , 查找该用户是否存在

for(Users u : usersList){

if( u.getName().equals(name) && u.getPassword().equals(password) ){

this.user = u;

//修改标记

flag = true;

}

}

return flag;

}

/**

* 用户注册

*/

public void  register(){

//输入新账号

System.out.print("请输入新帐号: ");

String name = input.next();

//标记

boolean flag = true;

for(Users i : usersList){

if(i.getName().equals(name)){

//修改标记

flag = false;

}

}

//判断

if(flag){

System.out.print("请输入密码: ");

String password = input.next();

usersList.add(new Users(name,password));

System.out.println("注册成功!"+name+"欢迎您!");

//this.user.setName(name);

//this.user.setPassword(password);

usersList.add(new Users(name,password));

this.mainLogic();

}else{

System.out.println("注册失败 !");

this.register();

}

}

/**

* 显示所有商品信息

*/

public void showAllGoods(){

System.out.println("商品ID****商品名****单价****库存******\n");

for(Goods g : goodsList){

System.out.println( g.getID()+"\t"+g.getName()+"\t"+g.getPrice()+"\t"+g.getStock());

}

}

/**

* 购买

*/

public void buy(){

this.showAllGoods();

System.out.print("请输入需要购买的商品ID(输入 0 返回上级菜单):");

int goodsID = input.nextInt();

if(goodsID == 0){

this.secondLogic();

}

boolean flag = false;

//克隆

Goods good = null;

//现在购买的商品的信息

Goods gs = null;

for(Goods g : goodsList){

if( g.getID() == goodsID ){

flag = true;

gs = g;

good = new Goods(g.getID(),g.getName(),g.getPrice(),0);

}

}

if(flag){

System.out.print("请输入要购买的商品数量:");

int count = input.nextInt();

if(count > gs.getStock()){

System.out.println("库存不足,请重新购买!\n");

this.buy();

}else{

double total = gs.getPrice()*count;

if(total > user.getBalance()){

System.out.println("余额不足,请重新购买!\n");

this.buy();

}else{

System.out.println("购买成功,账户余额"+(user.getBalance()-total)+"元!"+"本次花费"+total+"元!");

//扣费

user.setBalance(user.getBalance()-total);

//更新商品列表

gs.setStock(gs.getStock()-count);

/**

* 将购买信息加入购物车

* 判断该次购买商品是否为第一次加入购物车,是则直接调用setStock(count)方法

* 否则    setStock(count+getStock())

*/

boolean flag2 = true;

for(Goods g : shoppingCart){

if(g.getID() == goodsID){

flag2 = false;

g.setStock(g.getStock()+count);

}

}

if(flag2){

good.setStock(count);

shoppingCart.add(good);

}

this.buy();

}

}

}else{

System.err.println("您输入的商品ID不存在,请重新输入!\n");

this.buy();

}

}

/**

* 查看购物车信息

*/

public void showShoppingCart(){

System.out.println("用户名***********余额*******");

System.out.println(user.getName()+"\t\t"+user.getBalance());

System.out.println("商品ID****商品名****单价****库存******\n");

for(Goods g : shoppingCart){

System.out.println(g.getID()+"\t"+g.getName()+"\t"+g.getPrice()+"\t"+g.getStock());

}

System.out.print("输入任意键返回上级:");

String temp = input.next();

this.secondLogic();

}

/**

* 在线充值

*/

public void recharge(){

System.out.print("请输入充值金额:");

double m = input.nextDouble();

user.setBalance(m + user.getBalance());

System.out.print("充值成功,是否继续充值:(yes/no)");

String ys = input.next();

if(ys.equalsIgnoreCase("yes".trim())){

this.recharge();

}else{

this.secondLogic();

}

}

/**

* 添加商品

*/

public void addGoods(){

/**

* 选择添加商品类型:1.已存在商品(只添加数量)

* 2.不存在商品(添加ID,商品名,价格,数量)

*/

System.out.println("请选择要添加的商品类型:【1】已存在的商品。【2】不存在的商品");

int  choose = input.nextInt();

switch(choose){

case 1:

//已存在的商品

this.existGoods();

break;

case 2:

//不存在数据库中的商品

this.unexistGoods();

break;

default:

System.err.println("输入错误!请重新输入");

this.addGoods();

}

}

/**

* 已存在的商品

*/

public void existGoods(){

System.out.println("请输入商品名:");

String goodName = input.next();

//判断商品名是否存在

boolean flag = true;

for(Goods g : goodsList){

if(goodName.equalsIgnoreCase(g.getName().trim())){

flag = false;

System.out.println("请输入添加商品数量:");

int count = input.nextInt();

g.setStock(g.getStock()+count);

}

}

if(flag){

System.out.print("商品不存在,请重新输入!");

this.existGoods();

}

System.out.print("商品添加成功,是否继续添加(yes/no):");

String temp = input.next();

if(temp.equalsIgnoreCase("yes".trim())){

this.addGoods();

}else{

this.secondLogic();

}

this.showAllGoods();

}

/**

* 不存在的商品

*/

public void unexistGoods(){

//新商品名

System.out.print("请输入商品名:");

String goodName = input.next();

//新商品价格

System.out.print("请输入商品价格:");

double goodPrice = input.nextDouble();

//新商品数量

System.out.print("请输入商品数量:");

int  goodStock = input.nextInt();

int goodsID = goodsList.size()+1;

goodsList.add(new Goods(goodsID,goodName,goodPrice,goodStock));

System.out.println("添加成功,是否继续添加:(yes/no)");

String ys = input.next();

if(ys.equalsIgnoreCase("yes".trim())){

this.addGoods();

}else{

this.secondLogic();

}

}

/**

* 核心逻辑控制方法

*/

public void mainLogic() {

// 启动主菜单

int id = this.getMainMenu();

// 判断

switch (id) {

case 1:

//用户登录

if( this.login() ){

System.err.println("欢迎" + this.user.getName() + "登录成功 !");

//this.getSecondMenu();

this.secondLogic();

}else{

System.err.println("登录失败 !");

}

break;

case 2:

//用户注册

this.register();

break;

case 3:

System.err.println("退出系统 , 谢谢使用 !");

//退出系统

System.exit(0);

break;

default:

System.err.println("您输入的编号无效 , 请重新输入 !\n");

//开始递归

this.mainLogic();

break;

}

}

/**

* 二级菜单操作控制

*/

public void secondLogic () {

int id = this.getSecondMenu();

switch(id){

case 1:

this.buy();

break;

case 2:

this.showShoppingCart();

break;

case 3:

this.recharge();

break;

case 4:

this.addGoods();

break;

case 5:

this.mainLogic();

break;

default:

System.out.println("输入错误!");

this.secondLogic();

}

}

}

/**

* 用户对象

* @author Administrator

*/

public class Users {

//帐号

private String name;

//密码

private String password;

//用户账户余额

private double balance = 100;

//构造器

public Users() {

}

public Users(String name, String password) {

this.name = name;

this.password = password;

}

public Users(String name, String password, double balance) {

this.name = name;

this.password = password;

this.balance = balance;

}

//getter , setter

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 double getBalance() {

return balance;

}

public void setBalance(double balance) {

this.balance = balance;

}

}

public class Goods {

//商品编号

private int ID;

//商品名

private String name;

//价格

private double price;

//存量

private int stock;

//构造器定义

public Goods() {

}

public Goods(int iD, String name, double price, int stock) {

ID = iD;

this.name = name;

this.price = price;

this.stock = stock;

}

//getter ,  settet;

public int getID() {

return ID;

}

public void setID(int iD) {

ID = iD;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

this.price = price;

}

public int getStock() {

return stock;

}

public void setStock(int stock) {

this.stock = stock;

}

}

import java.util.ArrayList;

/**

* 数据库类

* @author Administrator

*/

public class Database {

//模拟用户数据库

private ArrayList<Users> usersList = new ArrayList<Users>();

//模拟商品数据库

private ArrayList<Goods> goodsList = new ArrayList<Goods>();

//购物车

private ArrayList<Goods> shoppingCart = new ArrayList<Goods>();

/**

* 构造器

* @return

*/

public Database(){

//添加一条默认用户数据

Users users = new Users("admin","admin");

usersList.add(users);

//添加一条默认商品数据

goodsList.add(new Goods(1,"苹果",5.0,1000));

goodsList.add(new Goods(2,"牙刷",3,100));

goodsList.add(new Goods(3,"梨子",4,1000));

goodsList.add(new Goods(4,"节操",99999,0));

goodsList.add(new Goods(5,"甲胺磷",24,20));

goodsList.add(new Goods(6,"肥皂",5,300));

goodsList.add(new Goods(7,"衬衫",100,20));

goodsList.add(new Goods(8,"酸奶",2.5,2000));

goodsList.add(new Goods(9,"iphone",5000,3));

}

public ArrayList<Users> getUsersList() {

return usersList;

}

public void setUsersList(ArrayList<Users> usersList) {

this.usersList = usersList;

}

public ArrayList<Goods> getGoodsList() {

return goodsList;

}

public void setGoodsList(ArrayList<Goods> goodsList) {

this.goodsList = goodsList;

}

public ArrayList<Goods> getShoppingCart() {

return shoppingCart;

}

public void setShoppingCart(ArrayList<Goods> shoppingCart) {

this.shoppingCart = shoppingCart;

}

}

public class SystemTest {

public static void main(String[] args) {

//启动系统

Systems system = new Systems();

system.mainLogic();

}

}

转载于:https://blog.51cto.com/ministone/1437594

java新手的第一个小东西,或许小东西都算不上=。 =相关推荐

  1. Satwe楼板能用弹性模计算吗_PKPM学习笔记,或许半辈子都能用上

    原标题:PKPM学习笔记,或许半辈子都能用上 01裂缝与挠度 裂缝,模型里计算裂缝是按矩形截面计算弯矩,而不考虑翼缘影响,实际上翼缘影响是很大的,也就是说模型计算出的结果裂缝偏大,一般梁支座裂缝不考虑 ...

  2. 短视频制作小技巧,配音字幕都要跟上,做好细节才能成功

    短视频制作小技巧,配音字幕都要跟上,做好细节才能成功 短视频的大概制作方法相信大家都是心知肚明的,但是如果想要做好一个可以细分引流的短视频,却并不容易.那么今天我们就来分享几个短视频制作的小技巧,配音 ...

  3. 现在JAVA工程师真是太卷了,招聘要求十条都算少的了

    现在JAVA工程师真是太卷了,招聘要求十条都算少的了. 要会各种框架 要会各种设计模式 要会各种缓存和消息机制 要精通各种数据库 要会大数据 要会云计算 要有高并发经验 还要会各种中间件. 首先公司开 ...

  4. 二战字节跳动成功上岸,准备了小半年,拿27k也算不上很高吧~

    先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,字节的游戏专场又是最早开始的,就投递了,投递的是测试开发岗, ...

  5. 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结

    20162329 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过打书上的代码熟悉了Java编程的基本过程 教材学习中的问题和解决过程 1.因为我的虚拟机 ...

  6. 虞小约的Java之旅第一天(Java的基本格式)

    文章目录 ---------序章--------- @虞小约的Java之旅 ---------第一章--------- *1.1.1 java的基本格式* 知识点: ---------序章------ ...

  7. java 怎么让一个jlabel和一个jtextfield在一行_今天小哥大家分享一下Java编程语言的第一个程序应该怎么样去写...

    哈喽,各位朋友们大家周六好!我是你们的老朋友90小哥爱数码! 那么,今天小哥要和大家伙儿分享这篇文章的主要内容依然是和Java编程语言有关系,大家都知道在上几篇的文章当中呢小哥分别给大家介绍了Java ...

  8. java基础-宇宙第一YWM:入门java看书小发现

    ##java基础-宇宙第一YWM:书籍入门java 今天看了head first设计模式,其实从学Java基础开始就挺喜欢head first系列,而言很多前辈也都推荐过这两本,大家有空也可以看看.( ...

  9. 走进java编程之第一课-超详细笔记-适合新手收入

    首先看下本次课程的内容,要有耐心往下看哟~ 什么是移动互联网呢? 移动互联网,就是将移动通信和互联网二者结合起来,成为一体.是指互联网的技术.平台.商业模式和应用与移动通信技术结合并实践的活动的总称. ...

最新文章

  1. 华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略
  2. 小谈 Java 单元测试
  3. 开放搜索查询分析服务架构解读
  4. Hulu直播服务难点解析(三):关键收获
  5. redis实战之使用redis实现排行榜
  6. 中国人自己的框架——蚂蚁金服RPC框架结构分析
  7. Java PriorityQueue poll()方法与示例
  8. python可以进行矩阵运算吗_python能做MATLAB等价的矩阵运算吗?
  9. flash游戏代码_Flash正式宣告死亡,4399游戏还能玩么——从没有所谓的千秋万代...
  10. 云运维服务方案说明书
  11. Android下载文件常见错误解决方法
  12. 如何删除(插入)word表格下一页的空白页
  13. 数据挖掘——关联分析基础介绍(上)
  14. 英飞凌硅麦焊接注意事项
  15. MySQL-数据表创建命令
  16. 2021爱智先行者—数量遗传学 第一章 数量遗传学概论
  17. [Asp.Net Core]NET5跨平台的本质
  18. 信息爆炸的时代怎样来读书
  19. GitHub上Stars最多的10个Python项目
  20. 记录一次详细在线加密PDF解密过程

热门文章

  1. AndroidStudio_开发工具调试入门---Android原生开发工作笔记70
  2. Sharding-JDBC(实现读写分离)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记014
  3. Netty工作笔记0045---Netty模型梳理
  4. IntelliJ Idea学习笔记005---intellij idea build时出现Artifact contains illegal characters的解决
  5. SpringCloud工作笔记042---SpringCloud RestFul接口中跨域问题_这个解决方式不太完美,每个接口上都要加
  6. 杭电2066一个人的旅行(spfa)
  7. ll按时间排序和查看目录下文件数
  8. cocos2d-x之Box2d初试
  9. centos7 菜鸟第一天--输入法在哪
  10. java中的Vector的用法