首页 > 其他分享 >菜单系列及考试分析

菜单系列及考试分析

时间:2023-05-17 23:12:42浏览次数:36  
标签:输出 菜单 系列 空格 特色菜 table 方法 考试

一、前言

大一下学期开始,我们开始接触java这门语言,Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的形式和感觉,但它要比C++语言更易于使用,而且在编程时彻底采用了一种以对象为导向的方式。

  Pta作业已经写了五次,除了第一次题目难度比较平缓,后面的数次难度激增,我也只有第一次全部写完pta的所有题目,后面就没有拿到过满分。总体来说,最近两次pta的主要知识点还是在设计类和学习java语言,以及用面向对象的思维方式。Java面向对象比c++更模块化,思维方式也不一样。对只接触过一点java语言的我们还是很有挑战的。最近两次pta作业虽然题类似,但是难度很大,两次作业都有菜单的设计,有很多类的调用,十分复杂,还需要使用很多函数,要有继承和传参,对我们来说确实十分困难。

 

二、设计与分析

7-4.菜单4

分析:

在原菜单基础上加入了异常情况处理,包括时间是否合理、菜谱输入是否合理、订单信息是否合理等输入内容的判断。并根据不同的异常情况输出相应的错误提醒。同时增加特色菜属性,特色菜与普通菜的输入不同,折扣情况不同。订单总价要求四舍五入。需要在每次输入时判段每条输入信息属于哪一部分,订单或者菜品等,分类之后继续先判断每条信息的合理性,若合理则录入相应信息,若不合理则输出相应报错。本次没有添加新的类,但是在原先每个类以及主类里加入了很多判断语句和执行语句分支。使程序复杂度骤升,不便于维护。

 

首先在Main方法里先以空格为标识分割字符串,在永真循环里用if ——else if语句依次判断第一个字符串是否为“end”、“table”、数字或者汉字,分别对应结束,桌号识别,订单,菜谱功能,再依次判断输入内容是否正确。

在Main类里加入了最基础的错误输入方法,主要运用到正则表达式依次考虑进所有的输入情况,同时写了一个判断是否为数字的方法如图:

 

在添加菜品的时候加入了特色菜的判断和错误输出

修改了计算总价的方法,加入了特色菜的折扣分支:

 

7-5.菜单5

分析:

与菜单4同属于菜单3的分支,较菜单3添加了口味度内容。口味度为特色菜特有,分三种菜系。在录入菜单的时候输入特色菜同时要输入菜系。在点菜时如果点到特色菜则需要输入口味度。输出时根据订单里特色菜的菜系算出各口味的平均值并分别输出,若没有相应菜系则不输出对应口味。table+英文空格+桌号+:+英文空格+当前桌的原始总价+英文空格+当前桌的计算折扣后总价+英文空格+"川菜"+数量+辣度+英文空格+"晋菜"+数量+酸度+英文空格+"浙菜"+数量+甜度。如果整桌菜没有特色菜,则只输出table的基本信息,格式如下:table+英文空格+桌号+:+英文空格+当前桌的原始总价+英文空格+当前桌的计算折扣后总价+英文空格。例如:table 1: 60 36 川菜 2 爆辣 浙菜 1 微甜。另外加入了用户信息包括:名字,电话号码,支付总价。

 

在此程序中需要计算特色菜的份数,我将此功能以及计算口味度总和一并写入了点菜的订单方法里,然后在用口味度总和除以特色菜份数,就能得到各菜系的平均口味度了。

 

输出信息时,不仅要输出各菜系的口味度平均值,还要根据平均值输出口味,以及用户信息

table 1: 113113川菜1稍辣晋菜4稍酸浙菜1甜table 2: 168 118川菜稍辣晋菜2微酸

table 3: 103 73川菜1爆辣晋菜1稍酸浙菜3微甜jerry 18100334566 191

tom 13605054400 113

我将输出信息,计算总价两个功能写在计算价格的方法里。在调用该方法的时候,即计算了价格,同时也输出了味道。虽然一个方法里写入两个功能容易混乱,但是可以一并实现。

 

其中time是新添加的类,为获取时间并判断是否营业以及计算折扣。用到java自带的calender包(用于计算日期是星期几)。

 

 

 

 

踩坑心得:

    菜单系列的类结构很复杂,如类图所示,订单类包含每一道记录,是组合关系。菜单又包含菜品上每一道记录。录入菜单的时候要区分是否特色菜,用boolean T来判断。在点菜的时候也需要判断特色菜菜系,而且折扣也不同。调用方法的时候传参是一个难点,有时候如果需要传入的数据太多,可以不传属性,直接传入整个类,如menu。

 

主要困难及改进建议:

    菜单系列的属性众多方法复杂,调用的时候容易出问题建议把各功能的方法名不要重复,属性也都区分开。

 

 

期中考试:

  • 圆类设计

判断输入半径数据合理,否则输出“wrong format”。计算圆面积并输出。代码如下

  • 矩形设计

输入四个值分别为左上角和右下角坐标,并计算矩形面积。

定义了一个点类和一个矩形类,矩形类为点类集合。

 

 

  • 继承与多态

将测验1与测验2的类设计进行合并设计,抽象出Shape父类(抽象类),Circle及Rectangle作为子类,类图如下所示:

 

 

 

抽象类里面有方法但是没有方法体,计算面积方法需要更具不同情况覆写。

  • 抽象类与接口

在测验3的题目基础上,重构类设计,实现列表内图形的排序功能(按照图形的面积进行排序)。

 

 

除了将抽象类的abstract去掉以外,还导入import java.util.ArrayList和import java.util.Comparator包用于实现动态数组和排序,并用implements实现接口。此外getarea方法需要返回本方法,按面积排序的方法体需要具体。

 

踩坑心得:

在new新对象的时候一定要用自己写的类名。在计算面积的时候注意+-号以及绝对值。可以用String.format(“%.2f”,输出数值)控制精度。在跑代码的过程中可以在不同位置插入表现语句比如System.out.println();来判断有没有进入某个方法或者循环体,或者输出变量监控变量值是否符合预期。

 

主要困难及改进:

对于父类实现接口的方法内方法体的编辑有不足。需要多多练习。对于各方法的返回值的逻辑不清晰,容易混乱。需要在开始着手写代码之前就将各方法的功能和属性的位置和定义弄清。

 

三、总结

 对于我而言,菜单系列题目还是比较费劲的,难度也在日益提升。Java有之前c++没有的很多属性,包括包,类,属性,方法的概念,各个类直接的关系也复杂多样,组合聚集继承等关心的调用容易混乱。当初也糊了有段时间才区分清楚。从这三次题目可以深切体会到Java是面向对象的编程,需要创建对象和方法然后对对象的方法进行调用,对象的创建也需要一定的封装性,即模块化。要把一个对象所包含的所有属性都定义在里面,比如菜单类对象就要包含的属性有菜单名,菜单序号,菜单基础价格。这两次的菜单里还有特色菜,需要根据不同情况区分特色菜并实现计算价格等功能。同时要注意Java的方法的返回值类型。

为了避免在编程过程中出现各种混乱,在程序设计之初就应搭建好大致框架,设计相应的类,方法和属性,并清晰各个类之间的连系。

相比于c++而言,Java里的类彼此间的配合比较麻烦,但是更直接更好用。

 

 

标签:输出,菜单,系列,空格,特色菜,table,方法,考试
From: https://www.cnblogs.com/wuyun1537806537/p/17410628.html

相关文章

  • PTA题目集4、5及期中考试的总结性Blog
    一、前言随着对java学习的越来越深入,需要学习的东西也越来越多,第四五次pta题目集主要还是以菜单计价系统为主,相较于以前的菜单计价系统,增加了异常情况的处理,以及特色菜,口味度等功能,使这个菜单计价系统越来越与现实生活相关联,当然与之同时题目的难度当然也是大幅度提高了。虽然这......
  • javaPTA题目集4、5及期中考试总结
    一、前言通过这三周对Java课程的学习及pta大作业的练习,我了解了Java的编译环境如JDK、JRE等等,Java去掉了C++语言的许多功能,是安全的、解释的、高性能的语言,但最主要的还是Java的面向对象性,Java中的类与对象的创建以及类间关系,类与类之间方法属性的调用时常让我头疼,通过pta的练习......
  • 正确使用PHP开发系列:数组转字符串后,给每一项加上单引号
     $arr=array('a','b','c');echo"'".implode("','",$arr)."'";//outputs'a','b','c' 需要注意的是,implode的第一个参数,加上的双引号,如果是用在sql查询里,会自动加上转义符,即:......
  • 父母玩游戏系列---手柄
    1.认识手柄1.1名称中文名:手柄、控制器英文名:Gamepad、Controller1.2手柄的作用手柄的作用:作为对于游戏种虚拟角色、形象或物体的控制设备。比如:角色扮演类游戏中:控制游戏中人物的上下左右前后移动、以及动作指令。赛车游戏中:控制车的加速减速,刹车,转向等。我们家里有的......
  • MFC程序隐藏托盘+右键关闭菜单
    背景介绍:我的程序是启动后,默认就隐藏到托盘中,等待http请求后,显示界面。所以最小化到托盘的代码,我是写在初始化里面。  正文:一、自定义消息WM_SHOWTASK#defineWM_SHOWTASK(WM_USER+101)  二、在类向导中添加消息处理点击【类向导】、【消息】......
  • 还没期末考试,算法却说我的物理一定挂科
    By超神经场景描述:大学物理是理工科学生的基础必修课程,但也因为有一定的难度,令很多学生望而生畏。研究人员提出了用AI算法预测,哪些学生物理课有挂科风险,好让老师更好地进行教学指导和调整教育资源的分配。关键词:随机森林决策树大学物理预测不得不说,算法的预测能力越来越强,小到......
  • SpringBoot学习笔记--系列文章
    随笔分类 -  SpringBootSpringBoot学习笔记(八)——JWT、(Vue3、Axios、Vue-Router、TypeScript实现授权与验证示例)SpringBoot学习笔记(七)——综合示例BookStore图书管理系统SpringBoot学习笔记(六)——分页、跨域、上传、定制banner、Lombok、HutoolSpringBoot学习......
  • < Python全景系列-3 > Python控制流程盘点及高级用法、神秘技巧大揭秘!
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。 这是系列第三篇,在这篇文章中我们将全面深......
  • flutter系列之:使用AnimationController来控制动画效果
    目录简介构建一个要动画的widget让图像动起来总结简介之前我们提到了flutter提供了比较简单好用的AnimatedContainer和SlideTransition来进行一些简单的动画效果,但是要完全实现自定义的复杂的动画效果,还是要使用AnimationController。今天我们来尝试使用AnimationController来......
  • Element UI el-menu菜单 子级选中后,删除父级下划线
    1.子级选中,父级也选中样式修改: .el-submenu.is-active>.el-submenu__title {color:#FFFFFF;background-color:#7E8796!important;}2.子级选中后,父级有下划线,可以通过以下样式修改去除下划线 .el-menu--horizontal>.el-submenu.el-submenu__title ......