Курсовая работа по дисциплине «Программирование на языке высокого уровня» Вариант 15
Автор: student | Категория: Технические науки / Информатика и программирование | Просмотров: 793 | Комментирии: 0 | 01-01-2014 23:32
СКАЧАТЬ: 44.rar [454,69 Kb] (cкачиваний: 22)



Курсовая работа по дисциплине
«Программирование на языке высокого уровня»
Вариант 15




Содержание

1) Введение
2) Аннотация
3) Описание глобальных переменных
4) Блок-схемы программы
5) Листинг программы
6) Тестирование программы
7) Заключение
8) Список используемой литературы






















1. Введение

Цель работы: освоение функций работы со структурным типом данных и файлами.
Постановка задачи: разработать программу на языке С++ для обработки данных типа структура. Обработка должна включить следующие функции:
1) создание новой базы данных (с возможностью задания имени файла);
2) просмотр существующей базы данных (чтение данных осуществить из файла);
3) редактирование базы данных (с сохранением изменений в файле);
4) дополнение базы данных новыми записями (с сохранением в файле);
5) удаление записей из базы данных (с сохранением в файле);
6) поиск в базе данных (по одному или двум поисковым признакам) с выводом на экран найденных записей или сообщения о неуспешном поиске;
7) сортировка данных по заданному полю ( с сохранением в файле).

Вариант №15: «Детские сады»
Наименование детского сада Номер сада Количество детей Район города Плата за месяц












2. Аннотация

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























3. Описание глобальных переменных, разработанных подпрограмм

Описание глобальных переменных:

struct detsadi
{
char naimensada[L];
int nomersada;
int kolvodeti;
char raiongoroda[L];
int platazames;
}; Структура записей в базе данных

Наименование детского сада
Номер сада
Количество детей
Район города
Плата за месяц

class hmassiv
detsadi x[N]
int n Массив, содержащий сведения о записях
Количество записей

Описание разработанных подпрограмм:

Название подпрограммы Назначение
void inputfile Открыть файл данных
void output Вывести файл данных на экран
void outputfile Сохранение файла данных в файл
void input Ввод нового файла данных
void sortalfn Сортировка файла данных по наименованию
void sortalff Сортировка файла данных по району города
void sortalffn Сортировка файла данных по району города и наименованию
void sortchisloz Сортировка файла данных по плате за месяц
void sortchisloe Сортировка файла данных по количеству детей
void sortchislok Сортировка файла данных по номера сада
void addh Добавление записи в файл данных
void deleteh Удаление записи из файла данных
void redakt Редактирование записи в файле данных
void poisk Поиск записей в файле данных






4. Блок-схемы программы































5. Листинг программы

#include
#include
#include
#include
#include
#include


const int L=50;


struct detsadi
{
char naimensada[30];
char raiongoroda[30];
int platazames;
int kolvodetei;
int nomersada;
};


const int N=100;


class hmassiv
{
private:
detsadi x[L];
int n;
public:
hmassiv(){n=0;};
void inputfile ();
void output ();
void sortalff();
void sortalfn();
void sortalffn();
void sortchisloz();
void sortchisloe();
void sortchislok();
void outputfile();
void addh();
void deleteh();
void redakt();
void input();
void poisk();
};


void main ()
{
clrscr ();
hmassiv a;
int j;
while(1)
{
clrscr();
cout<<" --------------------------------------------------------------\n";
cout<<"| 1 | Otkrit fail dannih |\n";
cout<<"| 2 | Vivesti fail dannih na ekran |\n";
cout<<"| 3 | Sortirovka faila dannih po naimenovaniu |\n";
cout<<"| 4 | Sortirovka faila dannih po raiony goroda |\n";
cout<<"| 5 | Sortirovka faila dannih po raiony goroda i naimenovaniu |\n";
cout<<"| 6 | Sortirovka faila dannih po plate za mesiac |\n";
cout<<"| 7 | Sortirovka faila dannih po kolichestvy detei |\n";
cout<<"| 8 | Sortirovka faila dannih po nomery sada |\n";
cout<<"| 9 | Sohranenie faila dannih v fail |\n";
cout<<"| 10 | Redaktirovanie zapici v faile dannih |\n";
cout<<"| 11 | Dobavlenie zapici v fail dannih |\n";
cout<<"| 12 | Ydalenie zapici iz faila dannih |\n";
cout<<"| 13 | Poisk zapisei v faile dannih |\n";
cout<<"| 14 | Vvod novogo faila dannih |\n";
cout<<"| 15 | Exit |\n";
cout<<" --------------------------------------------------------------\n\n";
cout<<"Viberite pynkt menu: ";
cin>>j;
switch(j)
{
case 1:a.inputfile(); break;
case 2:a.output(); getch(); break;
case 3:a.sortalfn(); break;
case 4:a.sortalff(); break;
case 5:a.sortalffn(); break;
case 6:a.sortchisloz(); break;
case 7:a.sortchisloe(); break;
case 8:a.sortchislok(); break;
case 9:a.outputfile(); break;
case 10:a.redakt();getch();break;
case 11:a.addh(); getch(); break;
case 12:a.deleteh(); break;
case 13:a.poisk(); break;
case 14:a.input(); getch(); break;
case 15:
return;
default:cout<<"CRITICAL ERROR!!! T$ ‹Ги&ьяя‹D$‰D$ ‹D$ ‰D$ ѓ|$ t ЌT$ ё`ф@ и•ъяял 3А є ¬ґ Н!ё LН!ђђThis program must be run under Win32";
getch();
};
};
}


void hmassiv::inputfile() //---1---
{
ifstream fin;
char file[L];
n=0;
cout<<"Otkrit fail dannih iz: ";
cin>>file;
fin.open(file);
if(fin.fail())
{
cout<<file<<"Oshibka otkritia faila";
getch();
return;
};
do
{
fin>>x[n].naimensada>>x[n].nomersada>>x[n].kolvodetei>>x[n].raiongoroda>>x[n].platazames;
n++;
}
while(fin.good());
fin.close();
n--;
getch();
}


void hmassiv::outputfile() //---9---
{
int i;
ofstream fout;
char file [L];
cout<<"Sohranit fail dannif v: ";
cin>>file;
fout.open(file);
if (fout.fail())
{
cout<<file<<"Oshibka sohranenia faila";
getch();
return;
}
fout.setf(ios::left);
for(i=0;i <n;i++)
fout<<setw(20)<<x[i].naimensada<<setw(5)<<x[i].nomersada<<setw(5)<<x[i].kolvodetei<<setw(20)<<x[i].raiongoroda<<setw(5)<<x[i].platazames<<endl;
fout.close();
}


void hmassiv::output() //---2---
{
int i;
clrscr();
cout<<" -----------------------------------------------------------------------------"<<endl;
cout<<"| N|Naimen. detsada|Nom. sada|Kol. detei| Raion goroda |Plata za mesiac|"<<endl;
cout<<" -----------------------------------------------------------------------------"<<endl;
for (i=0;i0)
{
t=x[i];
x[i]=x[i+1];
x[i+1]=t;
fl=1;
}
}
f--;
}
while(fl==1);
}


void hmassiv::sortchisloz() //---6---
{
int fl,i,f;
detsadi t;
f=n-1;
do
{
fl=0;
for(i=0;i <f;i++)
if (x[i].platazames < x[i+1].platazames)
{
t=x[i];
x[i]=x[i+1];
x[i+1]=t;
fl=1;
}
f--;
}
while(fl==1);
}


void hmassiv::sortchisloe() //---7---
{
int fl,i,f;
detsadi t;
f=n-1;
do
{
fl=0;
for(i=0;i <f;i++)
if(x[i].kolvodetei < x[i+1].kolvodetei)
{
t=x[i];
x[i]=x[i+1];
x[i+1]=t;
fl=1;
}
f--;
}
while(fl==1);
}


void hmassiv::sortchislok() //---8---
{
int fl,i,f;
detsadi t;
f=n-1;
do
{
fl=0;
for(i=0;i <f;i++)
if(x[i].nomersada < x[i+1].nomersada)
{
t=x[i];
x[i]=x[i+1];
x[i+1]=t;
fl=1;
}
f--;
}
while(fl==1);
}



void hmassiv::addh() //---11---
{
detsadi t;
if(n==N)
{
cout<<"Massiv zapolnen\n";
getch();
return;
};
cout<<"Naimnovanie detskogo sada: ";
cin>>t.naimensada;
cout<<"Nomer sada: ";
cin>>t.nomersada;
cout<<"Kolichestvo detei: ";
cin>>t.kolvodetei;
cout<<"Raion goroda: ";
cin>>t.raiongoroda;
cout<<"Plata za mesiac: ";
cin>>t.platazames;
x[n]=t;
n++;
}


void hmassiv::deleteh() //---12---
{
int i,j;
char ch;
output();
cout<<"Vvedite nomer stroki ydaliaemoi zapisi: ";
cin>>j;
j--;
if(j=n)
{
cout<<"Oshibka\n";
getch();
return;
}
cout<<j+1<<" "<<x[j].naimensada<<" "<<x[j].nomersada<<" "<<x[j].kolvodetei<<" "<<x[j].raiongoroda<<" "<<x[j].platazames<<endl;
cout<<"Ydalit (Y/N)?";
cin>>ch;
if(ch!='y')return;
if(ch=='y')
{
for(i=j+1;i <n;i++)
x[i-1]=x[i];
n--;}
}


void hmassiv::redakt() //---10---
{
int k;
output();
cout<<endl<<"Nomer redaktiryemoi zapisi: ";
cin>>k;
k--;
cout<<endl;
cout<<k+1<<" "<<x[k].naimensada<<" "<<x[k].nomersada<<" "<<x[k].kolvodetei<<" "<<x[k].raiongoroda<<" "<<x[k].platazames<<endl<<endl;
cout<<"Naimenovanie detskogo sada: ";
cin>>x[k].naimensada;
cout<<"Nomer sada: ";
cin>>x[k].nomersada;
cout<<"Kolihestvo detei: ";
cin>>x[k].kolvodetei;
cout<<"Raion goroda: ";
cin>>x[k].raiongoroda;
cout<<"Plata za mesiac: ";
cin>>x[k].platazames;
return;
}


void hmassiv::input() //---14---
{
int i;
cout<<"Vvedite kolichestvo zapisei: ";
cin>>n;
for(i=0; i <n; i++){
cout<<"Zapis "<<i+1<<":"<<endl;
cout<<"Naimenovanie detskogo sada: ";
cin>>x[i].naimensada;
cout<<"Nomer sada: ";
cin>>x[i].nomersada;
cout<<"Kolichestvo detei: ";
cin>>x[i].kolvodetei;
cout<<"Raion goroda: ";
cin>>x[i].raiongoroda;
cout<<"Plata za mesiac: ";
cin>>x[i].platazames;
}
}

void hmassiv::poisk() //---13---
{
int i,d=0,f=0,j=0;
int q,w,e,r,t;
char naimensada[L];
char raiongoroda[L];
int platazames;
int kolvodetei;
int nomersada;
cout<<"Naiti po:"<<endl;
cout<<"Naimenovanie detskogo sada (1-Da/0-Net): ";
cin>>q;
if(q==1)
{
cout<<"Vvedite naimenovanie detskogo sada: ";
cin>>naimensada;
f++;
}
cout<<"Nomer sada (1-Da/0-Net): ";
cin>>t;
if(t==1)
{
cout<<"Vvedite nomer sada: ";
cin>>nomersada;
f++;
}
cout<<"Kolichestvo detei (1-Da/0-Net): ";
cin>>r;
if(r==1)
{
cout<<"Vvedite kolichestvo detei: ";
cin>>kolvodetei;
f++;
}
cout<<"Raion goroda (1-Da/0-Net): ";
cin>>w;
if(w==1)
{
cout<<"Vvedite raion goroda: ";
cin>>raiongoroda;
f++;
}
cout<<"Plata za mesiac (1-Da/0-Net): ";
cin>>e;
if(e==1)
{
cout<<"Vvedite platy za mesiac: ";
cin>>platazames;
f++;
}
cout<<endl;
cout<<" -------------------------------------------------------------------------"<<endl;
cout<<"|Naimen. detsada|Nom. sada|Kol. detei| Raion goroda |Plata za mesiac|"<<endl;
cout<<" -------------------------------------------------------------------------"<<endl;
for(i=0; i <n; i++){
if(q==1)
{
if(strcmp(naimensada,x[i].naimensada)==0)
d=d+1;
}
if(t==1)
{
if(nomersada==x[i].nomersada)
d=d+1;
}
if(r==1)
{
if(kolvodetei==x[i].kolvodetei)
d=d+1;
}
if(w==1)
{
if(strcmp(raiongoroda,x[i].raiongoroda)==0)
d=d+1;
}
if(e==1)
{
if(platazames==x[i].platazames)
d=d+1;
}
if(d==f)
{
cout<<setw(16)<<x[i].naimensada<<setw(10)<<x[i].nomersada<<setw(11)<<x[i].kolvodetei<<setw(21)<<x[i].raiongoroda<<setw(16)<<x[i].platazames<<endl;
j=j+1;
}
d=0;
}
if(j==0)
cout<<"Net rezyltatov poiska";
getch();
}







6. Тестирование программы

При входе в программу появляется меню с выбором пунктов меню, доступных для любого пользователя:
1. Открыть файл данных
2. Вывести файл данных на экран
3. Сортировка файла данных по наименованию
4. Сортировка файла данных по району города
5. Сортировка файла данных по району города и наименованию
6. Сортировка файла данных по плате за месяц
7. Сортировка файла данных по количеству детей
8. Сортировка файла данных по номеру сада
9. Сохранение файла данных в файл
10. Редактирование записи в файле данных
11. Добавление записи в файл данных
12. Удаление записи из файла данных
13. Поиск записей в файле данных
14. Ввод нового файла данных
15. Exit



Теперь посмотрим, что происходит при нажатии пользователем каждого пункта меню. При неверном вводе данных во всех пунктах меню выходит сообщение об ошибке. Номера пунктов - номера клавиш на клавиатуре.
1. Открыть файл данных – в этом пункте пользователь может ввести свой файл.



2. Вывести файл данных на экран – в этом пункте пользователь может просмотреть свой файл.



3.Сортировка файла данных по наименованию – в этом пункте вы можете отсортировать файл данных по наименованию детского сада.



4. Сортировка файла данных по району города.







5. Сортировка файла данных по району города и наименованию.



6. Сортировка файла данных по плате за месяц.








7. Сортировка файла данных по количеству детей.



8. Сортировка файла данных по номеру сада.







9. Сохранение файла данных в файл - в этом пункте вы можете сохранить файл данных.



10. Редактирование записи в файле данных - в этом пункте вы можете отредактировать любую запись.




11. Добавление записи в файл данных - в этом пункте можно добавить новую запись.





12. Удаление записи из файла данных - в этом пункте вы можете удалить какую-либо запись.





13. Поиск записей в файле данных - в этом пункте вы можете найти любой детский сад по любому полю.








14. Ввод нового файла данных - в этом пункте вы можете создать новый файл данных.










15. Exit - при наборе на клавиатуре числа 15 будет осуществлен выход из программы.





















7. Заключение

На современном этапе развития общества, когда происходит полная компьютеризация, время требует от программистов разработки новых программ, которые сумеют облегчить труд людей в разных сферах жизни. Современному человеку необходимы программы для реализации их возрастающих масштабов деятельности и данная программа им в этом поможет.
Предоставленная программа предназначена для работы с базой данных «Детские сады» для любого пользователя.
Свойства программы - быстрый ввод, обработка и поиск данных в данной базе. Программа включает в себя следующие процедуры: создание новой базы данных, просмотр существующей базы данных, редактирование записей, их добавление и удаление (все с сохранением в текстовом файле), поиск записей и сортировка записей по данному полю.

















8. Список используемой литературы

1. Освой самостоятельно С++, Джесс Либерти, Москва, «Вильемс», 2001г., Стр. 837;
2. Основы алгоритмизаии и программирования язык С, Демидович, 2006г. , СПб:БХВ-Петербург, Стр. 440;
3. С++, Культин Н.Б, СПб:БХВ-Петербург, 2005г. Стр. 288;
4. Методические указания к лабораторным работам по программированию на языке С++.
</n;i++)
</f;i++)
</f;i++)
</f;i++)
</n;i++)