Інститут економіки та менеджменту “Галицька Академія”
КУРСОВА РОБОТА
з дисципліни ОСНОВИ ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ
Тема: Сформувати файл “ЕХ”, що містить відомості про експорт товарів такого зразка: порядковий номер запису, найменування, країна, обсяг поставок і вартість поставок. Переписати в файл “ЕХР” назви країн, експорт до яких перевищує 10 найменувань, і загальну вартість таких поставок. Вивести цю інформацію по бажанні користувача на екран. Забезпечити можливість поповнення файлу “ЕХ” з клавіатури, а також вилучення обраних по порядковому номеру записів. Після модифікації файлу “ЕХ” таблиця, яка виводиться на екран і файл “ЕХР” повинні оновлюватись автоматично. Забезпечити можливість відновлення попередньої версії модифікованого файлу.
Зміст
Вступ
Важливим етапом в розвитку програмування стало створення і широке розповсюдження мови С++. Ця мова, зберігши засоби, стала загальновизнаним стандартом для написання системних і прикладних програм мови С (процедурно-орієнтована мова), ввела в практику програмування можливості нового технологічного підходу до розробки програмного забезпечення, що одержало назву "об'єктно-орієнтоване програмування". Упровадження в практику програмування об'єктно-орієнтованої парадигми дає розвиток нових областей інформатики, значне підвищення рівня технологічності створюваних програмних засобів, скорочення витрат на розробку і впровадження програм, їх повторне використання, залучення в процес розширення інтелектуальних можливостей ЕОМ. Об'єктний підхід інформаційного моделювання наочних областей все більш успішно застосовується як основа для структуризації їх інформаційних віддзеркалень і, зокрема, баз знань.
С++ - це мова програмування загального призначення, добре відома своєю ефективністю, економічністю. Вказані переваги С++ забезпечують хорошу якість розробки майже будь-якого виду програмного продукту. Використання С++ як інструментальної мови дозволяє одержувати швидкі і компактні програми. У багатьох випадках програми, написані на С++, порівнянні за швидкістю з програмами, написаними на мові асемблера.
Перерахуємо деякі істотні особливості мови С++:
С++ забезпечує повний набір операторів структурного програмування;
С++ пропонує незвичайно великий набір операцій. Багато операцій С++ відповідають машинним командам і тому допускають пряму трансляцію в машинний код. Різноманітність операцій дозволяє вибирати їх різні набори для мінімізації результуючого коду;
С++ підтримує покажчики на змінні і функції. Покажчик на об'єкт програми відповідає машинній адресі цього об'єкту. За допомогою розумного використання покажчиків можна створювати ефективно виконувані програми, оскільки покажчики дозволяють посилатися на об'єкти тим же самим шляхом, як це робить ЕОМ. С++ підтримує арифметику покажчиків, і тим самим дозволяє здійснювати безпосередній доступ і маніпуляції з адресами пам'яті.
Проте, слід зазначити, що переваги мови С++ стають очевидними при реалізації великих програмних проектів.
1.Основні поняття мови С++
1.1Функція Main
Кожна програма написана на мові С++ повинна містити функцію main.
Тіло функції main, береться у фігурні дужки { }.
Загальна структура функції main така:
main()
{
/* Код, реалізуючий main */
}
1.2 Коментарі
Текст на С++, укладений в дужки /* і */, компілятором ігнорується. Коментарі служать двом цілям: документувати код і полегшити відладку. Якщо програма працює не так, як треба, то іноді виявляється корисним закоментувати частину коду (тобто винести її в коментар), наново скомпілювати програму і виконати її. Якщо після цього програма почне працювати правильно, то значить, закоментований код містить помилку і повинен бути виправлений.
1.3 Директиви Include
У більшість програм на С++ підставляються один або декілька
файлів, в основному в самий початок коду головної функції main.
Поява директив
#include <файл_1>
#include "файл_2"
...
#include <файл_n>
призводить до того, що препроцесор підставляє на місце цих директив тексти файлів файл_1, файл_2 ..., файл_n відповідно.
Якщо ім'я файлу укладено в кутові дужки <...>, то пошук файлу проводиться в спеціальному розділі файлів, що підставляються. На відміну від багатьох інших операторів С++ директива Include не повинна закінчуватися крапкою з комою.
1.4 Макро
За допомогою директиви #define, вслід за якою пишуться ім'я макро і значення макро, виявляється можливим вказати препроцесору, щоб він при будь-якій появі в початковому файлі на С++ даного імені макро замінював це ім'я на відповідні значення макро.
Наприклад, директива
#define pi 3.1415926
зв'язує ідентифікатор pi із значенням 3.1415926. Після значення макро (;) не ставиться.
1. 5 Типи даних
У С++ змінні повинні бути описані, а їх тип специфіковані до того, як ці змінні будуть використані.
При описі змінних застосовується префіксний запис, при якому спочатку вказується тип, а потім - ім'я змінної.
Наприклад:
float weight;
int exam_score;
char ch;
Змінні можна ініціалізувати в місці їх описів.
Приклад:
int height = 71 ;
2 Код програми
#include <conio.h>
#include <stdio.h>
#include <string.h>
struct stItem
{
char sName[16];
char sCountry[16];
int iCount;
int iSum;
stItem *next;
};
struct stItem *first,*rob;
int records;
void addrecord()
{
char string[100];
int i;
char q;
clrscr();
printf("\nНазва: ");
scanf("%s",string);
strncpy(rob->sName,string,15);
printf("Країна: ");
scanf("%s",string);
strncpy(rob->sCountry,string,15);
printf("К-ть: ");
scanf("%i",&rob->iCount);
printf("Сума: ");
scanf("%i",&rob->iSum);
rob->next=new stItem;
rob=rob->next;
rob->next=NULL;
records++;
}
void deleterecord(void)
{
int del,i=0;
clrscr();
printf("Введiть номер запису для вилучення:");
scanf("%i",&del);
if ((del<1)||(del>records)) return;
if (del==1) {
first=first->next;
} else {
rob=first;
while(rob->next!=NULL)
{
i++;
if (i==(del-1)) {
rob->next=(rob->next)->next;
break;
}
rob=rob->next;
}
}
records--;
return;
}
void showrecords(void)
{
int i=0;
clrscr();
rob=first;
printf("%-4s %-16s %-16s %-5s %-5s\n","N","Назва",
"Країна","К-ть","Сума");
printf("---------------------------------------------\n");
while(rob->next!=NULL)
{
printf("%-4i %-16s %-16s %-5i %-5i\n",
++i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);
rob=rob->next;
}
records=i;
printf("\nНатиснiть будь-яку клавiшу для продовження...");
getch();
};
void showmatch(void)
{
int i=0,flag;
long sum=0;
char *c;
FILE *out;
if ((out = fopen("EXP", "w+"))
== NULL)
{
printf("Cannot create file 'EXP'.\n");
return;
};
rob=first;
printf("%-4s %-16s %-16s %-5s %-5s\n","N","Назва",
"Країна","К-ть","Сума");
printf("---------------------------------------------------\n");
while(rob->next!=NULL)
{
i++;
if (rob->iCount>10) {
printf("%-4i %-16s %-16s %-5i %-5i\n",
i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);
fprintf(out,"%-4i %-16s %-16s %-5i %-5i\n",
i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);
sum+=rob->iSum;
}
rob=rob->next;
}
printf("\nСума = %li \n",sum);
fprintf(out,"\nСума = %li \n",sum);
fclose(out);
};
int save_to_file(char *filename)
{
FILE *out;
int i=0;
if ((out = fopen(filename, "w+"))
== NULL)
{
printf("Cannot create file '%s'.\n",filename);
return 1;
}
rob=first;
while(rob->next!=NULL)
{
fprintf(out,"%-4i %-16s %-16s %-5i %-5i\n",
++i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);
rob=rob->next;