Створення бази даних Стадіони міста на мові C

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

НИЖЕГОРОДСЬКИЙ ДЕРЖАВНИЙ

ТЕХНІЧНИЙ УНІВЕРСИТЕТ

СПЕЦІАЛЬНИЙ ФАКУЛЬТЕТ

Дисципліна: Інформатика

Курсова робота

Створення бази даних

Роботу виконав

студент групи ІВ

Перевірив викладач

Тежікова Н.П.

Нижній Новгород 2006

Завдання

Створити на мові C базу даних "Стадіони міста".

Поля: назву стадіону, рік будівництва, місткість, кількість майданчиків, види спорту.

Програма повинна здійснювати:

введення і запис даних у текстовий файл,

коригування введеної інформації,

вивід на екран списку всіх стадіонів (за алфавітом),

вивід на екран стадіонів, місткість яких перевищує зазначену

пошук стадіонів за заданим видів спорту.

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

Опис роботи програми

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

додавання запису;

видалення запису;

редагування запису;

виведення всіх стадіонів (за алфавітом);

висновок стадіонів за місткістю;

пошук стадіонів за видами спорту;

вихід з програми.

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

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

При виборі пункту 4 на екран виведуться всі записи. Упорядкування за алфавітом відбувається автоматично при створенні, видалення або редагуванні запису.

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

При виборі пункту 6, користувачеві надається введення виду спорту. Після цього на екран виведуться запису задовольняють умові. У програмі не враховується регістр букв, тому що всі рядки автоматично приводяться до верхнього регістру.

При виборі пункту сім, користувач підтверджує або скасовує вихід з програми.

Алгоритм роботи програми приведений у вигляді блок-схеми в додатку 1. Лістинг програми наведено в додатку 2.

Опис функцій програми

void save () - збереження бази даних у файл (C: \ Student \ 05 IS \ db. kp);

void alf () - упорядковує всі записи за назвою стадіонів за абеткою;

void prin (int i) - виводить на екран запис з номером i (нумерація йде з 0 елемента);

void prin _ all ()-виводить на екран всі записи;

void add () - додавання запису;

void remov () - видалення запису;

void edit () - редагування запису;

void prin _ vmes () - вивід на екран записів по місткості, які відповідають умові;

void find () - вивід на екран записів з видів спорту, що задовольняють умові;

Висновок

У результаті виконання завдання була створена програма, що повністю відповідає висунутим вимогам. Були реалізовані механізми додавання, редагування та видалення записів, всі перераховані в завданні режими пошуку і відображення даних. Організовано збереження та завантаження даних з текстового файлу. Для масиву, в якому повинні зберігатися дані, була описана структура.

Програми

Додаток 1

Алгоритм виконання програми:

Додаток 2

Лістинг програми:

# Include "stdio. H"

# Include "conio. H"

# Include "string. H"

# Include "time. H"

struct stadiums {

char Name [15];

short int D_cr;

int Sapacity;

short int C_pl;

char N_sp [10] [15];

};

stadiums s [100];

int Count, strok;

void save () {

FILE * f;

if (f == fopen ("C: \ \ Student \ \ 05IS \ \ db. kp", "w") == NULL) {

printf ("File coldn't create");

getch ();

return;

}

fwrite (& s, sizeof (s), 1, f);

fclose (f);

}

void alf () {

stadiums temp;

for (int i = 0; i <Count-1; i + +)

for (int j = i +1; j <Count; j + +)

if ((strcmp (strupr (s [j]. Name), strupr (s [i]. Name)) <0) | | (strcmp (s [i]. Name, "") == 0)) {

temp = s [j];

s [j] = s [i];

s [i] = temp;

}

return;

}

void prin_head () {

printf ("----------------------------------------------- ------------------------------ \ n ");

printf ("| | Name | Year stadium | Capacity | Amount | Sports | \ n");

printf ("----------------------------------------------- ------------------------------ \ n ");

return;

}

void prin (int i) {

char pr = '';

printf ("|% 2d |", i +1); strok + +;

printf ("% 15s |", s [i]. Name);

printf ("% 12d |", s [i]. D_cr);

printf ("% 8d |", s [i]. Sapacity);

printf ("% 6d |", s [i]. C_pl);

for (int j = 0; j <s [i]. C_pl; j + +) {

if (j == 0) printf ("% 15s | \ n", s [i]. N_sp [j]);

else if (strok! = 44) {

printf ("|% 2c |% 15c |% 12c |% 8c |% 6c |% 15s | \ n", pr, pr, pr, pr, pr, s [i]. N_sp [j]);

strok + +;

}

else {printf ("Press any key for continue"); getch (); clrscr (); strok = 0;}

}

printf ("----------------------------------------------- ------------------------------ \ n ");

strok + +;

return;

}

void prin_all () {

clrscr ();

prin_head ();

strok = 3;

for (int i = 0; i <Count; i + +) {

prin (i);

}

printf ("\ n");

return;

}

void add () {

tm * T; time_t tt; tt = time (NULL); T = localtime (& tt);

Count + +;

clrscr ();

printf ("\ n \ t \ t \ t \ tADD RECORD \ n");

printf ("Enter Name stadium (no more 15 symbols):");

scanf ("% s", s [Count-1]. Name);

strupr (s [Count-1]. Name);

do {

printf ("Enter Date of construction:");

scanf ("% d", & s [Count-1]. D_cr);

} While ((s [Count-1]. D_cr <1) | | (s [Count-1]. D_cr> (T-> tm_year +1900)));

do {

printf ("Enter sapacity of stadium:");

scanf ("% d", & s [Count-1]. Sapacity);

} While (s [Count-1]. Sapacity <1);

do {

printf ("Enter Amount platforms (no more 10):");

scanf ("% d", & s [Count-1]. C_pl);

} While (s [Count-1]. C_pl <1 | | s [Count-1]. C_pl> 10);

for (int i = 0; i <s [Count-1]. C_pl; i + +) {

printf ("Enter sport% d (no more 15 symbols):", i +1);

scanf ("% s", s [Count-1]. N_sp [i]);

strupr (s [Count-1]. N_sp [i]);

}

alf ();

printf ("New record is added \ n"); getch ();

return;

}

void remov () {

int num = 0;

clrscr ();

printf ("\ n \ t \ t \ t \ tREMOVE RECORD \ n");

prin_all ();

while (num <1 | | num> Count) {

printf ("Enter number record for edit:");

scanf ("% d", & num);

}

printf ("You have chosen record: \ n");

prin_head ();

prin (num-1);

printf ("Do you want remove record? (Y \ \ N) \ n");

if ((getch () == 'y') | | (getch () == 'Y')) {

strcpy (s [num-1]. Name, '\ 0');

s [num-1]. D_cr = 0;

s [num-1]. Sapacity = 0;

for (int i = 0; i <s [num-1]. C_pl; i + +)

strcpy (s [num-1]. N_sp [i], '\ 0');

s [num-1]. C_pl = 0;

alf ();

Count -;

printf ("Record is removed \ n"); getch ();

}

return;

}

void edit () {

tm * T; time_t tt; tt = time (NULL); T = localtime (& tt);

stadiums temp;

int num = 0, i;

clrscr ();

printf ("\ t \ t \ tEDIT RECORD \ n");

prin_all ();

while (num <1 | | num> Count) {

printf ("Enter number record for edit:");

scanf ("% d", & num);

}

clrscr ();

printf ("You have chosen record: \ n");

prin_head ();

prin (num-1);

printf ("Enter new Name stadium (no more 15 symbols):");

scanf ("% s", temp. Name);

strupr (temp. Name);

do {

printf ("Enter new Date of construction:");

scanf ("% d", & temp. D_cr);

} While ((temp. D_cr <1) | | (temp. D_cr> (T-> tm_year +1900)));

do {

printf ("Enter new Sapacity of stadium:");

scanf ("% d", & temp. Sapacity);

} While (temp. Sapacity <1);

do {

printf ("Enter new Amount platforms (no more 10):");

scanf ("% d", & temp. C_pl);

} While (temp. C_pl <1 | | temp. C_pl> 10);

for (i = 0; i <temp. C_pl; i + +) {

printf ("Enter new sport% d (no more 15 symbols):", i +1);

scanf ("% s", temp. N_sp [i]);

strupr (temp. N_sp [i]);

}

printf ("Do you want change record? (Y \ \ N) \ n");

if ((getch () == 'y') | | (getch () == 'Y')) {

strcpy (s [num-1]. Name, temp. Name);

s [num-1]. D_cr = temp. D_cr;

s [num-1]. Sapacity = temp. Sapacity;

s [num-1]. C_pl = temp. C_pl;

for (i = 0; i <temp. C_pl; i + +)

strcpy (s [num-1]. N_sp [i], temp. N_sp [i]);

alf ();

printf ("Record is changed \ n"); getch ();

}

return;

}

void prin_vmes () {int i, cap;

clrscr ();

printf ("\ t \ t \ tSEAL ON CAPACITY \ n");

printf ("Choose a kind: \ n");

printf ("1. = \ n");

printf ("2.> \ n");

printf ("3. <\ n");

printf ("4.> = \ n");

printf ("5. <= \ n");

switch (getch ()) {

case '1 ': printf ("Enter capacity (=):");

scanf ("% d", & cap);

prin_head ();

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

if (s [i]. Sapacity == cap) prin (i);

break;

case '2 ': printf ("Enter capacity (>):");

scanf ("% d", & cap);

prin_head ();

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

if (s [i]. Sapacity> cap) prin (i);

break;

case '3 ': printf ("Enter capacity (<):");

scanf ("% d", & cap);

prin_head ();

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

if (s [i]. Sapacity <cap) prin (i);

break;

case '4 ': printf ("Enter capacity (>=):");

scanf ("% d", & cap);

prin_head ();

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

if (s [i]. Sapacity> = cap) prin (i);

break;

case '5 ': printf ("Enter capacity (<=):");

scanf ("% d", & cap);

prin_head ();

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

if (s [i]. Sapacity <= cap) prin (i);

break;

}

getch ();

return;

}

void find () {char sport [15]; int i, j;

clrscr ();

printf ("\ t \ t \ tSEAL KIND OF SPORT \ n");

printf ("Enter sport (no more 15 symbols):");

scanf ("% s", sport);

prin_head ();

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

for (j = 0; j <s [i]. C_pl; j + +)

if (strcmp (strupr (s [i]. N_sp [j]), strupr (sport)) == 0) prin (i);

getch ();

return;

}

int main ()

{

clrscr ();

FILE * f; char c;

Count = 0;

if ((f = fopen ("C: \ \ Student \ \ 05IS \ \ db. kp", "rb")) == NULL) {

printf ("The file does not exist \ n");

fclose (f);

printf ("You want continue? (Y \ \ N) \ n");

c = getch ();

if ((c == 'n') | | (c == 'N')) return 1;

}

else {

fread (& s, sizeof (s), 1, f);

for (int i = 0; s [i]. D_cr! = 0; i + +) Count = i +1;

alf ();

}

fclose (f);

while (1) {

clrscr ();

printf ("--------------------------------- \ n ");

printf ("| Academic year project | \ n");

printf ("| on Computer science | \ n");

printf ("| - -----------------------------| \ n");

printf ("| To create a database | \ n");

printf ("| \" Stadiums of city \ "| \ n");

printf ("| Variant # 8 | \ n");

printf ("| Okunev Stanislav has executed | \ n");

printf ("--------------------------------- \ n ");

printf ("Menu: \ n");

printf ("1. Add record \ n");

printf ("2. Remove record \ n");

printf ("3. Edit record \ n");

printf ("4. Show all stadiums \ n");

printf ("5. Show stadiums on capacity \ n");

printf ("6. Search of stadiums by kinds of sports \ n");

printf ("7. Exit \ n");

printf ("Press key:");

c = getch ();

switch (c) {

case '1 ': add (); break;

case '2 ': remov (); break;

case '3 ': edit (); break;

case '4 ': prin_all (); getch (); break;

case '5 ': prin_vmes (); break;

case '6 ': find (); break;

case '7 ': printf ("\ nYou really want to leave? (Y \ \ N) \ n");

c = getch ();

if ((c == 'y') | | (c == 'Y')) {save (); return 1;}

}

}

return 0;

}

Додаток 3

Результати виконання програми:

Головне меню:

Додавання запису:

Вивести на екран список всіх стадіонів:

Вивести на екран стадіони по місткості:

Вивести на екран стадіони із зазначеного виду спорту:

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
28.4кб. | скачати


Схожі роботи:
Створення бази даних критичних властивостей речовин в редакторі баз даних MS Access
Розробка програми генерації тестів з бази даних на мові РНР
Створення бази даних
Створення бази даних РЕО ДАІ 2
Створення бази даних РЕО ДАІ
Створення бази даних РЕО-ДАІ
Створення бази даних для накладної
Створення бази даних для організації
Система баз даних MS Access Створення бази
© Усі права захищені
написати до нас