首页 > 其他分享 >题目集4~6的总结性Blog

题目集4~6的总结性Blog

时间:2024-11-20 20:56:50浏览次数:1  
标签:总结性 题目 String Blog 电路 电压 方法 设备

题目集4
答题判题程序-4总结性Blog

前言
在本阶段的作业中,我们设计并实现了一个答题判题程序,旨在模拟一个小型的考试系统。该程序的主要功能包括输入题目信息、试卷信息、学生信息、答题信息以及删除题目信息,并根据输入的标准答案判断答题的结果。本次作业的题量较大,难度也较高,尤其是在对不同类型题目的处理和判分逻辑上,增加了多选题和填空题的支持,进一步提升了系统的复杂性。

在题目设计方面,程序需要处理的输入信息分为五类:题目信息、试卷信息、学生信息、答卷信息和删除题目信息。每类信息的格式都有严格的约束,这就要求我们在编码时必须对输入进行充分的验证和处理。通过对这些知识点的学习和实践,我们不仅加深了对 Java 编程语言的理解,还提升了对数据结构和算法的应用能力。

设计与分析
在本次作业中,我们重点分析了题目集中分数最高的一题,即多选题的处理。以下是我们对源码的详细分析。

  1. 类图设计
    在程序设计中,我们使用了面向对象的设计思想,将不同类型的题目抽象为一个基类 Question,并通过继承实现了 NormalQuestion、MultipleChoiceQuestion 和 FillInTheBlankQuestion 三个子类。这样做的好处在于可以通过多态性来处理不同类型的题目,简化了代码的复杂度。

类图设计说明:

  1. Question 类
    说明:Question 是一个抽象类,表示题目的基本结构。它包含了题目的编号、内容和是否被删除的状态。
    方法:
    isCorrect(String answer):抽象方法,用于判断给定的答案是否正确。
    getScore(String answer, int fullScore):抽象方法,根据给定的答案计算得分。

  2. NormalQuestion 类
    说明:继承自 Question 类,表示普通的单选题或判断题。它有一个正确答案的属性。
    方法:
    isCorrect(String answer):实现了父类的抽象方法,判断用户的答案是否与正确答案相同。
    getScore(String answer, int fullScore):实现了父类的抽象方法,根据用户的答案计算得分。

  3. MultipleChoiceQuestion 类
    说明:同样继承自 Question 类,表示多选题。它使用一个 Set 来存储正确答案,以确保答案的唯一性。
    方法:
    isCorrect(String answer):实现了父类的抽象方法,判断用户的答案是否与正确答案集合相同。
    getScore(String answer, int fullScore):实现了父类的抽象方法,根据用户的答案计算得分,考虑到部分正确的情况。

  4. FillInTheBlankQuestion 类
    说明:继承自 Question 类,表示填空题。它有一个正确答案的属性。
    方法:
    isCorrect(String answer):实现了父类的抽象方法,判断用户的填空答案是否与正确答案相同。
    getScore(String answer, int fullScore):实现了父类的抽象方法,根据用户的答案计算得分,考虑到部分正确的情况。

  5. Student 类
    说明:表示学生的信息,包括学号和姓名。
    方法:
    getStuid():返回学生的学号。
    getStuname():返回学生的姓名。

  6. TestPaper 类
    说明:表示试卷的信息,包含试卷编号、题目编号与分值的映射,以及试卷的总分。
    方法:
    addQuestion(int questionNumber, int score):添加题目及其分值。
    getTotalScore():返回试卷的总分。
    getQuestions():返回题目编号与分值的映射。
    getPaperNumber():返回试卷编号。

  7. AnswerSheet 类
    说明:表示学生的答卷,记录答题情况,包括试卷编号、学生 ID 和答案的映射。
    方法:
    addAnswer(int order, String answer):添加学生的答案。
    getAnswers():返回学生的答案映射。

  8. Judge 类
    说明:负责管理题目、试卷、学生和答卷,并提供判卷功能。
    方法:
    addQuestion(int number, String content, String correctAnswer, String type):添加题目。
    addTestPaper(int paperNumber, List<int[]> questionScores):添加试卷及其题目分值。
    addStudent(String stuid, String stuname):添加学生信息。
    addAnswerSheet(int paperNumber, String studentId, Map<Integer, String> answers):添加学生的答卷。
    deleteQuestion(int questionNumber):删除题目。
    judge():进行判卷操作,输出结果。
    类之间的联系
    继承关系:

NormalQuestion、MultipleChoiceQuestion 和 FillInTheBlankQuestion 都继承自 Question 类,体现了多态性,可以通过 Question 类型的引用来处理不同类型的题目。
聚合关系:

TestPaper 类与 Question 类之间存在聚合关系,TestPaper 包含多个题目(通过题目编号与分值的映射)。
AnswerSheet 类与 TestPaper 类之间也存在聚合关系,AnswerSheet 记录了与特定试卷相关的学生答案。
组合关系:

Judge 类是整个系统的核心,管理所有的题目、试卷、学生和答卷,负责添加、删除和判卷操作。
通过这些类的设计和相互关系,程序能够有效地模拟一个完整的答题和判题系统,实现输入、处理和输出的功能。

类图 如下:

时序图如下:

  1. 代码分析
    以下是多选题部分的核心代码:

class MultipleChoiceQuestion extends Question {
private Set correctAnswers;

public MultipleChoiceQuestion(int number, String content, String correctAnswer) {
    super(number, content);
    this.correctAnswers = new HashSet<>(Arrays.asList(correctAnswer.split("\\s+")));
}

@Override
public boolean isCorrect(String answer) {
    Set<String> answerSet = new HashSet<>(Arrays.asList(answer.trim().split("\\s+")));
    return answerSet.equals(correctAnswers);
}

@Override
public int getScore(String answer, int fullScore) {
    Set<String> answerSet = new HashSet<>(Arrays.asList(answer.trim().split("\\s+")));
    if (answerSet.isEmpty() || !correctAnswers.containsAll(answerSet)) {
        return 0;
    }
    if (answerSet.equals(correctAnswers)) {
        return fullScore;
    }
    return fullScore / 2;
}

}
在 MultipleChoiceQuestion 类中,我们首先通过构造函数将正确答案分割并存储在 correctAnswers 集合中。isCorrect 方法用于判断用户的答案是否与正确答案完全一致,而 getScore 方法则根据用户的答案计算得分。这里的设计充分利用了集合的特性,避免了重复答案的影响。

  1. 心得体会
    通过对题目的分析与源码的编写,我体会到面向对象编程的优势,尤其是在处理复杂数据结构时,能够有效地提高代码的可读性和可维护性。同时,使用集合类来处理答案的存储和比较,减少了代码的复杂度,提升了程序的效率。

采坑心得
在源码提交过程中,我遇到了一些问题,以下是详细总结:

  1. 输入格式的处理
    在处理输入时,尤其是多选题的答案输入,发现很多同学在输入时未能严格遵循格式要求,导致程序无法正确解析。为了确保输入的准确性,我在代码中添加了多处输入格式的验证逻辑。

  2. 判分逻辑的复杂性
    在实现判分逻辑时,特别是在多选题的部分,需要考虑到多种情况,例如完全正确、部分正确和完全错误的情况。初始版本的代码在处理这些逻辑时存在漏洞,导致部分测试用例无法通过。经过多次调试和测试,最终完善了判分逻辑。

  3. 测试结果的验证
    在完成程序的初步实现后,我进行了大量的测试,包括边界测试和异常输入测试。通过这些测试,我发现了一些潜在的错误,并及时进行了修复。这让我意识到,测试是软件开发中不可或缺的一部分。

改进建议
在本次作业的实现中,我提出以下几点改进建议,以便于未来的编码实践:

增强输入提示:在输入时,如果格式不符合要求,可以给出更详细的错误提示,帮助用户理解正确的输入格式。

模块化设计:将不同功能模块进行更细致的划分,例如将输入处理、判分逻辑和输出结果的生成分开成不同的类,以提高代码的可读性和可维护性。

增加图形用户界面:可以考虑为程序增加一个简单的图形用户界面,使得用户操作更加友好,降低使用门槛。

题目集5
智能家居强电电路模拟程序总结性Blog
前言
在本阶段的作业中,我们设计并实现了一个智能家居强电电路模拟程序,主要涵盖了开关、分档调速器、连续调速器、白炽灯、日光灯和吊扇等设备的模拟。通过对这些设备的模拟,学生能够加深对电路连接和电气控制的理解。

在题目的设计上,我们共计有10个输入样例和相应的输出样例,题目难度适中,主要考察学生对面向对象编程、类的设计、继承与多态等概念的掌握。特别是在如何将电路设备建模为类,以及如何通过连接关系实现设备间的交互,是本次作业的关键所在。

设计与分析

类的设计说明:

  1. 抽象类 Device
    目的:Device 类是所有设备的基类,它定义了设备的基本属性和行为。通过将共用的属性和方法放在这个抽象类中,可以避免代码重复。
    属性:
    id: 设备的唯一标识符。
    pin1Voltage 和 pin2Voltage: 分别表示输入和输出引脚的电压。
    方法:
    updatePin2Voltage(): 抽象方法,子类需要实现该方法以更新输出引脚的电压。
    updateState(): 抽象方法,子类需要实现该方法以更新设备的状态。
    其他 getter 和 setter 方法用于访问和修改引脚电压。

  2. 具体设备类
    每个具体设备类(如 Switch, Fan, IncandescentLamp, FluorescentLamp, Dimmer, 和 ContinuousDimmer)都继承自 Device 类,并实现了自身特有的行为。

2.1. 开关类 Switch
属性:state 用于表示开关的状态(打开或关闭)。
方法:
toggle(): 切换开关的状态。
updatePin2Voltage(): 根据开关的状态更新输出引脚的电压。
getState(): 返回开关的状态字符串。

2.2. 风扇类 Fan
属性:speed 表示风扇的速度。
方法:
increaseSpeed() 和 decreaseSpeed(): 增加或减少风扇的速度档位。
updateState(): 根据输入电压更新风扇的速度。

2.3. 灯类 IncandescentLamp 和 FluorescentLamp
属性:light 表示灯的亮度。
方法:
updateState(): 根据输入电压计算灯的亮度。

2.4. 分档调速器类 Dimmer
属性:level 表示调速档位。
方法:
increase() 和 decrease(): 增加或减少调速档位。
updatePin2Voltage(): 根据当前档位计算输出电压。

2.5. 连续调速器类 ContinuousDimmer
属性:level 表示调速档位参数,范围在0.00到1.00之间。
方法:
setLevel(): 设置档位,确保在合法范围内。
updatePin2Voltage(): 根据档位计算输出电压。

  1. 连接类 Connection
    目的:用于表示两个设备间的连接关系,包含源设备和目标设备的ID。

  2. 电路类 Circuit
    目的:管理整个电路中的设备和连接关系。
    属性:
    devices: 存储所有设备的映射。
    connections: 存储设备间连接的列表。
    方法:
    addDevice(): 添加设备到电路。
    connect(): 连接两个设备。
    updateConnections(): 更新所有设备的引脚电压。
    executeCommand(): 执行控制命令。
    printStatus(): 输出当前所有设备的状态。
    总结
    整体上,这种类的设计使得代码结构清晰,易于理解和维护。通过将设备的共性抽象到 Device 类中,子类只需关注自身的特定行为,从而实现了代码的复用和扩展。同时,电路的连接和状态更新逻辑集中在 Circuit 类中,使得电路的管理更加系统化。这样的设计模式在实际开发中非常常见,特别是在需要模拟真实世界系统时。

类图如下:
/i/l/?n=24&i=blog/3545732/202411/3545732-20241120210317989-561032015.png/i/l/?n=24&i=blog/3545732/202411/3545732-20241120210356275-484518342.png

时序图如下:
/i/l/?n=24&i=blog/3545732/202411/3545732-20241120210016502-1989345954.png
/i/l/?n=24&i=blog/3545732/202411/3545732-20241120210142813-414394348.png

源码分析
在我们的实现中,首先定义了一个抽象的设备类 Device,该类包含所有设备共享的属性和方法,如设备标识符、引脚电压等。具体的设备类如 Switch、Fan、IncandescentLamp、FluorescentLamp、Dimmer 和 ContinuousDimmer 继承自此类,并实现了各自特有的行为。

abstract class Device {
protected String id; // 设备标识符
protected double pin1Voltage = 0.0; // 引脚1电压,输入
protected double pin2Voltage = 0.0; // 引脚2电压,输出

public Device(String id) {
    this.id = id;
}

public abstract void updatePin2Voltage(); // 更新引脚2电压的抽象方法
public abstract void updateState(); // 更新状态的抽象方法

}
每个设备类实现了 updatePin2Voltage 和 updateState 方法,以便根据输入电压计算输出电压或设备状态。例如,开关类根据其状态来决定输出引脚的电压:

@Override
public void updatePin2Voltage() {
pin2Voltage = state ? pin1Voltage : 0; // 根据开关状态更新引脚2电压
}
电路连接逻辑
电路的连接通过 Circuit 类来管理,该类维护了一个设备集合和连接列表。通过 updateConnections 方法,电路可以遍历所有连接并更新设备的引脚电压。

public void updateConnections() {
for (Connection connection : connections) {
// 更新引脚电压逻辑
}
}
在此方法中,首先判断连接的设备类型,如果是电源(VCC),则将其电压设置为220V;如果是接地(GND),则将输出电压设置为0V。然后,更新其他设备的输入电压。

设计心得
通过本次作业,我认识到良好的类设计和清晰的逻辑结构对程序的可维护性和可扩展性的重要性。将设备抽象为类,使得后续的功能扩展(如添加新设备)变得更加简单。

采坑心得
在源码提交过程中,我遇到了一些问题,特别是在设备状态更新和连接管理方面。以下是一些详细的经验总结:

设备状态更新逻辑:在更新设备状态时,初始未考虑到所有开关的状态会影响到灯和风扇的输出电压,导致了不正确的输出结果。通过在 updateConnections 方法中增加对开关状态的检查,确保了只有在开关闭合时,设备才能正常工作。

电压计算问题:在计算风扇和灯的亮度时,未考虑到电压差的范围限制,导致超出范围的输入电压仍然被计算为有效值。通过在 updateState 方法中添加条件判断,确保了电压值在合理范围内。

测试用例覆盖不足:在初次提交时,未能覆盖所有可能的输入情况,导致在运行时出现异常。通过增加更多的测试用例,确保了程序的健壮性。

改进建议
对于本次作业的编码实现,我提出以下改进建议:

代码模块化:将设备的状态更新和电压计算逻辑进一步抽象,形成独立的方法,以提高代码的可读性和可维护性。

增加异常处理:在输入处理和设备状态更新过程中,增加异常处理机制,以应对不合理的输入情况,增强程序的健壮性。

完善测试用例:在后续的作业中,建议增加更多边界条件的测试用例,以确保程序在各种情况下都能正常工作。

题目集6
家居强电电路模拟程序-2总结性Blog
前言
在智能家居的快速发展背景下,家居强电电路模拟程序的设计与实现成为了一个重要的课题。本次作业的主题是“家居强电电路模拟程序-2”,该题目围绕智能家居的控制与受控设备展开,涉及的知识点包括电路基础、设备控制、状态管理等。题目总分为100分,难度适中,主要考察学生对电路模拟、设备状态管理、以及面向对象编程的理解与应用。

通过本次作业,学生需要设计一个能够模拟多种控制及受控设备的电路系统,要求不仅要实现基本的开关、调速器功能,还要考虑设备间的连接关系及状态更新。这一过程涉及到类的设计、状态管理、输入输出处理等多个方面,具有一定的复杂性。

设计与分析

  1. 题目分析
    本题的核心在于实现一个智能家居强电电路模拟系统,其中包含开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇和落地扇等设备。每种设备都有其特定的输入输出关系和状态管理机制。题目要求对这些设备进行合理的类设计,并实现其状态的动态更新。

  2. 重点题目分析
    在所有设备中,分档调速器(StepSpeedController)是得分最高的一题,其设计与实现尤为关键。以下是分档调速器的类设计及其核心方法分析:

// 分档调速器类
class StepSpeedController extends ControlDevice {
private int currentLevel; // 当前档位 0-3
private static final double[] LEVELS = {0, 0.3, 0.6, 0.9}; // 4档位的输出比例

public StepSpeedController(String id) {
    super(id);
    this.currentLevel = 0;
}

public void increaseLevel() {
    if (currentLevel < 3) {
        currentLevel++;
        calculateOutputVoltage();
    }
}

public void decreaseLevel() {
    if (currentLevel > 0) {
        currentLevel--;
        calculateOutputVoltage();
    }
}

@Override
protected void calculateOutputVoltage() {
    this.outputVoltage = inputVoltage * LEVELS[currentLevel];
}

@Override
public double getOutputVoltage() {
    return outputVoltage;
}

@Override
public String getStatus() {
    return String.format("%.2f", LEVELS[currentLevel]);
}

}
类图设计思路
状态管理:通过currentLevel变量来管理当前档位,初始为0。
输出电压计算:calculateOutputVoltage方法根据当前档位计算输出电压,确保了电压与档位之间的动态关系。
档位调整:increaseLevel和decreaseLevel方法实现了档位的增减,确保用户可以通过简单的指令调整设备状态。

  1. 类的设计
    1.1 CircuitDevice(基础电路设备类)
    属性:

id: 设备的唯一标识符。
voltage: 当前设备的电压。
resistance: 设备的电阻。
方法:

getOutputVoltage(): 抽象方法,返回设备的输出电压。
getStatus(): 抽象方法,返回设备的状态。
updateState(double inputVoltage): 抽象方法,更新设备的状态。
分析:CircuitDevice类作为所有电路设备的基类,定义了电路设备的基本特征和行为。通过抽象方法的设计,确保所有继承该类的设备都必须实现自己的状态和电压计算逻辑。

1.2 ControlDevice(控制设备抽象类)
继承:继承自CircuitDevice。

属性:

inputVoltage: 输入电压。
outputVoltage: 输出电压。
方法:

setInputVoltage(double voltage): 设置输入电压并计算输出电压。
updateState(double inputVoltage): 更新状态,调用setInputVoltage()。
分析:ControlDevice类是一个抽象类,专门用于表示控制设备。它扩展了CircuitDevice类,增加了输入输出电压的管理。通过这个类,控制设备可以统一管理输入电压并计算输出电压。

1.3 Switch(开关类)
继承:继承自ControlDevice。

属性:

isClosed: 布尔值,表示开关是否闭合。
方法:

toggle(): 切换开关状态。
calculateOutputVoltage(): 根据开关状态计算输出电压。
getStatus(): 返回开关的状态(“closed”或“turned on”)。
分析:Switch类实现了开关的具体功能,利用继承自ControlDevice的输入输出管理。通过toggle()方法,用户可以轻松切换开关状态,且状态变化会自动反映到输出电压上。

1.4 StepSpeedController(分档调速器类)
继承:继承自ControlDevice。

属性:

currentLevel: 当前档位(0-3)。
LEVELS: 静态数组,表示每个档位的输出比例。
方法:

increaseLevel(): 增加档位。
decreaseLevel(): 减少档位。
calculateOutputVoltage(): 根据当前档位计算输出电压。
getStatus(): 返回当前档位的输出比例。
分析:StepSpeedController类专门用于实现分档调速器的功能。它利用继承自ControlDevice的结构,增加了档位管理的逻辑,使得设备的状态能够动态变化。

1.5 ContinuousSpeedController(连续调速器类)
继承:继承自ControlDevice。

属性:

level: 当前档位参数(范围在0.00到1.00之间)。
方法:

setLevel(double level): 设置档位参数。
calculateOutputVoltage(): 计算输出电压。
getStatus(): 返回当前档位参数。
分析:ContinuousSpeedController类实现了连续调速器的功能,允许用户设置一个介于0到1之间的档位参数。通过继承自ControlDevice,它能够利用已有的输入输出管理逻辑。

1.6 PoweredDevice(受控设备抽象类)
继承:继承自CircuitDevice。

属性:

voltageDrop: 电压降。
方法:

updateState(double voltage): 更新状态,计算电压降。
getOutputVoltage(): 返回电压降。
分析:PoweredDevice类是所有受控设备的基类,定义了受控设备的基本行为。它提供了电压更新的逻辑,使得所有继承该类的设备都能统一处理电压降。

1.7 IncandescentLamp(白炽灯类)
继承:继承自PoweredDevice。
方法:
getStatus(): 根据电压降计算并返回亮度。
分析:IncandescentLamp类实现了白炽灯的具体逻辑,通过电压降来计算亮度,符合电路模型的要求。

1.8 FluorescentLamp(日光灯类)
继承:继承自PoweredDevice。
方法:
getStatus(): 返回亮度状态。
分析:FluorescentLamp类实现了日光灯的具体逻辑,简单地根据电压降返回亮度。

1.9 CeilingFan(吊扇类)
继承:继承自PoweredDevice。
方法:
getStatus(): 根据电压降计算并返回转速。
分析:CeilingFan类实现了吊扇的具体逻辑,通过电压降计算转速,符合电路模型的要求。

1.10 StandingFan(落地扇类)
继承:继承自PoweredDevice。
方法:
getStatus(): 根据电压降计算并返回转速。
分析:StandingFan类实现了落地扇的具体逻辑,类似于CeilingFan类,通过电压降计算转速。

1.11 SerialCircuit(串联电路类)
继承:继承自CircuitDevice。

属性:

devices: 存储该电路中的设备。
mainCircuitDevices: 存储干路设备。
addedDeviceIds: 记录已添加设备的ID。
isMainCircuit: 标记是否为干路。
方法:

addDevice(CircuitDevice device, boolean isMainCircuitDevice): 添加设备到电路。
updateState(double inputVoltage): 更新电路状态。
分析:SerialCircuit类用于表示串联电路,能够管理多个设备并更新其状态。通过对设备的管理,确保电路的输入输出逻辑能够正确执行。

1.12 ParallelCircuit(并联电路类)
继承:继承自CircuitDevice。

属性:

branches: 存储并联电路的多个串联电路。
方法:

addBranch(SerialCircuit branch): 添加串联电路分支。
updateState(double inputVoltage): 更新并联电路状态。
分析:ParallelCircuit类用于表示并联电路,能够管理多个串联电路的分支。通过对分支的管理,确保并联电路的输入输出逻辑能够正确执行。

  1. 类与类的关系
    继承关系:

ControlDevice和PoweredDevice类均继承自CircuitDevice,分别表示控制设备和受控设备。
Switch、StepSpeedController、ContinuousSpeedController类继承自ControlDevice,表示具体的控制设备。
IncandescentLamp、FluorescentLamp、CeilingFan、StandingFan类继承自PoweredDevice,表示具体的受控设备。
SerialCircuit和ParallelCircuit类均继承自CircuitDevice,表示电路结构。
组合关系:

SerialCircuit类中包含多个CircuitDevice对象(控制设备和受控设备),实现了对设备的管理。
ParallelCircuit类中包含多个SerialCircuit对象,表示并联的电路结构。
聚合关系:

CircuitManager类负责管理所有的电路设备和电路结构,处理用户输入并更新电路状态。
总结
通过以上分析,可以看出该代码的类设计合理,充分利用了面向对象编程的特性。类与类之间的继承、组合关系使得整个系统具有良好的扩展性和可维护性。每个类的职责清晰,便于后续的功能扩展和逻辑修改。这种设计方式在处理复杂系统时,能够显著提高代码的可读性和可重用性。

类图如下:

时序图如下:

  1. 设计心得
    在设计过程中,面向对象的思想贯穿始终。通过抽象类和接口的设计,使得不同设备之间的共性得以提取,减少了代码重复。同时,状态管理的细化使得设备的行为更加直观,易于维护和扩展。通过合理的类结构,能够轻松地添加新的控制设备或受控设备,增强了系统的可扩展性。

采坑心得
在源码提交过程中,我遇到了一些问题,主要集中在电压计算与状态更新的逻辑上。

  1. 电压计算问题
    在实现电压计算时,初期未考虑到电压的截尾问题,导致在输出时出现了小数值。根据题目的要求,最终结果需要进行截尾处理,确保输出的整洁性。为此,我在getOutputVoltage方法中增加了截尾逻辑:

@Override
public double getOutputVoltage() {
return (int)outputVoltage; // 截尾处理
}
2. 状态更新问题
在设备状态更新时,未能及时更新所有受控设备的状态,导致输出结果不准确。经过调试,我发现需要在每次状态改变后,重新遍历所有设备并更新其状态。为此,我在updateState方法中加入了对所有设备的遍历更新:

@Override
public void updateState(double inputVoltage) {
this.voltage = inputVoltage;
for (CircuitDevice device : devices) {
device.updateState(this.voltage);
}
}
改进建议
代码重构:在实现过程中,部分方法的逻辑较为复杂,建议进行重构,将复杂逻辑拆分为多个小方法,以提高可读性与可维护性。

单元测试:增加单元测试用例,确保每个设备的状态更新与输出逻辑的正确性,减少后期调试成本。

界面友好性:在输入输出的设计上,可以考虑增加用户友好的提示信息,帮助用户更好地理解输入格式及输出结果。

总结
通过本次作业的多个阶段,我深入探索了编程与系统设计的核心概念,特别是在面向对象编程、数据结构和电路模拟方面的应用。这些实践不仅加深了我对Java编程语言的理解,也让我认识到良好的设计模式在复杂系统开发中的重要性。在设计答题判题程序时,我体会到了如何通过抽象类和继承来简化代码结构,提升代码的可读性和可维护性。多选题的处理让我学会了如何利用集合类来管理答案,确保判分逻辑的准确性和高效性。

在智能家居强电电路模拟程序的设计中,我进一步理解了设备间的连接关系以及如何通过状态管理来实现动态更新。通过对不同设备类的设计,我学会了如何将共性抽象出来,减少代码重复,同时增强了系统的扩展性和灵活性。这一过程让我认识到,合理的类设计和清晰的逻辑结构是实现高质量软件的基础。

在遇到问题时,我逐渐学会了如何通过调试和测试来发现并解决问题,尤其是在电压计算和状态更新的逻辑上。通过对代码的反复修改与优化,我不仅提升了自己的编程能力,也增强了对系统整体架构的理解。

未来,我希望能将这些经验应用到更复杂的项目中,进一步提升自己的编程水平和系统设计能力。同时,我也期待在实践中不断学习新技术,探索电路与智能家居的结合,为智能家居的未来发展贡献一份力量。

标签:总结性,题目,String,Blog,电路,电压,方法,设备
From: https://www.cnblogs.com/xyldl/p/18556568

相关文章

  • 面对对象程序设计题目集总结(二)
    前言关于此次题目集     这次的题目集包含了两种大作业类型:第一种是之前答题判题程序的延续,第二种则是新的家居强电电路模拟程序。第一种大作业发布时,我们并未学习继承和多态等面向对象的相关知识,因此最初的代码编写仅依赖于简单的语法。但是随着题目的逐步迭代,第四次作......
  • 力扣题目解析--合并k个升序链表
    题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例1:输入:lists=[[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->......
  • Codeforces 1145 题目分析
    本文将分析Codeforces1145(AprilFoolsDayContest2019)。题目分析A题目描述:使用“灭霸排序”算法可以得到的最长子串的长度。解法:暴力。B题目描述:输入一个整数\(\in[1,99]\),若它的英文形式含有knba四个字母输出NO否则输出YES。解法:打表。C题目描述:输入一......
  • 不能用AI解决的RSA题目
    RSA基础e,n是公开钥匙d是私用钥匙c是密文m是明文(包含flag)n=pqd=invert(e,(p-1)(q-1))m=pow(c,d,n)#解密flag=long_to_bytes(m)#转文字1、相邻素数q=gmpy2.next_prime(p)p和q挨得很近解题代码:fromCrypto.Util.numberimport*fromgmpy2......
  • C题目:指针-将数组a中的n个整数按相反顺序存放
    题目:将数组a中的n个整数按相反顺序存放代码:#include<stdio.h>voidinv(int*a,intlen){inttemp,i,j,m=(len-1)/2;for(i=0;i<=m;i++){j=len-1-i;temp=a[i];a[i]=a[j];a[j]=temp;}}intmain(){intlen,*p,i,a[1......
  • 解题报告——灵活利用题目单调性省下复杂度
    有一种题目,需要直接/间接查询全局最值,并且带修改。直接set/priority_queue不完了吗?然而,这类题目通常具有巨大的操作量,朴素的需要额外复杂度来维护内部性质的数据结构(例如需要带一个\(\log\))往往无法通过此类题目。但是,这种题目本身一般具有某种单调性质,这使得我们可以使用一......
  • C语言期末必练题目——part 12(编程题)
    10.有一个分数序列:2/1,3/2,5/3,8/5,13/8,……编程求这个序列的前20项之和。#include<stdio.h>voidmain(){ inti,t,n=20; floata=2,b=1,s=0;for(i=1;i<=n;i++){s=s+a/b;t=a;a=a+b;b=t;} printf("sum=%6.2f",s);}11.从键盘输入两个数,求出其最大值(要求使用函数完......
  • 力扣题目解析--括号生成
    题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]提示:1<=n<=8代码展示 classSolution{publi......
  • 2024华为OD算法真题目录
    文章目录一、什么是华为OD,什么是华为OD机试?二、华为OD面试流程?三、华为OD机试通过率高吗?四、华为OD薪资待遇?五、大家比较关注问题的FAQ......
  • zblog获取当前页面的标题/链接/ID等属性
    方法:使用全局变量$zbp。在函数内部使用global$zbp;声明。常用属性:当前页面链接:$zbp->currenturl当前页面标题:$zbp->template->GetTags('title')当前页面ID:分类页:$zbp->template->GetTags('category')->ID文章页:$zbp->template->GetTags('article�......