Курсовая на тему Выборы главы Ашинского района
Работа добавлена на сайт bukvasha.net: 2014-07-22Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Министерство образования Российской Федерации
Южно-Уральский государственный университет
Филиал ЮУрГУ в г. Аша
Пояснительная записка
к курсовой работе по информатике
на тему: «Выборы главы Ашинского района».
Выполнил: студент гр. ПС-180 Стяжкин С.А.
Консультант: доцент Рафиков К.М.
Аша-2005
ЗАДАНИЕ
на курсовую работу по Информатике
Студенту гр. ПС-180 Стяжкину Семену Анатольевичу
Разработать и создать базу данных и систему управления базой данных для автоматизации рабочего места специалиста в соответствии с указанной темой.
Тема: Выборы главы Ашинского района_________
Дата представления работы на защиту – 15 мая 2005г.
Материалы, представляемые к защите:
· пояснительная записка,
· действующий программный продукт на дискете,
· файл пояснительной записки.
Требования к базе данных и СУБД:
1. Возможность создания, дополнения, просмотра, редактирования, удаления и сортировки записей в базе данных. Возможность поиска и расчетов (например, среднего значения) заданной информации.
2. Наличие в базе данных информации не менее чем о 15 объектах.
3. Удобный и красивый интерфейс, позволяющий безошибочно выполнять необходимую работу с базой данных.
4. Текст пояснительной записки подготовить с использованием текстового процессора MS Word. Требования к оформлению такие же, как в предыдущей курсовой работе.
5. Использовать язык программирования С/С++.
Примерное содержание пояснительной записки:
1. Задание.
2. Оглавление.
3. Введение.
4. Обоснование необходимости создания программного продукта.
5. Данные, которые хранятся в базе данных. Обоснование их достаточности.
6. Операции по обработке данных. Обоснование их достаточности.
7. Описание интерфейса пользователя с иллюстрациями диалоговых окон.
8. Структура программы (блок - схема) и ее описание.
9. Тестовые примеры.
10. Инструкция для пользователя.
11. Разработанная программа с комментариями.
12. Использованная литература.
Оглавление
1. Задание
2. Оглавление
3. Введение
4. Обоснование необходимости выполнения данной работы
5. Данные, которые хранятся в базе данных. Обоснование их достаточности
6. Операции по обработке данных. Обоснование их достаточности
7. Описание интерфейса пользователя с иллюстрациями диалоговых окон
8. Структура программы (блок - схема) и ее описание
9. Тестовые примеры
10. Инструкция для пользователя
11. Разработанная программа с комментариями
12. Использованная литература
Введение
Созданный программный продукт является системой управления базой данных кандидатов на пост главы Ашинского района. Система управления базой данных и база данных выполнена с использованием программного продукта Turbo C++.
Для каждого кандидата записывается фамилия, адрес, дата рождения, номер паспорта и количество голосов. Далее имеется возможность просмотра файла, его дополнения, изменения, удаления ненужных записей. Сортировки и поиск нужных записей осуществляется по всем параметрам. Все вышеперечисленные виды работ выполняются с помощью команд, список которых выводится на экран после запуска программы.
Пояснительная записка выполнена с использованием программных продуктов Microsoft Word.
Обоснование необходимости выполнения данной работы
Данная программа может помочь и облегчить работу комиссии проводящей выборы на пост главы Ашинского района.
Данный программный продукт является системой управления базой данных кандидатов на пост главы Ашинского района. С помощью неё легко можно сохранять данные о кандидатах, дополнять базу данных, удалять ненужные записи, просматривать записи, хранящиеся в базе данных, изменять данные о кандидатах, сортировать записи по фамилии, адресу, дате рождения, а также искать интересующую вас запись.
Программа очень проста в обращении и не требует больших знаний. Также для работы программы требуется компьютер с малым количеством ресурсов.
Данные, которые хранятся в базе данных. Обоснование их достаточности.
В представленной программе можно сохранять большое количество записей о кандидатах на пост главы Ашинского района. Каждая запись включает в себя информацию о фамилии, адресе, дате рождения, номере паспорта и количестве голосов, которые связаны между собой.
И для того чтобы найти нужного кандидата работнику комиссии требуется фамилия кандидата или его адрес. Так же можно узнать кто из кандидатов старше, а кто младше. Аналогично можно узнать у кого больше голосов, а у кого меньше, также номера их паспортов и адреса проживания.
Операции по обработке данных. Обоснование их достаточности.
В системе управления базой данных существуют следующие операции по обработке данных: создание файла базы данных с занесение в него данных о кандидатах, дополнение, удаление, просмотр, изменение, сортировка и поиск.
Для того чтобы создать базу данных необходимо воспользоваться операцией создания файла базы данных с занесением в него данных о кандидате. Если необходимо просмотреть все записи в базе данных, то необходимо воспользоваться операцией просмотра. Если необходимо ввести дополнительные записи в существующую базу данных, то в программе существует специальная для этого операция дополнения. Если необходимо удалить ненужные записи, то нужно воспользоваться операцией удаления. В случае если у кандидата изменилась фамилия или адрес или номер паспорта или он набрал еще голоса и необходимо ввести изменения в базу данных, то необходимо воспользоваться операцией изменения. Для удобного просмотра записей базы данных можно воспользоваться сортировкой. Если необходимо быстро найти нужного кандидата, то можно воспользоваться операцией поиска. Так же можно воспользоваться пунктом помощь, который кратко характеризует программу.
Описание интерфейса пользователя с иллюстрациями диалоговых окон.
Данная программа имеет удобный и красивый интерфейс, позволяющий безошибочно выполнять необходимую работу с базой данных.
Программа имеет синий цвет фона с желтым текстом. После запуска программы появляется заставка, которая выполнена в виде титульного листа к курсовой работе.
Затем появляется главное меню команд, которое выглядит так:
Меню создания базы данных сделано простым и понятным для каждого.
Окно ввода записей выглядит очень просто. На экран выводится только самое необходимое, для того чтобы пользователь знал что именно вводить.
После создания файла базы данных появляется сообщение по середине экрана.
Просмотр базы данных очень удобен, так как выполнен в виде таблицы.
Структура программы (блок - схема) и ее описание.
SHAPE \* MERGEFORMAT
SHAPE \* MERGEFORMAT
SHAPE \* MERGEFORMAT
Тестовые примеры.
После запуска программы появляется заставка. Нажимаем любую клавишу и программа переходит в главное меню.
Нажимаем на 1 в главном меню. Программа переходит в меню создания. В меню создания нажимаем 1. Программа спрашивает о том, сколько записей ввести, затем запрашивает данные о читателях столько раз, сколько вы ввели записей и сохраняет их в файле с адресом по умолчанию. После чего появляется сообщение о том, что файл сохранён. Для проверки нажимаем 4 в главном меню. На экране появляются сохранённые данные.
В меню создания нажимаем 2. Программа просит ввести адрес нового файла. Создаётся новый файл базы данных.
В меню создания нажимаем 3. Автоматически создаётся файл. Затем появляется сообщение о том, что файл сохранён. Для проверки нажимаем 4 в главном меню. На экране появляются сохранённые данные.
В меню создания нажимаем на 4. Программа переходит в главное меню.
В меню создания нажимаем на любой другой символ. Появляется сообщение о том, что введена неверная команда. Затем программа переходит в меню создания.
Нажимаем на 2 в главном меню. Программа спрашивает о том, сколько записей вы хотите ввести дополнительно. Вводим число большее максимально допустимого. Программа повторно спрашивает число дополнительных данных. Вводим правильное значение, и программа запрашивает данные о кандидатах столько раз, сколько записей вы ввели. После этого появляется сообщение о том, что файл дополнен. Для проверки нажимаем 4 в главном меню. На экране появляются появились записи, которыми дополнили файл.
В главном меню нажимаем на 3. Выводится список записей и сообщение о том, какую запись нужно удалить. Вводим номер записи, которая не существует. Программа повторно спрашивает о том, какую запись нужно удалить. Вводим правильное значение и запись сразу удаляется из списка, а каждая нижестоящая запись перемещается на строчку выше. Для проверки нажимаем 4 в главном меню. На экране появляются записи, кроме той, что была удалена.
В главном меню нажимаем 4. На экран выводятся все имеющиеся в файле записи.
В главном меню нажимаем 5. Появляются все записи, имеющиеся в файле и, сообщение о том, какую запись вы хотите изменить. Вводим номер не существующей записи. Программа повторно спрашивает о том, какую запись вы хотите изменить. Вводим правильное значение, появляется меню изменения. В меню изменения нажимаем 1. Программа запрашивает новый номер кандидата. Вводим новый номер кандидата. Для проверки нажимаем 4 в главном меню. Номер кандидата нужной записи изменился.
В меню изменения нажимаем 2. Программа запрашивает новую фамилию. Вводим новую фамилию. Для проверки нажимаем 4 в главном меню. Фамилия нужной записи изменилась.
В меню изменения нажимаем 3. Программа запрашивает новый адрес. Вводим новый адрес. Для проверки нажимаем 4 в главном меню. Адрес нужной записи изменилась.
В меню изменения нажимаем 4. Программа запрашивает новую дату рождения. Вводим дату. Для проверки нажимаем 4 в главном меню. Дата нужной записи изменился.
В меню изменения нажимаем 5. Программа запрашивает новый номер паспорта. Вводим новый номер паспорта. Для проверки нажимаем 4 в главном меню. Номер паспорта нужной записи изменился. Южно-Уральский государственный университет
Филиал ЮУрГУ в г. Аша
Пояснительная записка
к курсовой работе по информатике
на тему: «Выборы главы Ашинского района».
Выполнил: студент гр. ПС-180 Стяжкин С.А.
Консультант: доцент Рафиков К.М.
Аша-2005
ЗАДАНИЕ
на курсовую работу по Информатике
Студенту гр. ПС-180 Стяжкину Семену Анатольевичу
Разработать и создать базу данных и систему управления базой данных для автоматизации рабочего места специалиста в соответствии с указанной темой.
Тема: Выборы главы Ашинского района_________
Дата представления работы на защиту – 15 мая 2005г.
Материалы, представляемые к защите:
· пояснительная записка,
· действующий программный продукт на дискете,
· файл пояснительной записки.
Требования к базе данных и СУБД:
1. Возможность создания, дополнения, просмотра, редактирования, удаления и сортировки записей в базе данных. Возможность поиска и расчетов (например, среднего значения) заданной информации.
2. Наличие в базе данных информации не менее чем о 15 объектах.
3. Удобный и красивый интерфейс, позволяющий безошибочно выполнять необходимую работу с базой данных.
4. Текст пояснительной записки подготовить с использованием текстового процессора MS Word. Требования к оформлению такие же, как в предыдущей курсовой работе.
5. Использовать язык программирования С/С++.
Примерное содержание пояснительной записки:
1. Задание.
2. Оглавление.
3. Введение.
4. Обоснование необходимости создания программного продукта.
5. Данные, которые хранятся в базе данных. Обоснование их достаточности.
6. Операции по обработке данных. Обоснование их достаточности.
7. Описание интерфейса пользователя с иллюстрациями диалоговых окон.
8. Структура программы (блок - схема) и ее описание.
9. Тестовые примеры.
10. Инструкция для пользователя.
11. Разработанная программа с комментариями.
12. Использованная литература.
Консультант К. М. Рафиков
Оглавление
1. Задание
2. Оглавление
3. Введение
4. Обоснование необходимости выполнения данной работы
5. Данные, которые хранятся в базе данных. Обоснование их достаточности
6. Операции по обработке данных. Обоснование их достаточности
7. Описание интерфейса пользователя с иллюстрациями диалоговых окон
8. Структура программы (блок - схема) и ее описание
9. Тестовые примеры
10. Инструкция для пользователя
11. Разработанная программа с комментариями
12. Использованная литература
Введение
Созданный программный продукт является системой управления базой данных кандидатов на пост главы Ашинского района. Система управления базой данных и база данных выполнена с использованием программного продукта Turbo C++.
Для каждого кандидата записывается фамилия, адрес, дата рождения, номер паспорта и количество голосов. Далее имеется возможность просмотра файла, его дополнения, изменения, удаления ненужных записей. Сортировки и поиск нужных записей осуществляется по всем параметрам. Все вышеперечисленные виды работ выполняются с помощью команд, список которых выводится на экран после запуска программы.
Пояснительная записка выполнена с использованием программных продуктов Microsoft Word.
Обоснование необходимости выполнения данной работы
Данная программа может помочь и облегчить работу комиссии проводящей выборы на пост главы Ашинского района.
Данный программный продукт является системой управления базой данных кандидатов на пост главы Ашинского района. С помощью неё легко можно сохранять данные о кандидатах, дополнять базу данных, удалять ненужные записи, просматривать записи, хранящиеся в базе данных, изменять данные о кандидатах, сортировать записи по фамилии, адресу, дате рождения, а также искать интересующую вас запись.
Программа очень проста в обращении и не требует больших знаний. Также для работы программы требуется компьютер с малым количеством ресурсов.
Данные, которые хранятся в базе данных. Обоснование их достаточности.
В представленной программе можно сохранять большое количество записей о кандидатах на пост главы Ашинского района. Каждая запись включает в себя информацию о фамилии, адресе, дате рождения, номере паспорта и количестве голосов, которые связаны между собой.
И для того чтобы найти нужного кандидата работнику комиссии требуется фамилия кандидата или его адрес. Так же можно узнать кто из кандидатов старше, а кто младше. Аналогично можно узнать у кого больше голосов, а у кого меньше, также номера их паспортов и адреса проживания.
Операции по обработке данных. Обоснование их достаточности.
В системе управления базой данных существуют следующие операции по обработке данных: создание файла базы данных с занесение в него данных о кандидатах, дополнение, удаление, просмотр, изменение, сортировка и поиск.
Для того чтобы создать базу данных необходимо воспользоваться операцией создания файла базы данных с занесением в него данных о кандидате. Если необходимо просмотреть все записи в базе данных, то необходимо воспользоваться операцией просмотра. Если необходимо ввести дополнительные записи в существующую базу данных, то в программе существует специальная для этого операция дополнения. Если необходимо удалить ненужные записи, то нужно воспользоваться операцией удаления. В случае если у кандидата изменилась фамилия или адрес или номер паспорта или он набрал еще голоса и необходимо ввести изменения в базу данных, то необходимо воспользоваться операцией изменения. Для удобного просмотра записей базы данных можно воспользоваться сортировкой. Если необходимо быстро найти нужного кандидата, то можно воспользоваться операцией поиска. Так же можно воспользоваться пунктом помощь, который кратко характеризует программу.
Описание интерфейса пользователя с иллюстрациями диалоговых окон.
Данная программа имеет удобный и красивый интерфейс, позволяющий безошибочно выполнять необходимую работу с базой данных.
Программа имеет синий цвет фона с желтым текстом. После запуска программы появляется заставка, которая выполнена в виде титульного листа к курсовой работе.
Затем появляется главное меню команд, которое выглядит так:
Меню создания базы данных сделано простым и понятным для каждого.
Окно ввода записей выглядит очень просто. На экран выводится только самое необходимое, для того чтобы пользователь знал что именно вводить.
После создания файла базы данных появляется сообщение по середине экрана.
Просмотр базы данных очень удобен, так как выполнен в виде таблицы.
Структура программы (блок - схема) и ее описание.
SHAPE \* MERGEFORMAT
Начало |
Sortirovka |
S |
S |
I=0;i<n;i++ |
Gr[i]=pust |
Inf.open(name,ios::binary) |
Inf.fail() |
nzap=0 ch=inf.peek() |
ch!=EOF |
Inf.read((char *)&gr[nzap],sizeof(gr[nzap])) ++nzap ch=inf.peek() |
inf.close() |
2 |
1 |
3 |
Сортировка по фамилии |
Сортировка по адресу |
Сортировка по дате рождения |
конец |
SHAPE \* MERGEFORMAT
2 |
j=0;j<nzap;j++ |
i=0;i<nzap-1;i++ |
comp>0 |
buf[1]=gr[i] gr[i]=gr[i+1] gr[i+1]=buf[1] |
Outf.fail() |
I=0,i<nzap,i++ |
Outf.close() |
outf.write((char *)&gr[i],sizeof(gr[i])) |
comp=strcmp(gr[i].fam, gr[i+1].fam) |
I=0;i<n;i++ |
Gr[i]=pust |
Inf.open(name,ios::binary) |
5 |
4 |
1 |
3 |
6 |
SHAPE \* MERGEFORMAT
5 |
Inf.fail() |
nzap=0 ch=inf.peek() |
ch!=EOF |
Inf.read((char *)&gr[nzap],sizeof(gr[nzap])) ++nzap ch=inf.peek() |
inf.close() |
I=0;i<nzap;i++ |
gr[i].fam |
gr[i].special |
gr[i].zach |
gr[i].fiz |
gr[i].mat |
4 |
6 |
конец |
Тестовые примеры.
После запуска программы появляется заставка. Нажимаем любую клавишу и программа переходит в главное меню.
Нажимаем на 1 в главном меню. Программа переходит в меню создания. В меню создания нажимаем 1. Программа спрашивает о том, сколько записей ввести, затем запрашивает данные о читателях столько раз, сколько вы ввели записей и сохраняет их в файле с адресом по умолчанию. После чего появляется сообщение о том, что файл сохранён. Для проверки нажимаем 4 в главном меню. На экране появляются сохранённые данные.
В меню создания нажимаем 2. Программа просит ввести адрес нового файла. Создаётся новый файл базы данных.
В меню создания нажимаем 3. Автоматически создаётся файл. Затем появляется сообщение о том, что файл сохранён. Для проверки нажимаем 4 в главном меню. На экране появляются сохранённые данные.
В меню создания нажимаем на 4. Программа переходит в главное меню.
В меню создания нажимаем на любой другой символ. Появляется сообщение о том, что введена неверная команда. Затем программа переходит в меню создания.
Нажимаем на 2 в главном меню. Программа спрашивает о том, сколько записей вы хотите ввести дополнительно. Вводим число большее максимально допустимого. Программа повторно спрашивает число дополнительных данных. Вводим правильное значение, и программа запрашивает данные о кандидатах столько раз, сколько записей вы ввели. После этого появляется сообщение о том, что файл дополнен. Для проверки нажимаем 4 в главном меню. На экране появляются появились записи, которыми дополнили файл.
В главном меню нажимаем на 3. Выводится список записей и сообщение о том, какую запись нужно удалить. Вводим номер записи, которая не существует. Программа повторно спрашивает о том, какую запись нужно удалить. Вводим правильное значение и запись сразу удаляется из списка, а каждая нижестоящая запись перемещается на строчку выше. Для проверки нажимаем 4 в главном меню. На экране появляются записи, кроме той, что была удалена.
В главном меню нажимаем 4. На экран выводятся все имеющиеся в файле записи.
В главном меню нажимаем 5. Появляются все записи, имеющиеся в файле и, сообщение о том, какую запись вы хотите изменить. Вводим номер не существующей записи. Программа повторно спрашивает о том, какую запись вы хотите изменить. Вводим правильное значение, появляется меню изменения. В меню изменения нажимаем 1. Программа запрашивает новый номер кандидата. Вводим новый номер кандидата. Для проверки нажимаем 4 в главном меню. Номер кандидата нужной записи изменился.
В меню изменения нажимаем 2. Программа запрашивает новую фамилию. Вводим новую фамилию. Для проверки нажимаем 4 в главном меню. Фамилия нужной записи изменилась.
В меню изменения нажимаем 3. Программа запрашивает новый адрес. Вводим новый адрес. Для проверки нажимаем 4 в главном меню. Адрес нужной записи изменилась.
В меню изменения нажимаем 4. Программа запрашивает новую дату рождения. Вводим дату. Для проверки нажимаем 4 в главном меню. Дата нужной записи изменился.
Для отмены изменения нажимаем 6, и программа переходит в главное меню.
Вводим любой другой символ в меню изменения. Программа сообщает о неверном вводе.
В главном меню нажимаем 6. Появляется меню сортировки. Нажимаем 1 в меню сортировки. Программа выводит записи, отсортированные по фамилии и, сообщение о том, что сортировка в файле по фамилии произведена. Для проверки нажимаем 4 в главном меню.
Нажимаем 2 в меню сортировки. Программа выводит записи, отсортированные по адресу и, сообщение о том, что сортировка в файле по адресу произведена. Для проверки нажимаем 4 в главном меню.
Нажимаем 3 в меню сортировки. Программа выводит записи, отсортированные по дате рождения и, сообщение о том, что сортировка в файле по дате рождения произведена. Для проверки нажимаем 4 в главном меню.
Для отмены сортировки нажимаем 4. Программа возвращается в главное меню.
Вводим любой другой символ в меню сортировки. Программа сообщает о неверном вводе.
В главном меню нажимаем 7. Появляется меню поиска. Нажимаем 1 в меню поиска. Программа просит ввести фамилию кандидата для поиска. Вводим фамилию. Если данная фамилия кандидата есть в базе данных, то выводится запись с этим номером кандидата.
Нажимаем 2 в меню поиска. Программа просит ввести адрес для поиска. Вводим адрес. Если данный адрес есть в базе данных, то выводится запись с этим адресом.
Нажимаем 3 в меню поиска. Программа просит ввести дату рождения для поиска. Вводим дату. Если данная дата есть в базе данных, то выводится запись с этой датой рождения.
Нажимаем 4 в меню поиска. Программа просит ввести номер паспорта для поиска. Вводим номер. Если данный номер есть в базе данных, то выводится запись с этим номером паспорта.
Нажимаем 5 в меню поиска. Программа просит ввести количество голосов для поиска. Вводим количество. Если данное количество голосов есть в базе данных, то выводится запись с этим количеством голосов.
Вводим любой другой символ в меню сортировки. Программа сообщает о неверном вводе.
Для отмены поиска нажимаем 6. Программа возвращается в главное меню.
В главном меню нажимаем 8. Появляется меню помощи.
Нажимаем любой другой символ в главном меню. Появляется сообщение о неверном вводе.
Для выхода из программы нажимаем 0. Программа завершает работу.
Инструкция для пользователя.
Программа очень проста и не требует больших знаний от пользователя.
После запуска программы появляется заставка. Чтобы попасть в главное меню нужно нажать любую клавишу. В главном меню выведен список операций. Чтобы совершить какую-либо операцию нужно набрать на клавиатуре её номер.
При первом запуске программы следует прежде всего создать файл базы данных.
При нажатии на 1 в главном меню вы попадаете в меню создания базы данных. В меню создания выводится список возможных способов создания базы данных. При нажатии на 1 вы можете создать базу данных с адресом по умолчанию, при нажатии на 2 вы можете создать файл базы данных с любым выбранным вами адресом, а при нажатии на 3 файл базы данных создаётся автоматически. Если вам не нужно создавать файл базы данных, то нужно нажать на 4 для выхода в главное меню.
В главном меню при нажатии на 2 вы можете дополнить базу данных. Для этого нужно ввести количество дополнительных записей и затем данные о читателях.
При нажатии на 3 в главном меню вы можете удалить ненужную запись. Для этого нужно указать номер записи.
При нажатии на 4 в главном меню вы можете просмотреть базу данных. Чтобы вернуться в главное меню нажмите любую клавишу.
При нажатии на 5 в главном меню вы можете изменять существующие записи. Для этого нужно ввести номер записи, а затем выбрать из списка то, что вы хотите изменить.
При нажатии на 6 вы попадаете в меню сортировки. Если вы нажмёте 1, то будет осуществлена сортировка по фамилии, если на 2, то сортировка по адресу, а если вы нажмёте на 3, то по дате рождения. Для того чтобы вернуться в главное меню нужно нажать 4.
При нажатии в главном меню на 7 вы попадаете в меню поиска. В нём указан список параметров, по которым программа может производиться поиск. Нужно выбрать необходимый параметр.
При нажатии на 8 в главном меню вы попадаете в меню помощи. Для выхода из программы нажмите 0 в главном меню.
Разработанная программа с комментариями.
# include <iostream.h> //Поток ввода вывода
# include <math.h> //Математический файл
# include <conio.h> //Команды управления вывода на экран
# include <stdlib.h> //Стандартная библиотека функции
# include <iomanip.h> //Манипуляторы ввода вывода
# include <fstream.h> //Файловый входной поток
# include <string.h> //Файл строки
struct colizb{char fam[20]; char adres[20]; char datro[10]; char pasport[15];
char kolgol[15];}; //Структура
const n=20; // Максимальное количество записей
colizb gr[n]; //Массив для хранения записей
colizb buf[n]; //Буфер для хранения массива gr
colizb pust;
char name[]="D:/TC/USER/kandid.bin"; //Имя создаваемого файла
int nzap; //Номер записи
int ost; //Количество оставшихся записей
int nzapdop; //Номер дополнительной записи
///////////////////////////////////////////////////////////
void titlist() //Функция титульный лист
{
textbackground(1); //Цвет фона
textcolor(14); //Цвет шрифта
clrscr(); //Очистка экрана
gotoxy(17,2) ; //Установка курсора на заданную позицию
cout<<"Министерство образования Российской Федерации";
gotoxy(18,3);
cout<<"Южно-Уральский Государственный Университет";
gotoxy(30,4);
cout<<"Филиал ЮУрГУ в г. Аше";
gotoxy(32,8);
cout<<"КУРСОВАЯ РАБОТА";
gotoxy(29,9);
cout<<"по информатике на тему:";
gotoxy(26,10);
cout<<"Выборы главы Ашинского района";
gotoxy(41,14);
cout<<"Выполнил: студент гр.ПС180 Стяжкин C.А.";
gotoxy(41,15);
cout<<"Консультант: доцент Рафиков К.М.";
gotoxy(35,19);
cout<<"Аша-2006г";
gotoxy(2,21);
cout<<"Нажмите любую клавишу";
getch();
} //Конец функции
/////////////////////////////////////////////////////////////////////////
void menu() //Функция меню
{
clrscr(); //Очистка экрана
gotoxy(32,2); //Установка курсора на заданную позицию
cout<<"Главное меню";
gotoxy(32,5);
cout<<"1-Создание";
gotoxy(32,6);
cout<<"2-Дополнение";
gotoxy(32,7);
cout<<"3-Удаление";
gotoxy(32,8);
cout<<"4-Просмотр";
gotoxy(32,9);
cout<<"5-Изменение";
gotoxy(32,10);
cout<<"6-Сортировка";
gotoxy(32,11);
cout<<"7-Поиск";
gotoxy(32,12);
cout<<"8-Помощь";
gotoxy(32,13);
cout<<"0-Выход";
gotoxy(2,24);
cout<<"Введите номер команды-";
} //Конец функции
///////////////////////////////////////////////
void sclavi() //Функция ввода с клавиатуры
{
for(int j=0;j<nzap;j++) //Цикл for (счётчик)
{
gotoxy(2,4);
cout<<"Введите фамилию избирателя:"<<endl;
if (cin.peek()=='\n')cin.get();
cin.getline(gr[j].fam,sizeof(gr[j].fam));
//Ввод фамилии кандидата
gotoxy(2,6);
cout<<"Введите адрес:"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[j].adres,sizeof(gr[j].adres));
//Ввод адреса избирателя
gotoxy(2,8);
cout<<"Введите дату рождения:"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[j].datro,sizeof(gr[j].datro));
//Ввод даты рождения
gotoxy(2,10);
cout<<"Введите номер паспорта:"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[j].pasport,sizeof(gr[j].pasport));
//Ввод номера паспорта
gotoxy(2,12);
cout<<"Введите количество голосов: "<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[j].kolgol,sizeof(gr[j].kolgol));
//Ввод количества голосов
}
}
///////////////////////////////////////////////////////////////
int tofile() //Функция записи в файл
{
ofstream outf; //Выходной поток
outf.open(name, ios::binary);
if (outf.fail()) //Ветвление(если поток не исправен)
{
clrscr(); //Очистка экрана
gotoxy(28,14); //Установка курсора на заданную позицию
cout<<"Файл не открылся";
getch();
return 1; //Выход
} //Конец ветвления
for (int i=0; i<nzap; i++) //Цикл for
outf.write((char *)&gr[i],sizeof(gr[i]));
outf.close();
clrscr(); //Очистка экрана
gotoxy(28,14); //Установка курсора на заданную позицию
cout<<"Файл создан";
gotoxy(1,24);
cout<<"Нажмите любую клавишу ";
return 0; //Выход
} //Конец функции
//////////////////////////////////////////////////////////////////////
void toscreen() //Функция вывода на экран
{
clrscr(); //Очистка экрана
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++) //Цикл for
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)
<<gr[i].datro<<"¦"<<setw(15)<<gr[i].pasport<<"¦"<<setw(6)
<<gr[i].kolgol<<"¦"<<endl;
} //Конец цикла for
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
} //Конец функции
/////////////////////////////////////////////////////////////////////
int izfile() //Функция чтения из файла
{
for (int i=0; i<n; i++) //Счетчик
gr[i]=pust; //Опустошение массива
ifstream inf;
inf.open(name, ios::binary);
if(inf.fail()) //Ветвление
{
clrscr(); //Очистка экрана
gotoxy(28,14); //Установка курсора на заданную позицию
cout<<"Файл не открылся";
getch();
return 1; //Выход
} //Конец ветвления
nzap=0; //Присвоение номера записи к нулю
char ch=inf.peek(); //Смотрит первый символ файла в потоке
while(ch!=EOF) //Цикл с предусловием
{
inf.read((char *)&gr[nzap],sizeof(gr[nzap]));
++nzap; //Увеличение на один шаг
ch=inf.peek();
} //Конец цикла с предусловием
inf.close();
return 0; //Выход
} //Конец функции
////////////////////////////////////////////////////////////////////////
void sozdanie() //Функция создания
{
char r; //Номер команды
clrscr(); //Очистка экрана
gotoxy(28,2); //Установка курсора на заданную позицию
cout<<"Создание";
gotoxy(25,5);
cout<<"1-Создание нового файла: "<<name;;
gotoxy(25,6);
cout<<"2-Сменить адрес файла";
gotoxy(25,7);
cout<<"3-Автоматическое создание файла";
gotoxy(25,8);
cout<<"4-Отмена";
gotoxy(2,24);
cout<<"Введите номер команды:";
cin>>r; //Ввод номера команды
switch(r) //Переключатель для r
{
case '1':
{
clrscr(); //Очистка экрана
gotoxy(2,2);
cout<<"Введите число записей (от 1 до "<<n<<") "<<endl;
cin>>nzap; //Ввод количества записей
sclavi(); //Функция ввода с клавиатуры
tofile(); //Запись файла
getch();
break; //Досрочное завершение switch(r)
}
case '2':
{
clrscr(); //Очистка экрана
cout<<"Введите новый адрес: "<<endl;
cin>>name; //Ввод нового адреса
cout<<"Создайте этот файл "<<endl;
gotoxy(2,24);
cout<<"Нажмите любую клавишу ";
getch();
break; //Досрочное завершение switch(r)
}
case '3':
{
clrscr(); //Очистка экрана
nzap=9; //Количество записи
strcpy(gr[0].fam,"Улов М.И");//Копирование записи
strcpy(gr[0].adres,"Ленина 7/23");
strcpy(gr[0].datro,"26.07.68");
strcpy(gr[0].pasport,"75 02 319419");
strcpy(gr[0].kolgol,"2,5%");
strcpy(gr[1].fam,"Царихин П.Г");
strcpy(gr[1].adres,"Озимина 34/12");
strcpy(gr[1].datro,"11.12.65");
strcpy(gr[1].pasport,"75 00 345872");
strcpy(gr[1].kolgol,"20%");
strcpy(gr[2].fam,"Гартунк В.Т");
strcpy(gr[2].adres,"Мира 9");
strcpy(gr[2].datro,"25.08.63");
strcpy(gr[2].pasport,"75 01 322278");
strcpy(gr[2].kolgol,"16%");
strcpy(gr[3].fam,"Решетников А.Т");
strcpy(gr[3].adres,"Озимина 34/26");
strcpy(gr[3].datro,"12.04.65");
strcpy(gr[3].pasport,"75 00 651651");
strcpy(gr[3].kolgol,"30%");
strcpy(gr[4].fam,"Батталов З.К");
strcpy(gr[4].adres,"Пермская 6");
strcpy(gr[4].datro,"15.10.66");
strcpy(gr[4].pasport,"75 02 567987");
strcpy(gr[4].kolgol,"35%");
strcpy(gr[5].fam,"Чернов К.В");
strcpy(gr[5].adres,"Пушкина23/2");
strcpy(gr[5].datro,"30.08.64");
strcpy(gr[5].pasport,"75 01 626265");
strcpy(gr[5].kolgol,"47%");
strcpy(gr[6].fam,"Фоминов А.А");
strcpy(gr[6].adres,"Береговая 1/6");
strcpy(gr[6].datro,"23.06.60");
strcpy(gr[6].pasport,"75 00 321936");
strcpy(gr[6].kolgol,"15%");
strcpy(gr[7].fam,"Садыков В.Г");
strcpy(gr[7].adres,"Ленина 56/90");
strcpy(gr[7].datro,"14.03.54");
strcpy(gr[7].pasport,"75 01 657453");
strcpy(gr[7].kolgol,"21%");
strcpy(gr[8].fam,"Сафин Н.П");
strcpy(gr[8].adres,"Ленина 34/89");
strcpy(gr[8].datro,"23.05.51");
strcpy(gr[8].pasport,"75 00 128887");
strcpy(gr[8].kolgol,"33%");
tofile(); //Запись в файл
gotoxy(1,24);
cout<<"Нажмите любую клавишу ";
getch();
break; //Досрочное завершение switch(r)
}
case '4':
break; //Досрочное завершение switch(r)
default: //По умолчанию
{
clrscr(); //Очистка экрана
gotoxy(28,14);
cout<<"Неверная команда";gotoxy(1,24);
cout<<"Нажмите любую клавишу";getch();
} //Конец default
} //Конец switch(r)
} // Конец функции
///////////////////////////////////////////////////////////////////////
int tofiledop() //Функция записи в файл
{
ofstream outf; //Выходной поток
outf.open(name, ios::binary);
if (outf.fail()) //Ветвление(если поток не исправен)
{
clrscr(); //Очистка экрана
gotoxy(28,14); //Установка курсора на заданную позицию
cout<<"Файл не открылся!";
getch();
return 1; //Выход
} //Конец ветвления
for (int i=0; i<nzapdop; i++) //Цикл for
outf.write((char *)&gr[i],sizeof(gr[i]));
outf.close();
return 0; //Выход
} //Конец функции
/////////////////////////////////////////////////////////////////////////////////////
void dopolnenie() //Функция дополнение
{
int dop;
clrscr(); //Очистка экрана
izfile (); //Чтение из файла
int ost=n-nzap; //Количество оставшихся записей
cout<<"Введите количество записей, которые хотите добавить в список(от 1 дo "
<<ost<<"): ";
cin>>dop; //Ввод дополнительных записей
nzapdop=dop+nzap; //Присвоение существующих и дополнительных записей
for (int i=nzap;i<nzapdop;i++) //Цикл for(счётчик)
{
cout<<"Введите фамилию избирателя:"<<endl;
cin>>gr[i].fam; //Ввод фамилии
cout<<"Введите адрес:"<<endl;
cin>>gr[i].adres; //Ввод фдреса
cout<<"Введите дату рождения:"<<endl;
cin>>gr[i].datro; //Ввод даты рождения
cout<<"Введите № паспорта:"<<endl;
cin>>gr[i].pasport; //Ввод номера паспорта
cout<<"Введите количество голосов:"<<endl;
cin>>gr[i].kolgol; //Ввод количества голосов
} //Конец цикла for
tofiledop (); //Запись в файл дополнительных записей
clrscr();
gotoxy(35,14); //Установка курсора на заданную позицию
cout<<"Файл дополнен";
gotoxy(20,15);
cout<<" Нажмите любую клавишу для выхода в главное меню";
getch();
} //Конец функции
////////////////////////////////////////////////////////////////////////
void udalenie() //Функция удаления
{
clrscr(); //Очистка экрана
izfile (); //Чтение из файла
toscreen(); //Функция вывода на экран
int ud; //Номер записи для удаления
cout<<"Введите номер записи, которую вы хотите удалить (от 0 до "<<nzap-1<<")";
cin>>ud; //Ввод номера записи для удаления
int udd=ud+1; //Увеличение на 1
for(udd;udd<=nzap;udd++) //Цикл for
{
gr[ud]=gr[udd]; //Присвоение записи
ud++; //Увеличение на один шаг
} //Конец цикла for
nzap=nzap-1; //Уменьшение номера записей
tofile(); //Запись в файл
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
getch();
} //Конец функции
//////////////////////////////////////////////////////////////////
void prosmotr() //Просмотр
{
clrscr(); //Очистка экрана
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
gotoxy(1,24); //Установка курсора на заданную позицию
cout<<"Нажмите любую клавишу";
getch();
} //Конец функции
//////////////////////////////////////////////////////////
void izmenenie() //Изменение
{
int izm; //Номер изменяемой записи
char b; //Номер команды
clrscr(); //Очистка экрана
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
cout<<"Введите номер записи, которую вы хотите изменить (от 0 до"
<<nzap-1<<")-";
cin>>izm; //Ввод номера записи для удаления
clrscr(); //Очистка экрана
gotoxy(32,1); //Установка курсора на заданную позицию
cout<<"Изменение";
gotoxy(28,3);
cout<<"1-Ф.И.О";
gotoxy(28,4);
cout<<"2-Адрес";
gotoxy(28,5);
cout<<"3-Дата рождения";
gotoxy(28,6);
cout<<"4-№ паспорта";
gotoxy(28,7);
cout<<"5-Кол-во голосов";
gotoxy(28,8);
cout<<"6-Отмена";
gotoxy(1,24);
cout<<"Введите номер команды-";
cin>>b; //Ввод номера команды
switch(b) //Переключатель для b
{
case '1':clrscr(); //Очистка экрана
cout<<"Введите Ф.И.О"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].fam,sizeof(gr[izm].fam));
tofile(); //Запись в файл
clrscr(); //Очистка экрана
gotoxy(28,14); //Установка курсора на заданную позицию
cout<<"Фамилия изменена";getch();
break; //Досрочное завершение switch(b)
case '2':clrscr(); //Очистка экрана
cout<<"Введите новый адрес"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].adres,sizeof(gr[izm].adres));
tofile();
clrscr();
gotoxy(28,14);
cout<<"адрес изменен";getch();
break;
case '3':clrscr();
cout<<"Введите новую дату рождения"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].datro,sizeof(gr[izm].datro));
tofile();
clrscr();
gotoxy(28,14);
cout<<"Дата рождения изменена";getch();
break;
case '4':clrscr();
cout<<"Введите новый № паспорта"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].pasport,sizeof(gr[izm].pasport));
tofile();
clrscr();
gotoxy(28,14);
cout<<"№ паспорта изменен";getch();break;
case '5':clrscr();
cout<<"Введите новое кол-во голосов"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].kolgol,sizeof(gr[izm].kolgol));
tofile();
clrscr();
gotoxy(28,14);
cout<<"Кол-во изменено";getch();break;
case '6':
break;
default: //По умолчанию
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";getch();
} //Конец default
} //Конец switch(b)
} //Конец функции
//////////////////////////////////////////////////////////
void sortirovka() //Сортировка
{
char s;
int comp; //Сортировка записей
clrscr(); //Очистка экрана
gotoxy(32,1); //Установка курсора на заданную позицию
cout<<"Сортировка";
gotoxy(25,4);
cout<<"1-Сортировка по фамилии";
gotoxy(25,5);
cout<<"2-Сортировка по адресу";
gotoxy(25,6);
cout<<"3-Сортировка по дате рождения";
gotoxy(25,7);
cout<<"4-Отмена";
gotoxy(1,24);
cout<<"Введите номер команды-";
cin>>s; //Ввод номера команды
switch(s) //Преключатель для s
{
case '1':
{
clrscr();
izfile(); //Чтение из файла
for(int j=0;j<nzap;j++)//Цикл for
for(int i=0;i<nzap-1;i++)//Цикл for
{
comp=strcmp(gr[i].fam,gr[i+1].fam);
if (comp>0) //Ветвление
{
buf[1]=gr[i];
gr[i]=gr[i+1];
gr[i+1]=buf[1];
} //Конец ветвления
} //Конец цикла for
tofile(); //Запись в файл
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
gotoxy(1,24); //Установка курсора на заданную позицию
cout<<"Сортировка по фамилии в файле "<<name
<<" произведена";
getch();
break; //Досрочное завершение switch(s)
}
case '2':
{
clrscr(); //Очистка экрана
izfile(); //Чтение из файла
for(int j=0;j<nzap;j++)//Цикл for
for(int i=0;i<nzap-1;i++)//Цикл for
{
comp=strcmp(gr[i].adres,gr[i+1].adres);
if (comp>0) //Ветвление
{
buf[1]=gr[i];
gr[i]=gr[i+1];
gr[i+1]=buf[1];
} //Конец ветвления
}
tofile();
izfile();
toscreen();
gotoxy(1,24);
cout<<"Сортировка по адресу в файле "<<name
<<" произведена";
getch();
break; //Досрочное завершение switch(s)
}
case '3':
{
clrscr();
izfile();
for(int j=0;j<nzap;j++)//Цикл for
for(int i=0;i<nzap-1;i++)//Цикл for
{
comp=strcmp(gr[i].datro,gr[i+1].datro);
if (comp>0)
{
buf[1]=gr[i];
gr[i]=gr[i+1];
gr[i+1]=buf[1];
} //Конец ветвления
} //Конец цикла for
tofile();
izfile();
toscreen();
gotoxy(1,24);
cout<<"Сортировка по дате рождения в файле "<<name
<<" произведена";getch();
break;
}
case '4':
break;
default:
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";getch();
}
}
} //Конец функции
//////////////////////////////////////////////////////////
void poisk() //Поиск
{
izfile(); //Чтение из файла
char poisk;
clrscr(); //Очистка экрана
gotoxy(32,1); //Установка курсора на заданную позицию
cout<<"Поиск";
gotoxy(28,3);
cout<<"1-Ф.И.О";
gotoxy(28,5);
cout<<"2-Адрес";
gotoxy(28,7);
cout<<"3-Дата рождения";
gotoxy(28,9);
cout<<"4-№ паспорта";
gotoxy(28,11);
cout<<"5-кол-во голосов";
gotoxy(28,13);
cout<<"6-Отмена";
gotoxy(1,24);
cout<<"Введите номер команды-";
cin>>poisk; //Ввод номера для поиска
char sr[20];
int comp; //Объявление comp целой переменной
switch(poisk) //Переключатель для poisk
{
case '1':
{
clrscr(); cout<<"Введите фамилию"<<endl;
if (cin.peek()=='\n')cin.get();
cin.getline(sr,sizeof sr);
clrscr(); //Очистить экран
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++) //Цикл for
{
comp=strcmp(gr[i].fam,sr);
if (comp==0) //Ветвление
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
} //Конец ветвление
} //Конец цикла for
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break; //Досрочное завершение switch(r)
}
case '2':
{
clrscr(); cout<<"Введите адрес"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof sr);
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].adres,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '3':
{
clrscr(); cout<<"Введите дату рождения"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof (sr));
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].datro,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '4':
{
clrscr(); cout<<"Введите № паспорта"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof (sr));
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].pasport,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '5':
{
clrscr();
cout<<"Введите кол-во голосов"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof (sr));
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].kolgol,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '6':
break;
default:
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";gotoxy(1,24);
cout<<"Нажмите любую клавишу";getch();
}
} //Конец switch(poisk)
} //Конец функции
//////////////////////////////////////////////////////////
void help () //Помощь
{
clrscr(); //Очистка экрана
gotoxy(30,1); //Установка курсора на заданную позицию
cout<<"О программе\n\n";
gotoxy(5,3);
cout<<"Эта программа является системой управления базой данных на выборах \n";
cout<<"главы Ашинского района.\n";
cout<<"Для каждого кандидата указывается:фамилия,адрес,дата рождения,№ паспорта \n";
cout<<"и количество голосов набранных на выборах.\n";
gotoxy(5,7);
cout<<"Имеется возможность создания нового файла.Кроме создания нового файла \n";
cout<<"имеются и такие команды как:\n";
cout<<"дополнение, удаление, просмотр, изменение, сортировка, поиск файлов, помощь\n";
cout<<"использователю, ну и выход из системы. Сортировка производится по фамилии,\n";
cout<<"адресу и дате рождения.\n";
gotoxy(5,12);
cout<<"Все указанные виды работ выполняются при помощи команд, перечень\n";
cout<<"которых выводится на экран после запуска программы.";
gotoxy(1,25);
cout<<"Для выхода из программы введите любой символ";
getch();
} //Конец функции
//////////////////////////////////////////////////////////
int main() //Функция main
{
clrscr(); //Очистка экрана
titlist(); //Вызов функции
char com;
while(1)
{
menu();
if (cin.peek()=='\n') cin.get();
cin>>com; //Выбор действия
switch(com) //Переключатель для com
{
case '1': sozdanie();break;
case '2': dopolnenie();break;
case '3': udalenie();break;
case '4': prosmotr();break;
case '5': izmenenie();break;
case '6': sortirovka();break;
case '7': poisk();break;
case '8': help();break;
case '0':
{
return 0;
}
default: //По умолчанию
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";
gotoxy(1,24);
cout<<"Нажмите любую клавишу";
getch();
}
}
} //Конец функции main
} //Конец программы
Использованная литература.
1 Подвельский «Язык C++»
2 Ресурсы Internet.
strcpy(gr[7].pasport,"75 01 657453");
strcpy(gr[7].kolgol,"21%");
strcpy(gr[8].fam,"Сафин Н.П");
strcpy(gr[8].adres,"Ленина 34/89");
strcpy(gr[8].datro,"23.05.51");
strcpy(gr[8].pasport,"75 00 128887");
strcpy(gr[8].kolgol,"33%");
tofile(); //Запись в файл
gotoxy(1,24);
cout<<"Нажмите любую клавишу ";
getch();
break; //Досрочное завершение switch(r)
}
case '4':
break; //Досрочное завершение switch(r)
default: //По умолчанию
{
clrscr(); //Очистка экрана
gotoxy(28,14);
cout<<"Неверная команда";gotoxy(1,24);
cout<<"Нажмите любую клавишу";getch();
} //Конец default
} //Конец switch(r)
} // Конец функции
///////////////////////////////////////////////////////////////////////
int tofiledop() //Функция записи в файл
{
ofstream outf; //Выходной поток
outf.open(name, ios::binary);
if (outf.fail()) //Ветвление(если поток не исправен)
{
clrscr(); //Очистка экрана
gotoxy(28,14); //Установка курсора на заданную позицию
cout<<"Файл не открылся!";
getch();
return 1; //Выход
} //Конец ветвления
for (int i=0; i<nzapdop; i++) //Цикл for
outf.write((char *)&gr[i],sizeof(gr[i]));
outf.close();
return 0; //Выход
} //Конец функции
/////////////////////////////////////////////////////////////////////////////////////
void dopolnenie() //Функция дополнение
{
int dop;
clrscr(); //Очистка экрана
izfile (); //Чтение из файла
int ost=n-nzap; //Количество оставшихся записей
cout<<"Введите количество записей, которые хотите добавить в список(от 1 дo "
<<ost<<"): ";
cin>>dop; //Ввод дополнительных записей
nzapdop=dop+nzap; //Присвоение существующих и дополнительных записей
for (int i=nzap;i<nzapdop;i++) //Цикл for(счётчик)
{
cout<<"Введите фамилию избирателя:"<<endl;
cin>>gr[i].fam; //Ввод фамилии
cout<<"Введите адрес:"<<endl;
cin>>gr[i].adres; //Ввод фдреса
cout<<"Введите дату рождения:"<<endl;
cin>>gr[i].datro; //Ввод даты рождения
cout<<"Введите № паспорта:"<<endl;
cin>>gr[i].pasport; //Ввод номера паспорта
cout<<"Введите количество голосов:"<<endl;
cin>>gr[i].kolgol; //Ввод количества голосов
} //Конец цикла for
tofiledop (); //Запись в файл дополнительных записей
clrscr();
gotoxy(35,14); //Установка курсора на заданную позицию
cout<<"Файл дополнен";
gotoxy(20,15);
cout<<" Нажмите любую клавишу для выхода в главное меню";
getch();
} //Конец функции
////////////////////////////////////////////////////////////////////////
void udalenie() //Функция удаления
{
clrscr(); //Очистка экрана
izfile (); //Чтение из файла
toscreen(); //Функция вывода на экран
int ud; //Номер записи для удаления
cout<<"Введите номер записи, которую вы хотите удалить (от 0 до "<<nzap-1<<")";
cin>>ud; //Ввод номера записи для удаления
int udd=ud+1; //Увеличение на 1
for(udd;udd<=nzap;udd++) //Цикл for
{
gr[ud]=gr[udd]; //Присвоение записи
ud++; //Увеличение на один шаг
} //Конец цикла for
nzap=nzap-1; //Уменьшение номера записей
tofile(); //Запись в файл
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
getch();
} //Конец функции
//////////////////////////////////////////////////////////////////
void prosmotr() //Просмотр
{
clrscr(); //Очистка экрана
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
gotoxy(1,24); //Установка курсора на заданную позицию
cout<<"Нажмите любую клавишу";
getch();
} //Конец функции
//////////////////////////////////////////////////////////
void izmenenie() //Изменение
{
int izm; //Номер изменяемой записи
char b; //Номер команды
clrscr(); //Очистка экрана
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
cout<<"Введите номер записи, которую вы хотите изменить (от 0 до"
<<nzap-1<<")-";
cin>>izm; //Ввод номера записи для удаления
clrscr(); //Очистка экрана
gotoxy(32,1); //Установка курсора на заданную позицию
cout<<"Изменение";
gotoxy(28,3);
cout<<"1-Ф.И.О";
gotoxy(28,4);
cout<<"2-Адрес";
gotoxy(28,5);
cout<<"3-Дата рождения";
gotoxy(28,6);
cout<<"4-№ паспорта";
gotoxy(28,7);
cout<<"5-Кол-во голосов";
gotoxy(28,8);
cout<<"6-Отмена";
gotoxy(1,24);
cout<<"Введите номер команды-";
cin>>b; //Ввод номера команды
switch(b) //Переключатель для b
{
case '1':clrscr(); //Очистка экрана
cout<<"Введите Ф.И.О"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].fam,sizeof(gr[izm].fam));
tofile(); //Запись в файл
clrscr(); //Очистка экрана
gotoxy(28,14); //Установка курсора на заданную позицию
cout<<"Фамилия изменена";getch();
break; //Досрочное завершение switch(b)
case '2':clrscr(); //Очистка экрана
cout<<"Введите новый адрес"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].adres,sizeof(gr[izm].adres));
tofile();
clrscr();
gotoxy(28,14);
cout<<"адрес изменен";getch();
break;
case '3':clrscr();
cout<<"Введите новую дату рождения"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].datro,sizeof(gr[izm].datro));
tofile();
clrscr();
gotoxy(28,14);
cout<<"Дата рождения изменена";getch();
break;
case '4':clrscr();
cout<<"Введите новый № паспорта"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].pasport,sizeof(gr[izm].pasport));
tofile();
clrscr();
gotoxy(28,14);
cout<<"№ паспорта изменен";getch();break;
case '5':clrscr();
cout<<"Введите новое кол-во голосов"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(gr[izm].kolgol,sizeof(gr[izm].kolgol));
tofile();
clrscr();
gotoxy(28,14);
cout<<"Кол-во изменено";getch();break;
case '6':
break;
default: //По умолчанию
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";getch();
} //Конец default
} //Конец switch(b)
} //Конец функции
//////////////////////////////////////////////////////////
void sortirovka() //Сортировка
{
char s;
int comp; //Сортировка записей
clrscr(); //Очистка экрана
gotoxy(32,1); //Установка курсора на заданную позицию
cout<<"Сортировка";
gotoxy(25,4);
cout<<"1-Сортировка по фамилии";
gotoxy(25,5);
cout<<"2-Сортировка по адресу";
gotoxy(25,6);
cout<<"3-Сортировка по дате рождения";
gotoxy(25,7);
cout<<"4-Отмена";
gotoxy(1,24);
cout<<"Введите номер команды-";
cin>>s; //Ввод номера команды
switch(s) //Преключатель для s
{
case '1':
{
clrscr();
izfile(); //Чтение из файла
for(int j=0;j<nzap;j++)//Цикл for
for(int i=0;i<nzap-1;i++)//Цикл for
{
comp=strcmp(gr[i].fam,gr[i+1].fam);
if (comp>0) //Ветвление
{
buf[1]=gr[i];
gr[i]=gr[i+1];
gr[i+1]=buf[1];
} //Конец ветвления
} //Конец цикла for
tofile(); //Запись в файл
izfile(); //Чтение из файла
toscreen(); //Функция вывода на экран
gotoxy(1,24); //Установка курсора на заданную позицию
cout<<"Сортировка по фамилии в файле "<<name
<<" произведена";
getch();
break; //Досрочное завершение switch(s)
}
case '2':
{
clrscr(); //Очистка экрана
izfile(); //Чтение из файла
for(int j=0;j<nzap;j++)//Цикл for
for(int i=0;i<nzap-1;i++)//Цикл for
{
comp=strcmp(gr[i].adres,gr[i+1].adres);
if (comp>0) //Ветвление
{
buf[1]=gr[i];
gr[i]=gr[i+1];
gr[i+1]=buf[1];
} //Конец ветвления
}
tofile();
izfile();
toscreen();
gotoxy(1,24);
cout<<"Сортировка по адресу в файле "<<name
<<" произведена";
getch();
break; //Досрочное завершение switch(s)
}
case '3':
{
clrscr();
izfile();
for(int j=0;j<nzap;j++)//Цикл for
for(int i=0;i<nzap-1;i++)//Цикл for
{
comp=strcmp(gr[i].datro,gr[i+1].datro);
if (comp>0)
{
buf[1]=gr[i];
gr[i]=gr[i+1];
gr[i+1]=buf[1];
} //Конец ветвления
} //Конец цикла for
tofile();
izfile();
toscreen();
gotoxy(1,24);
cout<<"Сортировка по дате рождения в файле "<<name
<<" произведена";getch();
break;
}
case '4':
break;
default:
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";getch();
}
}
} //Конец функции
//////////////////////////////////////////////////////////
void poisk() //Поиск
{
izfile(); //Чтение из файла
char poisk;
clrscr(); //Очистка экрана
gotoxy(32,1); //Установка курсора на заданную позицию
cout<<"Поиск";
gotoxy(28,3);
cout<<"1-Ф.И.О";
gotoxy(28,5);
cout<<"2-Адрес";
gotoxy(28,7);
cout<<"3-Дата рождения";
gotoxy(28,9);
cout<<"4-№ паспорта";
gotoxy(28,11);
cout<<"5-кол-во голосов";
gotoxy(28,13);
cout<<"6-Отмена";
gotoxy(1,24);
cout<<"Введите номер команды-";
cin>>poisk; //Ввод номера для поиска
char sr[20];
int comp; //Объявление comp целой переменной
switch(poisk) //Переключатель для poisk
{
case '1':
{
clrscr(); cout<<"Введите фамилию"<<endl;
if (cin.peek()=='\n')cin.get();
cin.getline(sr,sizeof sr);
clrscr(); //Очистить экран
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++) //Цикл for
{
comp=strcmp(gr[i].fam,sr);
if (comp==0) //Ветвление
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
} //Конец ветвление
} //Конец цикла for
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break; //Досрочное завершение switch(r)
}
case '2':
{
clrscr(); cout<<"Введите адрес"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof sr);
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].adres,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '3':
{
clrscr(); cout<<"Введите дату рождения"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof (sr));
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].datro,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '4':
{
clrscr(); cout<<"Введите № паспорта"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof (sr));
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].pasport,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '5':
{
clrscr();
cout<<"Введите кол-во голосов"<<endl;
if (cin.peek()=='\n') cin.get();
cin.getline(sr,sizeof (sr));
clrscr();
cout<<"----T---------------T---------------T---------------T---------------T------¬"<<endl;
cout<<"¦ № ¦ Ф.И.О ¦ Адрес ¦ дата рожд ¦ № паспорта ¦голоса¦"<<endl;
cout<<"+---+---------------+---------------+---------------+---------------+------+"<<endl;
for (int i=0;i<nzap;i++)
{
comp=strcmp(gr[i].kolgol,sr);
if (comp==0)
{
cout<<"¦ "<<setw(2)<<setiosflags(ios::left)<<i<<"¦"<<setw(15)
<<gr[i].fam<<"¦"<<setw(15)<<gr[i].adres<<"¦"<<setw(15)<<gr[i].datro
<<"¦"<<setw(15)<<gr[i].pasport<<"¦"
<<setw(6)<<gr[i].kolgol<<"¦"<<endl;
}
}
cout<<"L---+---------------+---------------+---------------+---------------+-------"<<endl;
getch();
break;
}
case '6':
break;
default:
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";gotoxy(1,24);
cout<<"Нажмите любую клавишу";getch();
}
} //Конец switch(poisk)
} //Конец функции
//////////////////////////////////////////////////////////
void help () //Помощь
{
clrscr(); //Очистка экрана
gotoxy(30,1); //Установка курсора на заданную позицию
cout<<"О программе\n\n";
gotoxy(5,3);
cout<<"Эта программа является системой управления базой данных на выборах \n";
cout<<"главы Ашинского района.\n";
cout<<"Для каждого кандидата указывается:фамилия,адрес,дата рождения,№ паспорта \n";
cout<<"и количество голосов набранных на выборах.\n";
gotoxy(5,7);
cout<<"Имеется возможность создания нового файла.Кроме создания нового файла \n";
cout<<"имеются и такие команды как:\n";
cout<<"дополнение, удаление, просмотр, изменение, сортировка, поиск файлов, помощь\n";
cout<<"использователю, ну и выход из системы. Сортировка производится по фамилии,\n";
cout<<"адресу и дате рождения.\n";
gotoxy(5,12);
cout<<"Все указанные виды работ выполняются при помощи команд, перечень\n";
cout<<"которых выводится на экран после запуска программы.";
gotoxy(1,25);
cout<<"Для выхода из программы введите любой символ";
getch();
} //Конец функции
//////////////////////////////////////////////////////////
int main() //Функция main
{
clrscr(); //Очистка экрана
titlist(); //Вызов функции
char com;
while(1)
{
menu();
if (cin.peek()=='\n') cin.get();
cin>>com; //Выбор действия
switch(com) //Переключатель для com
{
case '1': sozdanie();break;
case '2': dopolnenie();break;
case '3': udalenie();break;
case '4': prosmotr();break;
case '5': izmenenie();break;
case '6': sortirovka();break;
case '7': poisk();break;
case '8': help();break;
case '0':
{
return 0;
}
default: //По умолчанию
{
clrscr();
gotoxy(28,14);
cout<<"Неверная команда";
gotoxy(1,24);
cout<<"Нажмите любую клавишу";
getch();
}
}
} //Конец функции main
} //Конец программы
Использованная литература.
1 Подвельский «Язык C++»
2 Ресурсы Internet.