Разработка электронной картотеки

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    9,93 Кб
  • Опубликовано:
    2013-07-16
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка электронной картотеки















Разработка электронной картотеки

1. Описание информационной структуры

Шаблон:

typedef struct games

{name[12]; // Название продуктаyear; // Дата выходаrating; // Рейтинг

} MS;

Где первое поле типа char - название продукта, второе поле типа int - дата выхода продукта, третье поле типа int - рейтинг.

Имя структурного типа: games.

Имя нового типа: MS.

Пример объявления переменной типа NT: MS *games=NULL.

2. Описание структуры, используемой для организации списка

Шаблон:

typedef struct list

{info;list* pred;list* next;

} SP;

Где первое поле - данные типа MS, второе и третье поле указатель типа struct list *.

Имя структуры, используемой для организации список: list.

Имя нового типа: SP.

Пример объявления переменной типа SP: SP *h1=NULL.

3. Контрольные примеры

Контрольные примеры обработки приведены в таблице 1 «Контрольные примеры обработки».

Таблица 1. Контрольные примеры обработки

Исходные данныеУсловие обработки rating вывод продуктов с рейтингом больше, чем nРезультатНаименованиеГод выходаРейтингНаименованиеГод выходаРейтингCrysis20087n=8Crysis 220109Crysis 220109Crysis 3201210Crysis 3201210Max Payne20009n=10Gears World201211Gears World201211Shake20103

Контрольные примеры сортировки по полю rating приведены в таблице 2 «Контрольные примеры сортировки».

Таблица 2. Контрольные примеры сортировки

Исходные данныеТип сортировкиРезультатНаименованиеГод выходаРейтингНаименованиеГод выходаРейтингCrysis20088По возрастаниюCrysis 320127Crysis 2201011Crysis20088Crysis 320127Crysis 2201011Crysis20088По убываниюCrysis 2201011Crysis 2201011Crysis20088Crysis 320127Crysis 320127

Контрольные примеры сортировки по полю year приведены в таблице 3 «Контрольные примеры сортировки».

Таблица 3. Контрольные примеры сортировки

№ п.п.Исходные данныеТип сортировкиРезультатНаименованиеГод выходаРейтингНаименованиеГод выходаРейтинг1Baloo20088По возрастаниюAentik20127Charge201011Baloo20088Aentik20127Charge2010112Nord20088По убываниюAscell201011Ascell201011Jaske20127Jaske20127Nord20088

4. Описание переменных главной функции

Описание переменных главной функции приведено в таблице 4.

Таблица 4. Описание переменных главной функции

Имя переменнойТип переменнойНазначениеk, q, zintВспомогательные переменныеpm, pm2, pm3, pm4, pm5, pm6, pm7, pm8intПеременные для выбора пунктов менюc, chcharПеременные, управляющие цикломh1, rezSP *Указатели

5. Краткое описание алгоритма

При разработке алгоритма предусмотрен контроль над выполнением пунктов меню.

) Пользователь выбирает один из пунктов меню: 1 - ввод данных картотеки; 2 - вывод данных; 3 - Формирование нового списка; 4 - Обработка 5 - Поиск; 6 - Сохранение и загрузка картотеки; 7 - Пользователю; 0 - Выход из программы.

) Если пользователь выбирает первый пункт меню, выводится подменю: 1 - Последовательный ввод; 2 - Ввод с уточнениям места добавления элемента в картотеку 3 - выход в надменю.

.1) Если пользователь выбирает первый пункт меню, выполняется:

.1.1) ввод названия, переход к пункту 2.1.2;

.1.2) ввод года, переход к пункту 2.1.3;

.1.3) ввод рейтинга переход к пункту 2.1.4;

.1.4) вывод сообщения «Завершить ввод? (y/n)».

.1.5) если сh==n, переход к пункту 2.1.1; если сh!=n, переход к пункту 2.

) Если пользователь выбирает второй пункт меню, выполняется вывод под-меню:

- Последовательный ввод.

- Уточнение ввода данных

- Выход

) Если пользователь выбирает третий пункт меню, выполняется обработка по заданному пользователем условию, переход к пункту 1.

) Если выбран четвертый пункт меню, выводится подменю: 1 - Удаление элементов; 2 - Сортировка (По имени, году или рейтингу); 3 - Выход (действия осуществляются в соответствии с выбранным пунктом).

) Если выбран 5 пункт, выполняется поиск элемента (по имени или году).

) Если выбран 6 пункт меню, выводится подменю с вариантами выбора: 1 - Сохранение, 2 - Загрузка

) Если выбран 7 пункт меню, осуществляется вывод информации для пользователя:

- Рекомендации по использованию, 2 - Инструкция по программе

) Если выбран 0 пункт меню, осуществляется выход из программы.

6. Описание функций

Описание функции «menu_seach_1»

Назначение: вывод подменю пункта «Поиск».

Прототип: void menu_seach_1 (void)

Пример вызова: menu_seach _1 ();

Описание функции «menu_sort_1»

Назначение: вывод подменю пункта «Сортировка».

Прототип: void menu_sort_1 (void)

Пример вызова: menu_seach _1 ();

Описание функции «user_GUIDE»

Назначение: вывод подменю пункта «Пользователю».

Прототип: void user_GUIDE(void)

Пример вызова: user_GUIDE();

Описание функции «Save_and_Load»

Назначение: вывод подменю пункта «Сохранение и загрузка».

Прототип: void Save_and_Load(void)

Описание функции «menu_seach»

Назначение: вывод подменю пункта «Поиск».

Прототип: void menu_seach(void)

Пример вызова: menu_seach ();

Описание функции «menu_confirming»

Назначение: вывод подменю пункта «Обработка».

Прототип: void menu_confirming(void)

Пример вызова: menu_confirming ();

Описание функции «Notice»

Назначение: вывод подсказки

Прототип: void Notice(void)

Пример вызова: Notice ();

Описание функции «menu_enter»

Назначение: вывод подменю пункта «Ввод данных картотеки»

Прототип: void menu_enter(void)

Пример вызова: menu_enter();

Описание функции «menu_enter»

Назначение: вывод подменю пункта «Ввод данных»

Прототип: void menu_enter(void)

Пример вызова: menu_enter();

Описание функции «output_menu»

Назначение: вывод подменю пункта «Вывод данных»

Прототип: void output_menu(void)

Пример вызова: output_menu();

Описание функции «help»

Назначение: вывод помощи.

Прототип: void help(void)

Пример вызова: help();

Описание функции «recomend»

Назначение: вывод рекомендации пользователю.

Прототип: void recomend(void)

Пример вызова: recomend();

Описание функции «Screen»

Назначение: вывод няшности*

Прототип: void Screen(void)

Пример вызова: Screen();

Описание функции «enter»

Назначение: ввод

Прототип: SP *enter (SP *), где параметр типа SP * - указатель на «голову» списка, тип возвращаемого значения SP * - указатель на «голову» списка.

Пример вызова: names = enter(&k), где names - указатель на «голову» списка.

Описание переменных: описание локальных переменных функции enter приведено в таблице 4.

Таблица 4. Описание локальных переменных функции enter

Имя переменнойТип переменнойНазначениеpSP *Указатель на «голову» списка

Описание функции «Output»

Назначение: вывод информационных полей списка.

Прототип: void Output (SP *, char *), первый тип параметра SP * - указатель на «голову» списка, второй тип параметра char * - указатель на объект типа char.

Пример вызова: Output (games, «Данные:»), где games - адрес первого элемента последовательности структур.

Описание переменных: описание локальных переменных функции Output приведены в таблице 5.

Таблица 5. Описание локальных переменных функции Output

Имя переменнойТип переменнойНазначениеqIntВспомогательная переменная

Описание функции «confirming»

Назначение: функция обрабатывает исходный список и возвращает полученный список - результат.

Прототип: SP *confirming (SP *) где тип возвращаемого значения SP * - указатель на «голову» списка, первый тип параметра SP * - адрес первого элемента списка.

Пример вызова: rez=confirming (SP *h1), где rez - возвращаемое значение типа SP *, h1 - указатель на «голову» списка.

Описание переменных: описание локальных переменных функции confirming приведено в таблице 6.

Таблица 6. Описание локальных переменных функции confirming

Имя переменнойТип переменнойНазначениеdintПеременная для хранения рейтингаp, h2, p1, p2SP *переменные указатели

Описание функции «Sort»

Назначение: функция вызывает функцию «NewSort» с соответствующими параметрами для различных типов сортировки (по возрастанию, убыванию)

Прототип: SP *Sort (SP *), где первый тип параметра SP * - указатель на «голову» списка, второй тип параметра int - размер исходного списка, а тип возвращаемого значения SP* - указатель на «голову» списка

Пример вызова: h1=Sort(games), где h1 указатель на «голову» списка

Описание переменных: описание локальных переменных функции Sort приведено в таблице 7.

Таблица 7. Описание локальных переменных функции Sort

Имя переменнойТип переменнойНазначениеpm2, pm3, pm4IntПеременные для управления меню

Описание функции «Newsort»

Назначение: функция сортирует элементы списка.

Прототип: SP *Newsort (SP *, int, int), где первый параметр типа SP * - указатель на «голову» списка, второй тип параметра int - флаг, показывающий по какому полю сортировать, третий тип параметра int - флаг, показывающий какой тип сортировки выполнять (по возрастанию убыванию), возвращаемое значение типа SP * - указатель на «голову» списка.

Пример вызова: h1=Newsort (h1, 1, 1), где первый параметр h1 - указатель на «голову» списка, второй параметр 1 - флаг, показывающий по какому полю сортировать, третий параметр int - флаг, показывающий какой тип сортировки выполнять (по возрастанию убыванию), возвращаемое значение типа SP * - указатель на «голову» списка.

Описание переменных: описание локальных переменных функции Newsort приведено в таблице 8.

Таблица 8. Описание локальных переменных функции NewSort

Описание функции «Add»

Назначение: функция добавляет элемент в существующий список.

Прототип: SP *Add (SP *), где тип возвращаемого значения SP * - указатель на «голову» списка, первый тип параметра SP * - указатель на «голову» списка.

Пример вызова: h1=Add(h1), где h1 указатель на «голову» списка.

Описание переменных: описание локальных переменных функции Add приведено в таблице 9.

Таблица 9. Описание локальных переменных функции Add

Имя переменнойТип переменнойНазначениеd, kintВспомогательные переменныеpm2intПеременная для управления менюp1, pSP *Переменные указатели

Описание функции «Del»

Назначение: функция удаляет элемент из списка.

Прототип: SP *Del (SP *), где тип возвращаемого значения SP * - указатель на «голову» списка, первый тип параметра SP * - указатель на «голову» списка.

Пример вызова: h1=Del(h1), где h1 - указатель на «голову» голову списка.

Описание переменных: описание локальных переменных функции Del приведено в таблице 10.

Таблица 10. Описание переменных функции Del

Имя переменнойТип переменнойНазначениеd, kintВспомогательные переменныеp1, pSP *Переменные указатели

Описание функции «Output_2»

Назначение: функция выводит информационные поля элементов, расположенных справа и слева от заданного.

Прототип: void Output_2 (SP *), где первый тип параметра SP * - указатель на «голову» списка.

Пример вызова: Output_2 (h1), где h1 - указатель на «голову» списка.

Описание переменных: описание локальных переменных функции Output_2 приведено в таблице 11.

Таблица 11. Описание локальных переменных функции Output_2

Имя переменнойТип переменнойНазначениеk, zintВспомогательные переменныеp, p1, h2, p2SP *Вспомогательные переменныеОписание функции «save»

Назначение: функция сохраняет данные картотеки в файле

Прототип: int *save (SP *), где тип возвращаемого значения int, первый тип параметра SP * - указатель на «голову» списка.

Пример вызова: check=save(h1), где h1 - указатель на «голову» списка.

Описание переменных: описание локальных переменных функции приведено в таблице 12.

Таблица 13. Описание переменных функции save

Имя переменнойТип переменнойНазначениеnamecharВспомогательные переменные

Описание функции «Load»

Назначение: функция загружает данные из файла

Прототип: SP *Load (SP *), где тип возвращаемого значения SP, указатель» голову» списка, первый тип параметра SP * - указатель на «голову» списка.

Пример вызова: h1=Load(h1), где h1 - указатель на «голову» списка.

Описание переменных: описание локальных переменных функции приведено в таблице 13.

Таблица 14. Описание переменных функции save

Имя переменнойТип переменнойНазначение*namecharУказатель на первую букву имени файласcharВспомогательная переменная

Описание функции «Seach»

Назначение: функция ищет продукты по определенному сочетанию букв, году и рейтингу.

Таблица 15. Описание переменных функции Seach_1

Имя переменнойТип переменнойНазначениеi, lintВспомогательные переменныеs[15]charСочетание вводимое пользователемchcharВспомогательные переменные

7. Иерархическая структура программы



















Рис. 2. Иерархическая структура программы

8. Код программы на языке С/С++

// ConsoleApplication16.cpp: Defines the entry point for the console application.

#include «stdafx.h»

#include «stdio.h»

#include <conio.h>

#include <stdlib.h>

#include <tchar.h>

#include <string.h>

#include <locale>

#include <time.h>

#include <Windows.h>

#include <iostream>namespace std;struct games

{name[12]; // Название продуктаyear; // Дата выхода

int rating; // Рейтинг

} MS;struct list

{info;list* pred;list* next;

} SP;menu_seach_1 (void); // Подменю поискаmenu_sort_1 (void); // Подменю сортировки User_GUIDE(void); // Меню «Пользователю»

void Save_And_Load(void); // Сохранить и загрузить

void menu_seach(void); // Меню поиска

void menu_confiming(void); // Меню обработкиNotice(void); // Функция подсказкиmenu_enter(void); // Подменю вводаoutput_menu(void); // Подменю выводаhelp(void); // Помощьrecomend(void); // Рекомендацииmenu(void); // Главное менюScreen(void); // Элементы интерфейса* enter (SP*); // ввод данныхOutput (SP*, char*); // вывод данных *confirming (SP*); // создание нового списка

SP *Sort (SP*); // Сортировка*NewSort (SP*, int, int); // Подсортировка

SP *Add (SP*); // добавление элементов*Del (SP*); // удаление элементовOutput_2 (SP*); // вывод справа и слева*Free (SP*); // Освобождение памятиsave (SP *); // Сохранение данных*Load(); // Загрузка из файла* SortALF (SP*); // Сортировка по алфавиту

SP *Add_End (SP *, SP *); // Добавление в конец

void menupoisk (SP *, SP *); // Подменю поиска

SP *Seach (SP *, int); // Функция поиска

int Modulus (int, int); // Супервозможности программы

char GetChar (int, char, int); // Реализация матрицы_tmain (int argc, _TCHAR* argv[])

{(LC_CTYPE, «russian»);*h1=NULL,*rez=NULL; // Указатели делаем нулевымиpm, pm2, pm3, pm4=0, pm5, pm6, pm7, pm8, check1=0, check=0; // Вспомогательные пер.c=NULL, ch=NULL, Base1=NULL, Base2=NULL, matrixch=NULL, lol=1; // Вспомгат.перhConsole;= GetStdHandle (STD_OUTPUT_HANDLE);(hConsole, 2); // цвет консолькиcaRow[80];j = 7;k = 2;l = 5; m = 1;(«Нажмите любую кнопку, для загрузки программы»);

Screen();

{();(stdin);(«»);(«»);(«Ввод пункта меню:»);(«%d»,&pm);(pm)

{(«cls»);(lol==1)

MessageBoxA (0, «Название может содержать латинские буквы и цифры, и иметь длину не более 15 символов.\nГод выхода имеет форма XXXX. Пример: 2010. Должен быть больше 1990 и меньше 2100.\nРейтинг должен быть больше 0.\nДля продолжения нажмите ОК\n», «Дорогой пользователь», 0);

menu_enter();=0;(«Ввод пункта меню:»);(«%d»,&pm6);(pm6)

{1:(check!=1)

{(«cls»);(h1!=NULL)=Free(h1);(ch!='y')

{=enter(h1); («cls»);(«\n Закончить ввод данных? (y/n)?\n»);=getch();

}

{(stdin);(«\n\n\Записать в файл (да-y/нет-n)?»);(«%c», &Base2);

}(Base2!='n' && Base2!='y'&& Base2!='Y'&& Base2!='N');(Base2=='Y'|| Base2=='y')

{(h1);(«\n\n\n\n\n\t\t Запись данных закончена! Нажмите любую клавишу.»);();

}

}

{(«Последовательный ввод невозможен, используйте добавление элементов.»);(«»);(«Нажмите любую клавишу»);

getch();

}=1;;2:(«cls»);(h1!=NULL)=Add(h1);

else

{(«Т.к. элемент первый в списке я добавлю его в начало, для продолжения нажмите любую кнопку»);

getch();=enter(h1);

}=1;;3:(«cls»);=3;;:(«cls»);(«Неправильно введен пункт меню»);(«»);(«Нажмите любую клавишу»);();;

}

}(pm6!=3);;2:

{(«cls»);_menu();(«Ввод пункта меню:»);(«%d»,&pm4);(pm4)

{1:(h1!=NULL)(h1,» Список:»);();();;2:(h1!=NULL)_2 (h1);();();;3:=3;;:

puts («Неправильно введен пункт меню»);(«»);(«Нажмите любую клавишу»);

getch();;

}

}(pm4!=3);;3:(«cls»);(h1!=NULL)

{(rez!=NULL)=Free(rez);=confirming(h1);(rez!=NULL)

Output (rez,» Результат обработки:»);(«\n В картотеке нет элементов с заданным условием \n»);

getch();

}();(«\nНажмите любую клавишу\n»);();;4:

{(«cls»);_confiming();(«»);(«Ввод пункта меню:»);(«%d»,&pm3);(pm3)

{1:(h1!=NULL)=Del(h1);

Notice();

getch();

break;

9. Инструкция для пользователя

.Для ввода данных нажмите 1.

)Выберите один из предложенных пунктов меню:

)«Последовательный ввод «- Ввод данных, данные сохраняются последовательно, без уточнения места добавления информации.

)«Уточнить место добавления информации» - Здесь вы можете уточнить место добавления информации, будет выведено подменю с соответствующими пунктами (1-В начало, 2-После заданного, 3-в конец)

)Выход в надменю (Программа выйдет в надменю ввода)

.Для вывода данных нажмите 2.

)Выберите один из пунктов меню:

)«Вывод всей картотеки» - будет произведен вывод всей картотеки, в случае, если картотека пуста, программа выдаст ошибку.

)«Вывод справа и слева от элемента» - будет произведен вывод справа и слева от заданного элемента, если картотека пуста, программа выдаст ошибку, если заданный элемент не существует, программа также выдаст ошибку.

)Выход в надменю (Программа выйдет в надменю вывода)

.Для формирования новой картотеки по заданному условию нажмите 3.

)При выборе этого пункта произойдет формирование новой картотеки по заданному условию, в данном случае, программа сформирует новую картотеку из данных, которые соответствуют условию: рейтинг больше n, где n вводится после выбора пункта меню.

)После успешного формирования данных, программа выдаст соответствующее сообщение, в случае ошибки, соответствующее сообщение

.Для обработки картотеки нажмите 4:

)Выберите один из пунктов меню:

)«Удаление элементов из картотеки» - при выборе этого пункта, Вам будет предоставлен выбор, какой элемент удалить. Введите номер элемента.

)«Добавление элемента в указанного место» - аналог п. 1.1.2.

)Выход в надменю (Программа выйдет в надменю обработки)

.Для поиска элементов нажмите 5:

)Выберите один из пунктов меню:

)«Поиск по имени» - при выборе этого пункта, Вам необходимо ввести комбинацию букв для поиска ее в базе данных. Если элементы будут найдены, произойдет вывод, иначе программа сообщит об отсутствии элементов в базе.

)«Поиск по году» - при выборе этого пункта, Вам необходимо ввести диапазон от a до b годов. Будет осуществлен поиск продуктов в этом диапазоне. Если элементы будут найдены, произойдет вывод, иначе программа сообщит об отсутствии элементов в базе.

)Выход в надменю (Программа выйдет в надменю поиска)

.Для сохранения или загрузки файлов нажмите 6:

)Выберите один из пунктов меню:

)«Сохранение» - Картотека будет сохранена в файле, имя которого Вы задаете сами. В случае, если картотека пуста, сохранение невозможно.

)«Загрузка» - Загрузка данных из файла. В случае отсутствия файла, программа сообщит об ошибки.

)«Выход в надменю» (Программа выйдет в надменю сохранения и загрузки)

.Для просмотра документов для пользователя нажмите 7:

)Выберите один из пунктов меню:

)«Рекомендации по использованию программы» - Основные рекомендации для пользователя по использованию программы.

)«Инструкция пользователю» - кратка инструкция по использованию программы.

)«Выход в надменю» (Программа выйдет в надменю вывода)

.В случае ввода неправильного пункта меню, программа сообщит об соответствующей ошибке.

.Программа русифицирована, но в связи с особенностями среды, поддерживает только английский язык

.Также замечена нестабильность работы на Windows 8, возможны сбои в сохранении, загрузке и поиске данных.

.Хорошего Вам дня.

Выводы

программа картотека сортировка алгоритм

Были получение практические навыки в работе со списками и файлами на примере электронной картотеки, создана электронная картотека, хранящаяся на диске, а также программа, обеспечивающая взаимодействие с ней. При выполнении программы полученные результаты совпадают с приведенными в таблицах 1 и 2 «Контрольные примеры». Ошибок не обнаружено. При выполнении курсовой работы получены практические навыки в работе со списками и файлами на языке С/С++.

Похожие работы на - Разработка электронной картотеки

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!