菜单计价程序及期中考试总结星星个星星

@主要是在第三次大作业的基础上增加错误输入的处理,考察对输入错误样例的考虑的周全性。

@考察对字符串处理能力,学习并了解各种处理字符串的方法,并将其灵活运用至程序中。

@因为要对输入错误的字符进行判定,所以程序中我大量使用了正则表达式以便快速判断输入字符是否合法。

@为了更方便的处理字符串,我建立了一个方法类(可能有违java的常用习惯),里面包含了各种方法,包括判断所输入字符是否为数字的booleanisDigit(Stringstr)方法,还有处理重复删除、计算折扣等各种方法,这样在主方法中就只需要new一个新的的方法类对象即可以快速使用各种方法。

@为了控制动态数组里面的存储数据正确性,我还写了好多个控制增加数据的控制变量。

第五次菜单计价程序:

@这次大作业主要是在作业3基础上对其进行修改的,其和菜单计价程序-4同属菜单计价程序-3的两个不同迭代分支。主要是对特色菜进行了进一步的调整,增加了川菜、晋菜、浙菜和辣度、酸度、甜度这几个新概念。

@变化的地方主要集中在输入的东西和算法这两个方面,所以我先从输入方面对其进行修改,而再此之前,我先得有一个特色菜的概念,本来想使用继承,但是基础不扎实,所以我选择了在Dish类中新增加了一个属性T,用来判断是否为特色菜;在Menu菜单类中我修改了addDish方法;在Record订单类中我增加了spicy辣味、acid酸味、sweet甜味这几个属性,用来记录单条订单中酸度、辣度和甜度,以便之后的计算;在Order类中我新增了aveSpicy0、aveAcid0、aveSweet0这几个属性,用来记录每桌菜的平均口味,并对addRecord方法进行修改,此外还新添了一个voidaveTaste(Orderorder)方法用来进行对平均辣度的计算。

@另外,在方法类中增加了intfindTable(ArrayList

tables,StringtableNum)方法用来找到所对应的桌号包含的数据和intrepeatTable(Tabletable1,intjj,ArrayList
tables,intP)方法用来判断是否重复输入点单的桌数据。

设计点菜计价程序,根据输入的信息,计算并输出总价格。

输入内容按先后顺序包括两部分:菜单、订单,最后以"end"结束。

菜单由一条或多条菜品记录组成,每条记录一行

每条菜品记录包含:菜名、基础价格两个信息。

订单分:桌号标识、点菜记录和删除信息、代点菜信息。每一类信息都可包含一条或多条记录,每条记录一行或多行。

桌号以下的所有记录都是本桌的记录,直至下一个桌号标识。

点菜记录包含:序号、菜名、份额、份数。份额可选项包括:1、2、3,分别代表小、中、大份。

不同份额菜价的计算方法:小份菜的价格=菜品的基础价格。中份菜的价格=菜品的基础价格1.5。小份菜的价格=菜品的基础价格2。如果计算出现小数,按四舍五入的规则进行处理。

删除记录格式:序号delete

标识删除对应序号的那条点菜记录。

如果序号不对,输出"deleteerror"

代点菜信息包含:桌号序号菜品名称份额分数

代点菜是当前桌为另外一桌点菜,信息中的桌号是另一桌的桌号,带点菜的价格计算在当前这一桌。

程序最后按输入的先后顺序依次输出每一桌的总价(注意:由于有代点菜的功能,总价不一定等于当前桌上的菜的价格之和)。

每桌的总价等于那一桌所有菜的价格之和乘以折扣。如存在小数,按四舍五入规则计算,保留整数。

参考以下类的模板进行设计:菜品类:对应菜谱上一道菜的信息。

Dish{

Stringname;//菜品名称

intunit_price;//单价

intgetPrice(intportion)//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份)}

菜谱类:对应菜谱,包含饭店提供的所有菜的信息。

Menu{

Dish\[\]dishs;//菜品数组,保存所有菜品信息

DishsearthDish(StringdishName)//根据菜名在菜谱中查找菜品信息,返回Dish对象。

DishaddDish(StringdishName,intunit_price)//添加一道菜品信息

}

点菜记录类:保存订单上的一道菜品记录

Record{

intorderNum;//序号\\

Dishd;//菜品\\

intportion;//份额(1/2/3代表小/中/大份)\\

intgetPrice()//计价,计算本条记录的价格\\

订单类:保存用户点的所有菜的信息。

Order{

Record\[\]records;//保存订单上每一道的记录

intgetTotalPrice()//计算订单的总价

RecordaddARecord(intorderNum,StringdishName,intportion,intnum)//添加一条菜品信息到订单中。

delARecordByOrderNum(intorderNum)//根据序号删除一条记录

findRecordByNum(intorderNum)//根据序号查找一条记录

###输入格式:

菜品记录格式:

菜名+英文空格+基础价格

如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。

点菜记录格式:序号+英文空格+菜名+英文空格+份额+英文空格+份数注:份额可输入(1/2/3),1代表小份,2代表中份,3代表大份。

删除记录格式:序号+英文空格+delete

代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称+英文空格+份额+英文空格+分数

最后一条记录以“end”结束。

###输出格式:

按输入顺序输出每一桌的订单记录处理信息,包括:

1、桌号,格式:table+英文空格+桌号+”:”

2、按顺序输出当前这一桌每条订单记录的处理信息,

每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品\*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“\*\*doesnotexist”,\*\*是不能识别的菜名

如果删除记录的序号不存在,则输出“deleteerror”

最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的总价

本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。

1、桌号,格式:table+英文空格+桌号+“:”+英文空格

菜单计价程序4

程序最后按输入的桌号从小到大的顺序依次输出每一桌的总价(注意:由于有代点菜的功能,总价不一定等于当前桌上的菜的价格之和)。

参考以下类的模板进行设计(本内容与计价程序之前相同,其他类根据需要自行定义):

菜品类:对应菜谱上一道菜的信息。

Dish[]dishs;//菜品数组,保存所有菜品信息

intorderNum;//序号

intportion;//份额(1/2/3代表小/中/大份)

intgetPrice()//计价,计算本条记录的价格

Record[]records;//保存订单上每一道的记录

本次课题比菜单计价系列-3增加的异常情况:

1、菜谱信息与订单信息混合,应忽略夹在订单信息中的菜谱信息。输出:"invaliddish"

3、同一桌菜名、份额相同的点菜记录要合并成一条进行计算,否则可能会出现四舍五入的误差。

4、重复删除,重复的删除记录输出"deduplication:"+序号。

6、菜谱信息中出现重复的菜品名,以最后一条记录为准。

9、份额超出范围(1、2、3)输出:序号+"portionoutofrange"+份额,份额不能超过1位,否则为非法格式,参照第13条输出。

10、份数超出范围,每桌不超过15份,超出范围输出:序号+"numoutofrange"+份数。份数必须为数值,最高位不能为0,否则按非法格式参照第16条输出。

11、桌号超出范围[1,55]。输出:桌号+"tablenumoutofrange",桌号必须为1位或多位数值,最高位不能为0,否则按非法格式参照第16条输出。

12、菜谱信息中菜价超出范围(区间(0,300)),输出:菜品名+"priceoutofrange"+价格,菜价必须为数值,最高位不能为0,否则按非法格式参照第16条输出。

14、一条点菜记录中若格式正确,但数据出现问题,如:菜名不存在、份额超出范围、份数超出范围,按记录中从左到右的次序优先级由高到低,输出时只提示优先级最高的那个错误。

15、每桌的点菜记录的序号必须按从小到大的顺序排列(可以不连续,也可以不从1开始),未按序排列序号的输出:"recordserialnumbersequenceerror"。当前记录忽略。(代点菜信息的序号除外)

16、所有记录其它非法格式输入,统一输出"wrongformat"

17、如果记录以“table”开头,对应记录的格式或者数据不符合桌号的要求,那一桌下面定义的所有信息无论正确或错误均忽略,不做处理。如果记录不是以“table”开头,比如“table552023/3/212/00/00”,该条记录认为是错误记录,后面所有的信息并入上一桌一起计算。

本次作业比菜单计价系列-3增加的功能:

菜单输入时增加特色菜,特色菜的输入格式:菜品名+英文空格+基础价格+"T"

例如:麻婆豆腐9T

菜价的计算方法:

周一至周五7折,周末全价。

注意:不同的四舍五入顺序可能会造成误差,请按以下步骤累计一桌菜的菜价:

计算每条记录的菜价:将每份菜的单价按份额进行四舍五入运算后,乘以份数计算多份的价格,然后乘以折扣,再进行四舍五入,得到本条记录的最终支付价格。

最后将所有记录的菜价累加得到整桌菜的价格。

1、桌号,格式:table+英文空格+桌号+”:”+英文空格

每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“**doesnotexist”,**是不能识别的菜名

最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的原始总价+英文空格+当前桌的计算折扣后总价

本题在菜单计价程序-3的基础上增加了部分内容,增加的内容用加粗字体标识。

注意不是菜单计价程序-4,本题和菜单计价程序-4同属菜单计价程序-3的两个不同迭代分支。

每条菜品记录包含:菜名、基础价格三个信息。

代点菜信息包含:桌号序号菜品名称口味度份额份数

以上为菜单计价系列-3的题目要求,加粗的部分是有调整的内容。本次课题相比菜单计价系列-3新增要求如下:

1、菜单输入时增加特色菜,特色菜的输入格式:菜品名+英文空格+口味类型+英文空格+基础价格+"T"

例如:麻婆豆腐川菜9T

特色菜的口味类型:川菜、晋菜、浙菜

川菜增加辣度值:辣度0-5级;对应辣度水平为:不辣、微辣、稍辣、辣、很辣、爆辣;

晋菜增加酸度值,酸度0-4级;对应酸度水平为:不酸、微酸、稍酸、酸、很酸;

浙菜增加甜度值,甜度0-3级;对应酸度水平为:不甜、微甜、稍甜、甜;

输入订单记录时如果是特色菜,添加口味度(辣/酸/甜度)值,格式为:序号+英文空格+菜名+英文空格+口味度值+英文空格+份额+英文空格+份数

例如:1麻婆豆腐419

单条信息在处理时,如果口味度超过正常范围,输出"spicy/acidity/sweetnessnumoutofrange:"+口味度值,spicy/acidity/sweetness(辣度/酸度/甜度)根据菜品类型择一输出,例如:

aciditynumoutofrange:5

输出一桌的信息时,按辣、酸、甜度的顺序依次输出本桌菜各种口味的口味度水平,如果没有某个类型的菜,对应的口味(辣/酸/甜)度不输出,只输出已点的菜的口味度。口味度水平由口味度平均值确定,口味度平均值只综合对应口味菜系的菜计算,不做所有菜的平均。比如,某桌菜点了3份川菜,辣度分别是1、3、5;还有4份晋菜,酸度分别是,1、1、2、2,辣度平均值为3、酸度平均值四舍五入为2,甜度没有,不输出。

一桌信息的输出格式:table+英文空格+桌号+:+英文空格+当前桌的原始总价+英文空格+当前桌的计算折扣后总价+英文空格+"川菜"+数量+辣度+英文空格+"晋菜"+数量+酸度+英文空格+"浙菜"+数量+甜度。

如果整桌菜没有特色菜,则只输出table的基本信息,格式如下,注意最后加一个英文空格:

table+英文空格+桌号+:+英文空格+当前桌的原始总价+英文空格+当前桌的计算折扣后总价+英文空格

例如:table1:6036川菜2爆辣浙菜1微甜

计算口味度时要累计本桌各类菜系所有记录的口味度总和(每条记录的口味度乘以菜的份数),再除以对应菜系菜的总份数,最后四舍五入。

注:本题要考虑代点菜的情况,当前桌点的菜要加上被其他桌代点的菜综合计算口味度平均值。

2、考虑客户订多桌菜的情况,输入时桌号时,增加用户的信息:

例如:table1:tom136700081812023/5/121/30/00

约束条件:客户姓名不超过10个字符,手机号11位,前三位必须是180、181、189、133、135、136其中之一。

输出用户支付金额格式:

用户姓名+英文空格+手机号+英文空格+支付金额

将所有记录的菜价累加得到整桌菜的价格。

菜名+口味类型+英文空格+基础价格

点菜记录格式:序号+英文空格+菜名+英文空格+辣/酸/甜度值+英文空格+份额+英文空格+份数注:份额可输入(1/2/3),1代表小份,2代表中份,3代表大份。辣/酸/甜度取值范围见题目中说明。

代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称**+英文空格+辣/酸/甜度值+**英文空格+份额+英文空格+分数

之后按输入顺序一次输出每一桌所有菜品的价格(整数数值),

格式:table+英文空格+桌号+“:”+英文空格+当前桌的计算折扣后总价+英文空格+辣度平均值+英文空格+酸度平均值+英文空格+甜度平均值+英文空格

最后按拼音顺序输出每位客户(不考虑客户同名或拼音相同的情况)的支付金额,格式:用户姓名+英文空格+手机号+英文空格+支付总金额,按输入顺序排列。

期中考试

创建一个圆形类(Circle),私有属性为圆的半径,从控制台输入圆的半径,输出圆的面积

输入圆的半径,取值范围为(0,+∞),输入数据非法,则程序输出WrongFormat,注意:只考虑从控制台输入数值的情况

输出圆的面积(保留两位小数,可以使用String.format(“%.2f”,输出数值)控制精度)

在这里给出一组输入。例如:

2.35输出样例:在这里给出相应的输出。例如:

分别输入两个坐标点的坐标值x1,y1,x2,y2。

输出该矩形的面积值(保留两位小数)。

65.8-78.9输出样例:在这里给出相应的输出。例如:

40.30importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);doublex1=sc.nextDouble();doubley1=sc.nextDouble();doublex2=sc.nextDouble();doubley2=sc.nextDouble();juxingj=newjuxing(x1,y1,x2,y2);doublearea=j.area();System.out.printf("%.2f",area);}}classjuxing{privatedoublex1;privatedoubley1;privatedoublex2;privatedoubley2;publicjuxing(){}publicjuxing(doublex1,doubley1,doublex2,doubley2){this.x1=x1;this.y1=y1;this.x2=x2;this.y2=y2;}publicdoublearea(){doublewidth=Math.abs(x2-x1);doubleheight=Math.abs(y2-y1);doublearea=width*height;returnarea;}}7-3测验3-继承与多态分数20全屏浏览题目切换布局作者段喜龙单位南昌航空大学将测验1与测验2的类设计进行合并设计,抽象出Shape父类(抽象类),Circle及Rectangle作为子类,类图如下所示:

试编程完成如上类图设计,主方法源码如下(可直接拷贝使用):

publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubScannerinput=newScanner(System.in);intchoice=input.nextInt();switch(choice){case1://Circledoubleradiums=input.nextDouble();Shapecircle=newCircle(radiums);printArea(circle);break;case2://Rectangledoublex1=input.nextDouble();doubley1=input.nextDouble();doublex2=input.nextDouble();doubley2=input.nextDouble();PointleftTopPoint=newPoint(x1,y1);PointlowerRightPoint=newPoint(x2,y2);Rectanglerectangle=newRectangle(leftTopPoint,lowerRightPoint);printArea(rectangle);break;}}其中,printArea(Shapeshape)方法为定义在Main类中的静态方法,体现程序设计的多态性。

输入类型选择(1或2,不考虑无效输入)对应图形的参数(圆或矩形)

图形的面积(保留两位小数)

15.6输出样例1:在这里给出相应的输出。例如:

98.52输入样例2:25.6-32.59.4-5.6输出样例2:在这里给出相应的输出。例如:

其中,Main类源码如下(可直接拷贝使用):

publicclassMain{publicstaticvoidmain(String\[\]args){//TODOAuto-generatedmethodstubScannerinput=newScanner(System.in);ArrayListlist=newArrayList<>();intchoice=input.nextInt();while(choice!=0){switch(choice){case1://Circledoubleradiums=input.nextDouble();Shapecircle=newCircle(radiums);list.add(circle);break;case2://Rectangledoublex1=input.nextDouble();doubley1=input.nextDouble();doublex2=input.nextDouble();doubley2=input.nextDouble();PointleftTopPoint=newPoint(x1,y1);PointlowerRightPoint=newPoint(x2,y2);Rectanglerectangle=newRectangle(leftTopPoint,lowerRightPoint);list.add(rectangle);break;}choice=input.nextInt();}list.sort(Comparator.naturalOrder());//正向排序for(inti=0;i

输入图形所需参数

按升序排序输出列表中各图形的面积(保留两位小数),各图形面积之间用空格分隔。

12.323.236512.30输出样例:在这里给出相应的输出。例如:

这几次的大作业让我受益很深,而期中考试又让我发现了我最大的不足之处,通过这几次的大作业,我对Java“一切皆类,面向对象”的特点有了更深层次的理解,懂得如何创建类与对象同时,我也明白了合理利用网络资源自学的重要性。在写作业4和5的时候,我学到了好多关于动态数组的知识,知道如何去找到并解决动态数组经常遇见的问题,同时也知道如何对输入的日期进行相应的处理以及格式化,如何使用判断字符串是否为数字、如何对字符串进行排序等。值得一提的是,我发现学习面向对象语言时,我们必须要沉下心来,要学会思考,就算有的问题思考几个小时都可能解决不了,但只要你一直去思考并不断尝试就总是会想到解决方法,因为java中有很多类是可以更加方便地帮助我们解决问题,我们需要耐心的去寻找这类资源并学习,不能一味求快,急于求成,否则这样会事半功倍,严重可能会打消我们学习积极性。然后就是,经过这次的期中考试,我发现我学的并不扎实,还有好多地方存在不足,未来我还需要加倍努力,对不足之处加以弥补。

THE END
1.每天吃到自己喜欢的饭菜,真的超级开心!蒜蓉鸡蛋毛豆青椒牛肉“大雪到,冬来俏”,建议大雪时节多吃这8道菜,营养足味道好 美食店主 2024-12-08 08:31:57 0 跟贴 0 放心做 沙茶腐竹牛肉煲一定让你被夸爆 乐爸料理记 2024-12-05 10:00:00 9 跟贴 9 冬天想简单吃点,推荐八道家常小炒收藏好,一天一道,简单不费劲 南方男孩邱先生 2024-12-06 17:46:32 0 跟贴https://www.163.com/dy/article/JISS3D0K0553TF9H.html
2.超级下饭的九道菜!快让npy做起来!!!吃不饱的阿呆 在得物App发布了一条热门动态!快来围观,就等你啦!https://m.dewu.com/note/trend/details?id=253076746
3.食戟之靈:壹之皿無上的食譜(2015)(S1E10)T?i phòng t?m, Soma g?p B?p trng Dojima.阿拉伯語 (ar-SA) 姓名 10 简要介绍 — 阿拉伯語 (ar-AE) 姓名 10 简要介绍 — 韓語(ko-KR) 姓名 ? ? 简要介绍 https://www.themoviedb.org/tv/62273/season/1/episode/10/translations
4.上海衅馆不完全指南这一张张精怪的“鬼画符”,让很多人记住了 Le Verre a Vin,也让很多人误以为这是家日式居酒屋(谁让隔壁还开着家正经会席料理?)。喝High 了,店长 Jeffery 也许还会拿出墨汁和宣纸,邀你挥毫落墨。 ▲ 就是这位戏精 Jeffery可能是上海最搞笑的 Wine Bar 老板,从做意大利菜餐厅半路出家,业余烧饭的同时阴差阳错https://www.douban.com/note/643437158/
5.综合法语常用词汇汇总“^”长音符,放在字母a,e,u,i上方,如:ame,être,co?t,?le; “..”分音符,放在字母e,i上方,如:aigu?,alcolo?de; “?”软音符,表示c读[s],如:le?on; “’”省文撇,用来链接单词,如:l’été,c’est; “-”连字符,用来连接单词,如:Oùhabite-t-il? https://www.360doc.cn/article/12261084_981450917.html
6.菜单计价程序:处理点菜折扣与异常周一至周五营业时间与折扣:晚上(17:00-20:30)8折,周一至周五中午(10:30–14:30)6折,其余时间不营业。 周末全价,营业时间:9:30-21:30 如果下单时间不在营业范围内,输出"table " + t.tableNum + " out of opening hours" 参考以下类的模板进行设计:菜品类:对应菜谱上一道菜的信息。https://blog.csdn.net/qq_53190228/article/details/130853309
7.从功能对等论看中式菜谱的英译文月娥Mar.2006从功能对等论看中式菜谱的英译 文月娥 (湖南科技大学外国语学院,湖南湘潭411201)摘 要:功能对等论强调译文读者对译文的反应要与原文读者对原文的反应对等。用该理论作为菜谱翻译总的指导原则,指出由于中式菜谱本身的特点,其英译只能求得最切近的对等,最后总结出了几种常用的翻译方法以供参考。关键词:功能https://wenku.baidu.com/view/32a1092beb7101f69e3143323968011ca200f740.html
8.ipad电子菜谱/无线平板点餐系统/安卓平板电子菜谱价格,厂家">≤100%</span></p></td><td style="border-right: windowtext 1pt solid; border-top: medium none; border-left: medium none; border-bottom: windowtext 1pt solid;" valign="top" width="163"><p><span style="font-size: 12pt;">=100%</span></p></td></tr><tr><td rowspan=https://m.makepolo.com/product/100233457738.html
9.中餐菜单中英文对照(通用8篇)人类的餐饮文化及语言的共性为菜谱的翻译奠定了语言的可译性基础。但中西文化的差异又给菜单的翻译带来“总的说来,中式菜的命名主要表现为写实和写意两种。”(朱晓琴,2008,p.65-68)写实的中餐名展现的是Garnele in Chiliso?e 干烧明虾 Mandarinfisch mit Tomatenso?e 茄汁桂鱼 Gebratenes Krebsfleischhttps://www.360wenmi.com/f/filepbqfi809.html
10.(完整版)美食网站的设计与开发毕业设计.pdfP otos op, ASP.NET and SQL Server 2005 database tec nology combining t e website, and t2 dbo.tb_Mod le 2 .浏览模块信息表:dbo.tb_Mod le .浏览模块信息表: 下载文档,永久保存 https://mip.book118.com/html/2021/0415/6120100110003141.shtm
11.如何高效的做一份有用的竞品分析文档青木幽芒分别代表p, e, s, t,把便利贴贴在大白纸的对应格子上,合并内容相似的便利贴. 4)集体投票,每个pestle:在pest的基础上加上le, l是法律(legal), e是环境(environment). ■ depest:在pest的基础https://www.zcool.com.cn/article/ZMTYwOTgyOA==.html
12.中世纪的“香疯了!”:看看中世纪的菜是怎么做的(完结篇)机核G菜谱108:“虹鳟(Truite saulmonoise,大红字“T”段落):用水和葡萄酒煮熟,就着卡梅林酱吃 。” 菜谱109:“鳐(Raye,大红字“R”段落):从肚脐把内部处理干净后,切成小块后煮熟。就着卡梅林蒜酱冷吃。肝要取出,以防它被煮过头。“ 现代处理好的鳐见下图,这东西感觉不会太难吃,但是这个形象 有点上头啊https://www.gcores.com/articles/126116
13.4courselunchmenu只需极小的占地面积即可为任何午餐菜谱增添多样性。 antunescontrols.com antunescontrols.com [] mushroom, fried egg and cheese; steaming hot pancakes; dailylunch menuoffers rice and pasta, as well as espresso, latte, dessert and other drinks. http://cn.linguee.com/%E8%8B%B1%E8%AF%AD-%E4%B8%AD%E6%96%87/%E7%BF%BB%E8%AD%AF/4-course+lunch+menu.html