202601061423

This commit is contained in:
GukSang.Jin
2026-01-06 14:23:40 +08:00
parent b1c3e2781b
commit 36f9b3b965
2 changed files with 51 additions and 80 deletions

View File

@@ -920,7 +920,7 @@ namespace WindowsFormsApp6
/// <summary>
/// 计算标准偏差
/// 计算方式:基于每个试样的平均芯吸速率计算标准偏差(组间标准偏差)
/// 结果:只有一个标准偏差值,合并显示在第1列
/// 结果:只有一个标准偏差值,只在试样1的第1列显示
///
/// 说明:
/// - 每5个试样为一组计算该组的标准偏差
@@ -938,9 +938,9 @@ namespace WindowsFormsApp6
// 清空标准偏差行的所有数据
for (int i = 1; i <= currentSampleCount; i++)
{
stdRow[$"试样{i}_1"] = 0.0;
stdRow[$"试样{i}_2"] = 0.0;
stdRow[$"试样{i}_3"] = 0.0;
stdRow[$"试样{i}_1"] = DBNull.Value;
stdRow[$"试样{i}_2"] = DBNull.Value;
stdRow[$"试样{i}_3"] = DBNull.Value;
}
// 计算每组5个试样的标准偏差
@@ -982,7 +982,7 @@ namespace WindowsFormsApp6
stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1));
}
// 只在该组第1个试样的第1列显示标准偏差(合并显示效果)
// 只在该组第1个试样的第1列显示标准偏差其他列保持DBNull
stdRow[$"试样{startSample}_1"] = Math.Round(stdDev, 2);
}
}
@@ -992,7 +992,7 @@ namespace WindowsFormsApp6
// 清空所有行的标准偏差列
foreach (DataRow row in sampleDataTable.Rows)
{
row[ROW_STD_DEVIATION] = 0.0;
row[ROW_STD_DEVIATION] = DBNull.Value;
}
// 计算每组5个试样的标准偏差
@@ -1037,7 +1037,7 @@ namespace WindowsFormsApp6
stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1));
}
// 只在该组第1个试样的第1次测试行显示标准偏差(合并显示效果)
// 只在该组第1个试样的第1次测试行显示标准偏差其他行保持DBNull
int targetRowIndex = (startSample - 1) * 3; // 第1次测试的行索引
if (targetRowIndex < sampleDataTable.Rows.Count)
{

View File

@@ -455,28 +455,20 @@ namespace WindowsFormsApp6
DataRow avgRow = dataTable.NewRow();
avgRow["序号"] = $"平均时间(s) 试样{startSample}-{endSample}";
// 将平均值显示在该组的所有试样列(合并显示效果)
for (int i = startSample; i <= endSample; i++)
// 只在该组第一个试样列显示平均值其他列设置为DBNull
for (int i = 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = groupAvg;
}
}
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = DBNull.Value;
}
}
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = DBNull.Value;
// 只在该组第一个试样列显示平均值
if (i == startSample)
{
avgRow[$"试样{i}"] = groupAvg;
}
else
{
avgRow[$"试样{i}"] = DBNull.Value;
}
}
}
@@ -754,27 +746,20 @@ namespace WindowsFormsApp6
avgAbsorption = 0;
}
// 将平均值显示在该组的所有试样列(合并显示效果)
for (int i = startSample; i <= endSample; i++)
// 只在该组第一个试样列显示平均值其他列设置为DBNull
for (int i = 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = avgAbsorption;
}
}
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = DBNull.Value;
}
}
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = DBNull.Value;
// 只在该组第一个试样列显示平均值
if (i == startSample)
{
avgRow[$"试样{i}"] = avgAbsorption;
}
else
{
avgRow[$"试样{i}"] = DBNull.Value;
}
}
}
dataTable.Rows.Add(avgRow);
@@ -790,27 +775,20 @@ namespace WindowsFormsApp6
maxAbsorption = 0;
}
// 将最大值显示在该组的所有试样列(合并显示效果)
for (int i = startSample; i <= endSample; i++)
// 只在该组第一个试样列显示最大值其他列设置为DBNull
for (int i = 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
maxRow[$"试样{i}"] = maxAbsorption;
}
}
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
maxRow[$"试样{i}"] = DBNull.Value;
}
}
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
maxRow[$"试样{i}"] = DBNull.Value;
// 只在该组第一个试样列显示最大值
if (i == startSample)
{
maxRow[$"试样{i}"] = maxAbsorption;
}
else
{
maxRow[$"试样{i}"] = DBNull.Value;
}
}
}
dataTable.Rows.Add(maxRow);
@@ -826,27 +804,20 @@ namespace WindowsFormsApp6
stdDev = 0;
}
// 将标准偏差显示在该组的所有试样列(合并显示效果)
for (int i = startSample; i <= endSample; i++)
// 只在该组第一个试样列显示标准偏差其他列设置为DBNull
for (int i = 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
stdDevRow[$"试样{i}"] = stdDev;
}
}
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
stdDevRow[$"试样{i}"] = DBNull.Value;
}
}
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
stdDevRow[$"试样{i}"] = DBNull.Value;
// 只在该组第一个试样列显示标准偏差
if (i == startSample)
{
stdDevRow[$"试样{i}"] = stdDev;
}
else
{
stdDevRow[$"试样{i}"] = DBNull.Value;
}
}
}
dataTable.Rows.Add(stdDevRow);