Телефонний довідник

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра інформатики

Інформація про роботу

Рік:
2011
Тип роботи:
Курсова робота
Предмет:
Програмування частина 4 Технологія системного програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Тернопільський національний технічний університет ім. Івана Пулюя   Кафедра інформатики і математичного моделювання     Курсова робота З дисципліни «Програмування» на тему: «Телефонний довідник» Зміст 1. Вступ. 2. Аналіз завдання. 3. Розробка алгоритму функціонування. 4. Створення програми із описом основних структур, процедур, модулів, файлів тощо. 5. Опис технології роботи програми – ввід даних, основні режими роботи, вивід результатів. 6. Висновки. 7. Перелік використаної літератури. 8. Додаток. Лістинг програми мовою С++. 1. Вступ Visual С++ представляє собою потужний та складний інструмент для створення 32-розрядних програм Windows. Ці програми набагато переважають як за об’ємом так і по складності своїх попередників для 16-розрядних Windows та ще набагато древніших програм, які взагалі обходяться без графічного інтерфейсу. Але не дивлячись на те, що об’єм та складність програм збільшуються, для їх створення програмісту потрібно не більше, а набагато менше зусиль, по крайній мірі для тих, хто правильно вибирає необхідні інструментальні засоби. Саме таким інструментом є Visual С++. Visual С++ ( це універсальний пакет програмування, який дозволяє створювати модулі з графічним інтерфейсом під операційну систему Windows. Окрім можливостей, які дає C, С++ надає гнучкі та ефективні засоби визначення нових типів. Використовуючи визначення нових типів, що точно відповідають концепціям прикладних програм, програміст може розділяти розроблювану програму на частини, що легко піддаються контролю. Такий метод побудови програм часто називають абстракцією даних. Інформація про типи міститься у деяких об’єктах типів, визначених користувачем. Такі об’єкти прості та надійні у використанні у тих ситуаціях, коли їх тип не можна встановити на стадії компіляції. Програмування з застосуванням таких об’єктів часто називають об’єктно-орієнтованим. При правильному використанні цей метод дає коротші, простіші в налагодженні та використанні модулі та програми. Відмінною особливістю мови С++ є поняття класу, яке ще більш широко і яскраво реалізоване в Visual С++. Клас – це новий тип змінної, що визначається користувачем. Класи забезпечують приховування даних, гарантовану ініціалізацію даних, неявне перетворення типів, динамічне завдання типу, управління, що контролюється користувачем, механізми перевантаження операцій. В Visual С++ збережені можливості мови C по роботі з основними об’єктами апаратного забезпечення (біти, байти, слова, адреси і т.п.). Visual С++ та його бібліотеки, як стандартні, так і MFC спроектовані так, щоб забезпечувати мобільність. Бібліотека MFC дає змогу швидко та ефективно реалізувати графічний інтерфейс та обробляти потрібні функції та повідомлення. 2. Аналіз завдання Мета роботи: освоєння функцій роботи зі структурним типом даних і файлами.  Постановка завдання: Розробити програму на С + + для обробки даних типу структура. Обробка повинна включити такі функції:  1) створення нової бази даних (з можливістю завдання імені файлу);  2) перегляд існуючої бази даних (читання даних здійснити з файлу);  3) редагування бази даних (із збереженням змін у файлі);  4) доповнення бази даних новими записами (із збереженням у файлі);  5) видалення записів із бази даних (із збереженням у файлі);  6) пошук в базі даних (по одному чи двом пошуковим ознаками) з виведенням на екран знайдених записів або повідомлення про неуспішному пошуку;  7) сортування даних по заданому полю (із збереженням у файлі). Мета завдання полягає у тому щоб створити програму «Телефонний довідник» яка буде виглядати так: Ім’я Номер телефону Номер будинку Рік народження Номер квартири   Програма повинна записувати дані у файл, створювати базу даних, редагувати її і доповнювати при необхідності. Також вона повинна мати пошук і сортування. При запуску програми вона повинна виводити на екран початкову сторінку у вигляді титульної. Після того як ця сторінка буде виведена на екран при натиску будь-якої клавіші повинно з’являтись меню з пунктами функцій які вона виконуватиме. 3. Розробка алгоритму функціонування При розробці програми ми створюємо програмний код який містить основну програму в якій є кілька підпрограм, які виконують певні функції. Для цього ми використовуємо різні оператори і функції. Насамперед записуємо все що необхідне для початку основної програми, і вже після цього оформляємо меню. Записуємо оператор вибору switch для того щоб можна було вибирати пункти які записані в меню. Пізніше створюємо підпрограму для вводу файлу. Після цього створюємо підпрограму для виводу з файлу. Дальше створюємо підпрограми для сортування по алфавіту і для сортування по імені, по номеру, по році народження, по номеру квартири і по номеру будинку. Ще створюємо підпрограми для пошуку, додавання запису і видалення, редагування і створення нової бази даних. Ще ця програма зберігає всі дані в файл і зчитує при необхідності з файлу. Після кожної підпрограми ставимо оператор return який завершує підпрограму. 4. Створення програми із описом основних структур, процедур, модулів, файлів тощо. Опис глобальних змінних: Const int=30 Кількість символів під структуру   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 Створення нової бази даних   Підпрограма для вводу файлу: //Программа 2// void buildings::input_file() { ifstream fin; char file[L]; cout<<"Ukazite put k filu : "; cin>>file; fin.open(file); if(fin==NULL) { cout<<"File not open"; getch(); exit(1); } n=0; fin>>a[n].name>>a[n].S>>a[n].H>>a[n].Year>>a[n].Summa; while(fin.good()) { n++; fin>>a[n].name>>a[n].S>>a[n].H>>a[n].Year>>a[n].Summa; } fin.close();} Підпрограма для виконання пошуку: void buildings::poisk() { int i,d=0,f=0,j=0; int q,w,e,r,t; char name[L]; int S; int H; int Year; int Summa; cout<<"Proizvesti poisk po:"<<endl; cout<<"Imeni? Da-1,Net-0: "; cin>>q; if(q==1) {cout<<"Vvedite Imia:"; cin>>name;f++;} cout<<"iskat po # Telefony? Da-1,Net-0: "; cin>>w; if(w==1) {cout<<"Vvedite # Telefony: ";cin>>S;f++;} cout<<"iskat po # Budunky?Da-1,Net-0: "; cin>>e; if(e==1) {cout<<"Vvvedite # Budunky: "; cin>>H;f++;} cout<<"iskat po Godu rojdenija? Da-1,Net-0: "; cin>>r; if(r==1) {cout<<"Vvedite God rojdenija: ";cin>>Year;f++;} cout<<"iskat po # Kvartyry? Da-1,Net-0: "; cin>>t; if(t==1) {cout<<"Vvedite # Kvartyry: ";cin>>Summa;f++;} for(i=0;i<n;i++) { if(q==1) {if(strcmp(a[i].name, a[i].name)==0) d=d+1;} if(w==1) {if(S==a[i].S) d=d+1;} if(e==1) {if(H==a[i].H) d=d+1;} if(r==1) {if(Year==a[i].Year) d=d+1;} if(t==1) {if(Summa==a[i].Summa) d=d+1;} if(d==f) {cout<<endl<<setw(12)<<a[i].name<<setw(11)<<a[i].S<<setw(14)<<a[i].H<<setw(10)<<a[i].Year<<setw(15)<<a[i].Summa<<endl; j=j+1;} d=0; } if(j==0) cout<<"Poisk ne dal rezultata!"<<endl<<endl; cout<<endl<<endl; } Підпрограма для редагування бази даних: //Программа 9 // void buildings::redaktirovanie() { int c,r; cout<<"Vvedite nomer stroki abonenta,kotoruiu nujno otredaktirovat:"<<endl; cin>>c; cout<<a[c-1].d<<"."<<a[c-1].name<<" "<<a[c-1].S<<" "<<a[c-1].H<<" "<<a[c-1].Year<<" "<<a[c-1].Summa<<endl; cout<<"Izmenit nomer? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"Nomer:"<<endl; cin>>a[c-1].d; } cout<<"Izmenit name? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"Name:"; cin>>a[c-1].name; } cout<<"Izmenit # Telefony? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"# Telefony:"; cin>>a[c-1].S; } cout<<"Izmenit # Budunky? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"# Budunky"; cin>>a[c-1].H; } cout<<"Izmenit God rojdenija? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"God rojdenija:"; cin>>a[c-1].Year; } cout<<"Izmenit # Kvartyry? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"# Kvartyry:"; cin>>a[c-1].Summa; } cout<<endl; cout<<"Redaktirovanie zaversheno!!!"<<endl; return; } Підпрограма для видалення абонентів з бази даних: //Программа 10// void buildings::udalenie() { int i,c; cout<<"Vvedite nomer stroki abonenta,kotoruiu neobhodimo udalit:"<<endl; cin>>c; if (c>n) cout<<"Dannaia stroka v base dannih otsutstvuet"<<endl; else { cout<<a[c-1].d<<"."<<a[c-1].name<<" "<<a[c-1].S<<" "<<a[c-1].H<<" "<<a[c-1].Year<<" "<<a[c-1].Summa<<endl; for (i=c;i<=n;i++) { a[i-1] = a[i]; } cout<<"Stroka "<<c<<" udalena!!!"<<endl; n=n-1; } return; Підпрограма для добавлення абонентів //Программа11// void buildings::add() { struct building x; cout<<"Vvedite dannie novogo abonenta:"<<endl; cout<<n+1<<"."; cout<<"Nomer:"<<endl; cin>>x.d; cout<<"Name:"; cin>>x.name; cout<<"# Telefony:"; cin>>x.S; cout<<"# Budunky:"; cin>>x.H; cout<<"God rojdenija:"; cin>>x.Year; cout<<"# Kvartyry:"; cin>>x.Summa; cout<<endl; a[n]=x; n=n+1; cout<<"Abonent dobavleniy!!!"<<endl; return; } 5. Опис технології роботи програми – ввід даних, основні режими роботи, вивід результатів. При вході в програму користувача з'являється титульна сторінка яка має такий вигляд:  При наступному натисканні будь-якої клавіші з’являється вікно меню яке має такі пункти: 1.Вивод з файлу; 2.Вивод файлу на екран.; 3.Сортування імен по алфавіту; 4.Збереження бази даних; 5.Сортування по номеру телефону; 6.Сортування по номеру будинку; 7.Сортування по році народження; 8.Сортування по номеру квартири; 9.Пошук по обраному полю; 10.Додавання запису в базу даних; 11.Видалення запису з бази даних; 12.Редагування бази даних; 13.Створення нової бази даних; 14.Кінець роботи, вихід з програми. У програмі меню виглядає так:  Тепер подивимося, що відбувається при натисканні користувачем кожного пункту меню.  При невірному вводі даних у всіх пунктах меню виходить повідомлення про помилку. Нумерація пунктів - є номер клавіш на клавіатурі. 1.Ввід з файлу - в цьому пункті користувач може ввести свій файл:  2.Вивід з файлу - в цьому пункті користувач може переглянути свій файл:  3.Сортування імен по алфавіту - у цьому пункті ви можете відсортувати БД:  4.Сортування по номеру телефону: До сортування:  Після сортування:  5. Сортування по номеру будинку: До сортування:  Після сортування:  6. Сортування по році народження: До сортування:  Після сортування:  7. Створення нової бази даних:  Після цього натискаємо Enter і нова база даних створена. 8. Якщо вам необхідно вийти з програми набираємо число 14 і натискаємо Enter. 6. Висновки На сучасному етапі розвитку суспільства, коли відбувається повна комп'ютеризація, час вимагає від програмістів розробки нових програм,  якізуміють полегшити працю людей в різних сферах життя. Сучасній людині необхідні програми для реалізації їх зростаючих масштабів  діяльності  і дана програма їм у цьому допоможе. Надана програма  призначена для роботи з базою даних «Телефонний довідник» для будь-якого користувача. А використовувати її можна як у будь-яких компаніях,  так і в повсякденному житті людини. Властивості програми -  швидке введення, обробка і пошук даних у цій базі.Програма включає в себе  наступні процедури: створення нової бази даних, перегляд існуючої  бази даних, редагування записів, їх додавання і видалення (все з збереженням у текстовому файлі), пошук записів і сортування записів по даному полю. 7. Перелік використаної літератури 1. Освой самостоятельно С++, Джесс Либерти, Москва, «Вильемс», 2001г., Стр. 837 2. Основы алгоритмизаии и программирования язык С, Демидович, 2006г. , СПб:БХВ-Петербург, Стр. 440 3. С++, Культин Н.Б, СПб:БХВ-Петербург, 2005г. Стр. 288 4. Методические указания к лабораторным работам по программированию на языке С++. 5. Програмування мовою С, Шпак З.Я. Львів: Оріяна нова, 2006. 6. Інтернет ресурси. 8.Додаток Лістинг програми мовою С++ #include<iostream.h> #include<fstream.h> #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<string.h> #include<iomanip.h> const int L=30; struct building { char name[L]; int S; int H; int Year; int Summa; 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() { clrscr();printf("\n"); cout<<" Ministerstvo osvity i nauky Ukrainu";printf("\n"); cout<<" Ternopilskiy natzionalniy tekhnichnyi universytet im.I.Pulyuy";printf("\n");printf("\n");printf("\n");printf("\n";printf("\n"); cout<<" Kafedra informatyky i";printf("\n");printf("\n"); cout<<" matematychnogo modelyuvannya";printf("\n"); printf("\n");printf("\n");printf("\n");printf("\n"); cout<<" Kursova robota";printf("\n");printf("\n"); cout< z dystsypliny";printf("\n");printf("\n"); cout<<"''Prohramuvannua''";printf("\n");printf("\n");printf("\n");printf("\n"); cout<<" na temy:";printf("\n");printf("\n"); cout<<" ''Telefonnyy dovidnyk''"; printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n"); cout<<" Vykonav";printf("\n");printf("\n"); cout<<" student hrupy SI-11";printf("\n");printf("\n"); cout<<" Bachinskyi I.I."; printf("\n");printf("\n");printf("\n");printf("\n"); cout<<" Pryynyav";printf("\n");printf("\n"); cout<<" Gladyo Yu.B."; printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n"); cout<<" Ternopil 2011"; getch(); clrscr(); buildings a; int pm; while(1) { cout<<"1.Vvod faila"<<endl; cout<<"2.Vivod iz faila "<<endl; cout<<"3.Alfofitnai sortirovka"<<endl; cout<<"4.Zapis dannih v file"<<endl; cout<<"5.Sortirovka po # Telefony"<<endl; cout<<"6.Sortirovka po # Budunky"<<endl; cout<<"7.Sortirovka po God rojdenija"<<endl; cout<<"8.Sortirovka po # Kvartyry"<<endl; cout<<"9.Poisk"<<endl; cout<<"10.Dobavlenie zapisi v bazu dannih"<<endl; cout<<"11.Udalenie zapisi iz bazi dannih"<<endl; cout<<"12.Redaktirovanie"<<endl; cout<<"13.Sozdanie novoi BD"<<endl; cout<<"14.Konets raboti"<<endl; cout<<endl<<endl; cout<<"Vash vibor 1-14"<<endl; cin>>pm; cout<<endl<<endl; 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<<"Konets 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<l;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 filu : "; cin>>file; fin.open(file); if(fin==NULL) { cout<<"File not open"; getch(); exit(1); } n=0; fin>>a[n].name>>a[n].S>>a[n].H>>a[n].Year>>a[n].Summa; while(fin.good()) { n++; fin>>a[n].name>>a[n].S>>a[n].H>>a[n].Year>>a[n].Summa; } fin.close(); } //Программа 3// void buildings::outputfile() { int i; cout<<setw(12)<<"Name"<<setw(10)<<"# Telefony"<<setw(15)<<"# Budunky"<<setw(20)<<"God rojdenija"<<setw(12)<<"# Kvartyry"<<endl; for(i=0;i<n;i++) cout<<setw(12)<<a[i].name<<setw(11)<<a[i].S<<setw(14)<<a[i].H<<setw(10)<<a[i].Year<<setw(14)<<a[i].Summa<<endl; } //Программа 4// void buildings::sort_chisl_1() { int fl,i,l; building t; l=n-1; do { fl=0; for(i=0;i<l;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; } //Программа 5// void buildings::sort_chisl_2() { int fl,i,l; building t; l=n-1; do { fl=0; for(i=0;i<l;i++) if(a[i].H>a[i+1].H) { 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<l;i++) if(a[i].Year>a[i+1].Year) { 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<l;i++) if(a[i].Summa>a[i+1].Summa) { 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?"<<endl<<"Yes(press 1),No(press 0)"; 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"<<endl<<"programm to be finished"; getch(); exit(1); } } int i; for(i=0;i<n;i++) out<<setw(10)<<a[i].name<<setw(10)<<a[i].S<<setw(10)<<a[i].H<<setw(13)<<a[i].Year<<setw(13)<<a[i].Summa<<endl; cout<<endl; } //Программа 9 // void buildings::redaktirovanie() { int c,r; cout<<"Vvedite nomer stroki abonenta,kotoruiu nujno otredaktirovat:"<<endl; cin>>c; cout<<a[c-1].d<<"."<<a[c-1].name<<" "<<a[c-1].S<<" "<<a[c-1].H<<" "<<a[c-1].Year<<" "<<a[c-1].Summa<<endl; cout<<"Izmenit nomer? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"Nomer:"<<endl; cin>>a[c-1].d; } cout<<"Izmenit name? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"Name:"; cin>>a[c-1].name; } cout<<"Izmenit # Telefony? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"# Telefony:"; cin>>a[c-1].S; } cout<<"Izmenit # Budunky? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"# Budunky"; cin>>a[c-1].H; } cout<<"Izmenit God rojdenija? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"God rojdenija:"; cin>>a[c-1].Year; } cout<<"Izmenit # Kvartyry? (1 Da/0 Net):"<<endl; cin>>r; if(r) { cout<<"# Kvartyry:"; cin>>a[c-1].Summa; } cout<<endl; cout<<"Redaktirovanie zaversheno!!!"<<endl; return; } //Программа 10// void buildings::udalenie() { int i,c; cout<<"Vvedite nomer stroki abonenta,kotoruiu neobhodimo udalit:"<<endl; cin>>c; if (c>n) cout<<"Dannaia stroka v base dannih otsutstvuet"<<endl; else { cout<<a[c-1].d<<"."<<a[c-1].name<<" "<<a[c-1].S<<" "<<a[c-1].H<<" "<<a[c-1].Year<<" "<<a[c-1].Summa<<endl; for (i=c;i<=n;i++) { a[i-1] = a[i]; } cout<<"Stroka "<<c<<" udalena!!!"<<endl; n=n-1; } return; } //Программа11// void buildings::add() { struct building x; cout<<"Vvedite dannie novogo abonenta:"<<endl; cout<<n+1<<"."; cout<<"Nomer:"<<endl; cin>>x.d; cout<<"Name:"; cin>>x.name;
Антиботан аватар за замовчуванням

09.09.2013 10:09-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!