Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Робота із файлами. 
Структури

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

Функція puts («Рядок»); — призначена для виведення на екран рядок символів і переводить курсор на початок наступного рядка екрана. В якості параметра функції можно використо-вувати рядкову константу або рядкову змінну. Ця функція зберігається у бібліотеці. В програмі для того, щоб на екран вивести прізвища складальників і загальну кількість делатей, зібраних за тиждень для ділянки ХХ, необхідно… Читати ще >

Робота із файлами. Структури (реферат, курсова, диплом, контрольна)

КУРСОВА РОБОТА

на тему:

«Робота з файлами. Структури»

Постановка задачі

Мета курсової роботи розробити програму на мові С. Програма повинна створювати файл, зчитувати дані з файлу, додавати інформацію до файлу, виводити таку інформацію: прізвища складальників та кількість деталей, за вказаними у завданні показниками, прізвище складальника, який зібрав найбільше деталей за вказаними у завданні показниками.

Опис структури даних та вимог до них

програма користувач файл процедура

Дані, які є вхідними для розв’язання задачі і вводяться за допомогою клавіатури — це вибір режиму роботи із представлених можливих:

0 — Створення файлу і додавання інформації про працівників (підрахунок кількості деталей);

1 — Загальна кількість деталей (використовуючи інформацію з завчасно створеного файлу);

2 — Кількість деталей за тиждень на конкретній дільниці;

3 — Вихід з програми.

(змінна v, типу int, діапазон можливих значень від 1 до 3);

Номер дільниці (змінні n, d типу int, діапазон можливих значень від 1 до 10);

Вибір файлу для зчитування (змінна h, типу int, діапазон можливих значень від 1 до 2);

Опис файлів та їх призначення

Файл, що необхідний для роботи програми і містить вхідні данні має ім'я «baza.txt». Він містить дані про прізвища складальників, кількість деталей вироблених кожним із них за кожен із робочих днів і необхідні для роботи програми.

З цього файлу будуть зчитані дані у форматі char та int, що необхідні для роботи програми.

Файл складається з восьми записів, які мають наступну структуру:

· прізвище складальника;

· номер ділянки;

· кількість виробів зібраним ним за понеділок;

· кількість виробів зібраним ним за вівторок;

· кількість виробів зібраним ним за середу;

· кількість виробів зібраним ним за четвер;

· кількість виробів зібраним ним за п’ятницю;

· кількість виробів зібраним ним за суботу;

Рисунок 1. Файл «baza.txt»

Файл, що містить код програми на мові С має ім'я «detali.cpp».

#include

#include

#include

#include

#include

typedef struct data

{

char surname[16];

int dil;

int pon;

int vtor;

int sred;

int chetv;

int patn;

int syb;

} DATA;

void s ();

void summa_det ();

void kol_det ();

int i;

int n, v, h, d;

int arifmsum[3];

int max=0;

DATA x[3];

void main ()

{

clrscr ();

puts («ttt Kyrsovaj rabotanttt studentki gryppu IN-03nttt Slipneva Janann»);

b:;

puts («tttVuberite nugnuj variantnt 0-Sozdanie faila s informaciej o rabochix (podschet kolichestva detalej) nt 1-Obschee kolichestvo detalej (ispolzya info iz zaranee sozdanogo faila) nt 2 — Kolichestvo detalej za nedely na konkretnom ychastkent 3 — vuxod iz programmun»);

scanf («%i»,&v);

switch (v)

{

case 0:

s ();

case 1:

summa_det ();

getch ();

goto b;

break;

case 2:

kol_det ();

getch ();

goto b;

break;

case 3:

break;

}

}

void s ()

{

puts («vvedite bazy»);

FILE *f;

f=fopen («G:\baz.txt», «a+»);

for (i=0; i<3; i++)

{

scanf («%s % i % i % i % i % i % i % i»,&x[i]. surname,&x[i].dil,&x[i].pon,&x[i].vtor,&x[i].sred,&x[i].chetv,&x[i].patn,&x[i].syb);

fprintf (f, «%s % i % i % i % i % i % i % in», x[i]. surname, x[i]. dil, x[i]. pon, x[i]. vtor, x[i]. sred, x[i]. chetv, x[i]. patn, x[i]. syb);

}

fclose (f);

}

void summa_det ()

{

if (v==1)

{

FILE *fix;

fix=fopen («G:\baza.txt», «r»);

for (i=0; i<3; i++)

{

fscanf (fix, «%s % i % i % i % i % i % i % i»,&x[i]. surname,&x[i].dil,&x[i].pon,&x[i].vtor,&x[i].sred,&x[i].chetv,&x[i].patn,&x[i].syb);

printf («%s % i % i % i % i % i % i % in», x[i]. surname, x[i]. dil, x[i]. pon, x[i]. vtor, x[i]. sred, x[i]. chetv, x[i]. patn, x[i]. syb);

}

fclose (fix);

}

else

{

FILE *f;

f=fopen («G:\baz.txt», «r»);

for (i=0; i<3; i++)

{

fscanf (f, «%s % i % i % i % i % i % i % i»,&x[i]. surname,&x[i].dil,&x[i].pon,&x[i].vtor,&x[i].sred,&x[i].chetv,&x[i].patn,&x[i].syb);

}

fclose (f);

}

for (i=0; i<3; i++)

{

arifmsum[i]=(x[i]. pon+x[i].vtor+x[i].sred+x[i].chetv+x[i].patn+x[i].syb);

printf («Obshee kol detalej za ned =%in», arifmsum[i]);

}

printf («Vvedite ychastokn»);

scanf («%i»,&n);

printf («na ychstke %i sobrano detalej: n», n);

for (i=0; i<3; i++)

{

if (x[i]. dil==n)

{

printf («%s % in», x[i]. surname, arifmsum[i]);

}

}

}

void kol_det ()

{

puts («Vuberite fail n 1 — fail kotoruj bul yge sozdann 2-novuj failn»);

scanf («%i»,&h);

if (h==1)

{

FILE*fout;

fout=fopen («G:\baza.txt», «r»);

for (i=0; i<3; i++)

{

fscanf (fout, «%s % i % i % i % i % i % i % i»,&x[i]. surname,&x[i].dil,&x[i].pon,&x[i].vtor,&x[i].sred,&x[i].chetv,&x[i].patn,&x[i].syb);

}

fclose (fout);

}

if (h==2)

{

FILE*fly;

fly=fopen («G:\baz.txt», «r»);

for (i=0; i<3; i++)

{

fscanf (fly, «%s % i % i % i % i % i % i % i»,&x[i]. surname,&x[i].dil,&x[i].pon,&x[i].vtor,&x[i].sred,&x[i].chetv,&x[i].patn,&x[i].syb);

}

fclose (fly);

}

for (i=0; i<3; i++)

{

arifmsum[i]=(x[i]. pon+x[i].vtor+x[i].sred+x[i].chetv+x[i].patn+x[i].syb);

}

puts («Vvedite ychastok»);

scanf («%i»,&d);

for (i=0; i<3; i++)

{

if (x[i]. dil==d)

{

if (arifmsum[i]>max)

{

max=arifmsum[i];

}

printf («naibolshoe kolichestvo detalej na % i ychastke sobral % s =%i», d, x[i]. surname, arifmsum[i]);

}

}

}

Опис процедур та функцій користувача

У процесі виконання курсової роботи було створено декілька математичних формул.

В програмі для того, щоб на екран вивести прізвища складальників і загальну кількість делатей, зібраних за тиждень для ділянки ХХ, необхідно додати всі зібрані деталі, всіх працівників за тиждень, в коді програми суму всіх деталей позначаємо arifmsum типу int.

Формула, за якою підраховується сума зібраних деталей всіх працівників за тиждень:

arifmsum[i]=(x[i]. pon+x[i].vtor+x[i].sred+x[i].chetv+x[i].patn+x[i].syb);

Вхідними даними для цієї формули є: x[i]. pon (кількість зібраних деталей за понеділок); x[i]. vtor (кількість зібраних деталей за вівторок) типу int; x[i]. sred (кількість зібраних деталей за середу) типу int; x[i]. chetv (кількість зібраних деталей за четвер) типу int; x[i]. patn (кількість зібраних деталей за п’ятницю) типу int; x[i]. syb (кількість зібраних деталей за суботу) типу int.

Вихідними даними для цієї формули є результат суми зібраних деталей всіх працівників за тиждень. Програма видасть результат типу int.

В програмі для того, щоб на екран вивести прізвище складальника, що

зібрав за тиждень найбільшу кількість деталей для ділянки ХХ, необхідно створити цикл і перевірити відповідність введеного номеру ділянки з номером у файлі. Якщо співпадають, то знаходимо найбільшу кількість виготовлених деталей та виводимо на екран.

puts («Vvedite ychastok»);

scanf («%i»,&d);

for (i=0; i<3; i++)

{

if (x[i]. dil==d)

{

if (arifmsum[i]>max)

{

max=arifmsum[i];

}

printf («naibolshoe kolichestvo detalej na % i ychastke sobral % s =%i», d, x[i]. surname, arifmsum[i]);

}

}

Вхідними даними для цього циклу є: x[i]. dil (номер ділянки) типу int.

Вихідними даними для цієї формули є виведення на екран прізвища складальника, що зібрав за тиждень найбільшу кількість деталей для ділянки ХХ. Програма видасть результат типу char.

Опис стандартних процедур та функцій, що використовувались у програмі

Функції введення / виведення

Функція printf («рядок формату», список аргументів); - призначена для виведення інформації за заданим форматом у стандартний вихідний потік. Рядок формату задається в рядку форматування, яка крім специфікатора формату може містити текст і керуючі символи. Значення першого аргументу виводиться відповідно з першим специфікатором формату, другий — з другим, і т.д. Ця функція зберігається у бібліотеці .

Функція scanf («рядок формату», список адрес аргументів); ;

призначена для введення з клавіатури значення аргументів, в співвідношенні з вказаними специфікатором формату. Перший аргумент отримує значення в співвідношенні з першим специфікатором формату, другий — з другим і т.д. Ця функція зберігається у бібліотеці .

Функція puts («Рядок»); - призначена для виведення на екран рядок символів і переводить курсор на початок наступного рядка екрана. В якості параметра функції можно використо-вувати рядкову константу або рядкову змінну. Ця функція зберігається у бібліотеці .

Функція getch(); - повертає код символу натиснутій клавіші. Ця функція зберігається у бібліотеці .

Функція clrscr(); - очищає екран. Ця функція зберігається у бібліотеці .

Функції роботи з файлами

Функція FILE* fopen («Ім'я файлу», «режим обміну даними»); — відкриває файл з вказаним ім'ям для дії, яка задається параметром «режим обміну даними». Ця функція зберігається у бібліотеці .

Функція fscanf (ім'я потоку, «рядок формату», список адрес аргументів); - виконує форматоване читання значення змінних з файлу, який зв’язаний з потоком, вказаним в якості першого параметра. Ця функція зберігається у бібліотеці .

Функція fclose (ім'я потоку); - закриває вказаний поток. Ця функція зберігається у бібліотеці .

Функції вибору

Інструкція if

Варіант 1

if (Умова)

{

// Тут інструкції, які будуть

// виконані, якщо значення

// умови не рівне нулю

}

Варіант 2

if (Умова)

{

// Тут інструкції, які будуть

// виконані, якщо значення

// Умови не рівне нулю

}

else

{

// Тут інструкції, які будуть

// виконані, якщо значення

// Умови рівне нулю

}

Інструкція switch

Варіант 1

switch (вираз)

{

case константа1: інструкція1; break;

case константа2: інструкція1; break;

case константаN: інструкціяN; break;

default: інструкція; break;

}

Варіант 2

switch (вираз)

{

case константа1: інструкція1; break;

case константа2: інструкція1; break;

case константаN: інструкціяN; break;

}

Цикли

Інструкція for (ініціалізація; перевірка умови; нове значення)

{

// інструкції цикла (тіло цикла)

}

Ініціалізація — інструкція ініціалізації лічильника циклу.

Перевірка умови — вираз, значення якого визначає умову виконання інструкцій циклу. Інструкції цикла виконуються доти, доки Перевірка умови істина, тобто відмінна від нуля.

Нове значення — інструкція зміни параметрів циклу.

Инструкция while (Логічний вираз)

{

// тіло

}

Спочатку перевіряється значення логічного виразу. Якщо воно відмінне від нуля, то виконується тіло функції. Потім знову перевіряється значення логічного виразу, якщо воно відмінне від нуля, то виконується тіло функції ще раз. И так доти, доки Логічний вираз не стане рівним нулю.

Інструкція для роботи з програмою: системному програмісту, користувачу

Для запуску програми необхідно запустити файл «detali.cpp». Після запуску файлу з являється код програми. Для того, щоб запустити програму необхідно натиснути Ctrl+F9 або на панелі меню вибрати Run — > Run

Рисунок 2. Приклад запуску програми

Після цього, у з’явившомуся вікні:

Рисунок 3. Вікно програми

В меню вибираємо необхідний пункт за допомогою введення відповідного номера і натискаємо enter.

Натиснувши 0 — ми створимо новий файл з необхідними даними для роботи програми (baz.txt).

Для цього потрібно ввести прізвища складальників, номер ділянки, та кількість зібраних деталей протягом тижня.

Рисунок 4. Вікно програми, після обрання нульового пункту меню

Рисунок 5. Вікно програми, після обрання нульового пункту меню

Натиснувши 1 — програма буде зчитувати дані з заданого файлу (baza.txt).

Рисунок 6. Вікно програми, після обрання першого пункту меню

Рисунок 7. Вікно програми, після обрання першого пункту меню

Натиснувши 2 — програма нам видасть прізвище складальника, який зібрав найбільше деталей за тиждень на заданій дільниці.

Рисунок 8. Вікно програми, після обрання другого пункту меню

У разі натиснення іншої цифри чи літери, програма повідоме про помилку.

Приклад тестування та результату роботі програми

Вхідні данні, що необхідні для тестування програми:

Рисунок 6. Файл «baza.txt»

При записі таких даних отримуємо наступний результат:

Рисунок 7. Тестування програми

При створенні нового файлу, отримаємо наступний результат:

Рисунок 8. Створення нового файлу

Отримаємо наступний результат:

Рисунок 9. Тестування програми

Висновки

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

Список літератури

1. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. — М.: Мир, 1989. — 360 с.

2. Культин Н. С/С++ в задачах и примерах. — СП.: БХВ — Петербург, 2005. — 288 с.

3. Мик Б. Практическое руководство по программированию: Пер. с англ. — М.: Радио и связь, 1986. — 168 с.

4. Прата С., Мартин Д. Язык Си. Руководство для начинающих: Пер. с англ. — М.: Мир, 1988.-512 с.

5. Б. Керниган, Д. Ритчи — Язык программирования С, 2-е издание.: Пер.

с англ. — М.: Издательский дом «Вильямс», 2009 — 304 с.: ил. — парал. тит. англ.

6. З. Я. Шпак — Программирование на языке С. — Львов: Ориана-Нова,

2006, — 432 с.

7. Интернет ссылка http: http://ru.wikipedia.org/

Показати весь текст
Заповнити форму поточною роботою