Описание
Организовать учет издания публикаций студентов, аспирантов, и преподавателей кафедры. Работы могут выполняться в авторских коллективах. О публикации необходимо хранить следующие данные - фамилия автора(ов), название, год издания, место издания, название издания, категорию издания (книга, статья, доклад, тезисы и т.д.)
Задание
На основании описания предметной области, необходимо проектировать базу данных и разработать приложение по работе с базой данных..
Функционал программы
- добавление публикаций
- изменение публикаций
- удаление публикаций
- перезагрузка данных
Используемые технологии
- язык C#
- WPF
- NET 6.0
- SQL Server
Содержание отчета к программе
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ.. 6
1.1 Информационное обеспечение задачи. 6
1.2. Обзор и анализ существующих программных решений. 7
1.3 Техническое задание на разработку приложения «Кафедра. Учет научных публикаций». 8
2 АНАЛИЗ СРЕД И ЯЗЫКОВ КАК ИНСТРУМЕНТОВ РЕАЛИЗАЦИИ.. 9
2.1 Современные языки программирования. 9
2.2 Язык высокого уровня C#. 10
2.3 Windows Forms или Windows Presentation Foundation. 11
2.4. Выбор состава технических и программных средств. 14
3 РАЗРАБОТКА ПРИЛОЖЕНИЯ САНАТОРИЙ НА ЯЗЫКЕ C#. 20
3.1 Постановка задачи. 20
3.2 Физическая структура базы данных. 20
3.3 Физическая структура программы.. 23
3.4 Разработка пользовательского интерфейса. 32
3.5 Инструкция пользователя. 40
ЗАКЛЮЧЕНИЕ. 43
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 44
ПРИЛОЖЕНИЯ.. 46
Фрагмент программного кода
using Department.BL.Interfaces; using Department.BL.Models; using System; using System.Linq; using System.Windows; namespace Department.UI { /// <summary> /// Логика взаимодействия для AddPublicationWindow.xaml /// </summary> public partial class AddPublicationWindow : Window { /// <summary> /// Список допустимых категорий /// </summary> private static readonly string[] Categories = { "Книга", "Статья", "Доклад" }; /// <summary> /// Поле хранит идентификатор публикации /// </summary> private int _id; public AddPublicationWindow() { InitializeComponent(); // Передаем допустимые значения cbCategory.ItemsSource = Categories; // Задаем начальное значение cbCategory.SelectedIndex = 0; } private void BtnCancel_Click(object sender, RoutedEventArgs e) { Close(); } private void BtnSave_Click(object sender, RoutedEventArgs e) { int writingDate; int? publicationDate = null; if (string.IsNullOrEmpty(tbAuthor.Text)) { MessageBox.Show("Поле Автор не должно быть пустым", "Проверка"); return; } if (string.IsNullOrEmpty(tbName.Text)) { MessageBox.Show("Поле Название не может быть пустым", "Проверка"); return; } if (string.IsNullOrEmpty(tbPublicationPlace.Text)) { MessageBox.Show("Поле Место публикации не может быть пустым", "Проверка"); return; } if (!int.TryParse(tbWritingYear.Text, out writingDate)) { MessageBox.Show("Год написания должна быть целым числом", "Проверка"); return; } if (!string.IsNullOrEmpty(tbPublicationYear.Text)) { int intPublication; if (!int.TryParse(tbPublicationYear.Text, out intPublication)) { MessageBox.Show("Год издания должна быть целым числом", "Проверка"); return; } if (intPublication < writingDate) { MessageBox.Show("Год издания должна быть больше года написания", "Проверка"); return; } publicationDate = intPublication; } // Создаем объект для передачи данных PublicationDto publication = new PublicationDto(); // Заполняем объект данными publication.Author = tbAuthor.Text; publication.Name = tbName.Text; publication.WritingYear = writingDate; publication.PublicationYear = publicationDate; publication.PublicationPlace = tbPublicationPlace.Text; publication.Category = cbCategory.SelectedItem.ToString(); // Именно тут запрашиваем реализованную раннее задачу по работе с публикациями IPublicationProcess publicationProcess = ProcessFactory.GetPublicationProcess(); // если это новый объект - сохраняем его if (_id == 0) { // Сохраняем публикацию publicationProcess.Add(publication); } else // иначе обновляем { // копируем обратно идентификатор объекта publication.Id = _id; // обновляем publicationProcess.Update(publication); } // и закрываем форму Close(); } public void Load(PublicationDto publication) { // если объект не существует, или его категория не в списке допустимых, выходим if (publication == null || !Categories.Contains(publication.Category)) return; // сохраняем id туриста _id = publication.Id; // заполняем визуальные компоненты для отображения данных tbAuthor.Text = publication.Author; tbName.Text = publication.Name; tbWritingYear.Text = publication.WritingYear.ToString(); if (publication.PublicationYear.HasValue) tbPublicationYear.Text = publication.PublicationYear.Value.ToString(); tbPublicationPlace.Text = publication.PublicationPlace; cbCategory.SelectedItem = publication.Category; } } }
Скриншот архива с проектом
Пояснения по запуску программы
Запустить Visual Studio 2022, подключить базу данных (смотри видео), запустить проект.
admin