点菜系统4.5及期中考试内容博客
前言:
难度上:难度上pta 5的难度要低于pta 4题目集,期中考试的题目相对简单
,但是由于期中考试的时间太短,以及电脑电量不足等问题,导致期中考试成绩并不高。Pta 4题目及主要在于对点菜系统题目的升级处理,即对其功能的完善增加了,对错误信息及输入的处理,由于对时间不够,最后并不能很好完成pta 4,所以我采用撞库的方法拿部分分,这是不得已之举。Pta 5的难度相对较低,主要是对特色菜的输入及其口味度的处理,由于前面菜单系统都做的不是很好,所以这次的pta 5相对而言是重新做的完全由自己了解做出来的。期中考试题目就是一个圆的面积计算及矩形面积计算的相关问题,还是无法处理一些奇怪问题,例如返回不为零,还是无法处理一些奇怪问题,例如返回不为零。对于Pta 4和Pta 5,我深深地感受到了在编程过程中的困难和挑战。虽然这些题目的难度不尽相同,但它们都需要我们正确地处理输入输出,并且在程序的各个方面都保持一定的健壮性。在这个过程中,我遇到了许多的问题,例如我可能输入错误的数据,或者是程序出现了一些无法理解的错误代码。
知识点上:Pta 4对知识点的要求更加的高,包含了对很多输入错误及错误时间内容的处理和返回,其难度更高,知识点量更大。Pta 5主要对菜的口味度的处理内容相对简单,但信息量仍然较大,Pta 5做了72分,是一个相对较高的分数,对我而言。对于pta 4部分而言,对输入错误以及信息错误的处理至关重要,所以我认为这个很难,需要在很多地方设置一个接口或者是添加错误处理部分,这比较的复杂,还需要考虑到各个部分之间的耦合,避免出现重复的输出错误。主要还有就是对菜谱信息与订单信息混合的处理也非常的困难,需要考虑到菜谱信息处理后的部分不能再出现菜谱信息,对于时间格式合法化的处理,也需要学习,对四舍五入处的问题处理需要更新处理,重复删除则需要一个删除标记,带点菜,还要考虑诸多问题,例如桌号不准菜。重复桌号信息重复在同一时间段时要输入一条计价,这也很复杂,以及对桌号,菜价,份数等的限制,这些都是问题。其余部分则输出wrong format,还要考虑在什么地方需要输出wrong format。
设计与分析:
对于pta 5,其程序设计相对简单,相比于其前部分而言,添加了菜品的口味度,以及对口味度相关信息的处理。虽然相对于pta 4来说难度较小,但仍然需要严谨和细致的处理,特别是对菜品口味度和订单的操作。我们需要设计相应的算法,计算出每个菜品的口味度和数量需要注意的是,点菜记录中的菜名,以后的第一条就是口味度,我弄错了,对于点菜系统的口味度需要另外增加一个方法以及相关的属性来处理,口味度及其判断输出部分。而对代点菜删除部分而言,带点菜,我是处理为增加两条信息,两条信息的flag值不同,有三种状态是,第一种是为自己点为零,第二种是为他人点一,第三种是被他人点为2,那么,对删除部分的处理还要增加一个查找是否在其他信息中也存在这样的相同订单的情况?所以如果是带点菜功能的话,要删除相应的两条记录,而对普通点菜的话,则只需要删除一条记录,也是相对复杂的部分。另外,对时间的处理也需要另外学习,时间的处理首先存在着对时间是否正确以及对时间是否处于时间段内的判断,其次,其存在对于是否营业以及折扣的处理。
对于pta 4来说,输入错误和信息错误的处理是非常繁琐的,因为它们可能造成程序的运行失败和数据不一致,所以我们需要考虑到各种边界情况和异常情况,以及提供相应的错误提示,让用户能够及时修正错误。pta 4相对较复杂,需要考虑到多种输入错误和信息错误,并且保持程序的健壮性和准确性。在处理菜谱信息和订单信息混合的问题时,需要进行简明而全面的数据查询和筛选操作。
踩坑心得:首先,读懂题目对程序员来说是非常关键的一点。在设计编写程序之前,需要仔细阅读题目并从多个角度进行思考,以确保对每一个题目的要求和细节都已经了解,并达成一个较为清晰的思路和方案。开始的时候没有看好题目,导致后来全局构思的时候出现冲突后期又要修修改改才能运行,并且导致程序的运行不太合理另外没有看好题目的口味度,输入的问题导致将其份数当做口味度处理出现错误。不了解到底有多少种输入的格式。
在 pa4 的处理中,由于没有谨慎控制多个错误输出的方法,导致出现了重复输出和不必要的信息,这个问题在翻译和理解上也很容易出现,需要我们在输出设计时格外注意。另外,针对总量和口味度的输入要特别注意,在处理多个输入时,对于每一个输入进行更细致的确认和验证。输出的顺序是有很大差距的,就给人一种很大的挫败感。第三个坑是没有了解到它删除的内容,也是需要输出的,只是不在最后的总价中计入,这错误也导致了很多的分数丢失,最后被迫在类里面添加了一个多余的方法来计算删除的价格,还有一个问题,就是整个程序的条理化不够清晰,对程序的了解不够深入,导致每一步的修改都有一些的麻烦困难。
另外,在pta 5中对口味度及其相关属性方法的处理没有处理好,只能在后面加许多的属性来加以改正
boolean tableMake = true;
int tableNum;
Order orders = new Order();
Time t = new Time();
String telephone;
String manName;
// double timeDiscount;
double timeSpecialCount;
boolean pay =false;
int thisAllPrice;
// int chuan = 0;
// int jin = 0;
// int zhe = 0;
int allChuan = 0;
int allJin = 0;
int allZhe = 0;
int chuanPan = 0;
int jinPan = 0;
int zhePan = 0;
这样其实会大大增大复杂度,使可读性变差。
在对JAVA程序五种关系之间的不了解,导致程序的结构与思想混乱,使程序的编写中出现了很多的困难和错误,所以应该先了解好各部分之间的关系。
主要困难及改进意见:
在pta 4中,主要困难出现在对各个错误信息的处理与判断之中。尤其是对时间各个部分的处理即对时间是否存在,是否在规定区域内,以及是否在营业时间内的处理。其输出的错误判断不一样,而且需要对时间处理的方法进行学习,这相当的困难。以用csdn上查询,或者是用gpt查询,这样将大大减小工作量,并使任务简化更加简单。在对多个相同类型数字的判断时,可用正则表达式,但其相对较困难,所以需要学习。对输入格式不对的情况的判断也相对较为困难,这个部分我只能拿部分的分数。
在pta 5中,主要困难在对口味度的处理以及相关选择上,还有对带点菜两种属性的判断与删除处理之上,这个部分增加了很大的任务量。
改进意见:
多学习JAVA相关内容,例如,正则表达式或者是对时间处理的相关类和包,这样将大大减小工作量和程序的复杂度,使编写程序的效率更加的高,程序运行出错概率减小。
在pta 4任务中,对时间和错误信息的处理是一个相对困难的问题。对于对时间的处理,可以使用java时间类和相关包,例如Calendar、Date,也可以学习相关的时间处理工具类,例如Joda-Time或者是Java 8中的时间API。这些工具类可以帮助我们更加方便地处理时间运算和日期格式化。对于对错误信息的处理,可以构建一个数据存储结构,例如Map或者List,将错误信息和对应的处理函数匹配,这样可以使得处理过程更加自动化和高效化。
而在pta 5任务中,对于口味度和带点菜的处理也是一个相对难点。对于口味度的处理,建议利用HashMap或者其他类型的集合类进行数据存储,可以采用封装方法计算订单总价和口味度。对于带点菜的处理,可以利用其他的方法,方便添加和删除菜品,同时也需要谨慎考虑订单状态的变化和数据的完整性,可以使用异常捕获机制和事务管理等技术。
总结:
学习到什么:
对JAVA的程序结构进行了了解以及学习,了解到了JAVA中的多种接收数据的方法。
主要通过菜单的题目学习到了对面向对象的编程的方法,以及对类的属性和方法进行了认识,知道了public private等的区别。
学会了在CSDN上查询一些方法并进行学习,最后完成题目。
学习了例如calendar类的方法,知道了其是从零月开始计算。了解到需要通过学习一些算法才能解决时间复杂度要求的问题,所以今后需要对其进行广泛的学习。
以及学习了集合list的使用排序等方法,以及对list强制转换为string的学习。
需要继续学习的地方:
需要继续对一些小的算法进行学习,以便在某些对时间复杂度和空间复杂度有要求的地方能够通过。
需要仔细读题目,再认真审查,找到各部分关系。
需要对JAVA程序的条理化以及其内容的精髓进行学习。
对于JAVA中的众多方法,例如Calendar或者是List等方法的学习与精通。
对于任务目标的拆分与解析水平需要提高以及需求的分析能力。
对于课堂上的希望:
希望课堂上能够多讲一些JAVA的方法。
希望有一些简单的算法,节省空间,时间的复杂度。
希望能够学习是程序更加合理,屎山少一点。
部分代码:
if(telephone.length()!=11||name.length()>=10||!telephone.matches("^((180)|(181)|(189)|(133)|(136)|(135))[0-9]{8}$")){
System.out.println("wrong format");
tableMake = false;
return false;
}
else {
if ((!t[0].matches("^[0-9]{4}$")) || (!t[1].matches("^[0-9]{1,2}$")) || (!t[2].matches("^[0-9]{1,2}$"))) {
System.out.println("wrong format");
}
正则表达式
int flag=0;//flag == 1 则代表8 7折 0 代表无
int tempTime;
Calendar cal = Calendar.getInstance();
SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd");
Date d=null;
try {
d=f.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
cal.setTime(d);
int w=cal.get(Calendar.DAY_OF_WEEK)-1;
if(w==0) w=7;
int a[] = new int[3];
String e[] = new String[3];
e = t.split("/");
for(int i=0;i<3;i++){
a[i] = Integer.parseInt(e[i]);
}
tempTime = a[0]*10000+a[1]*100+a[2];
if(w>=1&&w<=5){
if((tempTime>=103000&&tempTime<=143000)||(tempTime>=170000&&tempTime<=203000)){
return true;
}
}
else{
if(tempTime>=93000&&tempTime<=213000) {
return true;
}
}
System.out.println("table "+num+" out of opening hours");
return false;
时间判断
标签:需要,处理,pta,int,博客,口味,点菜 From: https://www.cnblogs.com/beixipro/p/17410315.html