A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.Scanner;

  2. /**
  3. * 超市管理系统 :
  4. *         购物 buy();
  5. *         结账 printTicket();
  6. *         查看流水 showFlow();
  7. *         查看总收入 showMoney4day();
  8. *
  9. * @author Administrator
  10. *
  11. */
  12. public class SuperMarket {

  13.         // 定义成员变量
  14.         // 少林寺信息
  15.         static String slsId = "090115"; // 编号
  16.         static String slsName = "少林寺酥饼核桃"; // 名字
  17.         static double slsPrice = 15.50; // 单价
  18.         static String slsUnit = "个"; // 单位
  19.         static int slsNumber = 0; // 购买的数量,之后用到
  20.         static double slsMoney = 0; // 金额,之后用到
  21.         // 尚康信息
  22.         static String skId = "090028";
  23.         static String skName = "精品尚康杂粮原味牡丹饼";
  24.         static double skPrice = 16.00;
  25.         static String skUnit = "个";
  26.         static int skNumber = 0;
  27.         static double skMoney = 0;

  28.         static boolean flag = true; // 定义flag,作为是否退出程序的标志

  29.         // 定义一个数组用来存储每次结账成功后保存的消费值
  30.         static double[] flowData = new double[100];
  31.         static int index = 0; // 定义一个索引作为标识符,判断是否达到100次

  32.         /**
  33.          * @param args
  34.          */
  35.         public static void main(String[] args) {
  36.                 // 以此实现所需的几个功能,调用对应的几个方法
  37.                 while (flag) {
  38.                         System.out.println("请输入您要进行的操作:");
  39.                         System.out.println("                        1、开始购物");
  40.                         System.out.println("                        2、结账");
  41.                         System.out.println("                        3、查看流水");
  42.                         System.out.println("                        4、查看总账单");
  43.                         System.out.println("                        5、退出");
  44.                         System.out.println();
  45.                         int choose = getNumber();
  46.                         // 使用switch进行不同的选择对应的功能
  47.                         switch (choose) {
  48.                         case 1:
  49.                                 buy();
  50.                                 break;
  51.                         case 2:
  52.                                 printTicket();
  53.                                 break;
  54.                         case 3:
  55.                                 showFlow();
  56.                                 break;
  57.                         case 4:
  58.                                 showMoney4day();
  59.                                 break;
  60.                         case 5:
  61.                                 // 清空信息
  62.                                 slsNumber = 0;
  63.                                 skNumber = 0;
  64.                                 slsMoney = 0;
  65.                                 skMoney = 0;
  66.                                 flag = false;                //设置标识符为FALSE不再进行while循环
  67.                                 break;
  68.                         default:
  69.                                 System.out.println("请输入正确的数字:");
  70.                                 break;
  71.                         }
  72.                 }
  73.         }

  74.         // 购物的方法
  75.         // 购物的方法
  76.         public static void buy() {
  77.                 /*
  78.                  * 通过变量打印商品报价单
  79.                  */
  80.                 // 判断人数是否已经达到100,如果达到100则跳出方法
  81.                 if (index >= 100) {
  82.                         System.out.println("抱歉,今天商品售罄,请明天早点儿来");
  83.                         return;
  84.                 }
  85.                 // 打印输出
  86.                 System.out.println("                        欢迎光临");
  87.                 System.out.println();
  88.                 System.out
  89.                                 .println("=============================================================");
  90.                 System.out.println();
  91.                 System.out.println("商品编号        商品名称                 商品单价              计价单位");
  92.                 System.out.println(slsId + "       " + slsName + "                 "
  93.                                 + slsPrice + "              " + slsUnit);
  94.                 System.out.println(skId + "       " + skName + "       " + skPrice
  95.                                 + "           " + skUnit);

  96.                 /*
  97.                  * 让用户输入每种商品的购买数量
  98.                  */

  99.                 // 少林寺数量
  100.                 System.out.println("请输入您要购买的" + slsName + "的数量:");
  101.                 System.out.println();
  102.                 slsNumber = getNumber(); // 得到用户输入值
  103.                 // 尚康数量
  104.                 System.out.println("请输入您要购买的" + skName + "的数量:");
  105.                 System.out.println();
  106.                 skNumber = getNumber();
  107.         }

  108.         // 结账的方法,打印小票
  109.         public static void printTicket() {
  110.                 /*
  111.                  * 计算汇总变量 商品项数 itemNumber; 总件数 totalItemsNumber; 总金额 totalMoney;
  112.                  */
  113.                 slsMoney = slsPrice * slsNumber; // 计算少林寺金额
  114.                 skMoney = skPrice * skNumber; // 计算尚康金额
  115.                 int itemNumber = 2;
  116.                 int totalItemsNumber = slsNumber + skNumber;
  117.                 double totalMoney = slsMoney + skMoney; // 计算总金额

  118.                 // 利用if控制显示的字符串,如果大于7个字就只显示7个
  119.                 if (slsName.length() > 7)
  120.                         slsName = slsName.substring(0, 7) + "...";
  121.                 if (skName.length() > 7)
  122.                         skName = skName.substring(0, 7) + "...";

  123.                 /*
  124.                  * 如果商品总价超过300元,打95折 如果商品总价超过600元,打9折 如果商品总价超过1000元,总价打8折
  125.                  * 如果商品总价超过1000元,并且少林寺酥饼核桃购买超过30份, 则总价打8折后,立减20
  126.                  */
  127.                 double afterMoney = totalMoney; // 初始化打折后的总金额
  128.                 if (totalMoney >= 300 && totalMoney < 600) {
  129.                         afterMoney = afterMoney * 0.95; // 如果商品总价超过300元,打95折
  130.                 }
  131.                 if (totalMoney >= 600 && totalMoney < 1000) {
  132.                         afterMoney = afterMoney * 0.9; // 如果商品总价超过600元,打9折
  133.                 }
  134.                 if (totalMoney >= 1000) {
  135.                         afterMoney = totalMoney * 0.8; // 如果商品总价超过1000元,总价打8折
  136.                         if (slsNumber >= 30) {
  137.                                 afterMoney = afterMoney - 20; // 如果商品总价超过1000元,并且少林寺酥饼核桃购买超过30份,
  138.                                                                                                 // 则总价打8折后,立减20
  139.                         }
  140.                 }
  141.                 /*
  142.                  * 打印购物小票
  143.                  */
  144.                 // 票头
  145.                 // 直接字符串常量打印
  146.                 System.out.println("                欢  迎  光  临        ");
  147.                 System.out.println();
  148.                 System.out.println("          品名                 售价        数量        金额        ");
  149.                 System.out
  150.                                 .println("------------------------------------------------------");
  151.                 // 票体
  152.                 System.out.println(" " + slsName + "(" + slsId + ")    " + slsPrice
  153.                                 + " * " + slsNumber + " = " + slsMoney);
  154.                 System.out.println(" " + skName + "(" + skId + ") " + skPrice + " * "
  155.                                 + skNumber + " = " + skMoney);
  156.                 // 票脚
  157.                 System.out.println(" " + itemNumber + "项商品   共计:" + totalItemsNumber
  158.                                 + "件");
  159.                 System.out.println(" 总计:" + (int) afterMoney + "元");
  160.                 String tip_o = " 恭喜您!这次打折活动您节约了" + (int) (totalMoney - afterMoney)
  161.                                 + "元";
  162.                 String tip_n = " 您好,您不具备这次打折活动的优惠条件";
  163.                 String tip = totalMoney > afterMoney ? tip_o : tip_n;
  164.                 System.out.println(tip);
  165.                 System.out.println("   凭此小票换发票");

  166.                 // 添加流水信息
  167.                 flowData[index] = afterMoney;
  168.                 index++;
  169.                 // 清空信息
  170.                 slsNumber = 0;
  171.                 skNumber = 0;
  172.                 slsMoney = 0;
  173.                 skMoney = 0;
  174.         }

  175.         // 查看流水
  176.         public static void showFlow() {
  177.                 for (int i = 0; i < index; i++) {
  178.                         System.out.println(flowData[i]);
  179.                 }
  180.         }

  181.         // 查看总账单的方法
  182.         public static void showMoney4day() {
  183.                 double sum = 0;
  184.                 for (int i = 0; i < index; i++) {
  185.                         sum += flowData[i];
  186.                 }
  187.                 System.out.println("今天的总账单为:" + sum);
  188.         }

  189.         // 键盘录入的方法
  190.         // 键盘录入的方法
  191.         public static int getNumber() {
  192.                 Scanner sc = new Scanner(System.in);
  193.                 int number = sc.nextInt();
  194.                 return number;
  195.         }
  196. }
复制代码


9 个回复

倒序浏览
难为了 记得是开学后没几天就要弄的一个案例
回复 使用道具 举报
这老师讲完后总结的。
回复 使用道具 举报
是ee基础3期的么
回复 使用道具 举报
278008379 来自手机 中级黑马 2016-3-5 01:27:39
报纸
这是基础班的内容?
回复 使用道具 举报
作为一个准备上基础班的屌丝,运行了一下,666
回复 使用道具 举报
278008379 发表于 2016-3-5 01:27
这是基础班的内容?

是的。。。。
回复 使用道具 举报

恩。哈哈,,,
回复 使用道具 举报
你是黑马基础班的?
回复 使用道具 举报
好厉害,这么长的代码,作为菜鸟还是觉得你很赞的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马