Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
zapiska1.doc
Скачиваний:
103
Добавлен:
20.04.2019
Размер:
622.08 Кб
Скачать

Список использованных сокращений

MDI – multiple document interface (тип графического интерфейса)

ОС – операционная система

ОЗУ – оперативное запоминающее устройство

Приложение

Приложение 1

Исходный код программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace CourseProject {

public class BookInfo {

public int id { get; set; }

public string author { get; set; }

public string title { get; set; }

public int year { get; set; }

public string publisher { get; set; }

public string type { get; set; }

public string extraInfo { get; set; }

public BookInfo(int id_, string author_, string title_, int year_, string publisher_, string type_, string extraInfo_) {

id = id_;

author = author_;

title = title_;

year = year_;

publisher = publisher_;

type = type_;

extraInfo = extraInfo_;

}

/// <summary>

/// Получение информации о книге в виде строки

/// </summary>

public string getInfoString() {

return "Автор: " + author + "\nНазвание: " + title + "\nГод издания: " + year + "\nИздательство:" + publisher + "\nЖанр: " + type + "\nДополнительная информация: " + extraInfo;

}

public const string separator = "|";

/// <summary>

/// Получение информации о книги в виде стори с разделителями для записи в файл

/// </summary>

public string getStringForFile() {

return author + separator + title + separator + year + separator + publisher + separator + type + separator + extraInfo;

}

}

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace CourseProject {

public class Books {

public List<BookInfo> books;

public Books() {

books = new List<BookInfo>();

}

/// <summary>

/// Поиск максимального Id

/// </summary>

private int findMaxId() {

try {

return books.Max(p => p.id);

} catch {

return 0;

}

}

/// <summary>

/// Добавление новой книги

/// </summary>

public void addNewBook(string author, string title, int year, string publisher, string type, string extraInfo) {

int newId = findMaxId() + 1;

BookInfo newBook = new BookInfo(newId, author, title, year, publisher, type, extraInfo);

if (books == null) {

books = new List<BookInfo>();

}

books.Add(newBook);

}

/// <summary>

/// Получение индекса книги в списке по Id

/// </summary>

private int getIndex(itemBook item) {

for (int i = 0; i < books.Count; i++) {

if (item(books[i])) {

return i;

}

}

return -1;

}

/// <summary>

/// Удаление книги из списка по Id

/// </summary>

public void removeBook(int id) {

int index = getIndex(p => p.id == id);

books.RemoveAt(index);

}

/// <summary>

/// Редактирование книги

/// </summary>

public void editBook(int id, string author, string title, int year, string publisher, string type, string extraInfo) {

BookInfo editedBook = new BookInfo(id, author, title, year, publisher, type, extraInfo);

removeBook(id);

books.Add(editedBook);

}

/// <summary>

/// Очистка списка

/// </summary>

public void clearCatal() {

books.Clear();

books = null;

}

/// <summary>

/// Получение всех параметров книги в виде строки

/// </summary>

public string getInfoString(int id) {

int index = getIndex(p => p.id == id);

return books[index].getInfoString();

}

/// <summary>

/// Получение всех параметров книги в виде строки для записи в файл

/// </summary>

private string getStringForFile(int index) {

return books[index].getStringForFile();

}

/// <summary>

/// Получение списка из массива строк

/// </summary>

public void getCatalFromString(string[] str) {

clearCatal();

for (int i = 0; i < str.Length; i++) {

string[] tempStr = str[i].Split(BookInfo.separator[0]);

try {

addNewBook(tempStr[0], tempStr[1], Int32.Parse(tempStr[2]), tempStr[3], tempStr[4], tempStr[5]);

} catch {

MessageBox.Show("Cтрока с номером " + i + " в файле имеет неверный формат");

}

}

}

/// <summary>

/// Запись каталога в массив строк

/// </summary>

public string[] catalToStringArray() {

string[] str = new string[books.Count];

for (int i = 0; i < books.Count; i++) {

str[i] = books[i].getStringForFile();

}

return str;

}

/// <summary>

/// Перестановка двух соседних элементов списка

/// </summary>

private void exchange(int index) {

BookInfo temp = books[index];

books[index] = books[index + 1];

books[index + 1] = temp;

}

/// <summary>

/// Универсальная сортировка

/// </summary>

private void sort(compare delCompare) {

bool wasChanged = true;

while (wasChanged) {

wasChanged = false;

for (int i = 0; i < books.Count - 1; i++) {

if (delCompare(books[i], books[i + 1])) {

exchange(i);

wasChanged = true;

}

}

}

}

/// <summary>

/// Сортировка по автору

/// </summary>

public void sortAuthor() {

sort((book1, book2) => String.Compare(book1.author, book2.author) > 0);

}

/// <summary>

/// Сортировка по названию

/// </summary>

public void sortTitle() {

sort((book1, book2) => String.Compare(book1.title, book2.title) > 0);

}

/// <summary>

/// Сортировка по жанру

/// </summary>

public void sortType() {

sort((book1, book2) => String.Compare(book1.type, book2.type) > 0);

}

/// <summary>

/// Сортировка по году выпуска

/// </summary>

public void sortYear() {

sort((book1, book2) => book1.year > book2.year);

}

/// <summary>

/// Сортировка по издательству

/// </summary>

public void sortPublisher() {

sort((book1, book2) => String.Compare(book1.publisher, book2.publisher) > 0);

}

/// <summary>

/// Универсальный поиск

/// </summary>

public List<BookInfo> getSearchList(itemBook book) {

List<BookInfo> searchList = new List<BookInfo>();

for (int i = 0; i < books.Count; i++) {

if (book(books[i])) {

searchList.Add(books[i]);

}

}

return searchList;

}

/// <summary>

/// Поиск по автору

/// </summary>

public List<BookInfo> searchAuthor(string author) {

return getSearchList(book => book.author.ToLower().Contains(author.ToLower()));

}

/// <summary>

/// Поиск по названию

/// </summary>

public List<BookInfo> searchTitle(string title) {

return getSearchList(book => book.title.ToLower().Contains(title.ToLower()));

}

/// <summary>

/// Выборка по жанру

/// </summary>

public List<BookInfo> sampleType(string type) {

return getSearchList(book => book.type.ToLower() == type.ToLower());

}

/// <summary>

/// Выборка по году выпуска

/// </summary>

public List<BookInfo> sampleYear(string year) {

return getSearchList(book => book.year.ToString() == year);

}

/// <summary>

/// Выборка по издательству

/// </summary>

public List<BookInfo> samplePublisher(string publisher) {

return getSearchList(book => book.publisher.ToLower() == publisher.ToLower());

}

/// <summary>

/// Выборка авторов по первой букве

/// </summary>

public List<BookInfo> sampleAuthor(string firstChar) {

return getSearchList(book => book.author.First<char>().ToString().ToUpper() == firstChar.ToUpper());

}

/// <summary>

/// Выборка названий по первой букве

/// </summary>

public List<BookInfo> sampleTitle(string firstChar) {

return getSearchList(book => book.title.First<char>().ToString().ToUpper() == firstChar.ToUpper());

}

public delegate bool itemBook(BookInfo book);

public delegate bool compare(BookInfo book1, BookInfo book2);

}

}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace CourseProject {

public partial class BookCatalog : Form {

public BookCatalog() {

InitializeComponent();

}

public static Books catalog;

/// <summary>

/// Очистка старого и создание нового каталога

/// </summary>

private void clearCatal() {

if (catalog != null) {

catalogViewForm.Close();

catalogViewForm = null;

if (catalog.books == null) {

return;

}

catalog.clearCatal();

}

}

/// <summary>

/// Запрос на создание нового каталога при уже открытом старом

/// </summary>

private void openedCatalDialog(object sender, EventArgs e, string messagePart) {

var dialogResult = MessageBox.Show("У вас есть открытый каталог\nВы хотите сохранить его и " + messagePart + "?", "Новый каталог", MessageBoxButtons.YesNoCancel);

if (dialogResult == DialogResult.Yes) {

saveCatalToolStripMenuItem2_Click(sender, e);

clearCatal();

newCatalToolStripMenuItem_Click(sender, e);

}

if (dialogResult == DialogResult.No) {

clearCatal();

newCatalToolStripMenuItem_Click(sender, e);

}

if (dialogResult == DialogResult.Cancel) {

catalogViewForm.Activate();

}

}

/// <summary>

/// Создание новой формы отображения каталога

/// </summary>

private void newCatalForm() {

if (catalogViewForm == null) {

catalogViewForm = new CatalogView();

catalogViewForm.MdiParent = this;

catalogViewForm.Show();

catalogViewForm.Text = "Новый каталог";

} else {

catalogViewForm.Activate();

}

catalog = new Books();

}

public static CatalogView catalogViewForm;

/// <summary>

/// Вызов событий ко клику на элемент меню "Каталог/Добавить"

/// </summary>

private void newCatalToolStripMenuItem_Click(object sender, EventArgs e) {

if (catalog != null) {

if (catalog.books != null) {

openedCatalDialog(sender, e, "создать новый");

return;

}

}

newCatalForm();

catalogViewForm.updateTable(catalog, catalogViewForm.catalTable, catalogViewForm.bookInfoLabel);

}

/// <summary>

/// Открытие файла и запись его содержимого в каталог

/// </summary>

private void openCatal() {

if (openFileDialog1.ShowDialog() != DialogResult.OK) {

return;

}

newCatalForm();

catalogViewForm.Text = Path.GetFileNameWithoutExtension(openFileDialog1.FileName);

string[] str = File.ReadAllLines(openFileDialog1.FileName);

catalog.getCatalFromString(str);

catalogViewForm.updateTable(catalog, catalogViewForm.catalTable, catalogViewForm.bookInfoLabel);

}

public static AddNewBook addNewBookForm;

/// <summary>

/// Открытие формы для добавления новой книги

/// </summary>

public static void openAddBookForm() {

addNewBookForm = new AddNewBook();

addNewBookForm.MdiParent = catalogViewForm.MdiParent;

addNewBookForm.Show();

}

public static SearchBook searchBookForm;

/// <summary>

/// Открытие формы для поиска книги

/// </summary>

public static void openSearchBookForm() {

searchBookForm = new SearchBook();

searchBookForm.MdiParent = catalogViewForm.MdiParent;

searchBookForm.Show();

}

/// <summary>

/// Вызов событий ко клику на элемент меню "Каталог/Открыть"

/// </summary>

private void openCatalToolStripMenuItem_Click(object sender, EventArgs e) {

if (catalogViewForm != null) {

openedCatalDialog(sender, e, "открыть другой");

}

openCatal();

}

/// <summary>

/// Вызов событий ко клику на элемент меню "Каталог/Сохранить"

/// </summary>

private void saveCatalToolStripMenuItem2_Click(object sender, EventArgs e) {

if (catalog == null) {

MessageBox.Show("Нет данных для сохранения");

return;

}

if (saveFileDialog1.ShowDialog() != DialogResult.OK) {

return;

}

catalogViewForm.Text = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName);

File.WriteAllLines(saveFileDialog1.FileName, catalog.catalToStringArray());

}

/// <summary>

/// Вызов событий ко клику на элемент меню "Выход"

/// </summary>

private void exitToolStripMenuItem_Click(object sender, EventArgs e) {

if (catalog != null) {

if (MessageBox.Show("Вы уверены, что хотите выйти?\nМогут быть утеряны несохраненные данные", "Выход из программы", MessageBoxButtons.YesNo) == DialogResult.No) {

return;

}

}

Close();

}

}

}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace CourseProject {

public partial class CatalogView : Form {

public CatalogView() {

InitializeComponent();

}

/// <summary>

/// Запись в таблицу table записей из списка list

/// </summary>

public void updateTable(Books list, DataGridView table, Label info) {

if (list == null) {

return;

}

if (list.books == null) {

return;

}

for (int i = 0; i < list.books.Count; i++) {

if (i > table.RowCount - 1) {

table.RowCount++;

}

table.Rows[i].HeaderCell.Value = (i + 1).ToString();

table["idCol", i].Value = list.books[i].id;

table["authorCol", i].Value = list.books[i].author;

table["titleCol", i].Value = list.books[i].title;

table["yearCol", i].Value = list.books[i].year;

table["publisherCol", i].Value = list.books[i].publisher;

table["typeCol", i].Value = list.books[i].type;

table["infoCol", i].Value = list.books[i].extraInfo;

}

if (table.RowCount > list.books.Count) {

table.RowCount -= table.RowCount - list.books.Count;

}

info.Text = "";

}

/// <summary>

/// Событие по клику на элемент меню "Книга/Добавить"

/// </summary>

private void addBookToolStripMenuItem_Click(object sender, EventArgs e) {

if (BookCatalog.addNewBookForm == null) {

BookCatalog.openAddBookForm();

} else {

BookCatalog.addNewBookForm.Activate();

}

}

public static string author = "";

public static string title = "";

public static string year = "";

public static string publisher = "";

public static string type = "";

public static string extraInfo = "";

private int curId;

private int curIndex = -1;

/// <summary>

/// Событие по клику на заголовок строки таблицы

/// </summary>

private void catalTable_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {

try {

editBookToolStripMenuItem.Enabled = true;

removeBookToolStripMenuItem.Enabled = true;

curIndex = catalTable.CurrentRow.Index;

curId = Int32.Parse(catalTable["idCol", curIndex].Value.ToString());

bookInfoLabel.Text = BookCatalog.catalog.getInfoString(curId);

} catch {

return;

}

}

/// <summary>

/// Событие по клику на элемент меню "Книга/Редактировать"

/// </summary>

private void editBookToolStripMenuItem_Click(object sender, EventArgs e) {

if (curIndex > -1) {

author = catalTable["authorCol", curIndex].Value.ToString();

title = catalTable["titleCol", curIndex].Value.ToString();

year = catalTable["yearCol", curIndex].Value.ToString();

publisher = catalTable["publisherCol", curIndex].Value.ToString();

type = catalTable["typeCol", curIndex].Value.ToString();

extraInfo = catalTable["infoCol", curIndex].Value.ToString();

addBookToolStripMenuItem_Click(sender, e);

if (BookCatalog.addNewBookForm.isAdded) {

removeBookToolStripMenuItem_Click(sender, e);

}

}

}

/// <summary>

/// Событие по клику на элемент меню "Книга/Удалить"

/// </summary>

private void removeBookToolStripMenuItem_Click(object sender, EventArgs e) {

if (curIndex > -1) {

curId = Int32.Parse(catalTable["idCol", curIndex].Value.ToString());

BookCatalog.catalog.removeBook(curId);

updateTable(BookCatalog.catalog, catalTable, bookInfoLabel);

}

}

/// <summary>

/// Событие по клику на элемент меню "Поиск"

/// </summary>

private void searchToolStripMenuItem_Click(object sender, EventArgs e) {

if (BookCatalog.catalog == null) {

MessageBox.Show("Список пуст");

return;

}

if (BookCatalog.catalog.books == null) {

MessageBox.Show("Список пуст");

return;

}

if (BookCatalog.searchBookForm == null) {

BookCatalog.openSearchBookForm();

} else {

BookCatalog.searchBookForm.Activate();

}

}

/// <summary>

/// Установление видимости столбцов таблицы

/// </summary>

private void colVisibility(DataGridViewTextBoxColumn visCol, DataGridViewTextBoxColumn unvisCol1, DataGridViewTextBoxColumn unvisCol2) {

visCol.Visible = true;

unvisCol1.Visible = false;

unvisCol2.Visible = false;

}

/// <summary>

/// Добавление нового узла в дерево

/// </summary>

private void createTreeNode(string node) {

if (!sortTreeView.Nodes[0].Nodes.ContainsKey(node)) {

sortTreeView.Nodes[0].Nodes.Add(node, node);

}

}

private const string authorNodeName = "Авторы:";

private const string titleNodeName = "Названия:";

private const string typeNodeName = "Жанры:";

private const string publisherNodeName = "Издательства:";

private const string yearNodeName = "Года издания:";

/// <summary>

/// Событие по клику на кнопку "Сортировать"

/// </summary>

private void sortButton_Click(object sender, EventArgs e) {

if (authorRadioButton.Checked) {

univSort(book => book.sortTitle(), book => book.sortAuthor(), book => book.author.First<char>().ToString().ToUpper(), typeCol, yearCol, publisherCol, authorNodeName);

}

if (titleRadioButton.Checked) {

univSort(book => book.sortAuthor(), book => book.sortTitle(), book => book.title.First<char>().ToString().ToUpper(), typeCol, yearCol, publisherCol, titleNodeName);

}

if (typeRadioButton.Checked) {

univSort(book => book.sortAuthor(), book => book.sortType(), book => book.type.ToLower(), typeCol, yearCol, publisherCol, typeNodeName);

}

if (yearRadioButton.Checked) {

univSort(book => book.sortAuthor(), book => book.sortYear(), book => book.year.ToString(), yearCol, typeCol, publisherCol, yearNodeName);

}

if (publisherRadioButton.Checked) {

univSort(book => book.sortAuthor(), book => book.sortPublisher(), book => book.publisher.ToLower(), publisherCol, typeCol, yearCol, publisherNodeName);

}

}

private delegate void sort(Books list);

private delegate string treeNodeItem(BookInfo book);

/// <summary>

/// Сортировка и обновление дерева выборки

/// </summary>

private void univSort(sort del1, sort del2, treeNodeItem item, DataGridViewTextBoxColumn visCol, DataGridViewTextBoxColumn unvisCol1, DataGridViewTextBoxColumn unvisCol2, string treeNodeName) {

del1(BookCatalog.catalog);

del2(BookCatalog.catalog);

updateTable(BookCatalog.catalog, catalTable, bookInfoLabel);

colVisibility(visCol, unvisCol1, unvisCol2);

sortTreeView.Nodes.Clear();

sortTreeView.Nodes.Add(treeNodeName);

for (int i = 0; i < BookCatalog.catalog.books.Count; i++) {

createTreeNode(item(BookCatalog.catalog.books[i]));

}

}

/// <summary>

/// Событие по активации формы

/// </summary>

private void CatalogView_Enter(object sender, EventArgs e) {

if (curIndex < 0) {

editBookToolStripMenuItem.Enabled = false;

removeBookToolStripMenuItem.Enabled = false;

}

updateTable(BookCatalog.catalog, catalTable, bookInfoLabel);

}

/// <summary>

/// Выборка по клику на дочернем элементе дерева выборки

/// </summary>

private void childNodeSort(string parentNodeText) {

switch (parentNodeText) {

case authorNodeName:

sampleToTable(BookCatalog.catalog.sampleAuthor(sortTreeView.SelectedNode.Text));

break;

case titleNodeName:

sampleToTable(BookCatalog.catalog.sampleTitle(sortTreeView.SelectedNode.Text));

break;

case typeNodeName:

sampleToTable(BookCatalog.catalog.sampleType(sortTreeView.SelectedNode.Text));

break;

case yearNodeName:

sampleToTable(BookCatalog.catalog.sampleYear(sortTreeView.SelectedNode.Text));

break;

case publisherNodeName:

sampleToTable(BookCatalog.catalog.samplePublisher(sortTreeView.SelectedNode.Text));

break;

}

}

/// <summary>

/// Занесение в таблицу результатов выборки

/// </summary>

private void sampleToTable(List<BookInfo> sample) {

Books res = new Books();

res.books = sample;

updateTable(res, catalTable, bookInfoLabel);

}

/// <summary>

/// Событие по клику на узле дерева выборки

/// </summary>

private void sortTreeView_AfterSelect(object sender, TreeViewEventArgs e) {

if (sortTreeView.SelectedNode == null) {

return;

}

if (sortTreeView.SelectedNode.Parent == null) {

sortButton_Click(sender, e);

return;

}

childNodeSort(sortTreeView.SelectedNode.Parent.Text);

}

}

}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace CourseProject {

public partial class AddNewBook : Form {

public AddNewBook() {

InitializeComponent();

}

/// <summary>

/// Добавление нового элемента в коллекцию ComboBox

/// </summary>

private void addItemToComboBox(ComboBox tempComboBox, string item) {

if (!tempComboBox.Items.Contains(item)) {

tempComboBox.Items.Add(item);

}

}

/// <summary>

/// Проверка на вхождение элемента в коллекцию ComboBox и возврат введенного в ComboBox текста

/// </summary>

private string comboItemChek(ComboBox tempComboBox, string messagePart) {

string str = tempComboBox.Text;

if (str == "") {

return "-";

}

if (!tempComboBox.Items.Contains(str)) {

if (!messageComboBox(messagePart, tempComboBox, str)) {

return "";

}

}

return str;

}

/// <summary>

/// Сообщение, выдаваемое, если элемент не содержится в ComboBox

/// </summary>

private bool messageComboBox(string messagePart, ComboBox tempComboBox, string item) {

var dialogResult = MessageBox.Show(messagePart + "\nВы уверены, что хотите добавить?", "Добавление книги", MessageBoxButtons.YesNo);

if (dialogResult == DialogResult.Yes) {

tempComboBox.Items.Add(item);

return true;

}

return false;

}

/// <summary>

/// Проверка на вхождение в веденный текст разделителя

/// </summary>

private bool isContainSeparator(string str) {

return str.Contains(BookInfo.separator[0]);

}

public bool isAdded = false;

/// <summary>

/// Событие по клику на кнопку "Добавить новую книгу"

/// </summary>

private void addBookButton_Click(object sender, EventArgs e) {

isAdded = false;

errorLabel.Text = "";

string title = titleTextBox.Text;

if ((title == "") || (yearTextBox.Text == "")) {

errorLabel.Text = "Заполнены не все обязательные поля (*)";

return;

}

int year = 0;

if (!Int32.TryParse(yearTextBox.Text, out year) || (year > 2011) || (year < 1900)) {

errorLabel.Text = "Год издания введен некорректно";

return;

}

string author = comboItemChek(authorComboBox, "Данного автора нет в списке");

string publisher = comboItemChek(publisherComboBox, "Данного издательства нет в списке");

string type = comboItemChek(typeComboBox, "Данного жанра нет в списке");

if ((author == "") || (publisher == "") || (type == "")) {

return;

}

string extraInfo = infoTextBox.Text;

if (extraInfo == "") {

extraInfo = "-";

}

if (isContainSeparator(title) || isContainSeparator(author) || isContainSeparator(publisher) || isContainSeparator(type) || isContainSeparator(extraInfo)) {

errorLabel.Text = "Одно из полей содержит недопустимый символ - \"" + BookInfo.separator + "\"";

return;

}

BookCatalog.catalog.addNewBook(author, title, year, publisher, type, extraInfo);

MessageBox.Show("Книга добавлена");

clearFieldButton_Click(sender, e);

isAdded = true;

}

/// <summary>

/// Событие по клику на кнопку "Перейти к каталогу"

/// </summary>

private void toCatalButton_Click(object sender, EventArgs e) {

BookCatalog.catalogViewForm.Activate();

clearFieldButton_Click(sender, e);

}

/// <summary>

/// Событие по клику на кнопку "Сброс"

/// </summary>

private void clearFieldButton_Click(object sender, EventArgs e) {

authorComboBox.Text = "";

titleTextBox.Text = "";

publisherComboBox.Text = "";

yearTextBox.Text = "";

typeComboBox.Text = "";

infoTextBox.Text = "";

}

/// <summary>

/// Событие по активации формы

/// </summary>

private void AddNewBook_Enter(object sender, EventArgs e) {

authorComboBox.Text = CatalogView.author;

titleTextBox.Text = CatalogView.title;

yearTextBox.Text = CatalogView.year;

publisherComboBox.Text = CatalogView.publisher;

typeComboBox.Text = CatalogView.type;

infoTextBox.Text = CatalogView.extraInfo;

var list = BookCatalog.catalog.books;

for (int i = 0; i < list.Count; i++) {

addItemToComboBox(authorComboBox, list[i].author);

addItemToComboBox(publisherComboBox, list[i].publisher);

addItemToComboBox(typeComboBox, list[i].type);

}

}

}

}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace CourseProject {

public partial class SearchBook : Form {

public SearchBook() {

InitializeComponent();

searchComboBox.Text = searchComboBox.Items[0].ToString();

errorLabel.Visible = false;

}

/// <summary>

/// Вывод результата сортировки в таблицу

/// </summary>

private void resOutput(Books res) {

res.sortAuthor();

BookCatalog.catalogViewForm.updateTable(res, searchResultView, bookInfoLabel);

}

/// <summary>

/// Событие по клику на кнопку "Искать"

/// </summary>

private void searchButton_Click(object sender, EventArgs e) {

string subject = searchSubjectTextBox.Text;

if (subject == "") {

errorLabel.Visible = true;

return;

}

errorLabel.Visible = true;

Books resultOfSearch = new Books();

if (searchComboBox.Text == searchComboBox.Items[0].ToString()) {

resultOfSearch.books = BookCatalog.catalog.searchAuthor(subject);

resOutput(resultOfSearch);

}

if (searchComboBox.Text == searchComboBox.Items[1].ToString()) {

resultOfSearch.books = BookCatalog.catalog.searchTitle(subject);

resOutput(resultOfSearch);

}

}

/// <summary>

/// Событие по клику на заголовок строки таблицы

/// </summary>

private void searchResultView_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {

string selectedId = searchResultView["idCol", searchResultView.CurrentRow.Index].Value.ToString();

bookInfoLabel.Text = BookCatalog.catalog.getInfoString(Int32.Parse(selectedId));

for (int i = 0; i < BookCatalog.catalogViewForm.catalTable.RowCount; i++) {

BookCatalog.catalogViewForm.catalTable.Rows[i].Selected = false;

if (BookCatalog.catalogViewForm.catalTable["idCol", i].Value.ToString() == selectedId) {

BookCatalog.catalogViewForm.catalTable.Rows[i].Selected = true;

}

}

}

/// <summary>

/// Событие по клику на кнопку "Перейти к каталогу"

/// </summary>

private void toCatalButton_Click(object sender, EventArgs e) {

BookCatalog.catalogViewForm.Activate();

}

}

}

1 Здесь и далее: под каталогом понимается список книг с информацией о них

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]