private void генерацияФОСToolStripMenuItem_Click(object sender, EventArgs e) { TicketsProgressBar.Visible = true; bool a = false; bool b = false; TicketsProgressBar.Maximum = ids.Count; Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); Document doc = app.Documents.Add(Visible: true); doc.PageSetup.BottomMargin = 56.9f; doc.PageSetup.LeftMargin = 64.1f; doc.PageSetup.TopMargin = 56.9f; doc.PageSetup.RightMargin = 43.2f; Range r = doc.Range(); r.InsertAfter("Оценочные материалы при формировании рабочих программ дисциплин (модулей)" + "\n"); r.InsertAfter("Направление подготовки / специальность: " + getMajorName() + "\n"); int majorname = getMajorName().Length; r.InsertAfter("Профиль / специализация: " + GetSprcName() + "\n"); int specName = GetSprcName().Length; r.InsertAfter("Дисциплина: " + discipline + "\n" + "\n"); int discip = discipline.Length; r.InsertAfter("Формируемые компетенции: " + GetCompetenceForDocument() + "\n" + "\n"); r.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphLeft; r.Font.Size = 10; r.Font.Name = "Arial"; for (int i = 0; i < ids.Count; i++) { int y = ids[i]; switch (y) { case 1: { if (ids[i] == 1 && a == false) { r.InsertAfter("1. Описание показателей, критериев и шкал оценивания компетенций." + "\n"); r.InsertAfter("Показатели и критерии оценивания компетенций " + GetCompetenceForDocument() + "\n"); a = true; } else { r.InsertAfter("Показатели и критерии оценивания компетенций " + GetCompetenceForDocument() + "\n"); } break; } case 2: { if (ids[i] == 2 && a == false) { r.InsertAfter("1. Описание показателей, критериев и шкал оценивания компетенций." + "\n"); r.InsertAfter("Шкалы оценивания компетенций " + GetCompetenceForDocument() + "при сдаче экзамена или зачета с оценкой" + "\n"); a = true; } else { r.InsertAfter("Шкалы оценивания компетенций " + GetCompetenceForDocument() + "при сдаче экзамена или зачета с оценкой" + "\n"); } break; } case 3: { if (ids[i] == 3 && a == false) { r.InsertAfter("1. Описание показателей, критериев и шкал оценивания компетенций." + "\n"); r.InsertAfter("Шкалы оценивания компетенций " + GetCompetenceForDocument() + "при сдаче зачета" + "\n"); a = true; } else { r.InsertAfter("Шкалы оценивания компетенций " + GetCompetenceForDocument() + "при сдаче зачета" + "\n"); } break; } case 4: { if (ids[i] == 4 && a == false) { r.InsertAfter("1. Описание показателей, критериев и шкал оценивания компетенций." + "\n"); r.InsertAfter("Шкалы оценивания компетенций " + GetCompetenceForDocument() + "при защите курсового проекта/курсовой работы" + "\n"); a = true; } else { r.InsertAfter("Шкалы оценивания компетенций " + GetCompetenceForDocument() + "при защите курсового проекта/курсовой работы" + "\n"); } break; } case 5: { if (ids[i] == 5 && a == false) { r.InsertAfter("1. Описание показателей, критериев и шкал оценивания компетенций." + "\n"); r.InsertAfter("Компетенции обучающегося оцениваются следующим образом" + "\n"); a = true; } else { r.InsertAfter("Компетенции обучающегося оцениваются следующим образом" + "\n"); a = true; } break; } case 6: { if (ids[i] == 6) { r.InsertAfter("Соответствие между бальной системой и системой оценивания по результатам тестирования устанавли-вается посредством следующей таблицы" + "\n"); } break; } case 7: { if (ids[i] == 7 && b == false) { r.InsertAfter("4. Оценка ответа обучающегося на вопросы, задачу (задание) экзаменационного билета, зачета, курсового проектирования." + "\n"); r.InsertAfter("Оценка ответа обучающегося на вопросы, задачу (задание) экзаменационного билета, зачета" + "\n"); b = true; } else { r.InsertAfter("Оценка ответа обучающегося на вопросы, задачу (задание) экзаменационного билета, зачета" + "\n"); } break; } case 8: { if (ids[i] == 8 && b == false) { r.InsertAfter("4. Оценка ответа обучающегося на вопросы, задачу (задание) экзаменационного билета, зачета, курсо-вого проектирования." + "\n"); r.InsertAfter("Оценка ответа обучающегося при защите курсового работы/курсового проекта" + "\n"); b = true; } else { r.InsertAfter("Оценка ответа обучающегося при защите курсового работы/курсового проекта" + "\n"); } break; } default: break; } generateTable(ids[i], doc); r.InsertAfter("\n"); TicketsProgressBar.PerformStep(); } r.SetRange(0, 74); r.Font.Bold = 1; r.Font.Size = 12; r.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; r.SetRange(74, 113); r.Font.Bold = 1; r.Font.Size = 12; int p = 114 + majorname; r.SetRange(p, p + 25); r.Font.Bold = 1; r.Font.Size = 12; p = p + 25 + specName + 1; r.SetRange(p, p + 12); r.Font.Bold = 1; r.Font.Size = 12; p = p + 12 + discip + 1; r.SetRange(p, p + 25); r.Font.Bold = 1; r.Font.Size = 12; doc.Save(); doc.Close(); app.Quit(); TicketsProgressBar.Value = 0; MessageBox.Show("Фос успешно сгенерирован", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void GenerateTicketsButton_Click(object sender, EventArgs e) { if (SemesterComboBox.SelectedIndex == -1) { MessageBox.Show("Пожалуйста, укажите семестр", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { if (AcademicYearComboBox.SelectedIndex == -1) { MessageBox.Show("Пожалуйста, укажите учебный год", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { int k; Random random = new Random(); sql = new SqlConnection(conMod); sql.Open(); SqlDataReader sqlReader = null; SqlCommand PlaneCode = new SqlCommand("SELECT QuestionText, QuestionType, Competence FROM Questions WHERE QuestionType='Теор.' AND Active = 'True' AND DisciplinesName='" + discipline + "'", sql); try { sqlReader = PlaneCode.ExecuteReader(); while (sqlReader.Read()) { theory.Add(sqlReader["QuestionText"].ToString() + " (" + sqlReader["Competence"].ToString() + ")"); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (sqlReader != null) { sqlReader.Close(); } } sqlReader = null; PlaneCode = new SqlCommand("SELECT QuestionText, Competence FROM Questions WHERE QuestionType='Практ.' AND Active = 'True' AND DisciplinesName='" + discipline + "'", sql); try { sqlReader = PlaneCode.ExecuteReader(); while (sqlReader.Read()) { practice.Add(sqlReader["QuestionText"].ToString() + " (" + sqlReader["Competence"].ToString() + ")"); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (sqlReader != null) { sqlReader.Close(); } } for (int p = 0; p < theory.Count; p++) { theoryPerm.Add(theory[p]); } for (int p = 0; p < practice.Count; p++) { practicePerm.Add(practice[p]); } int TableRow = CountOfTheoryQuestions + CountOfPracticeQuestion; Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); Document doc = app.Documents.Add(Visible: true); doc.Paragraphs.LeftIndent = 37f; Range r = doc.Range(); for (int i = 1; i <= CountOfTickets; i++) { tb = doc.Tables.Add(doc.Paragraphs[doc.Paragraphs.Count].Range, TableRow + 2, 1); /* В паметрах указывается: 1.Место,где она начинается; 2.Кол-во строк; 3.Кол-во столбцов */ tb.Borders.Enable = 1; //Делаем границы видимыми tb.Rows.HeadingFormat = -1; int rowcounter = 3; tb.Cell(1, 0).Width = 498.5f; tb.Cell(1, 0).HeightRule = WdRowHeightRule.wdRowHeightExactly; tb.Cell(1, 0).Height = 12f; tb.Cell(1, 0).Range.Text = "Дальневосточный государственный университет путей сообщения"; tb.Cell(1, 0).Range.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; tb.Cell(1, 0).Range.Font.Name = "Times New Roman"; tb.Cell(1, 0).Range.Font.Size = 10; tb.Cell(2, 0).Split(1, 3); // ячейка первая из 3 tb.Cell(2, 1).Width = 147.7f; tb.Cell(2, 1).Range.InsertAfter("Кафедра \"" + DepartamentTextBox.Text + "\"\n"); tb.Cell(2, 1).Range.InsertAfter(SemesterComboBox.Text + "-й семестр" + "\n"); tb.Cell(2, 1).Range.InsertAfter(AcademicYearComboBox.Text + " учебный год"); GetStyle(2, 1); // ячейка вторая из 3 tb.Cell(2, 2).Width = 206.3f; tb.Cell(2, 2).Range.InsertAfter("ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № " + i + "\n"); tb.Cell(2, 2).Range.InsertAfter("по дисциплине \"" + DisciplineNameTextBox.Text + "\"" + "\n" + " для студентов специальности " + MajorCode.Text + "\n\"" + MajorName.Text + "\""); GetStyle(2, 2); // ячейка третья из 3 tb.Cell(2, 3).Width = 144.5f; tb.Cell(2, 3).Range.InsertAfter("\"Утверждаю\"" + "\n" + "Заведующий кафедрой" + "\n" + DaddyTextBox.Text + "\n" + "\"___\" __________ 20___г."); tb.Cell(2, 3).Range.InsertAfter("\n" + "\n"); GetStyle(2, 3); tb.Cell(2, 3).Range.Paragraphs.LineSpacing = 8.5f; tb.Cell(2, 3).Range.Paragraphs.LineUnitAfter = 0.3f; tb.Cell(2, 3).Range.Paragraphs.LineUnitBefore = 0.3f; k = 1; for (int j = 0; j < CountOfTheoryQuestions; j++) { if (theory.Count == 0) { for (int p = 0; p < theoryPerm.Count; p++) { theory.Add(theoryPerm[p]); } } switch (caseSwitch) { case 1: tb.Cell(rowcounter, 0).Width = 498.5f; temp = random.Next(0, theory.Count / 2); tb.Cell(rowcounter, 0).Range.Text = k + ". " + theory[temp].ToString(); theory.RemoveAt(temp); tb.Cell(rowcounter, 0).Range.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphJustify; tb.Cell(rowcounter, 0).Range.Font.Name = "Times New Roman"; tb.Cell(rowcounter, 0).Range.Font.Size = 10; tb.Cell(rowcounter, 0).Range.Paragraphs.LineSpacing = 8.5f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitAfter = 0.3f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitBefore = 0.3f; rowcounter++; k++; caseSwitch = 2; break; case 2: tb.Cell(rowcounter, 0).Width = 498.5f; temp = random.Next(theory.Count / 2, theory.Count); tb.Cell(rowcounter, 0).Range.Text = k + ". " + theory[temp].ToString(); theory.RemoveAt(temp); tb.Cell(rowcounter, 0).VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter; tb.Cell(rowcounter, 0).Range.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphJustify; tb.Cell(rowcounter, 0).Range.Font.Name = "Times New Roman"; tb.Cell(rowcounter, 0).Range.Font.Size = 10; tb.Cell(rowcounter, 0).Range.Paragraphs.LineSpacing = 8.5f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitAfter = 0.3f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitBefore = 0.3f; rowcounter++; k++; caseSwitch = 1; break; } } if (CountOfPracticeQuestion != 0) { for (int j = 0; j < CountOfPracticeQuestion; j++) { if (practice.Count == 0) { for (int p = 0; p < practicePerm.Count; p++) { practice.Add(practicePerm[p]); } } switch (caseSwitch) { case 1: tb.Cell(rowcounter, 0).Width = 498.5f; temp = random.Next(0, practice.Count / 2); tb.Cell(rowcounter, 0).Range.Text = k + ". " + practice[temp].ToString(); practice.RemoveAt(temp); tb.Cell(rowcounter, 0).VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter; tb.Cell(rowcounter, 0).Range.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphJustify; tb.Cell(rowcounter, 0).Range.Font.Name = "Times New Roman"; tb.Cell(rowcounter, 0).Range.Font.Size = 10; tb.Cell(rowcounter, 0).Range.Paragraphs.LineSpacing = 8.5f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitAfter = 0.3f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitBefore = 0.3f; rowcounter++; k++; caseSwitch = 2; break; case 2: tb.Cell(rowcounter, 0).Width = 498.5f; temp = random.Next(practice.Count / 2, practice.Count); tb.Cell(rowcounter, 0).Range.Text = k + ". " + practice[temp].ToString(); practice.RemoveAt(temp); tb.Cell(rowcounter, 0).VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter; tb.Cell(rowcounter, 0).Range.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphJustify; tb.Cell(rowcounter, 0).Range.Font.Name = "Times New Roman"; tb.Cell(rowcounter, 0).Range.Font.Size = 10; tb.Cell(rowcounter, 0).Range.Paragraphs.LineSpacing = 8.5f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitAfter = 0.3f; tb.Cell(rowcounter, 0).Range.Paragraphs.LineUnitBefore = 0.3f; rowcounter++; k++; caseSwitch = 1; break; } } } r.InsertAfter("\n"); TicketsProgressBar.PerformStep(); } doc.Save(); doc.Close(); app.Quit(); MessageBox.Show("Билеты сгенерированы", "Уведомление", MessageBoxButtons.OK, MessageBoxIcon.Information); TicketsProgressBar.Value = 0; } } }