Студентська бібліотека (C#)

Інформація про навчальний заклад

ВУЗ:
Національний авіаційний університет
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Курсова робота
Предмет:
Об’єктно-орієнтоване програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний авіаційний університет Курсова робота З дисципліни «Об’єктно-орієнтоване програмування» На тему «Студентська бібліотека (C#)» Зміст Завдання ………………………………………………………………………………………2 Особливості роботи………………………………………………………………………6 Опис функціональності………………………………………………………………..15 Опис допоміжних класів/компонентів, які було використано……16 UML-діаграми……………………………………………………………………………….17 Довідка по програмі……………………………………………………………………..18 Література……………………………………………………………………………………19 Студентська бібіліотека Спрощені вимоги до програмного збезпечення Функціональні вимоги: Управління користувачами бібліотеки Можливість додавати користувачів Можливість видаляти користувачів Можливість змінювати дані користувачів Можливість переглянути дані конкретного користувача Можливість переглянути список всіх користувачів Можливість відсортувати список по імені Можливість відсортувати список по прізвищу Можливість відсортувати список по академічній групі Управління документами бібліотеки Можливість додавати документ Можливість видаляти документ Можливість змінювати дані документу Можливість переглянути дані конкретного документу Можливість переглянути список всіх документів Можливість відсортувати список по назві Можливість відсортувати список по автору Управління видачами документів На рахунок користувача можна видвати n документів n<5 Можливість переглядати яку які документи взяв конкретний користувач Можливість по заданому документу визначити, чи він знаходиться у бібліотеці. Якщо документ виданий, то котрому користувачеві. Можливість повернути книжку в бібліотеку Пошук Можливість пошуку по ключовому слову серед документів Можливість пошуку по ключовому слову серед користувачів Можливість пошуку по всім даним по ключовому слову Розширений пошук користувача (коли задається конкретний набір даних, наприклад призвіще та дата народження) Можливість переглянути довідку по командам Нефункціональні вимоги: Вимоги до зовнішнього інтерфейсу Зовнішній інтерфейс користувача має бути командним Застосування має бути консольним Дані повинні зберігатись у файлах після виходу з програми. Система має забезпечити правильність введених даних Логічна структура даних Інформаційний об'єкт користувач бібліотеки Елемент даних Тип Опис Коментар  Ім'я Текст Ім'я користувача -  Прізвище Текст Прізвище користувача -  Номер заліковки Ціле число Номер заліковки користувача -  Академічна група Ціле число Академічна група користувача -  Дата народження Дата Дата народження користувача -  Адреса Текст Адреса користувача -  Телефон Ціле число або текст Телефон користувача -   Інформаційний об'єкт документ Елемент даних Тип Опис Коментар  Назва Текст Назва документа -  Автор Текст Автор документа -  ISBN Ціле число Унікальний номер документа, десятизначний -  Рік видання Ціле число Рік видання документа -   Особливості роботи У головному меню користувачу пропонується ввести команду. Якщо ввести команду help то вона вивиде на екран список усіх доступних команд та дій що вони виконують. Команда зчитується за допомогою змінної string. Далі введена команда передається у метод check_exit й там виконується перевірка на вихід з програми. Після цього за допомогою метода perform_command обробляється введена команда. Якщо попередній метод повернув значення false то цей метод виведе повідомлення про вихід з програми, інакше якщо введена команда існує у списку доступних, то вона буде виконана. Якщо введена команда не співпадає з жодної з листу доступних , то буде виведено повідомлення про помилку та запропонується ввести команду ще раз. while(flag) { Console.WriteLine(); Console.WriteLine("Type command: "); recieve_command=Console.ReadLine(); flag=check_exit(flag,recieve_command); perform_command(recieve_command,students_db,documents_db,info_db,flag); } У програмі використовується три основних класів . Клас «Студент» Перший це клас «Студент». Цей клас містить у собі інформацію про студента та методі роботи з ним. Складові класу «Студент» це поля які містять ім’я , прізвище , номер групи , адресу , номер залікової книжки , дату народження, номер групи , номер телефону та методи для роботи с класом такі як запис в файл інформації про студента, запис дня народження, ініціювання інформації студента, виведення інформації про студента на екран, перезаписаний метод CompareTo який отримано внаслідок наслідування з IComaparable, перевантажений оператор == та != , конструктор за умовчанням та конструктор копіювання. Тіло класу «Студент» public class Student : IComparable { public Student() public static bool operator !=(Student first, Student second) public static bool operator ==(Student first, Student second) public void display_student_info() public void write_to_txt(StreamWriter text) public string how_to_sort; public int CompareTo(object obj) public string name; public string surname; public int zachetka; public int igroup; public birthdat_data birthday; public void get_birtday() public string address; public string telephone_number; public void create_student() public Student(Student obj) } Методи классу «Студент» Метод відображення інформації про студента , без параметрів. Метод просто виводить на екран інформацію що є в об’єкті за допомогою Console.WriteLine(); Метод запису інформації до файлу. До цього метода передається StreamWriter . У методі відбувається запис інформації об’єкта в файл. (StreamWriter.WriteLine(); ). public void write_to_txt(StreamWriter text) { text.WriteLine(name); text.WriteLine(surname); text.WriteLine(igroup); text.WriteLine(zachetka); text.WriteLine(address); text.WriteLine(telephone_number); string finalbirthday; finalbirthday = birthday.day + "." + birthday.month + "." + birthday.year; text.WriteLine(finalbirthday); text.WriteLine("-"); } Після запису об’єкту до файлу у файлі з’являється такий запис. Саша Радчиков 106 2314 Херсон 0663261152 10.4.1993 - Метод ініціювання дати народження студента. Тут користувачу потрібно ввести день , місяць та рок народження студента , все це знаходиться в блоці Try {} і після вводу всіх даних про дату народження проводиться перевірка на рік , який не повинен перевищувати текучий рік-11 , на день місяця що не повинен перевищувати 31 та бути меншим ніж 1, та на місяць який повинен бути більший 1 та менший 13. Якщо якась з цих вимог порушиться то генерується виключний випадок, який ловиться за допомогою catch {} який в свою чергу виводе на екран зауваження що введена неможлива дата , та викликає цей метод ще раз. public void get_birtday() { try { Console.WriteLine("Введите день рождения "); birthday.day = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите месяц "); birthday.month = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите год "); birthday.year = Convert.ToInt32(Console.ReadLine()); if (birthday.year > DateTime.Today.Year - 11 || birthday.day > 31 || birthday.day < 1 || birthday.year < 1 || birthday.month > 12 || birthday.month < 1) throw new Exception(); } catch (Exception) { Console.WriteLine("Не верно указан день рождения"); this.get_birtday(); } StreamWriter studentinfo = new StreamWriter("students_db.txt", true); string finalbirthday = birthday.day + "." +birthday.month + "." + birthday.year; studentinfo.WriteLine(finalbirthday); studentinfo.WriteLine(); studentinfo.Close(); } Метод ініціювання інформації студента. Цей метод просить користувача ввести ім’я , прізвище та ін. . Після вводу інформації робить її запис до файлу та в кінці визиваю метод ініціювання дати народження. Перезаписаній метод CompareTo(object obj) . Перезаписан метод таким що читає поле how_to_sort(за умовчанням в конструкторі надається значення «name») в якому описано як треба сортувати і повертає потрібне значення, наприклад if (this.how_to_sort == "surname") return surname.CompareTo(b.surname); Перевантажений метод == та != , != порівнює два об’єкти по таким значимим полям як ім’я , прізвище , група ті ін. і якщо вони співпадають то повертає значення false . Метод == викликає метод != та повертає інвертоване значення. public static bool operator ==(Student first, Student second) { return !(first != second); } Клас «Документ» Другий це клас «Документ ». Цей клас містить у собі інформацію про документ у бібліотеці та методі роботи з ним. Складові класу «Документ» це поля які містять назву документу, автора , унікальній номер , дату видання документу та інформацію про те чи документ у бібліотеці або виданий студенту. Методи які відображають інформацію про документ, метод ініціалізації інформації про документ , метод запису документу в файл, перезаписаний метод CompareTo який отримано внаслідок наслідування з IComaparable , перевантажені оператори == та != , та конструктор за умовчанням з початкової ініціалізацією. Тіло класу «Документ» : public class Document:IComparable{ public Document() public string how_to_sort; public string name; public string author; public int ISBN; public int realized; public static bool operator !=(Document first, Document second) public static bool operator ==(Document first, Document second) public int CompareTo(object obj) public void display_doc() public void init() public void write_to_txt(StreamWriter text) public bool have_this; } Методи класу «Документ» Перезаписаний метод CompareTo (object obj) . Цей метод зчитує значення поля how_to_sort та сортирує відповідно його значенню. Поле how_to_sort за умовчанням приймає значення “name” ( У конструкторі воно йому надається). public int CompareTo(object obj) { Document b; b = (Document) obj ; if(this.how_to_sort=="author") return author.CompareTo(b.author); else return name.CompareTo(b.name); } Метод ініціювання об’єкту «Документ» public void init(){ StreamWriter documentinfo=new StreamWriter("documents_db.txt",true); Console.WriteLine("Введите название документа "); name=Console.ReadLine(); name=name.Insert(0,name.Substring(0,1).ToUpper()); name=name.Remove(1,1); //Предыдущие две строки на исправление первой буквы на большую documentinfo.WriteLine(name); Console.WriteLine("Введите автора "); author=Console.ReadLine(); author=author.Insert(0,author.Substring(0,1).ToUpper()); author=author.Remove(1,1); documentinfo.WriteLine(author); Console.WriteLine("Введите год издания "); try{ realized=Convert.ToInt16(Console.ReadLine()); } catch(Exception){ Console.WriteLine("Неверный год!! , в качестве года установлено значение 1111"); realized=1111; } documentinfo.WriteLine(realized); Console.WriteLine("Введите уникальный номер документа"); ISBN=Convert.ToInt32(Console.ReadLine()); documentinfo.WriteLine(ISBN); documentinfo.WriteLine(); documentinfo.Close(); } Метод запису документу в файл працює так же як і аналогічний метод класу «Студент». Клас «Інфо» Останній це клас «Інфо». Цей клас містить у собі інформацію про кожного студента та документи які він взяв. Там є поля які містять у собі студента, список документів які цей студент взяв, кількість виданих цьому студенту документів, метод пошуку документу у студента, метод видалення документу з списку взятих студентом та конструктор за умовчанням з початковою ініціалізацією. Тіло класу «Інфо»: class Info_db { public Info_db() { count = 0; } public Student student; public ArrayList have_documents = new ArrayList(); public int count; public bool search_in_info(Document search_this) public void remove_doc(Document doc) } Методи класу «Інфо» У класі «Інфо» усього два методи . Перший метод здійснює пошук документа серед взятих студентом й якщо такий документ знайдеться то повертає значення true. Пошук працює на циклі foreach . public bool search_in_info(Document search_this) { foreach (Document temp in have_documents) if (temp == search_this) return true; return false; } Другий метод здійсняє видалення документи із узятих студентом. Спочатку він здійснює пошук серед усіх документів за допомогою цикла foreach і після того як знайде видаляє цей документ з списку. public void remove_doc(Document doc) { int index = 0; int save_index = 0; foreach (Document temp in have_documents) { if (temp == doc) save_index = index; index++; } have_documents.RemoveAt(save_index); } Команди Для отримання списку всіх доступних команд у головному меню потрібно ввести «help» . Вона викликає метод що покаже усі доступні команди.  Команда «delete student» - цей метод потребує вводу ключового слова від користувача , після вводу виконується пошук студента та виводяться можливі варіанти , користувачу потрібно підтвердити вибір студента. Після того як користувач підтвердить видалення , воно здійсниться. При видаленні студента програма проведе пошук всіх документів які студент мав та буде пропонувати підтвердити повернення документу. Якщо не підтвердити повертання документу то він залишиться із статусом «Виданий» , це можна змінити за допомогою іншої команди, або видалити документ, якщо він був загублений . Після цього відповідний йому об’єкт «інфо» буде видалений . Команда «create student» - ця команда викликає метод створення нового студенту, який викликає методи створення студенту, створення нового об’єкту «инфо» в якому буде записуватися інформація про студента. Після цього нові об’єкти будуть добавлені в відповідні їм списки , та буде виведене підтвердження того що створення студенту успішно завершено . Команда «display students» - ця команда викликає метод відображення всіх студентів. public static void simple_display(ArrayList students){ foreach (Student temp in students) { Console.WriteLine(); temp.display_student_info(); } } В цей метод передається список всіх студентів. Метод перебирає всіх студентів та в кожному викликає метод відображення інформації про студента. Команда «sort students by <type>» , де <type> - це name, surname або group. Для кожної з цих програм викликається відповідний метод в який передається список студентів. Сортування виконується за допомогою метода списку (ArrayList.Sort() ) перед тим як сортувати для кожного об’єкта задається параметр how_to_sort. На основі цього параметра і відбувається сортування. Аналогічно працює й команда sort documents by <type> Команда «change» - дозволяє змінити інформацію про студента. При введенні цієї команди викликається метод пошуку студенту , після того як студент буде знайдений для нього викликається метод .create_student() після чого відбувається нова ініціалізація об’єкту. Після того як інформація про студента буде змінена відбувається пошук цього студента в «інфо» та його інформацію замінюється на нову. Повний список команд create students - добавление нового студента display students - отображение всех имеющихся студентов change - изменение информации про студента sort students by <type> - сортирует студентов по type,где type это name,surname или group sort documents by <type> - сортирует студентов по type,где type это name или author display documents - отображение всех имеющихся документов create document - добавление документа delete document - удалить документ edit document - изменить документ give doc - выдать документ let me see - oтобразить информацию про всех студентов взявших книги find - поиск по 1 параметру среди документов и студентов keyword - поиск по нескольким параметрам среди документов и студентов clean - очистить экран save - сохранить все изменения(Так же они автоматически сохраняются при выходе из программы) exit - выход из программы Використана література
Антиботан аватар за замовчуванням

06.02.2014 01:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!