吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14126|回复: 97
收起左侧

[Java 转载] 【笔记】学习java第十三天,水果超市

  [复制链接]
qlcyl110 发表于 2017-2-14 07:43
本帖最后由 qlcyl110 于 2017-2-14 08:01 编辑

其实很多不理解的地方,但是跟着视频,自己写的。感觉自己很努力。跟大家分享一下!
主要解决两个大方面问题;
1、顾客购买与结账;
2、管理员的查看流水、查询总价、打折实现、添加、修改、删除等操作;
原创笔记楼:http://www.52pojie.cn/thread-578655-1-1.html
先来一个自定义商品属性的类
[Java] 纯文本查看 复制代码
//定义商品项
public class Fruits {
        String name;        //商品名称
        int id;                        //商品编号
        String unit;        //商品单位
        double price;        //商品单价
        int number;                //商品数量
        double money;        //商品金额
}

再主程main类
[Java] 纯文本查看 复制代码
/
*        1、完成水果项的Fruits类的定义;
 *         2、写出含有的工具方法;
 *                         1、录入整数的方法;
 *                         2、录入小数的方法;
 *                         3、录入字符串的方法;
 *         3、成员位置定义集合,存储所有水果项(用来模拟数据库)
 *         4、在main方法中使用循环嵌套switch选择不同操作;
 *         5、业务逻辑方法实现;
 *                         初始化数据库;         init         方法                void        返回值
 *                         购买水果 ;                buy                方法                void        返回值
 *                         打印库存                kc                方法                void        返回值        查看库存一样
 *                         结账/打印小票        jz                方法                void        返回值
 *                         打折                        dz                方法                double        返回值
 *                         数据重置                cz                方法                void        返回值
 *                         打印超市流水        ls                方法                void        返回值
 *                         总账查询                zz                方法                void        返回值
 *                         删除水果                sc                方法                void        返回值
 *                         添加水果                tj                方法                void        返回值
 *                         修改水果项                xg                方法                void        返回值
 */        

import java.util.ArrayList;
import java.util.Scanner;
public class FruitsStore {
        //水果项集合
        static ArrayList<Fruits> list = new ArrayList<Fruits>();
        //创建流水集合,用于存放流水数据
        static ArrayList<Double> flowData = new ArrayList<Double>(); 
        //main方法;
        public static void main(String[] args) {
                init();
                
                //使用while(true)反复完成用户的操作,用户操作有多种,多种操作使用switch选择;
                while(true){
                        //打印提示语;
                        System.out.println();
                        System.out.println("        欢迎光临");
                        System.out.println("请输入的操作;");
                        System.out.println("1、购买水果;2、打印小票;");
                        System.out.println("3、流水查询;4、总账查询;");
                        System.out.println("5、添加新水果;6、删除水果;7、修改水果;8、查询库存;");
                        System.out.println("9、退出操作;");
                        System.out.println("");
                        
                        //用户录入
                        int choose = enterInt();
                        
                        switch(choose){
                        case 1://购买水果;
                                buy();
                                break;
                        case 2://结账及重置数据;
                                jz();
                                cz();
                                break;
                        case 3://查看流水;
                                ls();
                                break;
                        case 4://总账查询;
                                zz();
                                break;
                        case 5:
                                tj();
                                break;
                        case 6:
                                sc();
                                break;
                        case 7:
                                xg();
                                break;
                        case 8:
                                kc();
                                break;
                        case 9:
                                System.out.println("欢迎下次光临!");
                                cz();
                                break;
                        default:
                                System.out.println("您输入的数字有误,请重新输入!");
                                break;
                        }
                        
                }
        }
        //录入整数的方法
        public static int enterInt(){
                Scanner sc = new Scanner(System.in);
                return sc.nextInt();
        }
        //录入小数的方法;
        public static double enterDouble(){
                Scanner sc = new Scanner(System.in);
                return sc.nextDouble();
        }
        //录入字符串的方法;
        public static String enterString(){
                Scanner sc = new Scanner(System.in);
                return sc.next();
        }
        //初始化数据库
        public static void init(){
                
                Fruits a = new Fruits();
                a.name = "猕猴桃";
                a.id = 00321;
                a.price = 33.5;
                a.unit = "斤";
                
                Fruits b = new Fruits();
                b.name = "苹果";
                b.id = 00432;
                b.price = 20;
                b.unit = "斤";
                
                Fruits c = new Fruits();
                c.name = "火龙果";
                c.id = 10231;
                c.price = 28;
                c.unit = "斤";
                
                list.add(a);
                list.add(b);
                list.add(c);
        }
        //购买水果的方法
        public static void buy(){
                //打印库存
                kc();
                //提示打印信息
                System.out.println();
                System.out.println("---------------------------------------");
                System.out.println();
                System.out.println("        好消息年底大促销");
                System.out.println("---------------------------------------");
                System.out.println("        满300打9.5折");
                System.out.println("        满600打9折");
                System.out.println("        满1000打8折");
                System.out.println("        满1000且榴莲购买超过10个立减50元!!!!");
                System.out.println("        ...");
                System.out.println("---------------------------------------");
                //循环输入购买的编号及数量
                while(true){
                        //用户选择购买的水果编号
                        System.out.println("请输入您要购买的水果编号;如果输入0位退出!");
                        int aId = enterInt();
                        //判断是否有水果编号;如果输入0退出
                        //判断是否购买结束
                        if(        aId == 0){
                                return;
                        }
                        //判断是否有水果编号
                        //循环外定义一个变量,记录是否有数据;
                        boolean flag = false;
                        
                        //遍历集合一次对比
                        for (int i = 0; i < list.size(); i++) {
                                //获取当前水果项
                                Fruits a = list.get(i);
                                //对比水果id
                                if (aId == a.id){
                                        //提示输入数量
                                        System.out.println("请输入您要购买的数量;");
                                        int number = enterInt();
                                        //将用户输入的数量赋值给这个ID的水果项
                                        a.number = number;
                                        a.money = a.number*a.price;
                                        flag = true;
                                }
                        }
                        if (!flag){
                                System.out.println("您的输入有误;");
                        }
                }
        }
        //打印库存
        public static void kc(){
                System.out.println("        水果报价单");
                System.out.println("---------------------------------------");
                System.out.println("编号        名称                单价        单位");
                //遍历集合并打印
                for (int i = 0; i < list.size(); i++) {
                        //打印编号、名称、单价、单位
                        //获取当前水果项
                        Fruits a = list.get(i);
                        //打印当前水果数据
                        System.out.println(a.id+"        "+a.name+"                "+a.price+"        "+a.unit);
                }
                        
        }
        //结账/打印小票
        public static void jz(){
                //票头
                System.out.println("这是您的购物小票;");
                System.out.println("======================================================================");
                System.out.println("        欢迎光临");
                System.out.println();
                System.out.println("品名                                售价                数量                金额");
                System.out.println("----------------------------------------------------------------------");
                //票体
                //定义变量记录该用户购买的项数
                int totalNumber = 0;
                double totalMoney = 0 ;
                for (int i = 0; i < list.size(); i++) {
                        Fruits a = list.get(i);
                        
                        //数量不为0的打印;
                        if (a.number!=0){
                                System.out.println(a.name+"("+a.id+")                                "+a.price+"        *        "+a.number+"        "+a.money);
                                //叠加每个购买金额
                                totalMoney += a.money;
                                //购买项数
                                totalNumber++;
                        }
                }
                //票脚
                System.out.println("----------------------------------------------------------------------");
                System.out.println(totalNumber+"项水果");
                //打折
                System.out.println("总计;"+totalMoney+"元");
                double b = dz(totalMoney);
                System.out.println("打折后为您节省;"+(totalMoney-b)+"元");
                System.out.println("折后总价为;"+b);
                flowData.add(b);
                
        }
        //打折处理
        public static double dz(double totalMoney){
                if(totalMoney<300){
                        //System.out.println("<300");
                        return totalMoney;
                }else if(totalMoney>=300&&totalMoney<600){
                        //System.out.println("totalMoney>=300&&totalMoney<600");
                        return totalMoney*0.95;
                }else if(totalMoney>=600&&totalMoney<1000){
                        //System.out.println("totalMoney>=600&&totalMoney<1000");
                        return totalMoney*0.9;
                }else if(totalMoney>=1000){
                        //System.out.println("totalMoney>=1000");
                                if(list.get(0).number>10){
                                        System.out.println("list.get(0).number>10");
                                        return totalMoney*0.8-50;
                                }else {
                                        return totalMoney*0.8;
                                }
                }
                return totalMoney;
        }
        //数据重置
        public static void cz(){
                //遍历集合
                for (int i = 0; i < list.size(); i++) {
                        Fruits a = list.get(i);
                        a.number = 0;
                        a.money = 0;
                }
        }
        //流水方法
        public static void ls(){
                if (flowData.size()==0) {
                        System.out.println("今天没开张!");
                }else { 
                        
                        //遍历集合 ,产看流水 
                        for (int i = 0; i < flowData.size(); i++) {
                                //获取当前水果流水
                                double a = flowData.get(i);
                                System.out.println("第"+(i+1)+"笔交易金额为;"+a);
                        }
                }
        }
        //总账方法
        public static void zz(){
                //遍历流水
                double a =0;
                for (int j = 0; j < flowData.size(); j++) {
                        //将流水相加
                        double money =flowData.get(j);
                        //a = money +1
                        a  += money;
                }
                System.out.println("今天总收入为;"+a);
                
        }
        //删除方法
        public static void sc(){
                //删除水果;1、查看水果的编号;2、设置变量与水果编号一样;3、判断是否一样;4、删除该编号水果
                kc();
                System.out.println("请输入您删除水果的编号;");
                int a = enterInt();
                //遍历水果编号
                for (int i = 0; i < list.size(); i++) {
                        Fruits id = list.get(i);
                        if(a == id.id){
                                list.remove(i);
                                System.out.println("您选择的水果已删除!");
                        }
                }
                System.out.println("对不起,没有找到编号!");
        }
        //添加方法
        public static void tj(){
                //查看水果;
                kc();
                //添加输入信息
                System.out.println("请输入您要添加的水果编号");
                int aid = enterInt();
                //判断输入编号是否重复
                for (int i = 0; i < list.size(); i++) {
                        Fruits id = list.get(i);
                        //编号不重复直接向下运行;
                        if (aid==id.id){
                                System.out.println("您输入的id有误,请重新输入;");
                                return;//直接退出循环
                        }
                }
                System.out.println("请输入您要添加的水果名称");
                String aname = enterString();
                System.out.println("请输入您要添加的水果单价");
                double aprice = enterDouble();
                System.out.println("请输入您要添加的水果单位");
                String aunit = enterString();
                //将录入的内容放进集合里
                //需要一个变量接收数据
                Fruits b = new Fruits();
                b.id = aid;
                b.name = aname;
                b.price = aprice;
                b.unit = aunit;
                list.add(b);
                //提示用户输入成功
                System.out.println("添加水果成功!");
        }
        //修改方法
        public static void xg(){
                //产看水果项
                kc();
                //提示输入修改编号
                System.out.println("请输入您要改的水果编号;");
                //输入修改的编号
                int aid = enterInt();
                //判断修改的编号是否正确
                for (int i = 0; i < list.size(); i++) {
                        Fruits b = list.get(i);
                        if (aid == b.id){
                                System.out.println("请输入您要改的水果名称;");
                                String aname = enterString();
                                System.out.println("请输入您要改的水果单价;");
                                double aprice = enterDouble();
                                System.out.println("请输入您要改的水果单位;");
                                String aunit = enterString();
                                //存进集合内;
                                b.price = aprice;
                                b.name = aname;
                                b.unit = aunit;
                                return;
                        }
                }
                System.out.println("你修改的编号错误!");
                return;
        }
}

免费评分

参与人数 13吾爱币 +12 热心值 +12 收起 理由
XnLee + 1 + 1 用心讨论,共获提升!
不叹 + 1 + 1 谢谢,新人,Java学徒一枚,平白已经学了三个月,还是不怎么懂
蠢久久 + 1 + 1 我很赞同!
Jermey1994 + 1 + 1 用心讨论,共获提升!
左边路口yye + 1 + 1 热心回复!
nj19 + 1 + 1 我很赞同!
Bein + 1 用心讨论,共获提升!
caijinqi1998 + 1 + 1 我很赞同!
Yasin + 1 + 1 我很赞同!
1113519447 + 1 + 1 我很赞同!
99910369 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
ak7777 + 1 + 1 谢谢@Thanks!
soyiC + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| qlcyl110 发表于 2017-2-14 12:24
tmpsforjxp 发表于 2017-2-14 08:42
讲真,楼主这努力程度确实值得学习。当年我学C/C++的时候,第十三天还没到这水平。
再加吧劲儿。戒骄戒躁 ...

我没学过C/C++,非编程专业奔三人。入手Java就是没人告诉我学编程先学啥,就自己开始了!不后悔的选择。因为喜爱。准备用2年时间深入学习java在转别的学!
感谢您的支持!希望得到您的指点!再次说声谢谢!
奔跑的尖椒 发表于 2017-3-4 08:19
qlcyl110 发表于 2017-3-3 22:57
哦!是不是用个boolean类型的变量?随时可以退出购物?

比如说  
boolean b=true;

while(b){
switch语句块
     3  :
     
      b=false;退出购物
         
Quincy379 发表于 2017-2-14 08:08
gosling 发表于 2017-2-14 08:13
  高手闪人。请问你们都是自学吗?
韩臭臭cc 发表于 2017-2-14 08:16
我也想学
rongzhongli 发表于 2017-2-14 08:26 来自手机
怎么和c语言差不多
nddb 发表于 2017-2-14 08:34
感觉和C#代码一样的啊
tmpsforjxp 发表于 2017-2-14 08:39
nddb 发表于 2017-2-14 08:34
感觉和C#代码一样的啊

同属C语系
tmpsforjxp 发表于 2017-2-14 08:42
讲真,楼主这努力程度确实值得学习。当年我学C/C++的时候,第十三天还没到这水平。
再加吧劲儿。戒骄戒躁,认真学习。以后你再学新语言时,你会发现,这是你第1小时内就能搞定的事情。
真爱贤 发表于 2017-2-14 09:10
大概看了一下,写的不错。有以下2点建议:1.  水果类不要把里面的成员直接暴露,应该私有化,然后用getter和setter来对成员进行操作。  2. 方法名不要用没有意义的拼音或者缩写,要用英文。不然别人看着很费劲的!
鴿神 发表于 2017-2-14 09:20
加油加油!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 03:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表