Автор работы: Пользователь скрыл имя, 26 Января 2013 в 18:54, курсовая работа
Целью работы является разработка программы на языке Си с использованием класса статических и динамических массивов структур для обработки базы данных «Страны».
В отчете необходимо разработать программу на языке Си для обработки данных. Обработка данных включает в себя следующие функции:
1) создание новой базы данных (с возможностью задания имени файла);
2) просмотр существующей базы данных (чтение данных осуществляется из файла);
3) редактирование базы данных (с сохранением изменений в файле);
4) дополнение базы данных новыми записями (с сохранением в файле);
5) удаление записей из базы данных (с сохранением в файле);
6) поиск в базе данных (по одному и двум поисковым признакам) с выводом на экране найденных записей или сообщения о неуспешном поиске;
7) сортировка данных по заданному полю (с сохранением в файле).
Введение 5
1 Краткие теоретические сведения 6
2 Описание разработанных функций 9
3 Блок-схемы 10
3.1 Блок-схема функции Void main() 10
3.2 Блок-схема функции void input() 11
3.3 Блок-схема функции void output() 12
3.4 Блок-схема функции void sohrfile () 13
3.5 Блок-схема функции void add() 14
3.6 Блок-схема функции void sortstr () 15
3.7 Блок-схема функции void sortstol() 16
3.8 Блок-схема функции void sozd() 17
3.9 Блок-схема функции void sortplo() 17
3.10 Блок-схема функции void sortfor() 18
3.11 Блок-схема функции void sortnas() 19
3.12 Блок-схема функции void poiskstr() 20
3.13 Блок-схема функции void redakt() 20
4 Руководство по эксплуатации программы 22
5 Список литературы 26
Заключение 27
Приложение А. Листинг программы БД «Страна» 28
Приложение В. Листинг программы графические примитивы
3.6 Описание функции void sortstr ()
Таблица 7 - описание функции void sortstr ()
Локальные переменные |
назначение |
T |
переменная для подсчета записей в файле |
I,j |
рабочая переменная для подсчёта |
N |
количество записей |
Блок-схема:
3.7 Описание функции void sortstol()
Таблица 8 - Описание функции void sortstol()
Локальные переменные |
назначение |
T |
переменная для подсчета записей в файле |
I,j |
рабочая переменная для подсчёта |
N |
количество записей |
Блок-схема
3.8 Описание функции void sozd()
таблица 9 - Описание функции void sozd()
Локальные переменные |
назначение |
I |
переменная для подсчета |
N |
количество записей |
Pst |
указатель на исходный массив. |
Блок-схема
3.9 Описание функции void sortplo()
таблица 10 - Описание функции void sortplo()
Локальные переменные |
назначение |
T |
переменная для подсчета записей в файле |
I,j |
рабочая переменная для подсчёта |
N |
количество записей |
Блок схема:
3.10 Описание функции void sortfor()
таблица 11 - Описание функции void sortfor()
Локальные переменные |
назначение |
T |
переменная для подсчета записей в файле |
I,j |
рабочая переменная для подсчёта |
N |
количество записей |
Блок-схема
3.11 Описание функции void sortnas()
таблица 12 - Описание функции void sortnas()
Локальные переменные |
назначение |
T |
переменная для подсчета записей в файле |
I,j |
рабочая переменная для подсчёта |
N |
количество записей |
Блок схема:
3.12 Описание функции void poiskstr()
таблица 13 - Описание функции void poiskstr()
Локальные переменные |
назначение |
I |
рабочая переменная для подсчёта |
N |
количество записей |
name |
Переменная для поиска |
Блок-схема
3.13 Описание функции void redakt()
таблица 14 - Описание функции void redakt()
Локальные переменные |
назначение |
J |
Переменная строки |
N |
количество записей |
T |
переменная для подсчета записей в файле |
Блок схема:
4 Руководство по эксплуатации программы
При выборе пункта «вывод таблицы на экран» будет выведен массив из файла
Рис.1 - Экранная форма вывода таблицы на экран
При выборе пункта «добавление записи в таблицу» будет предложено ввести данные
Рис.2 - Экранная форма добавления записи
При выборе пункта «сортировка по стране» будет выведен на экран массив отсортированный по странам
Рис.3 - Экранная форма сортировка по странам
При выборе пункта «сортировка по столицам» будет выведен на экран массив отсортированный по столицам
Рис.4 - Экранная форма сортировка по столицам
При выборе пункта «сортировка по площади» будет выведен на экран массив отсортированный по площади
Рис.5 - Экранная форма сортировка по площади
При выборе пункта «сортировка по форме правления» будет выведен на экран массив отсортированный по форме правления
Рис.6 - Экранная форма сортировка по форме правления.
При выборе пункта «сортировка по населению» будет выведен на экран массив отсортированный по населению
Рис.7 - Экранная форма сортировка по населению
При выборе пункта «поиск по стране» будет предложено ввести страну которую вы ищете
Рис.8 - Экранная форма поиска
При выборе пункта «редактирование» будет предложено выбрать строку которую хотите редактировать, затем введите изменения
Рис.9 - Экранная форма редактирование
При выборе пункта «создание БД» будет предложено ввести количество записей которое вы хотите добавить, затем вводите свои данные
Рис.10 - Экранная форма создание БД.
5 Список литературы
1 Роберт Седжвик. Алгоритмы на C++. Изд: Вильямс, 2011 г. 1056 стр.
2 Джесс Либерти, Брэдли
Джонс. Освой самостоятельно C+
3 Х. М. Дейтел, П. Дж. Дейтел. Как программировать на C++. Изд: Бином-Пресс, 2009 г., 800 стр.
4 Герберт Шилдт. C++. Методики программирования Шилдта. Изд: Вильямс, 2009 г., 480 стр.
5 Крис Х. Паппас, Уильям Х. Мюррей III. Отладка в С++. Руководство для разработчиков. Изд: Бином-Пресс, 2009 г., 510 стр.
6 Заключение
При выполнении курсовой работы изучал язык высокого уровня С++. Разработал программу, которая создает новую БД, редактирует существующую, и сохраняет внесенные изменения базы данных «Страна» в новый файл или в существующий. Программа включает в себя процедуры, обеспечивающие выполнение всех поставленных задач для работы с базой данных, а именно сортировку по всем полям, поиск, добавление новой записи и удаление с сохранением в файл. Главное меню программы позволяет обеспечить доступ к функциям программы. С помощью класса динамических массивов эффективно использовалась память, которая выделяется по мере необходимости отдельными блоками, связанными друг с другом с помощью указателей. Такой способ организации данных называется динамическими данными, поскольку их размер изменяется во время выполнения программы. Элемент динамического данного, часто называемый узлом, представляет собой структуру, содержащую по крайней мере два поля: для хранения данных (информационная часть узла) и для указателей (адресная часть узла).
Так же разработал программу с использованием графических примитивов с элементами анимации для созданной базы данных «Страна». Были выбраны различные цвета элементов в построенном изображении (фон, линии, точки, фигуры), использовал подмассив (setviewport) для анимации, который является прямоугольным окном со своей системой координат, при котором выделенная область стирается и вместо стертой области появляется другое изображение, имитируя анимацию.
Проведенное тестирование показало работоспособность программ и соответствие её требованиям задания на курсовой проект.
Приложение А. Листинг программы
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
struct strana
{ char name[30];
char stolica[30];
char plochad[30];
char forma[30];
char naselenie[30]; };
class dmassiv //класс динамический массив структур
{private:
strana *pst; //указатель на исходную таблицу стран
int n;
//число строк в исходной
public:
dmassiv() {n=0; pst=NULL;} //конструктор
~dmassiv(); //деструктор
void input(); //ввод массива из файла
void sozd(); //создание новой базы данных
void output(); //вывод массива на экран
void redakt(); //редактирование массива
void add(); //добавление записи
void deletename();//удаление записи
void poiskstr();//поиск записи по
void sortstr(); //сортировка по стране
void sortstol();//сортировка по
void sortplo(); //сортировка по площадям
void sortfor(); //сортировка по форме правления
void sortnas(); //сортировка по населению
void sohrfile();//сохранение в файл
};
void dmassiv::input()
{ifstream fin;
char file[30];
strana t;//переменная для подсчета записей в файле
int i;
if(pst!=NULL){delete[] pst; n=0; pst=NULL;}//очистка рабочих областей
cout<<"\n\n vvedi nazvanie faila: ";
cin>>file;
fin.open(file);
if(fin.fail()) {cout<<file<<" "<<"ne suchestvuet"; getch(); exit(1);}
n=0;//подсчет записей в файле
do{fin>>t.name>>t.stolica>>t.
n++;} while(fin.good());n--;
fin.close();
pst=new strana[n];//выделение памяти
fin.open(file);//ввод массива из файла
if(fin.fail()) {cout<<file<<" "<<"ne suchestvuet"; getch(); exit(1);}
for(i=0;i<n;i++)
{fin>>pst[i].name>>pst[i].
}fin.close();}
void dmassiv::output()
{ int i;
cout<<"ishodnyi macciv:\n";
cout<<"N"<<" name stolica plochad forma naselenie\n\n";
for(i=0;i<n;i++)
{ cout<<i+1<<" "<<setw(12)<<pst[i].name<<setw
void dmassiv::sohrfile ()
{int i;
ofstream fout;
char file[30];
cout<<"\n vvedi imya vyhodnogo faila:\n";
cin>>file;
fout.open(file);
if(!fout) {cout<<file<<" "<<"ne sozdan fail"; getch(); exit(1);}
for(i=0;i<n;i++)
{ fout.setf(ios::left);
fout<<i+1<<" "<<setw(12)<<pst[i].name<<
} fout.close();