BLOG-3
第6-8次大作业总结博客
/*全文字数4000+*/
一、前言:
知识点分析:
1.Java 基础语法(变量、数据类型、运算符、流程控制、函数等)。
2.Java 集合框架,如 List、Map 等。
3.异常处理机制,如 try-catch 块。
4.数组和字符串操作。
5.对象和类,包括静态方法、构造方法、实例方法等等。
二、设计与分析:
(一) 课程成绩统计程序-1
(1)题目分析
1. 数据输入阶段:负责从标准输入或文件输入读取符合要求的数据,并进行数据清洗和格式转换。
2. 数据预处理阶段:负责对输入数据进行解析和预处理,将其转化为能够进行计算和分析的数据结构。同时需要对输入数据进行验证和校验,确保数据的准确性和稳定性。
3. 数据统计和分析阶段:负责对处理后的数据进行统计和分析,计算出所需的统计数据,并对数据进行排序和筛选。需要使用合适的算法和数据结构进行计算和处理,并考虑数据规模的影响。
4. 数据输出阶段:负责将计算得到的结果按照规定的输出格式进行输出,包括数据的组织、排序和排版等环节。需要注意数据输出的格式和精度,并使用适当的工具和技术进行输出和打印。
(2)类图及报表
(题目自带)
(3)采坑心得:
在这次大作业的完成过程中,遇到的主要问题是数据格式不规范,导致输入输出的可靠性受到了很大影响。经过查询后我学到了很多,在以后的代码编写当中要注意:
1. 数据有效性问题:数据格式不规范会导致无法正确解析和处理输入数据。如果输入数据格式错误或不符合预期,就会导致程序计算错误或结果不准确,这个问题称为数据有效性问题。
2. 数据结构问题:数据格式不规范还会导致数据结构问题。不同的输入数据结构需要不同的处理方法,因此如果输入数据结构发生变化,就需要修改代码和重新设计算法,这可能会耗费更多的时间和开发资源,增加了开发难度。
3. 数据格式兼容性问题:数据格式不规范还会导致输入输出兼容性问题。如果新的输入数据格式不兼容旧的格式,就需要重新修改代码和调整程序逻辑,以确保可以处理新的数据格式。这个问题也会耗费开发时间和资源。在项目中,可能需要对输入输出数据进行严格的格式约束和合理性验证,以确保程序的正确性和可靠性。例如,可以使用数据模型或数据验证库等工具来确保输入输出的正确性和规范性,加强程序的稳定性和可扩展性。
(二)课程成绩统计程序-2
(1)题目分析
-
优化成绩处理:可采用即时计算方式,将输入的成绩信息边输入边处理,将每条成绩信息传输到相应的学生、课程和班级中,同时为实验成绩新建实验成绩类,并在主函数中添加相应情况分支。
-
课程性质分类和考核方式:对于课程性质,可将其分为必修课、选修课和实验课。根据不同的考核方式,对总成绩进行不同的计算。具体而言,考试成绩由平时成绩和期末成绩的权重组成,考察成绩直接等于期末成绩,实验成绩则为各次实验成绩的平均值。
-
数据结构设计:可以使用 Map 来存储学生和班级信息,以方便对它们进行快速的检索和修改。对于课程信息,可以采用 List 存储,方便对同一门课程的成绩进行集中处理。实验成绩类可以采用自定义数据结构或继承自成绩类的方式进行存储管理。
-
统计数据生成和输出:对于每个学生的总成绩平均分、每门课程不同成绩的平均分以及每个班级所有课程的总成绩平均分等统计数据,可以采用遍历和计算的方式进行生成,并按照要求进行排序和输出。对于输出结果,可以使用格式化输出方式,以表格或列表的形式展示统计数据,提高可读性。
-
错误处理和异常处理:在程序设计过程中,应预留错误处理和异常处理机制,及时识别和处理输入数据中的错误或不合法数据,确保程序的稳定性和正确性。同时,应提供友好的输出和反馈机制,方便用户及时发现和排查问题。
(2)类图及报表
(3)踩坑心得
1. 关于成绩平均分的取整问题,需要使用合适的舍入方式对结果进行精度控制,确保结果在不同处理器架构、环境和数据集上的一致性。使用精准的类型转换和处理方法,以确保实数取整运算的正确性。
2. 对于输入数据的格式错误或信息异常这样的异常情况,需要使用异常处理机制,对异常进行适当的捕捉、记录和处理。程序应该使用 continue 语句跳过当前循环,而不是简单地退出该循环。同时需要使用合适的日志和调试工具对程序进行跟踪和排查,以提高程序的稳定性和可维护性。
3. 在函数设计和编写过程中,需要考虑函数的返回值,以确保在可能出现异常时能够正确地返回错误信息,而不是空值。如果函数无法正常执行,则应该返回一个明确的错误值或者异常信息,并及时通知调用者。需要对异常处理机制有深入的理解和熟练的应用,以确保程序的正常运行。
4. 在调用函数时,需要在函数名后紧跟一对括号来标识函数调用,以确保正确调用对应的函数。如果漏掉了括号,程序会将函数本身作为对象返回,而不是执行该函数并返回结果,这将导致程序出现错误。
5. 在进行数值计算时,需要考虑不同的舍入顺序可能对结果产生的影响,并选择合适的舍入方式以控制误差。通常情况下,正确的四舍五入方式应该是先将变量缩放为一个整数,然后像进行整数运算一样进行四舍五入运算,最后进行反向缩放以得到原始结果。数值计算和精度控制要有深入的理解和熟练的应用,以确保程序的正确性和效率。
(三) 课程成绩统计程序-3
(1)题目分析
本题是一个课程成绩统计程序,主要包含课程类、班级类、学生类和选课类等四个类。其中,课程类主要包含课程名称、课程性质和考核方式等属性;班级类包含班级名称和各个学生的信息等属性;学生类包含学号、姓名和选修课程列表等属性;选课类表示选课关系,表示哪些学生选修了哪些课程。
1. 在录入成绩信息时,需要将成绩信息传入学生、课程和班级对象,并进行成绩的计算和统计。
2. 为了实现成绩的计算和统计,程序员需要在学生类中定义相应的成绩属性,包括期中和期末成绩、平时成绩和实验成绩等,并且需要在课程和班级类中引用这些属性。
3. 为了实现对实验成绩的计算和权重传参,程序员需要在程序设计中引入新的组合关系,将成绩信息由课程成绩类和分项成绩类组成。分项成绩类包含成绩分值和权重两个属性,需要提供动态的输入和存储方式。
4. 在统计和计算成绩时,程序员需要根据给定的规则计算各项成绩的权重和总成绩,并对数据的合法性进行校验,确保各项成绩权重之和等于1。
5. 为了合理的管理和维护程序中各个类的依赖关系,程序员需要合理定义类的属性和方法,确保各个类之间的耦合度尽可能降低,易于程序的维护和拓展。
(2)类图及报表
(3)踩坑心得
-
计算成绩平均分时,需要采用合适的精度控制方式,对整数和小数部分分别进行取整。使用合适的舍入方式以确保结果的准确性,防止出现精度误差。同时,需要确保在输入和处理成绩数据时精度控制的一致性和准确性。
-
在验证输入数据的格式和正确性时,需要采用合适的错误处理方式,将无效数据标记为“wrong format”,并跳过当前循环。使用合适的异常处理机制,捕获并处理数据输入和处理可能出现的错误和异常。
-
在处理数据时,需要识别和处理超出范围的错误数据,在出现此类错误时,应返回适当的错误信息,而不是空值或其他无效的返回值。使用合适的数据校验技术和异常处理机制,确保数据的正确性和可靠性。
-
冒泡排序虽然简单易懂,但其时间复杂度较高,适合处理规模较小的数据集。在处理大规模数据时,应使用性能更好的排序算法(如快速排序或归并排序)以提高程序的性能和稳定性。
-
在进行数据类型转换时,程序员需要使用合适的类型转换方法,以确保类型转换的正确性和完整性。需要注意 string 类和 int 类之间的转换方法和处理方式,在转换过程中,需要注意精度控制和异常处理。
-
在代码传递数据时,程序员需要检查和确保传递的数据的正确性和准确性。需要注意传递参数的数量和类型,确保传递的数据能够正确地被接收并处理。
-
在比较字符串时,应该使用 String 类的 compareTo 方法,而不是将字符串转换为整数再进行比较。因为这种方法可能会造成精度损失,引入不必要的复杂性,甚至导致运行时错误。使用 String 类的 compareTo 方法,可以比较字符串的大小并得到正确的结果。
-
当需要计算学生成绩的其他统计信息(如最高分、最低分等)时,需要修改现有代码,并添加相应的计算逻辑和实现方式。可以考虑将此类统计信息的计算逻辑抽象成一个 ScoreCalculator 类,并使用策略模式来实现不同的统计方法。这样可以提高代码的灵活性和可维护性。
-
在编写代码时,应该将判断输入数据是否正确的代码封装到 Score 类中,以实现代码复用和减少代码冗余。可以在 Score 类中添加一个构造函数,该函数接受成绩数组并验证数组长度和成绩取值是否符合要求。如果参数不符合要求,则抛出 IllegalArgumentException 异常,以提示程序员输入正确的数据。这样可以提高代码的可重用性和可扩展性。
三、改进建议:
-
在学习和练习过程中,需要加强对自己代码的检查和评估,尽可能发现和纠正潜在的错误和问题。可以使用编码规范和标准来帮助检查代码的规范性和正确性,例如检查变量命名、注释、缩进等方面的问题。
-
加强对面向对象程序设计基本概念和原理的理解和掌握,例如类、对象、继承、接口、多态等方面的知识。需要深入了解各个概念的含义和用法,掌握其相关的编码技巧和实现方式。
-
在进行数据处理和计算时,需要充分考虑数据类型、精度控制、异常处理等方面的问题。需要使用合适的数据类型和数据结构,确保数据的正确性和准确性,并使用异常处理机制,避免程序崩溃或出现不必要的错误。
-
在编写代码时,需要充分考虑代码的可重用性和可扩展性,设计合适的类和方法,确保代码的可维护性和扩展性。需要理解和使用常用的设计模式和编程技巧,例如组合、继承、策略模式、工厂模式等。
-
在进行问题排查和错误调试时,需要使用合适的调试工具和技术,例如日志、断点调试、代码覆盖率分析等。需要充分运用工具和技术来定位和解决问题,提高代码的质量和可靠性。
-
加强对编程语言和开发工具的理解和掌握,熟练使用各种开发工具和框架,如编辑器、IDE、版本控制工具等,以提高开发效率和代码质量。
(5)总结:
在本阶段的学习中,我主要学习和掌握了Java编程语言的基本语法和面向对象程序设计的相关概念和技术,包括类、对象、继承、接口、多态、异常处理等方面的知识。通过学习课程内容和参加实验、作业等活动,我对Java编程语言有了更全面和深入的了解,能够使用Java编写基本的面向对象程序,并掌握了常用的Java编程工具和框架,如Eclipse、JUnit等。
尽管在本阶段获得了一定的成果,但我还存在一些差距和不足。首先,我需要继续学习和深化Java编程语言的相关知识和技能,尤其是多线程编程、设计模式、网络编程等方面的内容。其次,我需要进一步提高自己的编码能力和编程思维,加强代码的规范性和可读性,注重代码组织和重构。