45895 (665218)

Файл №665218 45895 (Программа обработки данных в библиотеке)45895 (665218)2016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Программа обработки данных в библиотеке

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

Выполнил : студент гр. 96-ВВ3 Митиков Р.О.

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

Пенза 1998

Введение

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

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

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

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

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

1) Ввод данных о книгах , имеющихся в библиотеке:название книги , автор , количество экземпляров , порядковый номер , стоимость книги

2) Вывод информации на экран (в файл) по запросу о книгах , имеющихся в библиотеке: читальном зале , абонементе , хранилище по названию , автору, тематике.

3) Сбор статистики о книгах одного автора с разными названиями.

4) Построение графической диаграммы для пункта по выбору.

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

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

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

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

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

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

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

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

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

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

Данные , сортированные по названию или автору

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

График

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

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

Структура books:

Поле

Тип

Название

name

строка 30 символов типа char

Название

fio

строка 30 символов типа char

Автор

num

int

Количество

price

float

Стоимость

number

long

Порядковый номер

loc

int

Расположение

ss

int

Тематика

nn

int

Номер по названию

nf

int

Номер по автору

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

Поле

Тип

Название

cdt

массив переменных типа books на 501 элемент

Массив данных о странах

cnum

Int

Количество книг

sort

Char

тип сортировки

ftm

Char

Расположение

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

6.1 Функция cmp

Строка вызова:

if (cmp(cdt[n].name,cdt[500].name)&&cmp(cdt[n].fio,cdt[500].fio)&& (cdt[n].price>=cdt[500].price))

Назначение:

Осуществляет сравнение строки с маской

Функции:

Просматривает последовательно заданную строку , и если в ней найдена маска , то возвращается 1 , если нет - 0.

Логические

переменные:

*a (char) - указатель на строку

*b (char) - указатель на маску для поиска

Внутренние

переменные:

k (int) - результат сравнения

n (int) - счётчик

Вызывает функции:

нет

Вызывается из:

index , find

6.2 Функция output

Строка вызова:

output(sv,sk)

Назначение:

Осуществляет вывод на экран списка книг

Функции:

Очистка экрана , вывод 10 элементов , если элемент выбран , выделение цветом , вывод данных о книге на экран.

Логические

переменные:

sv,sk (int) - координаты первого элемента на экране

Внутренние

переменные:

n (int) - счётчик

m (int) - временная переменная

nd (int) - порядковый номер данной книги

Вызывает функции:

нет

Вызывается из:

scroll

6.3 Функция menu

Строка вызова:

st=menu(30,5,"Добавить в список "

"Удалить из списка "

"Редактировать "

"По Автору "

"По Названию "

"Выход в главное меню"

"\x0")

st=menu(30,5," Список книг "

" Поиск по маске "

" Количество книг "

" Выход из программы "

"\x0")

st=menu(40,6," Расположение: "

" Читальный зал "

" Абонемент "

" Хранилище "

"\x0")

Назначение:

Осуществляет обработку меню

Функции:

Вывод меню на экран , опрос клавиатуры , при нажатии клавиш управления курсором (вверх , вниз) перемещение цветового курсора по пунктам меню , выбор определённого пункта меню при нажатии клавиши с номером пункта меню , при нажатии клавиши Enter возвращается номер выбранного пункта меню , при нажатии клавиши Esc возвращается -1.

Логические

переменные:

*capt (char) - указатель на текст меню

x,y - координаты вывода меню на экран

Внутренние

переменные:

n,m (int) - Счетчики

num (int) - Количество пунктов

k (int) - Выбранный пункт

*pt (char) - Временный указатель на символ

c (char) - Считанный с клавиатуры символ

Вызывает функции:

нет

Вызывается из:

scroll , main

6.4 Функция sinput

Строка вызова:

SInput(cdt[ed].name,30,35,6)

SInput(cdt[ed].fio,30,35,8)

SInput(name,40,20,23)

Назначение:

Осуществляет ввод строки.

Функции:

Вывод пустой строки , установка координат , вывод строки запроса, считывание строки посимвольно с клавиатуры , выход , если нажата клавиша Enter или Esc , если нажата Esc то строка не записывается.

Логические

переменные:

*s (char) - указатель на строку

lng (int) - максимальная длина

x,y - координаты ввода

Внутренние

переменные:

rs[100] (char) - Временная строка

n (int) - Счетчик

c (char) - Введённый с клавиатуры символ

Вызывает функции:

нет

Вызывается из:

edit , find

6.5 Функция dinput

Строка вызова:

cdt[ed].price=DInput(35,10)

cdt[ed].number=DInput(35,12)

cdt[ed].num=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()

Назначение:

Осуществляет построения столбчатой диаграммы по распределению книг .

Функции:

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

Логические

переменные:

нет

Внутренние

переменные:

drv,mode (int) - для инициализации графики

c (int) - Цвет

k1,k2,k3 (int) - количество книг

n (int) - Счетчик

m (int) - Масштаб

Вызывает функции:

нет

Вызывается из:

main

6.7 Функция index

Строка вызова:

index()

Назначение:

Осуществляет индексирование массива - назначение номеров элементов по алфавиту для каждого поля записи.

Функции:

Cтирание старых индексов , перебор всех возможных мест хранения , индексация по автору , поиск наименьшего , индексация по названию , поиск наименьшего.

Логические

переменные:

нет

Внутренние

переменные:

n,m (int) - счётчики

tm (int) - перебор тем

mxc (char[100]) - значение наименьшей строки

nm (int) - номер очередного элемента

Вызывает функции:

cmp

Вызывается из:

scroll

6.8 Функция edit

Строка вызова:

edit(cnum-1)

edit(n)

edit(500)

Назначение:

Осуществляет редактирование элемента массива.

Функции:

Ввод данных , вывод одного из полей структуры , опрос клавиатуры , выбор действия - редактирование поля или выход (клавиша Esc).

Логические

переменные:

ed (int) - номер элемента массива

Внутренние

переменные:

n (int) - счётчик

en (int) - редактируемое поле

c (char) - Введённый с клавиатуры символ

Вызывает функции:

sinput , dinput

Вызывается из:

scroll

6.9 Функция find

Строка вызова:

find()

Назначение:

Осуществляет поиск элемента в заданной строке по заданной маске.

Функции:

Поиск элемента , Возврат результатов в файл или на экран.

Логические

переменные:

нет

Внутренние

переменные:

n (int) - счётчик

*F(file - файл ввода

name[50] (char) - Имя файла

Вызывает функции:

cmp , sinput

Вызывается из:

main

6.10 Функция scroll

Строка вызова:

scroll ()

Назначение:

Осуществляет обработку списка.

Функции:

Вывод списка на экран , ввод символа с клавиатуры, обработка символа , в воодветствии с нажатой клавишей вызов меню , выбор пункта меню , выполнение действия , выход.

Логические

переменные:

нет

Внутренние

переменные:

st (int) - номер выбранного пункта меню

n (int) - счётчик

c (char) - Введённый с клавиатуры символ

sv , sk (int) - первый элемент на экране и положение курсора

Вызывает функции:

output , menu , edit , index.

Вызывается из:

main

6.11 Функция load

Строка вызова:

load()

Назначение:

Осуществляет загрузку базы данных из файла.

Функции:

Открытие файла с именем librarym.dat , чтение количества строк в массиве , чтение данных в массив , закрытие файла.

Логические

переменные:

нет

Внутренние

переменные:

*f (file) - указатель на файл

Вызывает функции:

нет

Вызывается из:

main

6.12 Функция save

Строка вызова:

save()

Назначение:

Осуществляет запись базы данных в файл.

Функции:

Открытие файла librarym.dat , запись количества элементов , запись данных в файл , закрытие файла.

Логические

переменные:

нет

Внутренние

переменные:

*f (file) - указатель на файл

Вызывает функции:

нет

Вызывается из:

main

6.13 Основная программа - main

Назначение:

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

Функции:

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

Вызывает функции:

load , save , scroll , menu , find , graph.

7 Технические требования для использования

Характеристики

Тип файла
Документ
Размер
2,02 Mb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

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

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов реферата

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее