知识点:对象和类的创建和应用,字符串的创建和应用。
总共有1题,难度偏高。
第5次题目集
期中考试
知识点:字符的处理,类的封装,接口的创建和使用。
总共有4题,难度偏低,比较基础。
正文
这次题目集虽然只有一题,但这题对我来说很难,我缺少能力完成它。
7-1菜单计价程序-4
看到这题时我有些被吓住了,对当时java仅仅只是初步掌握的我来说,写如此复杂的程序是很困难的,其中有太多我不了解的内容。我这题写的很不好,只拿到一些基础分。
本体大部分内容与菜单计价程序-3相同,增加的部分用加粗文字进行了标注。
本次课题比菜单计价系列-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折,周末全价。
注意:不同的四舍五入顺序可能会造成误差,请按以下步骤累计一桌菜的菜价:
计算每条记录的菜价:将每份菜的单价按份额进行四舍五入运算后,乘以份数计算多份的价格,然后乘以折扣,再进行四舍五入,得到本条记录的最终支付价格。
最后将所有记录的菜价累加得到整桌菜的价格。
这次题目集也只有一题,很难的一题。
7-1菜单计价程序-5
与上一题一样,这题我写的很差。当初的我有太多不足,也没有前面的激情和基础,无法完成这道题目。
本题在菜单计价程序-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其中之一。
输出用户支付金额格式:
用户姓名+英文空格+手机号+英文空格+支付金额
将所有记录的菜价累加得到整桌菜的价格。
菜品记录格式:
菜名+口味类型+英文空格+基础价格
如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。
我没有权限访问期中考试的题目,也找不到以前的代码,只能依靠一些记忆了。
7-1测验1-圆类设计
创建一个圆形类(Circle),私有属性为圆的半径,从控制台输入圆的半径,输出圆的面积
注意保留几位小数,不然过不了。圆周率是3.1415926525。。。。。,也可以用Math.PI表示。
importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubScannerin=newScanner(System.in);doublea=in.nextDouble(),b;b=a*a*Math.PI;if(a>0)System.out.printf("%.2f",b);elseSystem.out.printf("WrongFormat");}}
7-2测验2-类结构设计
很简单的一题,需要注意x1-x2和y1-y2的正负。
设计一个矩形类,其属性由矩形左上角坐标点(x1,y1)及右下角坐标点(x2,y2)组成,其中,坐标点属性包括该坐标点的X轴及Y轴的坐标值(实型数),求得该矩形的面积。
importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubScannerin=newScanner(System.in);doublex2,x1,y1,y2,s;x1=in.nextDouble();y1=in.nextDouble();x2=in.nextDouble();y2=in.nextDouble();s=Math.abs(x1-x2)*Math.abs(y1-y2);System.out.printf("%.2f",s);}}
7-3测验3-继承与多态
这是一道面向对象程序编程题,不难,但需要仔细。
将测验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类中的静态方法,体现程序设计的多态性。
7-4测验4-抽象类与接口
在测验3的题目基础上,重构类设计,实现列表内图形的排序功能(按照图形的面积进行排序)。提示:题目中Shape类要实现Comparable接口。
其中,Main类源码如下(可直接拷贝使用):
publicclassMain{publicstaticvoidmain(String\[\]args){//TODOAuto-generatedmethodstubScannerinput=newScanner(System.in);ArrayList 总结 在这两次题目集和期中考试中,我有了一些进步,但还不够,我在接口方面还有许多不足,我需要努力掌握这些知识,希望我能在以后的学习中更进一步。最后,我希望老师能增加课堂互动和实例讲解,对学生掌握知识点有帮助。