zoukankan      html  css  js  c++  java
  • 2017年3月15号课堂笔记

    2017年3月15号 晴 空气质量:中度污染

    主要内容:

    第一部分项目:吃货联盟讲解

    一、吃货联盟项目

    1、老师代码:

    public class OrderMsg {

    public static void main(String[] args) throws Exception {
    /**
    * 订餐人姓名、选择菜品、送餐时间、送餐地址、订单状态、总金额
    * 01.创建对应的数组
    * 02.数组的初始化
    * 03.显示菜单
    * 04.根据用户的选择进去指定的模块
    */
    String[] names = new String[6]; // 订餐人姓名
    String[] dishMsgs = new String[6];// 选择菜品
    int[] numbers = new int[6];// 菜品份数
    Date[] dates = new Date[6]; // 送餐时间
    String[] times = new String[6]; // 送餐时间对应的String类型的日期
    String[] addresses = new String[6];// 送餐地址
    int[] states = new int[6];// 订单状态 0:已经预定 1:已经完成
    double[] sumPrices = new double[6];// 总金额

    // 初始化数据
    names[0] = "小黑";
    dishMsgs[0] = "八仙过海";
    numbers[0] = 3;
    dates[0] = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
    times[0] = sdf.format(dates[0]);
    addresses[0] = "天堂路1号院";
    states[0] = 1;
    sumPrices[0] = 5000;

    names[1] = "小白";
    dishMsgs[1] = "佛跳墙";
    numbers[1] = 5;
    dates[1] = new Date();
    times[1] = sdf.format(dates[1]);
    addresses[1] = "地域路2号院";
    states[1] = 1;
    sumPrices[1] = 500;

    // 初始化用户可以选择的菜
    String[] dishNames = { "八仙过海", "佛跳墙", "松鼠鱼", "红烧带鱼", "时令蔬菜", "辣土豆丝" };
    // 定义每个菜的单价
    double[] prices = { 88, 78.8, 58.0, 28.5, 50, 80 };
    // 定义点赞 的数组
    int[] praiseNums = new int[6];
    praiseNums[0] = 5;
    praiseNums[1] = 10;

    System.out.println("***********欢迎进入《吃货联盟》点餐系统***********");
    Scanner scanner = new Scanner(System.in);
    int num = -1; // 如果用户输入的是0 默认返回主菜单
    boolean isExit = false;// 定义一个标记 来标识 用户是否退出系统 true:退出
    do {
    // 显示菜单供用户选择
    System.out.println("当前系统时间是:" + sdf.format(new Date()));
    System.out.println("1:我要订餐");
    System.out.println("2:查看餐袋");
    System.out.println("3:签收订单");
    System.out.println("4:删除订单");
    System.out.println("5:我要点赞");
    System.out.println("6:退出系统");
    System.out.println("**********************");
    System.out.println("请选择:");
    int choose = scanner.nextInt(); // 根据用户的选择执行不同的功能
    switch (choose) {
    case 1:
    System.out.println("************我要订餐************");
    // 定义一个标记判断餐带是否已满
    boolean addFlag = false;
    for (int i = 0; i < names.length; i++) { // 订餐人的集合
    if (names[i] == null) {
    addFlag = true;
    System.out.println("请输入订餐人的姓名:");
    names[i] = scanner.next(); // 获取订餐人的姓名
    System.out.println("您可以选择下列的菜品:");
    System.out.println("序号 菜名 单价 点赞数");
    for (int j = 0; j < dishNames.length; j++) { // 遍历菜品
    String praiseNum = (praiseNums[j] > 0) ? praiseNums[j]
    + "个赞"
    : "";
    System.out.println(j + 1 + " " + dishNames[j]
    + " " + prices[j] + " "
    + praiseNum);
    }
    // 用户开始点菜
    System.out.println("请您选择菜品的编号:");
    int chooseDishName = scanner.nextInt();
    System.out.println("请您输入点餐的份数:");
    int number = scanner.nextInt();
    System.out.println("请您输入送餐的地址:");
    String address = scanner.next();
    System.out.println("请您输入送餐的时间:(时:分:秒)");
    String time = scanner.next();

    /**
    * 根据用户的餐费 判断是否收取送餐费 大于60免送餐费
    * 01.获取用户点的菜的单价
    * 02.获取总金额
    * 03.判断
    */
    double sumPrice = prices[chooseDishName - 1] * number;
    double price = (sumPrice > 60) ? 0 : 6;
    System.out.println("恭喜您订餐成功!");
    System.out.println("您定的菜品是:"
    + dishNames[chooseDishName - 1] + " " + number
    + "份");
    System.out.print("餐费:" + sumPrice);
    System.out.print(" 送餐费:" + price);
    System.out.println(" 总费用:" + (price + sumPrice));
    // 向数组中增加数据
    times[i] = sdf.format(sdf.parse(time)); // 时间
    addresses[i] = address; // 地址
    sumPrices[i] = (sumPrice + price); // 总金额
    dishMsgs[i] = dishNames[chooseDishName - 1]; // 定的菜品
    states[i] = 0; // 订餐的状态
    numbers[i] = number; // 份数
    break;
    }
    }
    if (!addFlag) {// 餐袋已经满了
    System.out.println("餐袋已经满了");
    }
    break;
    case 2:
    System.out.println("************查看餐袋************");
    /**
    * 显示
    * 编号 订餐人 菜品(份数) 送餐时间 送餐地址 总金额 状态
    */
    System.out
    .println("编号 订餐人 菜品(份数) 送餐时间 送餐地址 总金额 状态 点赞数量");
    for (int i = 0; i < names.length; i++) {
    if (names[i] != null) { // 有人订餐 的显示
    String state = (states[i] == 0) ? "已经预定" : "已经完成"; // 获取状态
    String time = times[i]; // 获取时间
    String sumPrice = sumPrices[i] + "元"; // 总金额
    String address = addresses[i]; // 地址
    String dishMsg = dishMsgs[i]; // 菜品
    int count = numbers[i];
    System.out.println(i + 1 + " " + names[i] + " "
    + dishMsg + "(" + count + ")" + " " + time
    + " " + address + " " + sumPrice
    + " " + state + " " + praiseNums[i]);
    }
    }
    break;
    case 3:
    System.out.println("************签收订单************");
    /**
    * 01.状态为已经完成!不需要签收
    * 02.状态为已经预定!需要签收
    * 03.没有指定的订单,不能签收
    */
    System.out.println("请您输入需要签收的订单编号:");
    int sign = scanner.nextInt();
    // 定义一个标记 来判断订单是否被签收
    int flag = 0;
    for (int i = 0; i < names.length; i++) {
    if (names[i] != null && states[i] == 0) {// 01.有订单 可以签收
    states[i] = 1;// 改变状态
    flag = 1;
    break; // 必须退出 否则 后续的都会变成签收
    } else if (names[i] != null && states[i] == 1) {// 02.有订单
    flag = 2;
    }
    }
    if (flag == 1) {
    System.out.println("订单已经签收!");
    } else if (flag == 2) {
    System.out.println("订单不需要重复签收!");
    } else {
    System.out.println("没有指定的订单!请您核实!");
    }

    break;
    case 4:
    System.out.println("************删除订单************");
    System.out.println("请您输入需要删除的订单编号:");
    int delNum = scanner.nextInt();
    // 定义一个标记 来判断订单是否被签收以及是否存在
    int delFlag = 0;
    for (int i = 0; i < names.length; i++) {
    if (names[i] != null && states[delNum - 1] == 1) { // 可以删除
    // 有指定的订单
    // 状态是已经完成
    // 删除位置 之后的所有元素 依次前移
    for (int j = delNum - 1; j < names.length - 1; j++) {
    names[j] = names[j + 1]; // 订餐人
    dishMsgs[j] = dishMsgs[j + 1];// 菜品
    times[j] = times[j + 1];// 时间
    addresses[j] = addresses[j + 1];// 地址
    states[j] = states[j + 1];// 状态
    numbers[j] = numbers[j + 1];// 份数
    }
    delFlag = 1;
    break;
    } else if (names[i] != null && states[i] == 0) { // 订单还没有签收
    delFlag = 2;
    }
    }
    if (delFlag == 1) {
    System.out.println("订单已经被删除");
    } else if (delFlag == 2) {
    System.out.println("订单还没有签收 不允许删除!");
    } else {
    System.out.println("没有找到指定的订单!");
    }
    break;
    case 5:
    System.out.println("************我要点赞***************");
    System.out.println("编号 菜名 价格");
    for (int i = 0; i < dishNames.length; i++) { // 遍历所有的菜名
    String price = prices[i] + "元"; // 获取价格
    String name = dishNames[i];
    System.out.println(i + 1 + " " + name + " "
    + price);
    }
    System.out.println("请您输入点赞的菜品编号:");
    int chooseNum = scanner.nextInt();
    praiseNums[chooseNum - 1]++;// 点赞数加+1
    System.out.println("谢谢参与!点赞成功!");
    break;
    case 6:
    // 退出系统
    isExit = true;
    break;
    default:
    // 退出系统
    isExit = true;
    break;
    }
    if (!isExit) { // 默认这是不退出
    System.out.println("输入0返回主菜单!");
    num = scanner.nextInt();
    } else {
    break; // 退出系统
    }

    } while (num == 0);
    System.out.println("谢谢您的光临!!!!!");
    }
    }

    2、自己代码:

    package cn.bdqn.test;

    import java.util.Scanner;

    /**
    *
    *<P>Title<P>FoodieUnion
    *<P>Description<P>
    *我要订餐
    *查看餐袋
    *签收订单
    *删除订单
    *我要点赞
    *退出系统
    *
    *需要的数据:
    *菜品名称
    *单价
    *点赞数
    *订餐人
    *订餐份数
    *订餐时间
    *送餐地址
    *状态
    *价格
    *
    * @author alex
    * @date 2017-3-13上午11:56:13
    * You can either travel or read,but either your body or soul must be on the way
    */
    public class FoodieUnionFirstVision {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    /*
    * 备用菜品: 佛跳墙 ; 回锅肉,麻婆豆腐; 葱烧海参,油焖大虾 ; 清炖蟹粉狮子头,大煮干丝; 豉汁蒸排骨,菠萝咕噜肉;
    */
    // 菜品名称
    String[] dishNames = new String[5];
    // 单价
    double[] prices = new double[5];
    // 点赞数
    int[] praises = new int[5];
    // 订餐人姓名
    String[] foodieNames = new String[5];
    // 预定菜品名称
    String[] bookingNames = new String[5];
    // 订餐份数
    int[] numbers = new int[5];
    // 订餐时间(时间格式后期加)
    int[] times = new int[5];
    // 送餐地址
    String[] addresses = new String[5];
    // 送餐状态:0为预定,1为完成配送
    int[] states = new int[5];
    // 订单餐费=菜品价格*订餐份数
    double pays[] = new double[5];
    // 送餐费用(订单总价小于100元,另外收取送餐费6元)
    double deliverPays[] = new double[5];
    // 订单总价:订单总价=菜品价格*订餐份数+送餐费用
    double[] totals = new double[5];

    // 标记是否退出菜单:true为想退出,false不退出;
    boolean flag = false;
    // 标记用户是否再次进入吃货联盟主菜单进行操作:Y为进入;N为不进入;(不区分大小写IgnoreCase)
    String result = "N";
    // 标记要加入订餐信息的位置
    int index = -1;

    // 初始化3个菜品信息:菜品名称 单价 点赞数
    dishNames[0] = "佛跳墙";
    dishNames[1] = "回锅肉";
    dishNames[2] = "大煮干丝";
    dishNames[3] = "油焖大虾";
    dishNames[4] = "菠萝咕噜肉";
    prices[0] = 658;
    prices[1] = 58;
    prices[2] = 39;
    prices[3] = 98;
    prices[4] = 66;
    praises[0] = 27;
    praises[1] = 165;
    praises[2] = 93;
    praises[3] = 50;
    praises[4] = 34;
    // 初始化2条订单信息:订餐人;所订餐及份数;送餐时间;送餐地址;状态;价格
    foodieNames[0] = "土豪";
    foodieNames[1] = "老百姓";
    bookingNames[0] = "佛跳墙";
    bookingNames[1] = "回锅肉";
    numbers[0] = 10;
    numbers[1] = 1;
    times[0] = 15;
    times[1] = 13;
    addresses[0] = "北京市朝阳区紫玉东路1号";
    addresses[1] = "北京市海淀区北大青鸟五道口校区";
    states[0] = 0;
    states[1] = 1;
    totals[0] = 6580;
    totals[1] = 68;
    do {
    // 主菜单设定
    System.out.println("***************欢迎使用吃货联盟系统订餐****************");
    System.out.println("1、我要订餐");
    System.out.println("2、查看餐袋");
    System.out.println("3、签收订单");
    System.out.println("4、删除订单");
    System.out.println("5、我要点赞");
    System.out.println("6、退出系统");
    System.out.println("请选择相应的操作:");
    int choose = input.nextInt();
    switch (choose) {
    case 1:
    // 我要订餐:(订餐人;所订餐及份数;送餐时间;送餐地址;状态;价格)
    System.out.println("****************我要订餐******************");
    // 1)加入订餐人姓名
    System.out.println("请您输入订餐人的姓名:");
    String foodieName = input.next();
    boolean flag1 = false;// 标识能否加入订餐人姓名 false:不能加入,true:能加入
    for (int i = 0; i < foodieNames.length; i++) {
    if (foodieNames[i] == null) {
    foodieNames[i] = foodieName;
    index = i;// 标记位置
    flag1 = true;
    break;
    }
    }
    if (flag1) {
    foodieNames[index] = foodieName;// 给标记处赋值订餐人姓名
    } else {
    System.out.println("很遗憾!今日吃货订餐额度已满,欢迎您明天再来!");
    break;
    }
    // 2)输出初始化3个菜品信息:序号 菜品名称 单价 点赞数
    System.out.println("序号 菜品名称 单价 点赞数");
    for (int i = 0; i <= 2; i++) {
    System.out.print((i + 1) + " " + dishNames[i] + " "
    + prices[i] + " " + praises[i] + " ");
    }

    // 3)加入预定菜品的名字
    System.out.println("请您输入想要预定菜品的编号:");
    int num = input.nextInt();// 用变量num接收预定菜品编号
    if (num < 1 || num > 3) {
    System.out.println("您的输入超出规定范围(1~3),请重新输入预定菜品编号:");
    num = input.nextInt();
    } else {
    bookingNames[index] = dishNames[(num - 1)];// 给标记处赋值预定菜品名称
    }

    // 4)订餐份数(每人最多预定10份)
    System.out.println("请您输入想要预定菜品的份数:");
    int number = input.nextInt();
    if (number < 1 || number > 10) {// 判断(1~10)
    System.out.println("输入次数超出规定范围(1~10份),请重新输入预定菜品份数:");
    number = input.nextInt();
    } else {
    numbers[index] = number;// 给标记处赋值订餐份数
    }
    // 5)预约送餐时间
    System.out.println("请您输入预约送餐的时间(格式为小时(24小时制,10点到21点之间)):例如15:");// 改时间格式,以后再完善
    int time = input.nextInt();
    // 判断小时(10~21)
    while (time < 10 || time > 21) {
    System.out.println("输入时间超出规定范围(10点到21点之间),请重新输入预定菜品份数:");
    time = input.nextInt();
    }
    times[index] = time;

    // 6)送餐地址
    System.out.println("请您输入送餐地址:");
    String address = input.next();
    addresses[index] = address;// 给标记处赋值送餐地址
    // 7)订单状态:送餐状态:0为预定,1为完成配送
    states[index] = 0;// 给标记处赋值订单状态(默认为预定状态)
    // 8)计算订单总价:订单总价=菜品价格*订餐份数+送餐费用(订单总价小于100元,另外收取送餐费6元)
    pays[index] = prices[(num - 1)] * numbers[index];
    if (pays[index] < 100) {// 订单总价小于100元,另外收取送餐费6元
    deliverPays[index] = 6;
    } else {
    deliverPays[index] = 0;
    }
    totals[index] = pays[index] + deliverPays[index];
    // 统一输出信息
    System.out.println("订餐成功!");
    System.out.println("您预定的是:" + bookingNames[index]
    + numbers[index] + "份");
    System.out.println("送餐时间:" + times[index] + "点");
    System.out.println("送餐地址:" + addresses[index]);
    System.out.println("餐费:" + pays[index] + "元,送餐费:"
    + deliverPays[index] + "元,总计:" + totals[index] + "元");
    break;
    case 2:
    // 查看餐袋(订餐人 预定菜品 订餐份数 送餐时间 送餐地址 订单状态 订单总价)

    System.out.println("****************查看餐袋****************");
    System.out
    .println("序号 订餐人 预订菜品 订餐份数 送餐时间 送餐地址 订单状态 订单总价");
    for (int i = 0; i < foodieNames.length; i++) {
    if (foodieNames[i] != null) {
    index = i;// 是否需要重新定义一个变量??
    String state = (states[index] == 0) ? "已预订" : "已签收";

    System.out.println((index + 1)
    + " "// 序号为index+1
    + foodieNames[index] + " "
    + bookingNames[index] + " " + numbers[index]
    + "份 " + times[index] + "点 "
    + addresses[index] + " " + state + " "
    + totals[index] + "元");
    }
    }
    break;
    case 3:
    // 签收订单:送餐后,将用户签收订单状态修改为“已完成”

    System.out.println("****************签收订单*****************");
    System.out.println("请选择要签收的订单序号:");
    int want = input.nextInt();// 接收用户输入的订单序号,index=want-1
    for (int i = 0; i < foodieNames.length; i++) {
    if (foodieNames[(want - 1)] == null) {// 判断结果:找不到订单
    System.out.println("对不起,没有您输入的订单信息,无法签收!");
    break;
    } else if (foodieNames[(want - 1)]// 判断结果:订单已签收
    .equalsIgnoreCase(foodieNames[i]) && states[i] == 1) {
    System.out.println("对不起,该订单已完成签收,无需再次签收!");
    break;
    } else if (foodieNames[(want - 1)]// 判断结果:订单未签收
    .equalsIgnoreCase(foodieNames[i]) && states[i] == 0) {
    states[i] = 1;
    System.out.println("您已成功签收" + want + "号订单,谢谢合作!");
    }
    }
    break;
    case 4:
    // 删除订单:
    System.out.println("****************删除订单*****************");
    System.out.println("请选择要删除的订单序号:");
    int delete = input.nextInt();
    // 定义一个标记,来判断订单是否被签收以及是否存在
    int deleteFlag = -1;
    for (int i = 0; i < foodieNames.length;) {
    if (foodieNames[delete - 1] != null
    && states[delete - 1] == 1) {// 有订单,可以删除
    for (int j = delete - 1; j < foodieNames.length - 1; j++) {// 下标为delete-1
    // 从删除数据位置+1开始,所有元素整体前移
    foodieNames[j] = foodieNames[j + 1];
    bookingNames[j] = bookingNames[j + 1];
    numbers[j] = numbers[j + 1];
    times[j] = times[j + 1];
    addresses[j] = addresses[j + 1];
    states[j] = states[j + 1];
    totals[j] = totals[j + 1];
    }
    // 把最后一个位置赋值为空
    foodieNames[foodieNames.length - 1] = null;
    bookingNames[foodieNames.length - 1] = null;
    numbers[foodieNames.length - 1] = 0;
    times[foodieNames.length - 1] = 0;
    addresses[foodieNames.length - 1] = null;
    states[foodieNames.length - 1] = -1;
    totals[foodieNames.length - 1] = 0;
    deleteFlag = 1;
    } else if (foodieNames[delete - 1] != null
    && states[delete - 1] == 0) {// 有订单,未签收不能删除
    deleteFlag = 2;
    }
    if (deleteFlag == 1) {
    System.out.println("删除订单成功!");
    break;
    } else if (deleteFlag == 2) {
    System.out.println("对不起,该订单尚未完成签收,无法删除!");
    break;
    } else {// 没有订单
    System.out.println("对不起,没有您输入的订单信息,无法删除!");
    break;
    }
    }
    break;
    case 5:
    // 我要点赞
    System.out.println("****************我要点赞*****************");
    System.out.println("序号 菜品名称 单价 点赞数");
    for (int i = 0; i < dishNames.length; i++) {// 遍历所有菜名
    System.out.println(i + 1 + " " + dishNames[i] + " "
    + prices[i] + "元 " + praises[i]);
    }
    System.out.println("请选择您要点赞的菜品序号:");
    int like = input.nextInt();
    for (int i = 0; i < dishNames.length; i++) {
    if (dishNames[like - 1] == null) {
    System.out.println("对不起,没有您输入的菜品序号,无法点赞");
    } else if (dishNames[like - 1].equals(dishNames[i])) {
    praises[like - 1]++;
    System.out.println("点赞成功,感谢您对吃货联盟的肯定和支持!");
    }
    }
    break;
    case 6:
    // 退出系统
    flag = true;
    System.out.println("您已退出吃货联盟系统!");
    break;
    default:
    // 输入了要求以外的数字,我们默认也是退出
    System.out.println("输入有误,您已退出吃货联盟系统!");
    flag = true;
    break;
    }
    if (flag) {
    // 不再进入吃货联盟,跳出
    break;
    } else {
    System.out.println("***************************************");
    System.out.println("是否返回吃货联盟主菜单继续操作?(Y/N):");// 判断是否继续进入吃货联盟操作
    result = input.next();
    }
    } while (result.equalsIgnoreCase("y")); // 继续进入吃货联盟操作
    System.out.println("谢谢您使用吃货联盟订餐,欢迎下次惠顾!");
    }
    }

    // 用菜名去查找
    // boolean flag2 = false;// 标识能否找到预定菜品的名字false:不能找到,true:能找到
    // for (int i = 0; i < dishNames.length; i++) {
    // if (dishNames[i] == bookingName) {
    // flag2 = true;
    // break;
    // }
    // }
    // if (flag2) {// 找到的话,给标记位置的预定菜品名字赋值
    // bookingNames[index] = bookingName;
    // } else {// 找不到,给客户提示
    // System.out.println("抱歉!您想要预定的菜品不在本系统菜单中!");
    // break;
    // }

    二、作业

    1、三大特性纸版笔记:记录一下三大特性的重要概念,周五交老师。记考勤。

    2、做题

    3、视频看完多态

    三、考试

    2017.03.15
    15:03 开始,15:34结束;答题时间:31 分钟;检查时间:2 分钟;
    成绩:88 分
    有几道题是答完后面的答案又去前面验证了题目。类和对象开始有一定难度,要用心去学!

    四、视频多看,还有一个月大数据开班,努力赶一下进度!

    五、老师辛苦了!

  • 相关阅读:
    git 常用命令
    SVG Sprite技术介绍
    添加样式(后台给字段note(left,height-auto ))
    assign,copy,retain,readonly,readwrite之间区别
    遍历(字典的遍历)
    Block
    loadView、viewDidLoad及viewDidUnload的关系
    IOS单例模式(Singleton单粒模式)
    模仿,后台
    仿站 通用套路
  • 原文地址:https://www.cnblogs.com/wsnedved2017/p/6554265.html
Copyright © 2011-2022 走看看