예제 #1
0
        private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!(ListView.SelectedItem is JudgeInfo a))
            {
                return;
            }
            var details = "详情:\n";

            if (a.Result != null)
            {
                for (var i = 0; i < a.Result.Length; i++)
                {
                    details +=
                        $"#{i + 1} 时间:{a.Timeused[i]}ms,内存:{a.Memoryused[i]}kb,退出代码:{a.Exitcode[i]},结果:{a.Result[i]},分数:{a.Score[i]}\n";
                }
            }
            details          += "\n其他信息:\n" + a.AdditionInfo;
            JudgeDetails.Text = details;
            Code.Text         = "代码:\n" + (string.IsNullOrEmpty(a.Code)
                            ? a.Code = Connection.GetJudgeCode(a.JudgeId)?.Code ?? string.Empty
                            : a.Code);
        }
예제 #2
0
        private void Export_MouseDown(object sender, MouseButtonEventArgs e)
        {
            var a = (from c in _curJudgeInfo where c.IsChecked select c).ToList();

            if (a.Any(i => i.ResultSummary == "Judging..."))
            {
                MessageBox.Show("你选择的项目中部分仍在评测,请等待评测完毕再导出", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }
            if (a.Any())
            {
                var sfg = new SaveFileDialog
                {
                    Title  = "保存导出数据:",
                    Filter = "Excel 文件|*.xlsx"
                };
                if (!(sfg.ShowDialog() ?? false))
                {
                    return;
                }
                var dt = new DataTable("结果");
                dt.Columns.Add("姓名");
                dt.Columns.Add("题目名称");
                dt.Columns.Add("评测描述");
                dt.Columns.Add("评测时间");
                dt.Columns.Add("最长时间 (ms)");
                dt.Columns.Add("最大内存 (kb)");
                dt.Columns.Add("结果");
                dt.Columns.Add("分数");
                dt.Columns.Add("代码 (Base64)");
                dt.Columns.Add("代码类型");
                foreach (var i in a)
                {
                    var dr = dt.NewRow();
                    dr[0] = i?.UserName ?? string.Empty;
                    dr[1] = i?.ProblemName ?? string.Empty;
                    dr[2] = i?.Description ?? string.Empty;
                    dr[3] = i?.JudgeDate ?? string.Empty;
                    dr[4] = i?.Timeused?.Max() ?? 0;
                    dr[5] = i?.Memoryused?.Max() ?? 0;
                    dr[6] = i?.ResultSummary ?? string.Empty;
                    dr[7] = i?.FullScore ?? 0;
                    try
                    {
                        var bytes = Encoding.Default.GetBytes(string.IsNullOrEmpty(i?.Code ?? string.Empty)
                            ? i.Code = Connection.GetJudgeCode(i.JudgeId).Code
                            : i.Code);
                        dr[8] = Convert.ToBase64String(bytes);
                    }
                    catch
                    {
                        dr[8] = string.Empty;
                    }
                    dr[9] = i?.Type ?? string.Empty;
                    dt.Rows.Add(dr);
                }
                try
                {
                    ExcelUtility.CreateExcel(sfg.FileName, new[] { dt }, new[] { "结果" });
                    MessageBox.Show("导出成功", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"导出失败,因为 {ex.Message}", "提示", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
            else
            {
                MessageBox.Show("没有要导出的数据", "提示", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }