курсовая работа. Курсовая (1). Пояснительная записка к курсовому проекту содержит постановку и программу решения задачи Автоматизация учета зачисления абитуриентов по результатам вступительного экзамена
Скачать 3.65 Mb.
|
ЗаключениеВ процессе выполнения курсового проекта были разработаны структура и алгоритм работы приложения «DevApp.exe» по задаче «Автоматизация зачисления абитуриентов по результатам вступительного экзамена». При этом были изучены особенности реализации компонентов информационной системы, а также особенность работы секретарей во время распределения абитуриентов. Результатом работы стало создание программного продукта. Программное обеспечение написано на языке С# с использованием среды разработки Visual Studio 2022. Результаты выводятся в Excel. Данные хранятся в SQL Server 2019 Были проведены опытная эксплуатация и отладочное тестирование программного обеспечения. После этого было написано руководство пользователя. С помощью приложения на основании данных контрольного примера были получены результаты, которые полностью совпадают с выходной информацией контрольного примера. Приложение А Исходный код программы Код окна «Aut» using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace Dethapp { /// /// Логика взаимодействия для Aut.xaml /// public partial class Aut : Window { public Aut() { InitializeComponent(); } public static int UserStatus; private void EntR_Click(object sender, RoutedEventArgs e) { string login = Login.Text; string password = Pass.Text; if (password == "" || login == "") { MessageBox.Show("Были заполнены не все поля","Внимание!"); return; } UsersTab user = AbiturientsBB.GetContext().UsersTab.ToList().Find(u => u.Логин == login && u.Пароль == password); if (user != null) { NewOpenSource Menu = new NewOpenSource(); Menu.Show(); this.Hide(); Login.Text = ""; Pass.Text = ""; if (user.Уровень_доступа == true) { ((Manager.MainFrame.Parent as Grid).FindName("FioTb") as TextBlock).Text = user.ФИО; MessageBox.Show("Вы успешно авторизовались как администратор","Успешная авторизация"); UserStatus=1; } else if (user.Уровень_доступа == false) { ((Manager.MainFrame.Parent as Grid).FindName("FioTb") as TextBlock).Text = user.ФИО; MessageBox.Show("Вы успешно авторизовались как секретарь","Успешная авторизация"); UserStatus = 0; } } else { MessageBox.Show("Внимание: Пользователь не найден,\nПроверте логин или пароль.","Ошибка"); } } private void ExT_Click(object sender, RoutedEventArgs e) { Close(); } private void AbiturientBtn_Click(object sender, RoutedEventArgs e) { this.Hide(); AbiturientRegWindow abiturientRegWindow = new AbiturientRegWindow(); АбитуриентыEdit.abiturietnStatus = 1; abiturientRegWindow.Show(); } private void Login_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { Pass.Focus(); } } private void Pass_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { EntR_Click(sender, e); } } } } Код страницы «ChooseUserPage» using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace Dethapp { /// /// Логика взаимодействия для ChooseUserPage.xaml /// public partial class ChooseUserPage : Page { public ChooseUserPage() { InitializeComponent(); ComboSelect.SelectedIndex = 0; Sort.SelectedIndex = 0; var CurrentUsers = AbiturientsBB.GetContext().UsersTab.ToList(); ListViewUsers.ItemsSource = CurrentUsers; Update(); } private void Update() { var list = AbiturientsBB.GetContext().UsersTab.ToList(); if (TBSearch.Text != "") { list = list.Where(p => p.ФИО.ToLower().Contains(TBSearch.Text.ToLower())).ToList(); } switch (ComboSelect.SelectedIndex) { case 1: list = list.Where(p => p.Должность == "Администратор").ToList(); break; case 2: list = list.Where(p => p.Должность == "Секретарь").ToList(); break; case 3: list = list.Where(p => p.Должность == "Гость").ToList(); break; } switch (Sort.SelectedIndex) { case 1: list = list.OrderByDescending(p => p.ФИО).ToList(); break; case 2: list = list.OrderBy(p => p.ФИО).ToList(); break; } ListViewUsers.ItemsSource = list; } private void TBSearch_TextChanged(object sender, TextChangedEventArgs e) { Update(); } private void ComboSelect_SelectionChanged(object sender, SelectionChangedEventArgs e) { Update(); } private void Dostup_Checked(object sender, RoutedEventArgs e) { Update(); } private void Sort_SelectionChanged(object sender, SelectionChangedEventArgs e) { Update(); } } } Код окна «NewOpenSource» using System; using System.Collections.Generic; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using WebGrease.Configuration; using System.Windows.Threading; namespace Dethapp { /// /// Логика взаимодействия для NewOpenSource.xaml /// public partial class NewOpenSource : Window { public NewOpenSource() { InitializeComponent(); MainFraim.Navigate(new СпециальностьPage()); Manager.MainFrame = MainFraim; Time(); BaseSaveBtn.IsEnabled = false; TestBtn.IsEnabled = false; } string sqlconnect = "Data Source=DESKTOP-N11STEF;Initial Catalog=Abiturients;Integrated Security=True"; private DispatcherTimer timer; private void ЗаявкаBtn_Click(object sender, RoutedEventArgs e) { MainFraim.Navigate(new ЗаявкиPage()); } private void СпециальнBtn_Click(object sender, RoutedEventArgs e) { MainFraim.Navigate(new СпециальностьPage()); } private void ГруппыBtn_Click(object sender, RoutedEventArgs e) { MainFraim.Navigate(new ГруппыPage()); } private void РаспГРBtn_Click(object sender, RoutedEventArgs e) { MainFraim.Navigate(new РаспредГрPage()); } private void АбитурBtn_Click(object sender, RoutedEventArgs e) { MainFraim.Navigate(new АбитуриентPage()); } private void TestBtn_Click(object sender, RoutedEventArgs e) { MainFraim.Navigate(new ChooseUserPage()); } private void BaseSaveBtn_Click(object sender, RoutedEventArgs e) { if (MessageBox.Show("Произвести резервное копирование?", "Внимание", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { try { SqlConnection con = new SqlConnection(sqlconnect); con.Open(); SqlCommand command = new SqlCommand(@"BACKUP DATABASE Abiturients TO DISK = 'C:\sql\master.bak'", con); //SqlDataAdapter adapter = new SqlDataAdapter(); command.ExecuteNonQuery(); MessageBox.Show("Бекап базы успешно","Успех"); con.Close(); con.Dispose(); } catch { MessageBox.Show("Бекап базы провалено","Ошибка"); } } } private void Print_Click(object sender, RoutedEventArgs e) { PrintDialog p = new PrintDialog(); p.PrintVisual((Visual)MainFraim, "This is the contents of a frame!"); p.PageRangeSelection = PageRangeSelection.AllPages; p.UserPageRangeEnabled = true; Nullable } public void UsersPortal() { if(Aut.UserStatus==0) { BaseSaveBtn.IsEnabled = false; TestBtn.IsEnabled = false; } else if (Aut.UserStatus == 1) { BaseSaveBtn.IsEnabled = true; TestBtn.IsEnabled = true; } } private void Time() { timer = new DispatcherTimer(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = new TimeSpan(0, 0, 5); timer.Start(); } private void timer_Tick(object sender, EventArgs e) { timer.Stop(); UsersPortal(); } } } Код страницы « АбитуриентPage» using DocumentFormat.OpenXml.Wordprocessing; using Microsoft.Win32; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Excel = Microsoft.Office.Interop.Excel; namespace Dethapp { /// /// Логика взаимодействия для АбитуриентPage.xaml /// public partial class АбитуриентPage : Page { public static int Костыль1; public АбитуриентPage() { InitializeComponent(); Dgridnamordnic.ItemsSource = AbiturientsBB.GetContext().Абитуриент.ToList(); ComboSelect.SelectedIndex = 0; Sort.SelectedIndex = 0; Update(); } private void Page_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { if (Visibility == Visibility.Visible) { AbiturientsBB.GetContext().ChangeTracker.Entries().ToList().ForEach(p => p.Reload()); Dgridnamordnic.ItemsSource = AbiturientsBB.GetContext().Абитуриент.ToList(); } } private void BtnEdit_Click(object sender, RoutedEventArgs e) { Manager.MainFrame.Navigate(new АбитуриентыEdit((sender as Button).DataContext as Абитуриент)); Костыль1 = 1; } private void BtnADD_Click(object sender, RoutedEventArgs e) { Manager.MainFrame.Navigate(new АбитуриентыEdit(null)); Костыль1 = 0; } private void BtnDell_Click(object sender, RoutedEventArgs e) { var Dellete = Dgridnamordnic.SelectedItems.Cast<Абитуриент>().ToList(); if (MessageBox.Show($"Вы точно хотите удалить следующие {Dellete.Count()} элементов?", "Внимание", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { try { AbiturientsBB.GetContext().Абитуриент.RemoveRange(Dellete); AbiturientsBB.GetContext().SaveChanges(); MessageBox.Show("Данные удалены!"); Dgridnamordnic.ItemsSource = AbiturientsBB.GetContext().Абитуриент.ToList(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } } private void ExT_Click(object sender, RoutedEventArgs e) { Environment.Exit(0); } private void Print_Click(object sender, RoutedEventArgs e) { try { //запрос данных SqlConnection sqlcon = new SqlConnection(@"Data Source=DESKTOP-N11STEF;Initial Catalog=Abiturients;Integrated Security=True"); sqlcon.Open(); SqlDataAdapter loginadapter = new SqlDataAdapter("SELECT * FROM [dbo].[Абитуриент] ORDER BY ФИО ", sqlcon); DataTable dr = new DataTable(); loginadapter.Fill(dr); //создается таблица DataTable employeeTable = new DataTable(); employeeTable = dr; //Объявляем приложение Excel.Application ex = new Microsoft.Office.Interop.Excel.Application(); //Количество листов в рабочей книге ex.SheetsInNewWorkbook = 1; //Добавить рабочую книгу Excel.Workbook workBook = ex.Workbooks.Add(Type.Missing); //Отключить отображение окон с сообщениями ex.DisplayAlerts = false; //Получаем первый лист Excel.Worksheet sheet = (Excel.Worksheet)ex.Worksheets.get_Item(1); //Название листа sheet.Name = "лист_1"; sheet.Cells[1, 1] = "ООО: Зубрила"; sheet.Cells[2, 1] = "Отчет по зачислению абитуриентов"; //наименования столбцов sheet.Cells[5, 1] = "№"; sheet.Cells[5, 2] = "Код Абитуриента"; sheet.Cells[5, 3] = "Фио Абитуриента"; sheet.Cells[5, 4] = "Телефон"; sheet.Cells[5, 5] = "Средний балл"; //заполнения ячеек из таблицы for (int i = 1; i <= employeeTable.Rows.Count; i++) { sheet.Cells[i + 5, 1] = i; for (int j = 1; j < employeeTable.Columns.Count + 1; j++) { sheet.Cells[i + 5, j + 1] = String.Format(employeeTable.Rows[i - 1][j - 1].ToString()); } } sheet.Cells[employeeTable.Rows.Count + 8, 1] = "Подпись администратора:"; //выбираем диапазон значений Excel.Range range2 = sheet.Range[sheet.Cells[5, 1], sheet.Cells[employeeTable.Rows.Count + 5, employeeTable.Columns.Count + 1]]; range2.Cells.Font.Name = "Times New Roman"; range2.Cells.Font.Size = 12; //размер по содержисому range2.EntireColumn.AutoFit(); range2.EntireRow.AutoFit(); //раставляем рамки range2.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous; sheet.Columns["A:A"].ColumnWidth = 5.0; //устанавливаем у столбцов шрифт и размер sheet.Columns["A:Z"].Font.Name = "Times New Roman"; sheet.Columns["A:Z"].Font.Size = 12; Excel.Range range1 = sheet.Range[sheet.Cells[6, 2], sheet.Cells[employeeTable.Rows.Count + 5, 2]]; //меняем формат ячеек range1.NumberFormat = "0"; //Отобразить Excel ex.Visible = true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void TBSearch_TextChanged(object sender, TextChangedEventArgs e) { Update(); } private void ComboSelect_SelectionChanged(object sender, SelectionChangedEventArgs e) { Update(); } private void Sort_SelectionChanged(object sender, SelectionChangedEventArgs e) { Update(); } private void Update() { var list = AbiturientsBB.GetContext().Абитуриент.ToList(); if (TBSearch.Text != "") { list = list.Where(p => p.ФИО.ToLower().Contains(TBSearch.Text.ToLower())).ToList(); } switch (ComboSelect.SelectedIndex) { case 1: list = list.Where(p => p.Средний_балл == 5).ToList(); break; case 2: list = list.Where(p => p.Средний_балл == 4).ToList(); break; case 3: list = list.Where(p => p.Средний_балл == 3).ToList(); |