Курсовой проект по пм 01 Разработка программных модулей программного обеспечения для компьютерных систем Тема Разработка программного обеспечения для решения задачи Электронный Специальность журнал
Скачать 183.44 Kb.
|
2.4 PERT-диаграммаЭто диаграммы взаимосвязей работ и событий. Соответственноданная диаграмма для программы на Рис. 2.4.1. 3 ПРОГРАММНО-ДОКУМЕНТАЦИОННАЯ ЧАСТЬОписание основных функций и процедурПроцедура входа и открытия формы преподавателя или студента Данная процедура выполняет проверку введенных пользователем данных для входа, проверяя их на корректность ввода, и, если они были введены корректно, сравнивает их с данными на сервере. Исходя из проверки, выполняется открытие 1 из 2 возможных форм, формы преподавателя или студента. intEnt = 0, IdForm; DataSetdataSet; SqlDataAdapter adapter; stringsql; SqlConnection connection = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ОсновнаяБД;Integrated Security=True"); stringLoginForm = LoginText.Text, PassworForm = PassworText.Text; sql = "SELECT * FROM [Учебные заведения]"; connection.Open(); adapter = new SqlDataAdapter(sql, connection); dataSet = new DataSet(); adapter.Fill(dataSet, "Enter"); for (int i = 0; i < Convert.ToInt32(dataSet.Tables["Enter"].Rows.Count); i++) { sql = "SELECT Id FROM [Пароли" + Convert.ToString(dataSet.Tables["Enter"].Rows[i][0]) + "] WHERE Логин='" + LoginForm + "' AND Пароль ='" + PassworForm + "'"; adapter = new SqlDataAdapter(sql, connection); adapter.Fill(dataSet, "User"); if (Convert.ToInt32(dataSet.Tables["User"].Rows.Count) > 0) { IdForm = Convert.ToInt32(dataSet.Tables["User"].Rows[0][0]); if (IdForm == 1) { } else { connection.ChangeDatabase("Журналы" + Convert.ToString(dataSet.Tables["Enter"].Rows[i][0])); sql = "SELECT [Предмет преподования] , [Дополнительный предмет] FROM [Преподователи] WHEREId = '" + IdForm + "'"; adapter = new SqlDataAdapter(sql, connection); adapter.Fill(dataSet, "Thec"); if (Convert.ToInt32(dataSet.Tables["Thec"].Rows.Count) > 0) { Thecher Form2 = new Thecher(Convert.ToString(dataSet.Tables["Thec"].Rows[0][0]), Convert.ToString(dataSet.Tables["Thec"].Rows[0][1]), Convert.ToString(dataSet.Tables["Enter"].Rows[i][0])); this.Hide(); dataSet.Clear(); connection.Close(); Form2.ShowDialog(); this.Close(); } else { sql = "SELECT [Группа] FROM [Студенты] WHERE Id = '" + IdForm + "'"; adapter = new SqlDataAdapter(sql, connection); adapter.Fill(dataSet, "Group"); sql = "SELECT [Специальность], [Семестробучения], YEAR([Датапоступлениягруппы]) as year FROM [Группы] WHERE Группа = '" + Convert.ToString(dataSet.Tables["Group"].Rows[0][0]) + "'"; adapter = new SqlDataAdapter(sql, connection); adapter.Fill(dataSet, "Time"); sql = "SELECT * FROM [Предметы] WHERE Специальность = N'" + Convert.ToString(dataSet.Tables["Time"].Rows[0][0]) + "' AND [Семестробучения]=N'" + Convert.ToString(dataSet.Tables["Time"].Rows[0][1]) + "'"; adapter = new SqlDataAdapter(sql, connection); adapter.Fill(dataSet, "Object"); Student Form2 = new Student(Convert.ToString(dataSet.Tables["Object"].Rows[0][2]), Convert.ToString(dataSet.Tables["Object"].Rows[0][3]), Convert.ToString(dataSet.Tables["Object"].Rows[0][4]), Convert.ToString(dataSet.Tables["Object"].Rows[0][5]), Convert.ToString(dataSet.Tables["Object"].Rows[0][6]), Convert.ToString(dataSet.Tables["Object"].Rows[0][7]), Convert.ToString(dataSet.Tables["Object"].Rows[0][8]), Convert.ToString(dataSet.Tables["Object"].Rows[0][9]), Convert.ToString(dataSet.Tables["Object"].Rows[0][10]), Convert.ToString(dataSet.Tables["Object"].Rows[0][11]), Convert.ToString(dataSet.Tables["Object"].Rows[0][12]), Convert.ToString(dataSet.Tables["Object"].Rows[0][13]), Convert.ToString(dataSet.Tables["Group"].Rows[0][0]), Convert.ToString(dataSet.Tables["Time"].Rows[0][2]), Convert.ToString(dataSet.Tables["Enter"].Rows[i][0]), Convert.ToString(dataSet.Tables["User"].Rows[0][0])); this.Hide(); dataSet.Clear(); connection.Close(); Form2.ShowDialog(); this.Close(); } } } else { if (!(Ent == 1)) MessageBox.Show("Неверныйпарольилилогин.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } connection.Close(); Процедура открытия формы студента Данная процедура запускается автоматически при открытие формы студента. С её помощью в форму студента передается его номер егогруппы, и какие журналы он может открываться для просмотра. public Student(string InC1, string InC2, string InC3, string InC4, string InC5, string InC6, string InC7, string InC8, string InC9, string InC10, string InC11, string InC12, string InC13, string InC14, string InC15, string InC16) { InitializeComponent(); Group = InC13; Year = InC14; Place = InC15; IdStud = InC16; sql = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Журналы" + Place + "; Integrated Security=True"; connection = new SqlConnection(sql); if (InC1 != "") { Object.Items.Add(InC1); if (InC2 != "") { Object.Items.Add(InC2); if (InC3 != "") { Object.Items.Add(InC3); if (InC4 != "") { Object.Items.Add(InC4); if (InC5 != "") { Object.Items.Add(InC5); if (InC6 != "") { Object.Items.Add(InC6); if (InC7 != "") { Object.Items.Add(InC7); if (InC8 != "") { Object.Items.Add(InC8); if (InC9 != "") { Object.Items.Add(InC9); if (InC10 != "") { Object.Items.Add(InC10); if (InC11 != "") { Object.Items.Add(InC11); if (InC12 != "") { Object.Items.Add(InC12); } } } } } } } } } } } } } Функция открытия журнала для студента Данная функция, загружает журнал с сервера, который выбрал студент из списка ему доступных журналов, и выводит его на экран для просмотра, не позволяя его изменять. При этом из журнала выбираются только данные о самом студенте, данные о других студентах выведены не будут вообще. string Group, Year, Place, sql, IdStud; DataSetdataSet; SqlDataAdapter adapter; SqlConnection connection; connection.Open(); dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.AllowUserToAddRows = false; dataGridView1.ReadOnly = true; sql = "SELECT * FROM [" + Group + Object.SelectedItem.ToString() + Year + "] WHERE Id='"+IdStud+"' OR Id='"+1+"'"; adapter = new SqlDataAdapter(sql, connection); dataSet = new DataSet(); adapter.Fill(dataSet, "Class"); dataGridView1.DataSource = dataSet.Tables["Class"]; dataGridView1.Rows[0].Cells[1].Value = "Дата"; dataGridView1.Columns["Id"].Visible = false; dataGridView1.Columns["Студент"].Visible = false; dataGridView1.AllowUserToResizeColumns = false; dataGridView1.AllowUserToResizeRows = false; connection.Close(); Процедура открытия формы студента Данная процедура запускается автоматически при открытие формы преподавателя. С её помощью в форму преподавателя передается его данные, а то есть предметы, которые он ведёт, и группы, у которых он ведёт. С помощью этого создаются списки журналов, которые он может просматривать и редактировать. intFirstObj=0, SecondObj; DataSetdataSet; SqlDataAdapter adapter; stringsql, table; string[,] ListGroup = new string[100, 2]; SqlConnection connection; publicThecher(string S, string Dop, string place) { InitializeComponent(); sql = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Журналы" + place + "; Integrated Security=True"; connection = new SqlConnection(sql); connection.Open(); for (int i = 1; i <= 10; i++) { sql = "SELECT [Семестробучения], [Специальность] FROM [Предметы] WHERE Предмет" + i + "=N'" + S + "'"; adapter = new SqlDataAdapter(sql, connection); dataSet = new DataSet(); adapter.Fill(dataSet, "Load"); for (intstr = 0; str< Convert.ToInt32(dataSet.Tables["Load"].Rows.Count); str++) { sql = "SELECT Группа, YEAR([Датапоступлениягруппы]) as year FROM Группы WHERE Специальность = N'" + Convert.ToString(dataSet.Tables["Load"].Rows[str][1]) + "' AND [Семестробучения] ='" + Convert.ToString(Convert.ToInt32(dataSet.Tables["Load"].Rows[str][0])) + "'"; adapter = new SqlDataAdapter(sql, connection); adapter.Fill(dataSet, "Load2"); for (int last = 0; last < Convert.ToInt32(dataSet.Tables["Load2"].Rows.Count); last++) { ListGroup[FirstObj, 0] = Convert.ToString(dataSet.Tables["Load2"].Rows[last][0]); ListGroup[FirstObj, 1] = Convert.ToString(dataSet.Tables["Load2"].Rows[last][1]); Object.Items.Add(S); ++FirstObj; } } } if (Dop != "") { SecondObj = FirstObj; for (int i = 1; i <= 10; i++) { sql = "SELECT [Семестр обучения], [Специальность] FROM [Предметы] WHERE Предмет" + i + "= N'" + Dop + "'"; adapter = new SqlDataAdapter(sql, connection); dataSet = new DataSet(); adapter.Fill(dataSet, "Load"); for (intstr = 0; str< Convert.ToInt32(dataSet.Tables["Load"].Rows.Count); str++) { sql = "SELECT Группа, YEAR([Датапоступлениягруппы]) as year FROM Группы WHERE Специальность = N'" + Convert.ToString(dataSet.Tables["Load"].Rows[str][1]) + "' AND [Семестробучения] ='" + Convert.ToString(Convert.ToInt32(dataSet.Tables["Load"].Rows[str][0])) + "'"; adapter = new SqlDataAdapter(sql, connection); adapter.Fill(dataSet, "Load2"); for (int last = 0; last < Convert.ToInt32(dataSet.Tables["Load2"].Rows.Count); last++) { ListGroup[SecondObj, 0] = Convert.ToString(dataSet.Tables["Load2"].Rows[last][0]); ListGroup[SecondObj, 1] = Convert.ToString(dataSet.Tables["Load2"].Rows[last][1]); Object.Items.Add(Dop); ++SecondObj; } } } } dataSet.Clear(); connection.Close(); } Данная функция загружает журнал, который выбрал преподаватель из списка ему доступных журналов, и выводит его на экран, позволяя добавлять оценки или исправлять старые. intFirstObj=0, SecondObj; DataSetdataSet; SqlDataAdapter adapter; stringsql, table; string[,] ListGroup = new string[100, 2]; SqlConnection connection; table = IdGroup.SelectedItem.ToString()+Object.SelectedItem.ToString()+ListGroup[IdGroup.SelectedIndex, 1]; sql = "SELECT * FROM [" + table + "]"; dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.AllowUserToAddRows = false; connection.Open(); adapter = new SqlDataAdapter(sql, connection); dataSet = new DataSet(); adapter.Fill(dataSet, "Class"); dataGridView1.DataSource = dataSet.Tables["Class"]; dataGridView1.Columns["Id"].ReadOnly = true; dataGridView1.Columns["Id"].Visible = false; dataGridView1.Columns["Предмет"].ReadOnly = true; dataGridView1.Columns["Предмет"].Visible = false; dataGridView1.Columns["Студент"].ReadOnly = true; dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dataGridView1.AllowUserToResizeColumns = false; dataGridView1.AllowUserToResizeRows = false; connection.Close(); Функция сохранения изменений в журнале Данная функция доступна только преподавателю. Её назначение сохранение изменений, которые внёс преподаватель в загруженный журнал. intFirstObj=0, SecondObj; DataSetdataSet; SqlDataAdapter adapter; stringsql, table; string[,] ListGroup = new string[100, 2]; SqlConnection connection; connection.Open(); for (int l = 0; l < dataGridView1.Rows.Count; l++) for (int t = 0; t < dataGridView1.Columns.Count; t++) dataSet.Tables["Class"].Rows[l].ItemArray[t] = dataGridView1.Rows[l].Cells[t].Value; for (int l = 0; l < dataGridView1.Rows.Count; l++) for (int t = 1; t < dataGridView1.Columns.Count; t++) { if (t + 2 { stringcommandtext = string.Format("UPDATE [" + table + "] Set Дата" + Convert.ToString(t) + " = @dannie Where id = @ids"); SqlCommand command = new SqlCommand(commandtext, connection); command.Parameters.Add("@dannie", SqlDbType.NVarChar, 10); command.Parameters["@dannie"].Value = dataSet.Tables["Class"].Rows[l].ItemArray[t + 2]; command.Parameters.Add("@ids", SqlDbType.Int); command.Parameters["@ids"].Value = dataSet.Tables["Class"].Rows[l].ItemArray[0]; command.ExecuteNonQuery(); } } connection.Close(); |