Курсовая работа - файл n1.doc
Курсовая работаДоступные файлы (1):
n1.doc
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Уфимский Государственный Авиационный Технический Университет
Кафедра проектирования средств информатики
Курсовая работаПо дисциплине «Программирование на ЯВУ»
Группа
С

тудент: ___________ _______________
(Фамилия, И.,О.) (дата) (подпись)
Преподаватель: ____________ _______________
(Фамилия ,И.,О.) (дата) (подпись)
Уфа –2007
Содержание:
1)Введение 3
2)Описание глобальных переменных 4
3)Блок-схемы 5
4)Тестирование программы 15
5)Листинг программы 26
6)Заключение 39
7) Список используемой литературы 40
1. Введение
Цель работы: освоение функций работы со структурным типом данных и файлами.
Постановка задачи: Разработать программу на С++ для обработки данных типа структура. Обработка должна включить следующие функции:
создание новой базы данных (с возможностью задания имени файла);
просмотр существующей базы данных (чтение данных осуществить из файла);
редактирование базы данных (с сохранением изменений в файле );
дополнение базы данных новыми записями (с сохранением в файле);
удаление записей из базы данных (с сохранением в файле);
поиск в базе данных (по одному или двум поисковым признакам ) с выводом на экран найденных записей или сообщения о неуспешном поиске;
сортировка данных по заданному полю ( с сохранением в файле).
Вариант №15: «Кинофильмы»
Наименование кинотеатра | Название фильма | Стоимость билета | Адрес | Количество мест |
2. Описание глобальных переменных, разработанных подпрограмм
Описание глобальных переменных:
Const int=30 | Количество символов под структуру товар |
Struct metro { char name[L]; char R [L]; char H [L]; char P [L]; char K [L]; }; | -структура записей в базе данных -тип наименования -тип район линии -тип этажность -тип протяженность -тип количество поездов
|
Class metro |
|
metro a[N] Int n | массив, содержащий сведения о записях число записей |
Описание разработанных подпрограмм:
Название подпрограммы | Назначение |
|
|
void input_file | Ввод из файла |
void outputfile | Вывод из файла |
void alfsort | Сортировка по наименованию линии |
void sohranenie | Сохранение в файле |
void poisk | Поиск по выбранному полю |
void sort_chisl_1 | Сортировка по району линии |
void sort_chisl_2 | Сортировка по году спуска |
void sort_chisl_3 | Сортировка по протяженности |
void sort_chisl_4 | Сортировка по количеству поездов |
void udalenie | Удаление записей в базе данных |
void redaktirovanie | Редактирование записей в базе данных |
void dobavlenie | Добавление записи в базу данных |
void input | Создание новой базы данных |
3.Блок-схемы:
1.Блок- схема основной программы:
2.Блок-схема запись в файл:
3.Блок-схема создание новой базы данных:
4

.Блок-схема на просмотр базы данных:
5.Блок-схема редактирование базы данных:

6.блок-схема добавление записи в базу данных:
7.блок-схема удаление записей в базе данных:


8.Блок-схема поиска в базе данных:
9. Блок-схема сортировки:
10. Блок-схема записи в файл:

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

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

3.Сортировка по наименованию линии 1 – в этом пункте вы можете отсортировать БД по наименованию кинотеатра:
до сортировки:
после сортировки:

4.Сортировка по названию фильма:
до сортировки:

после сортировки:

5.сортировка по стоимости билетов:
до сортировки:
После сортировки:

6.сортировка по адресу:
до сортировки:

после сортировки:

7.Сортировка по количеству мест:
до сортировки:
после сортировки:

8.Сохранение в файле – в этом пункте вы можете сохранить БД :
9.Поиск по выбранному полю –в этом пункте вы можете найти любую линию московского метро по любому полю:

10.Добавление записи в БД –в этом пункте можно добавить новую запись:
11.Удаление записи в БД – в этом пункте вы можете удалить какую-либо запись:

12.Редактирование БД – в этом пункте вы можете отредактировать какую-нибудь запись:
13.Создание новой БД – в этом пункте вы можете создать новую БД :

14. Выход из программы – при наборе на клавиатуре числа 14 будет осуществлен выход.
5. Листинг программы
#include
#include
#include
#include
#include
#include
#include
#include
#include
const int L=30;
struct building
{
char name[L];
char F[L];
int S;
char A[L];
int K;
int d;
};
const int N=100;
class buildings
{
private:
building a[N];
int n;
public:
void input_file();
void outputfile();
void alfsort();
void sohranenie();
void sort_chisl_2();
void sort_chisl_1();
void sort_chisl_3();
void sort_chisl_4();
void add();
void udalenie();
void redaktirovanie();
void input();
void poisk();
};
void main()
{
buildings a;
int pm;
while(1)
{cout<
cout<<" 1.Vvod faila "<
cout<<" 2.Vivod iz faila "<
cout<<" 3.Alfofitnai sortirovka "<
cout<<" 4.Zapis dannih v file "<
cout<<" 5.Sortirovka po nazvaniu filma "<
cout<<" 6.Sortirovka po stoimosti "<
cout<<" 7.Sortirovka po adresu "<
cout<<" 8.Sortirovka po kol-vu mest "<
cout<<" 9.Poisk po polu "<
cout<<" 10.Dobavlenie zapisi v bazu dannih "<
cout<<" 11.Udalenie zapisi iz bazi dannih "<
cout<<" 12.Redaktirovanie "<
cout<<" 13.Sozdanie novoi bazi dannih "<
cout<<" 14.Konec raboti "<
cout<
cout<<" Vash vibor 1-14: ";
cin>>pm;
cout<
switch(pm)
{
case 1:a.input_file();break;
case 2:a.outputfile();getch();break;
case 3:a.alfsort();break;
case 4:a.sohranenie();break;
case 5:a.sort_chisl_1();break;
case 6:a.sort_chisl_2();break;
case 7:a.sort_chisl_3();break;
case 8:a.sort_chisl_4();break;
case 9:a.poisk();break;
case 10:a.add();break;
case 11:a.udalenie();break;
case 12:a.redaktirovanie();break;
case 13:a.input();break;
case 14:cout<<"Konec raboti";
getch();
return;
default:cout<<"Net tacogo puncta.";
getch();break;
}
}
}
//Программа 1//
void buildings::alfsort()
{
int fl,i,l;
building t;
l=n-1;
do
{
fl=0;
for(i=0;i
if(strcmp(a[i].name ,a[i+1].name )>0)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
fl=1;
}
l--;
}
while(fl==1);
return;
}
//Программа 2//
void buildings::input_file()
{
ifstream fin;
char file[L];
cout<<"Ukazite put k failu: ";
cin>>file;
fin.open(file);
if(fin==NULL)
{
cout<<"File not open";
getch();
exit(1);
}
n=0;
fin>>a[n].name>>a[n].F>>a[n].S>>a[n].A>>a[n].K;
while(fin.good())
{
n++;
fin>>a[n].name>>a[n].F>>a[n].S>>a[n].A>>a[n].K;
}
fin.close();
}
//Программа 3//
void buildings::outputfile()
{
int i;
cout<
cout<
for(i=0;i
cout<
}
//Программа 4//
void buildings::sort_chisl_1()
{
int fl,i,l;
building t;
l=n-1;
do
{
fl=0;
for(i=0;i
if(strcmp(a[i].F ,a[i+1].F )>0)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
fl=1;
}
l--;
}
while(fl==1);
return;
}
//Программа 5//
void buildings::sort_chisl_2()
{
int fl,i,l;
building t;
l=n-1;
do
{
fl=0;
for(i=0;i
if(a[i].S>a[i+1].S)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
fl=1;
}
l--;
}
while(fl==1);
return;
}
//Программа 6//
void buildings::sort_chisl_3()
{
int fl,i,l;
building t;
l=n-1;
do
{
fl=0;
for(i=0;i
if(strcmp(a[i].A ,a[i+1].A )>0)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
fl=1;
}
l--;
}
while(fl==1);
return;
}
//Программа 7//
void buildings::sort_chisl_4()
{
int fl,i,l;
building t;
l=n-1;
do
{
fl=0;
for(i=0;i
if(a[i].K>a[i+1].K)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
fl=1;
}
l--;
}
while(fl==1);
return;
}
//Программа 8//
void buildings::sohranenie()
{
char file[L];
ofstream out;
int otvet;
cout<<"Sohranit izmeneniya?"<
cin>>otvet;
if(otvet==1)
{
cout<<"Vvedite direktoriyu, kuda vj bj hoteli sohranit: ";
cin>>file;
out.open(file);
if(out==NULL)
{
cout<<"File ne sozdan"<
getch();
exit(1);
}
}
int i;
for(i=0;i
out< cout<
}
//Программа 9 //
void buildings::redaktirovanie()
{
int c,r;
cout<<"Vvedite nomer stroki,kotoruiu nujno otredaktirovat: ";
cin>>c;
cout<
cout<<"Izmenit naimenovanie? (1 Da/0 Net):"<
cin>>r;
if(r)
{
cout<<"Naimeninavanie: ";
cin>>a[c-1].name;
}
cout<<"Izmenit nazvanie filma? (1 Da/0 Net):"<
cin>>r;
if(r)
{
cout<<"Nazvanie filma: ";
cin>>a[c-1].F;
}
cout<<"Izmenit stoimost? (1 Da/0 Net):"<
cin>>r;
if(r)
{
cout<<"stoimost";
cin>>a[c-1].S;
}
cout<<"Izmenit adres? (1 Da/0 Net):"<
cin>>r;
if(r)
{
cout<<"adres: ";
cin>>a[c-1].A;
}
cout<<"Izmenit kol-vo mest? (1 Da/0 Net):"<
cin>>r;
if(r)
{
cout<<"kol-vo mest:";
cin>>a[c-1].K;
}
cout< cout<<"Redaktirovanie zaversheno."<
return;
}
//Программа 10//
void buildings::udalenie()
{
int i,c;
cout<<"Vvedite nomer stroki,kotoruiu neobhodimo udalit: "< cin>>c;
if (c>n) cout<<"Dannaia stroka v baze dannih otsutstvuet."< else
{
cout< for (i=c;i<=n;i++)
{
a[i-1] = a[i];
}
cout<<"Stroka "< n=n-1;
}
return;
}
//Программа11//
void buildings::add()
{
struct building x;
cout<<"Vvedite dannie novogo Kinoteatra: "< cout< cout<<"Nomer: "<
cin>>x.d;
cout<<"Naimenovanie: ";
cin>>x.name;
cout<<"Nazvanie filma: ";
cin>>x.F;
cout<<"Stoimost bileta: ";
cin>>x.S;
cout<<"Adres: ";
cin>>x.A;
cout<<"Kol-vo mest: ";
cin>>x.K;
cout< a[n]=x;
n=n+1;
cout<<"Zapisi dobavleni."< return;
}
//Программа 12//
void buildings::input()
{
int i;
cout<<"Vvedite kolichestvo strok:"<
cin>>n;
cout<<"Vvedite dannie Kinoteatra:"<
for (i=0;i
{
cout<
cout<<"Nomer: "<
cin>>a[i].d;
cout<<"Naimenovanie: ";
cin>>a[i].name;
cout<<"Nazvanie filma: ";
cin>>a[i].F;
cout<<"Stoimost bileta: ";
cin>>a[i].S;
cout<<"Adres: ";
cin>>a[i].A;
cout<<"Kol-vo mest: ";
cin>>a[i].K;
cout<
}
cout<<"Dannie vvedeni."<
}
void buildings::poisk()
{
int i,d=0,f=0,j=0;
int q,w,e,r,t;
char name[L];
int S,K;
char F[L], A[L];
cout<<"Proizvesti poisk po: "<
cout<<"Naimenovaniyu? Da-1,Net-0: ";
cin>>q;
if(q==1) {cout<<"Vvedite Naimenovanie:"; cin>>name;f++;}
cout<<"Iskat po nazvaniyu filma? Da-1,Net-0: ";
cin>>w;
if(w==1) {cout<<"Vvedite nazvanie filma: ";cin>>F;f++;}
cout<<"iskat po stoimosti bileta?Da-1,Net-0: ";
cin>>e;
if(e==1) {cout<<"Vvedite stoimost bileta: "; cin>>S;f++;}
cout<<"Iskat po adresu? Da-1,Net-0: ";
cin>>r;
if(r==1) {cout<<"Vvedite adres: ";cin>>A;f++;}
cout<<"Iskat po kol-vu mest? Da-1,Net-0: ";
cin>>t;
if(t==1) {cout<<"Vvedite kol-vo mest: ";cin>>K;f++;}
for(i=0;i
{
if(q==1) {if(strcmp(name, a[i].name)==0) d=d+1;}
if(w==1) {if(strcmp(F, a[i].F)==0) d=d+1;}
if(e==1) {if(S==a[i].S) d=d+1;}
if(r==1) {if(strcmp(A, a[i].A)==0) d=d+1;}
if(t==1) {if(K==a[i].K) d=d+1;}
if(d==f) {cout<
d=0;
}
if(j==0) cout<<"Poisk ne dal rezultata!"<
cout<
}
6.Заключение.
На современном этапе развития общества, когда происходит полная компьютеризация, время требует от программистов разработки новых программ, которые сумеют облегчить труд людей в разных сферах жизни. Современному человеку необходимы программы для реализации их возрастающих масштабов деятельности и данная программа им в этом поможет.
Предоставленная программа предназначена для работы с базой данных «Кинофильмы» для любого пользователя. А использовать её можно как в каких-либо компаниях, так и в повседневной жизни уфимца, желающего посмотреть конифильм.
Свойства программы - быстрый ввод, обработка и поиск данных в данной базе. Программа включает в себя следующие процедуры: создание новой базы данных, просмотр существующей базы данных, редактирование записей, их добавление и удаление (всё с сохранением в текстовом файле), поиск записей и сортировка записей по данному полю.
7.Список используемой литературы:
1. Освой самостоятельно С++, Джесс Либерти, Москва, «Вильемс», 2001г., Стр. 837
2. Основы алгоритмизаии и программирования язык С, Демидович, 2006г. , СПб:БХВ-Петербург, Стр. 440
3. С++, Культин Н.Б, СПб:БХВ-Петербург, 2005г. Стр. 288
4. Методические указания к лабораторным работам по программированию на языке С++.