Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Розробка алгоритму рішення задачі

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Після зміни елемента для збереження його у стеку та файлу, при цьому, якщо елемент буде переміщений у інший файл то його дублікат у файлі буде знищено. Для цього призначена кнопка. Для пошуку потрібного елемента у стеку призначена кнопка, а текст за яким проводити пошук потрібно вписати у це поле інакше програма буде видавати наступне повідомлення. Якщо поле за яким виручка перевищує задане… Читати ще >

Розробка алгоритму рішення задачі (реферат, курсова, диплом, контрольна)

Алгоритм додавання елементу у стек і зберігання його у файлі:

Загальний опис алгоритму додавання нового об'єкту в стек та зберігання об'єкту у файлі обраного офісу.

Спочатку перевіряємо заповнення усіх полів (Назву, адресу, кількість працівників, обороту, виручки, вибору офісу і його типу), якщо хоч одне поле не заповнене, то видаємо на екран повідомлення з назвою поля яке виявилось пустим, при цьому заповнені поля не зникають.

Потім створюємо об'єкт з нашими даними в конструкторі в залежності від обраного офісу.

Далі додаємо об'єкт на вершину стека.

Зберігаємо об'єкт у вигляді строки у файлі офісу якого ми обрали.

Кінець виконування алгоритму.

Алгоритм для перегляду вмісту стека :

Створюємо копію стека під іншим ім'ям .

Перевіряємо чи є у стеку елементи, якщо ні то виводимо повідомлення у листбокс і завершуємо алгоритм, якщо є тоді продовжуємо виконувати програму, Поки кількість елементів у стеку не дорівнює нулю виводимо на форму у листбоксі елементи по одному на рядок, замінюючи символ «|» на символ ««.

Кінець алгоритму.

Алгоритм для редагування елемента у стеку :

Спочатку перевіряємо заповнення усіх полів (Назву, адресу, кількість працівників, обороту, виручки, вибору офісу і його типу), якщо хоч одне поле не заповнене, то викликаємо на екран повідомлення з назвою поля яке виявилося пустим, при цьому заповнені поля не зникають.

Робимо копію стека під іншим ім'ям .

Заводимо додатково 3 рядкові змінні типу string: str, str2. s1.

Присвоюємо строковій змінній str обраний нами рядок з листбоксу замінюючи символ «» на символ «|».

Потім створюємо об'єкт з нашими даними в конструкторі в залежності від обраного офісу.

Очищаємо стек від усіх елементів.

Поки копія стеку більше 0 присвоюємо змінній s1 наведений у рядок елемент зі стеку. Виконуємо: якщо змінна s1 містить рядок змінній str додаємо до стеку об'єкт з нашими даними у конструкторі, якщо ні - додаємо до стеку змінну s1.

Чистимо вміст змінної str2.

Оголошуємо файлову змінну read і зв’язуємо її з файлом.

Введемо у змінну str2 вміст файла за допомогою файлової змінної read.

Зачинемо файл, який зв’язали файловою змінною read.

Якщо у файлі знаходиться розшукуваний рядок тоді замінюємо цей рядок на виправлений рядок, тобто, якщо змінна str2 містить змінну str тоді виконуємо блок команд, а саме :

В змінній str2 знаходимо старий рядок який зберігається в змінній str і замінюємо його новим об'єктом.

Оголошуємо об'єкт write і зв’язуємо її з файлом одного з офісів. Записуємо у об'єкт write змінну str2.

Зачиняємо файл.

Якщо цього рядка не знайдено то виконуємо наступні дії :

Дописуємо у файл новий об'єкт.

Передивляємось усі файли один за одним і якщо знаходимо у файлі дублікат то замінюємо цей рядок новим рядком.

Створюємо копію стеку.

Чистимо Листбокс.

Поки залишаються елементи у стеку виводимо їх по одному рядку у Листбокс.

Видаляємо усі записи з полів.

Чистимо всі дані в глобальній змінній stroka.

Алгоритм для знищення елемента у стеку :

Створюємо копію стеку.

Заводимо додатково 2 рядкові змінні типу string: str, s1.

Вводимо додаткову цілу змінну типа integer: nomer.

Присвоюємо строковій змінній str обраний нами рядок з листбоксу замінюючи символ «» на символ «|».

Визначаємо за назвою офіса в якому файлі треба видалити обраний нами рядок .

Створюємо новий об'єкт з нашими даними в конструкторі в залежності від обраного офісу завдяки тому, що всі наші дані знаходяться у полях форми.

Заводимо нову рядкову змінну str2.

Присвоюємо змінній str2 новий об'єкт приведений до рядкового типу.

Методом Clear () видаляємо усі елементи зі старого стеку.

Виконуємо цикл Пока в новому стеку кількість елементів більше нуля виконуємо: беремо елемент з верху стеку і приводимо його до рядкового типу для присвоєння змінній s1.

Якщо змінна s1 тримає у собі змінну str тоді продовжуємо цикл Поки далі та й повертаємось до його початку.

Якщо змінна s1 не тримає у собі змінну str тоді додаємо у старий стек змінну s1.

Створюємо рядкову змінну str1.

Оголошуємо файлову змінну read і зв’язуємо її з файлом.

Введемо у змінну str1 вміст файла за допомогою файлової змінної read.

Зачинемо файл, який зв’язали файловою змінною read.

Оголошуємо об'єкт file1 і зв’язуємо її з файлом одного з офісів.

Якщо у змінній str1 розшукуваний індекс у змінній str не дорівнює -1 тоді замінюємо цей рядок на виправлений рядок, тоді можна видалити зі змінної str1 змінну str2 тобто, якщо змінна str1 містить змінну str тоді виконуємо блок команд, а саме :

В змінній str1 знаходимо початковий індекс рядка і знаходимо кількість символів завдяки рядковій змінній str2, яку потрібно видалити враховуючи 2 символи які позначають кінець рядка зі змінної str1.

Записуємо у файлову змінну file1 рядкову змінну str1 і зачиняємо файл, який зв’язали файловою змінною file1.

Кінець алгоритму.

Алгоритм пошуку у стеку по точному збігу під рядка в рядку.

Чистимо Листбокс.

Створюємо копію стеку.

Заводимо змінну булевого типу b.

Заводимо числову змінну a1 і присвоюємо їй початкове значення 0.

Перевіряємо якщо кількість елементів у стеку дорівнює 0 тоді виводимо у листбокс текст Стек порожній, якщо ні виконуємо алгоритм далі.

Якщо поле пошуку дорівнює 0 тоді виводимо повідомлення «Заповните поле пошуку» інакше починаємо цикл Поки.

Поки в новому стеку кількість елементів більше 0 виконуємо :

Беремо з вершини стеку елемент і замінюємо в ньому символ «|» на символ «» та присвоюємо змінний s1.

З поля пошуку присвоюємо змінній s2 значення яке ми хочимо знайти у стеку.

Присвоюємо змінній b значення true, якщо змінна s1 містить змінну s2 і значення false, якщо змінна s1 не містить змінну s2.

Якщо змінна b має значення true вивести елемент зі стеку у листбокс в рядок та підвищіти змінну a1 на одиницю.

Якщо a1 більше за 0 вивести у форму текст Знайшли і значення змінної a1.

Якщо a1 дорівнює 0 вивести у форму текст Знайшли 0.

Кінець алгоритму.

Алгоритм пошуку у стеку за яким оборот перевищує задане число.

Створюємо копію стеку.

Чистимо Листбокс.

Заводимо рядкову змінну words.

Заводимо числову змінну kol і присвоюємо їй початкове значення 0.

Якщо поле за яким оборот перевищує задане число виявилося не заповненим, тоді звертаємо увагу користувача на незаповнене поле з числом за яким треба проводити пошук.

Якщо в полі число є то виконуємо пошук у циклі Поки :

Беремо з вершини стеку елемент та присвоюємо змінний words.

Використовуючи метод Спліт з роздільником «|» одержуємо рядковий масив words1.

Якщо третій елемент масиву words1 більший за число вказане в полі тоді виводимо елемент у листбокс та збільшуємо змінну kol на одиницю.

Кінець алгоритму.

Алгоритм пошуку у стеку за яким виручка перевищує задане число.

Створюємо копію стеку.

Чистимо Листбокс.

Заводимо рядкову змінну words.

Заводимо числову змінну kol і присвоюємо їй початкове значення 0.

Якщо поле за яким виручка перевищує задане число виявилося не заповненим, тоді звертаємо увагу користувача на незаповнене поле з числом за яким треба проводити пошук.

Якщо в полі число є то виконуємо пошук у циклі Поки :

Беремо з вершини стеку елемент та присвоюємо змінний words.

Використовуючи метод Спліт з роздільником «|» одержуємо рядковий масив words1.

Якщо четвертий елемент масиву words1 більший за число вказане в полі тоді виводимо елемент у листбокс та збільшуємо змінну kol на одиницю.

Кінець алгоритму.

Алгоритм сортування у стеку за алфавітом за назвою.

Заводимо нову рядкову змінну read і ініціалізуємо її.

Використовуючи списки створюємо список Ot на базі абстрактного класу Office.

Починаємо цикл Поки стек більше 0 виконуємо :

Беремо з вершини стеку елемент перетворюємо його на рядок та присвоюємо змінний read.

Використовуючи метод Спліт з роздільником «|» одержуємо рядковий масив words.

Додаємо у список Ot рядок з 6 елементів рядкового масиву words.

Сортуємо за алфавітом за допомогою делегатів список за назвою.

Збираємо у стек всі елементи зі списку Ot.

Чистимо Листбокс.

Створюємо копію стеку та у циклі поки стек більше 0 виводимо кожен елемент у листбокс розташований за алфавітом.

Кінець алгоритму.

Алгоритм сортування у стеку по зростанню за виручкою.

Заводимо нову рядкову змінну read і ініціалізуємо її.

Використовуючи списки створюємо список Ot на базі абстрактного класу Office.

Починаємо цикл Поки стек більше 0 виконуємо :

Беремо з вершини стеку елемент перетворюємо його на рядок та присвоюємо змінний read.

Використовуючи метод Спліт з роздільником «|» одержуємо рядковий масив words.

Додаємо у список Ot рядок з 6 елементів рядкового масиву words.

Сортуємо список по зростанню за допомогою делегатів за виручкою.

Збираємо у стек всі елементи зі списку Ot.

Чистимо Листбокс.

Створюємо копію стеку та у циклі поки виводимо кожен елемент у листбокс розташований за алфавітом.

Кінець алгоритму.

Алгоритм сортування у файлі за алфавітом.

Створюємо Список з назвою класа який ми обрали для сортування.

Оголошуємо файлову змінну file1 і зв’язуємо її з нашим файлом.

Починаємо цикл Поки у файлі не закінчились рядки виконуємо:

Читаємо один рядок з файлу у змінну read.

Використовуючи метод Спліт з роздільником «|» одержуємо рядковий масив words.

Додаємо у список 6 елементів рядкового масиву words.

Зачинемо файл, який зв’язали файловою змінною file1.

Сортуємо за алфавітом за допомогою делегатів список за назвою.

Оголошуємо об'єкт write і зв’язуємо її з нашим файлом.

За допомогою циклу Foreach записуємо по одному елементи зі списку до нашого файлу.

Зачинемо файл, який зв’язали файловою змінною write.

Кінець алгоритму.

Розробка програми рішення задачі.

Після отримання завдання на написання курсового проекту було прийнято рішення розподілити роботу над курсовим проектом на декілька етапів які б дали змогу краще виконати поставлену задачу і розподілити зусилля на її виконання.

Збір інформації про завдання.

Розкриття сенсу задачі.

Визначення кінцевих цілей рішення задачі.

Визначення форми видачі результатів.

Опис даних (їх типів, діапазонів величин, структури, назв і т. п.).

Аналіз існуючих аналогів.

Розробка структур даних.

Уточнення способів організації даних.

Написання програми і її налагодження.

Виявлення помилок та їх усунення.

Вдосконалення програми.

Складання документації до вирішеної задачі,.

В першу чергу необхідно було з’ясувати які дані буде обробляти програма. Як програма буде взаємодіяти з користувачем. Яким чином зберігати введені користувачем дані у програму. Яким чином відобразити ці дані у програмі. Які наступні дії можна проводити з цим набором даних. Після отримання відповіді на ці питання стало можливим переходити до наступного етапу виконання курсової роботи.

В процесі підготовки до написання програми створювалася ієрархія трьох класів торговий, поштовий та банковий на чолі з абстрактним класом Office.

Доповнювалися поля притаманні кожному з класів та будувався окремий конструктор для кожного класу на базі конструктора абстрактного класу. Поступово ставало зрозумілим якою буде програми у процесі написання коду. Для зменшення рядків у коді використовувалися процедури і функції. Розробка керівництва користувача.

Для зручності роботи користувача була створена форма на якій знаходяться :

Тексти для усвідомлення користувачем призначення полів, об'єктів для вибору та кнопок.

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

Об'єкти для вибору зі списку.

Вікно для перегляду створених елементів користувачем.

Перегляд вмісту кожного файла створеного при запуску програми.

Форма для створення одного елемента стеку має наступний вигляд.

Для завантаження в стек елементів з усіх файлів створена кнопка «Загрузка в стек со всех файлов».

Якщо потрібно передивитись вміст стеку то для цього на формі призначена кнопка Вікно зі вмістом стеку виглядає наступним чином.

Для перегляду кількості елементів у стеку призначена кнопка «Размер стека».

Після її натиснення на формі з’явиться напис ;

Для пошуку потрібного елемента у стеку призначена кнопка, а текст за яким проводити пошук потрібно вписати у це поле інакше програма буде видавати наступне повідомлення.

Для сортування елементів у стеку за алфавітом та впорядкувати елементи за зростанням призначений об'єкт для вибору за списком.

Якщо потрібно обрати елементи в яких оборот або виручка більше за вказану у полі то для цього призначені 2 кнопки.

Ще в програмі передбачена можливість сортування у кожному файлі окремо, за алфавітом за їх назвою для цього призначений 2 об'єкта для вибору за списком 1) та об'єкт 2).

Ще в програмі можливо переглянути вміст кожного файлу у окремому вікні, для цього існує три кнопки.

Для редагування елемента у стеку потрібно вибрати елемент зі списку як це написано над вікном перегляду стеку.

Тоді обраний користувачем елемент з’явиться у полі вводу на формі :

Після зміни елемента для збереження його у стеку та файлу, при цьому, якщо елемент буде переміщений у інший файл то його дублікат у файлі буде знищено. Для цього призначена кнопка .

Якщо потрібно видалити елемент зі стеку і файлу то для цього потрібно натиснути на кнопку.

Якщо не потрібно редагувати або знищувати елемент у стек або файлу то для цього потрібно натиснути на кнопку.

Також в програмі можна за допомогою 2 кнопок і переміщуватись по рядках у вікні перегляду стеку. При цьому кожен рядок буде розбиватись на окремі поля і відображатися у вікні редагування елемента. Якщо при переміщенні вперед по рядках буде досягнуто останнього рядка, то переглядання почнеться з самого початку і навпаки при переміщенні назад, якщо це виявиться перший рядок.

Показати весь текст
Заповнити форму поточною роботою