Смекни!
smekni.com

Программа учёта и выборки информации о странах (стр. 1 из 2)

Программа учёта и выборки информации о странах

Пояснительная записка к курсовой работе по дисциплине “Основы алгоритмизации и программирования”

Выполнил : студент гр. 96-ВВ3 Бубнов А.В.

Пензенский государственный технический университет, Кафедра “Вычислительная Техника”

Пенза 1997

Введение

С момента появления первых образцов персональных компьютеров прошло не так уж и много времени,но сейчас без них уже немыслимо огромное количество областей человеческой деятельности - экономика , управление , наука , инженерное дело , издательское дело , образование , культура и т.д.

Интерес к персональным компьютерам постоянно растет,а круг их пользователей непрерывно расширяется.В число пользователей ПЭВМ вовлекаются как новички в компьютерном деле,так и специалисты по другим классам ЭВМ.

Язык С++ - универсальный язык общего назначения, область приложений которого - программирование систем в самом широком смысле. Кроме этого, С++ успешно используется как во многих приложениях, так и в мощных операционных системах. Реализация С++ осуществлена для машин в диапазоне от самых простых персональных компьютеров до самых мощных суперкомпьютеров и для всех операционных систем.

1 Постановка задачи

Задача курсовой работы состоит в разработке на языке программирования С++ программы учёта и выборки информации о странах , которая должна осуществлять следующие функции:

1) Ввод информации;

2) Запись информации в файл;

3) Вывод информации на экран;

4) Выборка информации по заданному признаку (комбинации признаков);

5) Сбор статистики по заданному признаку (2-3) и построение результатов статистики в виде линейной диаграммы.

Имена файлов задаются в диалоге с пользователем.

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

Программу разработать на языке С++ v.3.1.

2 Метод решения задачи

Анализируя постановку задачи становится ясно , что для её решения необходимо применить метод многофункционального программирования - этот метод основан на разбиении программы на отдельные функциональные модули , которые вызываются из основной программы в процессе её работы.

В основе разработки такой программы лежит низходящее программирование - т.е. сначала разрабатывается основная программа - в данном случае программа ввода текста на экран , обработки функциональных клавиш и меню , с помощью выбора пунктов которого будет в дальнейшем организовываться её работа. При выборе того или иного пункта меню или нажатии функциональной клавиши будет вызываться одна или несколько подпрограмм , но на начальном этапе разработки программы методом нисходящего программирования вместо этих подпрограмм ставяться "заглушки" - пустые подпрограммы , которые в процессе разработки будут заменяться программами , выполняющими определённую функцию.

3 Описание логического представления данных

Входными данными в программе являются:

Файл базы данных , который записан на диске в файле country.dat.

Данные , которые в процессе работы программы можно добавить , удалить или отредактировать.

Выходными данными в программе являются:

Данные после сортировки;

Результат поиска по заданной маске;

График;

Файл базы данных , который записывается на диск в файл country.dat при завершении работы программы.

Данные об абоненте хранятся в массиве структур типа country:

Структура country:

Поле Тип Название
name строка 50 символов типа char Название
capt строка 10 символов типа char Столица
population double Население
money строка 20 символов типа char Денежная единица
square double Площадь
sp int Номер по населению
ss int Номер по площади
sn int Номер по названию

Глобальные переменные программы:

Поле Тип Название
cdt массив переменных типа country на 301 элемент Массив данных о странах
cnum int Количество стран
Sort char тип сортировки

6 Спецификация на функциональные модули

6.1 Функция cmp

Строка вызова: if (strcmp(cdt[n].name,mxc)<0)
Назначение: Осуществляет сравнение строки с маской
Функции: Просматривает последовательно заданную строку , и если в ней найдена маска , то возвращается 1 , если нет - 0.
Логические переменные: *a (char) - указатель на строку*b (char) - указатель на маску для поиска
Внутренние переменные: k (int) - результат сравненияn (int) - счётчик
Вызывает функции: нет
Вызывается из: index , find

6.2 Функция output

Строка вызова: output(sv,sk)
Назначение: Осуществляет вывод на экран списка cтран
Функции: Очистка экрана , вывод 10 элементов , если элемент выбран , выделение цветом , вывод данных о cтране на экран.
Логические переменные: sv,sk (int) - координаты первого элемента на экране
Внутренние переменные: n (int) - счётчикm (int) - временная переменная nd (int) - порядковый номер данной страны
Вызывает функции: нет
Вызывается из: scroll

6.3 Функция menu

Строка вызова: st=menu(30,5," Сортировка: " " по Населенности " " по Площади " " по Названию " " Поиск по маске " " Построение графика " " Выход из программы " "&bsol;x0");st=menu(54,10," по Населенности " " по Площади " "&bsol;x0");st=menu(30,5," Добавить в список " " Удалить из списка " " Редактировать " " Выход из программы " "&bsol;x0");
Назначение: Осуществляет обработку меню
Функции: Вывод меню на экран , опрос клавиатуры , при нажатии клавиш управления курсором (вверх , вниз) перемещение цветового курсора по пунктам меню , выбор определённого пункта меню при нажатии клавиши с номером пункта меню , при нажатии клавиши Enter возвращается номер выбранного пункта меню , при нажатии клавиши Esc возвращается -1.
Логические переменные: *capt (char) - указатель на текст менюx,y - координаты вывода меню на экран
Внутренние переменные: n,m (int) - Счетчикиnum (int) - Количество пунктовk (int) - Выбранный пункт*pt (char) - Временный указатель на символc (char) - Считанный с клавиатуры символ
Вызывает функции: нет
Вызывается из: scroll

6.4 Функция sinput

Строка вызова: SInput(cdt[ed].name,45,35,6);SInput(cdt[ed].capt,30,35,8);SInput(cdt[ed].money,20,35,10);
Назначение: Осуществляет ввод строки.
Функции: Вывод пустой строки , установка координат , вывод строки запроса, считывание строки посимвольно с клавиатуры , выход , если нажата клавиша Enter или Esc , если нажата Esc то строка не записывается.
Логические переменные: *s (char) - указатель на строкуlng (int) - максимальная длинаx,y - координаты ввода
Внутренние переменные: rs[100] (char) - Временная строкаn (int) - Счетчикc (char) - Введённый с клавиатуры символ
Вызывает функции: нет
Вызывается из: edit

6.5 Функция dinput

Строка вызова: cdt[ed].population=DInput(35,12);cdt[ed].square=DInput(35,14);
Назначение: Осуществляет ввод числа.
Функции: Вывод пустой строки , установка координат , вывод строки запроса, считывание строки посимвольно с клавиатуры , получение введённого числа , выход , если нажата клавиша Enter или Esc , если нажата Esc то число не записывается.
Логические переменные: *s (char) - указатель на строкуlng (int) - максимальная длинаx,y - координаты ввода
Внутренние переменные: s[100] (char) - Временная строка* сtpe (char) - указатель на сторкуrs (double) - Результатn (int) - Счетчикc (char) - Введённый с клавиатуры символ
Вызывает функции: нет
Вызывается из: edit

6.6 Функция graph

Строка вызова: graph(st);
Назначение: Осуществляет построения графика по населённости и по полщади стран.
Функции: Определение масштаба , построение осей координат , вывод графика на экран , ожидание нажатия пользователем клавиши.
Логические переменные: str (int) - номер страны
Внутренние переменные: drv,mode (int) - для инициализации графикиmx (int) - Масштаб по хx (int) - хn (int) - Счетчикpy (int) - Прошлое значение Y для первой линииppy (int) - Прошлое значение Y для второй линии
Вызывает функции: Нет
Вызывается из: Scroll

6.7 Функция index

Строка вызова: index()
Назначение: Осуществляет индексирование массива - назначение номеров элементов по алфавиту для каждого поля записи.
Функции: Cтирание старых индексов , индексация по площади , индексация по населению , индексация по названию.
Логические переменные: нет
Внутренние переменные: n,m (int) - счётчикиmx (double) - значение наименьшего элементаmxc (char) - значение наибольшего названияnm (int) - номер очередного элемента
Вызывает функции: cmp
Вызывается из: scroll

6.8 Функция edit

Строка вызова: edit(300);edit(cnum-1);edit(n);
Назначение: Осуществляет редактирование элемента массива.
Функции: Ввод данных , вывод одного из полей структуры , опрос клавиатуры , выбор действия - редактирование поля или выход (клавиша Esc).
Логические переменные: ed (int) - номер элемента массива
Внутренние переменные: n (int) - счётчикen (int) - номер пункта менюc (char) - Введённый с клавиатуры символ
Вызывает функции: sinput , dinput
Вызывается из: scroll

6.9 Функция find