Приём заказов:
Круглосуточно
Москва
ул. Никольская, д. 10.
Ежедневно 8:00–20:00
Звонок бесплатный

Создание базы данных

Диплом777
Email: info@diplom777.ru
Phone: +7 (800) 707-84-52
Url:
Логотип сайта компании Диплом777
Никольская 10
Москва, RU 109012
Содержание

Федеральное Агентство по образованию.

ГОУ ВПО Московский государственный открытый университет.

Чебоксарский институт (филиал).

КАФЕДРА

Информационных технологий и программирования

Специальность 220201

Курс II (сокращенный).

Отделение: заочное.

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

по дисциплине:

Программирование и основы алгоритмизации

Тема: «Создание базы данных»

Вариант 19

Дата проверки:

Выполнила студентка:

Сергеева С.А.

Результат проверки:

Учебный шифр:

607079

Содержание:

1. Постановка задач

2. Уточнение поставленных задач

2.1 Язык программирования

2.2 Способ хранения данных

2.3 Назначение типов для данных

3. Подробная структура 1 и 2-ой таблицы

4. Текст программы

5. Блок-схемы к запросам

6.Системные требования

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

1. Постановка задач

Целью курсовой работы: закрепление теоретических знаний, полученных по данному курсу и смежным дисциплинам, освоение современных методов и средств программирования.

Задание:

I. Создать базу данных, включая две таблицы: «Сотрудники технического бюро» и «Проекты и разработки».

В структуре первой таблицы должны быть следующие поля:

1. Порядковый (табельный) номер.

2. Ф.И.О. сотрудника.

3. Пол сотрудника.

4. Адрес сотрудника.

5. Домашний телефон.

6. Стаж работы.

7. Дата рождения.

8. Образование.

9. Какое учебное заведение окончил.

10. Область техники.

11. Количество проектов.

12. Оклад.

13. Количество детей.

В структуре второй таблицы должны быть следующие поля:

1. Ф.И.О. сотрудника

2. Наименование проекта или разработки

3. Тип (проект или разработка)

4. Дата начала создания проекта или разработки

5. Дата завершения проекта или разработки

6. Полученный эффект в рублях.

7. Тип эффекта ( технический или экономический)

II. Заполнить информацией обе таблицы, содержащие каждая не менее 20 записей. При занесении информации в БД необходимо учесть возможность выполнения каждого запроса из III-го пункта задания. Учесть также, что в первой таблице записи с одним сотрудником не повторяются, а во второй – повторяются, т.к. один сотрудник технического бюро может иметь несколько проектов и разработок.

III. Получить отчет на экран монитора по заданным запросам :

а) Вывести список всех улиц, в которых проживают сотрудники, в алфавитном порядке.

б) Отобрать сотрудников, окончивших конкретное учебное заведение.

в) Отобрать сотрудников, имеющих эффект от разработок свыше 100 тыс.руб.

г) Вывести список сотрудников по суммарному эффекту в порядке убывания

IV. Составить алгоритмы выполнения каждого запроса в виде R – схемы.

V. Составить отчет по курсовой работе, отражающий все этапы создания БД, тестирования программной продукции с распечаткой всех используемых форм, R – схем по выполненным запросам и программных кодов в виде модулей.

2. Уточнение поставленных задач

2.1 Язык программирования

Для создания базы данных и дальнейшего выполнения запросов по выше перечисленным параметрам я пользовалась языком программирования С++.

Язык С++ представляет собой комбинацию языка высокого уровня и ассемблера. Программа (база данных) была создана в интегрированной среде (Turbo C++ version 3.1), среда была разработана фирмой Borland для упрощения процесса создания программ и их отладки.

2.2 Способ хранения данных

Все данные которая использует программа хранятся в 2-х текстовых файлах TAB1.rd (первая таблица) и TAB2.rd (вторая таблица). Данные хранятся в файлах поочередно через пробелы. В одной строке не может содержаться данные более чем одного сотрудника.

2.3 Назначение типов для данных

Для считывания данных создается структура tab1 и tab2 которые в дальнейшем указываются как массивы. И затем данные из файла считываются построчно как элементы этого массива, пока файл не достигнет конца (см. текст программы.).

3. Подробная Структура 1-ой таблицы (struct tab1)

Таблица 1

Наименование поля

Расшифровка поля

Кол-во бит

Тип в C++

nomer

Фамилия

null-terminated string

char*

fam

Имя

null-terminated string

char*

och

Отчество

null-terminated string

char*

pol

Пол

null-terminated string

char*

gor

Город

null-terminated string

char*

ulic

Улица

null-terminated string

char*

dk

Дом/Квартира

null-terminated string

char*

tel

Домашний телефон

null-terminated string

char*

staj

Стаж

null-terminated string

char*

rojd

Дата рождения

obraz

Образование

null-terminated string

char*

ucheb

Оконченное учебное заведение

null-terminated string

char*

obteh

Область техники

null-terminated string

char*

proek

Кол-во проектов

1 bytes

int

okl

Оклад

4 bytes

long

deti

Кол-во детей

1 byte

int

Подробная Структура 2-ой таблицы (struct tab2).

Таблица 2

Наименование поля

Расшифровка поля

Кол-во бит

Тип в C++

fam

Фамилия

null-terminated string

char*

im

Имя

null-terminated string

char*

och

Отчество

null-terminated string

char*

raz

Наименование

null-terminated string

char*

tip

Тип

null-terminated string

char*

Дата начала

ndat

День

1 byte

int

nmes

Месяц

1 byte

int

ngod

Год

1 bytes

int

Дата завершения

kdat

День

1 byte

int

kmes

Месяц

1 byte

int

kgod

Год

1 bytes

int

eff

Эффект

4 bytes

long

tef

Тип эффекта

null-terminated string

unsigned char

4. Текст программы

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

struct tab1 // структура первой таблицы

{

char nomer[15]; char fam[15];

char im[15]; char och[15];

char pol[5]; char gor[20];

char ulic[20]; char dk[10];

char tel[50]; char staj[20];

char rojd[15]; char obraz[30];

char ucheb[15]; char obteh[30];

int proek; long okl;

int deti;

};

struct tab2 // структура второй таблицы

{

char fam[20]; char im[20];

char och[20]; char raz[70];

char tip[15]; int nden;

int nmes; int ngod;

int kden; int kmes; int kgod;

long eff; char tef[20];

};

tab1 a[100];

tab1 z;

tab2 b[100];

tab2 q;

FILE *Inp, *Inp2; // указатели на поток

int s,k; //Глобальные переменные, им будет присваиваться значение количества строк структурных массивов.

void scantab() // Процедура чтения таблиц

{

int i,j,z;

// фаил открывается для чтения с дозаписью

Inp=fopen (“tab1.rd”, “r+”);

i=0;

//Чтение первой таблицы идет пока файл не достигнет конца

while (!feof(Inp))

{

fscanf (Inp, “%s”, &a[i].nomer);

fscanf (Inp, “%s”, &a[i].fam);

fscanf (Inp, “%s”, &a[i].im);

fscanf (Inp, “%s”, &a[i].och);

fscanf (Inp, “%s”, &a[i].pol);

fscanf (Inp, “%s”, &a[i].gor);

fscanf (Inp, “%s”, &a[i].ulic);

fscanf (Inp, “%s”, &a[i].dk);

fscanf (Inp, “%s”, &a[i].tel);

fscanf (Inp, “%s”, &a[i].staj);

fscanf (Inp, “%s”, &a[i].rojd);

fscanf (Inp, “%s”, &a[i].obraz);

fscanf (Inp, “%s”, &a[i].ucheb);

fscanf (Inp, “%s”, &a[i].obteh);

fscanf (Inp, “%d”, &a[i].proek);

fscanf (Inp, “%ld”, &a[i].okl);

fscanf (Inp, “%d”, &a[i].deti);

i++;

};

s=i;

Inp2=fopen (“tab2.rd”, “r+”); i=0;

//Чтение второй таблицы идет пока файл не достигнет конца

while (!feof(Inp2))

{

fscanf (Inp2, “%s”, &b[i].fam);

fscanf (Inp2, “%s”, &b[i].im);

fscanf (Inp2, “%s”, &b[i].och);

fscanf (Inp2, “%s”, &b[i].raz);

fscanf (Inp2, “%s”, &b[i].tip);

fscanf (Inp2, “%d”, &b[i].nden);

fscanf (Inp2, “%d”, &b[i].nmes);

fscanf (Inp2, “%d”, &b[i].ngod);

fscanf (Inp2, “%d”, &b[i].kden);

fscanf (Inp2, “%d”, &b[i].kmes);

fscanf (Inp2, “%d”, &b[i].kgod);

fscanf (Inp2, “%ld”, &b[i].eff);

fscanf (Inp2, “%s”, &b[i].tef);

i++;

};

k=i;

}

void printlist () // процедура вывода на экран списка сотрудников

{

int i;

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

{

textcolor (6);

cprintf (“%s “, a[i].nomer);

printf (“%s “, a[i].fam);

printf (“%s “, a[i].im);

printf (“%s”, a[i].och); textcolor (9);

gotoxy (50, i+1); cprintf (“Kol-vo proektov : %dnr”, a[i].proek);

}

}

void swapb(int &j) //процедура меняющая элементы местами в структурном массиве b;

{

q=b[j];

b[j]=b[j+1];

b[j+1]=q;

}

void swapa(int &j) //процедура меняющая элементы местами в структурном массиве a;

{

z=a[j];

a[j]=a[j+1];

a[j+1]=z;

}

void sort1() // Процедура первого запроса

{

int i,j;

textcolor (10);

cprintf (“Sortirovka po ulicam progivaniya !!!nnr”);

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

for (j=0; j<(s-1); j++)

// сортировка методом «пузырька» в алфавитном порядке

if (strcmp(a[j].ulic, a[j+1].ulic)>0) swapa(j);

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

{

textcolor (6);

cprintf (“%s “, a[i].nomer);

printf (“%s “, a[i].fam);

printf (“%s “, a[i].im);

printf (“%s”, a[i].och); textcolor (9);

gotoxy (50, i+3); cprintf (“%snr”, a[i].ulic);

}

}

void sort2() // Процедура второго запроса

{

int i,j=3;

char w[10];

textcolor (10);

cprintf (“Vvedite Uchebnoe zavedinie (Primer: MGOU) : “);

scanf (“%s”, &w);

textcolor (11);

clrscr ();

textcolor (10);

cprintf (“Sotridniki okonchivshie %s !!!nnr”, w);

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

if (strcmp(a[i].ucheb,w)==0) //сравнение названия учебного заведения с нами введенным

{

textcolor (6);

cprintf (“%s “, a[i].nomer);

printf (“%s “, a[i].fam);

printf (“%s “, a[i].im);

printf (“%s”, a[i].och); textcolor (9);

gotoxy (50, j++); cprintf (“%snr”, a[i].ucheb);

}

}

void sort3() // Процедура третьего запроса

{

int i,j=1,x;

x=3;

textcolor (10);

cprintf (“Sotrudniki imeyushie effect ot razrabotok > 100000 p. !!!nnr”);

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

if (b[i].eff>=100000)

{

textcolor (6);

cprintf (“%d) “,j++);

printf (“%s “, b[i].fam);

printf (“%s “, b[i].im);

printf (“%st”, b[i].och);

gotoxy (50, x); printf (“Effect = %ld p.nt”, b[i].eff);

textcolor (9);

cprintf (“Nazvanie Proekta/Razrabotki : “);

cprintf (“%snnr”, b[i].raz); x=x+3;

}

}

void sort4() // Процедура третьего запроса

{

int i,j,l;

long e;

textcolor (10);

cprintf (“Sortirovka po sumarnomu effektu !!!nnr”);

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

for (j=0; j<(k-1); j++)

if (strcmp(b[j].fam, b[j+1].fam)<0) swapb (j);

i=0; j=0;

while (i<k)

{

e=b[i].eff;

i++;

{

// счетчик суммарного эффекта

while (strcmp(b[i].fam, b[i-1].fam)==0 &&

strcmp(b[i].im, b[i-1].im)==0 &&

strcmp(b[i].och, b[i-1].och)==0)

{

e=e+b[i].eff;

i++;

}

b[j]=b[i-1]; b[j].eff=e; j++; l=j;

}

}

j=0;

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

for (j=0; j<(l-1); j++)

// сортировка суммарного эффекта в порядке возрастания

if (b[j].eff<b[j+1].eff) swapb(j);

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

{

printf (“%s “, b[i].fam);

printf (“%s “, b[i].im);

printf (“%s”, b[i].och);

textcolor (9); gotoxy (50, i+3); cprintf (“Summarniy Effect = %ld p.nr”, b[i].eff);

}

}

int dobsotr()

{

int i;

textcolor (10);

cprintf (“Dobavleniennie Sotridnika !!!nnr”);

printf (“Tabelniy nomer sotrudnika (Primer: #001) : “);

scanf (“%s”, &a[s].nomer);

fprintf (Inp, “n%s “, a[s].nomer);

printf (“Familia : “);

scanf (“%s”, &a[s].fam);

fprintf (Inp, “%s “, a[s].fam);

printf (“Name : “);

scanf (“%s”, &a[s].im);

fprintf (Inp, “%s “, a[s].im);

printf (“Ochestvo : “);

scanf (“%s”, &a[s].och);

fprintf (Inp, “%s “, a[s].och);

printf (“Pol sotrudnika (m/g): “);

scanf (“%s”, &a[s].pol);

fprintf (Inp, “%s “, a[s].pol);

printf (“Gorod v kotorom progivaet sotrudnik (Primer: Cheboksari) : “);

scanf (“%s”, &a[s].gor);

fprintf (Inp, “%s “, a[s].gor);

printf (“Ulica na kotoroy progivaet sotrudnik (Primer: Afanas’eva) : “);

scanf (“%s”, &a[s].ulic);

fprintf (Inp, “%s “, a[s].ulic);

printf (“Nomer doma/Kvartira (Primer: 16/23) : “);

scanf (“%s”, &a[s].dk);

fprintf (Inp, “%s “, a[s].dk);

printf (“Domashniy telefon (Primer: 87-98-01) : “);

scanf (“%s”, &a[s].tel);

fprintf (Inp, “%s “, a[s].tel);

printf (“Staj Raboti (Primer: 5-let) : “);

scanf (“%s”, &a[s].staj);

fprintf (Inp, “%s “, a[s].staj);

printf (“Data rojdeniya (Primer: 20.10.1980) : “);

scanf (“%s”, &a[s].rojd);

fprintf (Inp, “%s “, a[s].rojd);

printf (“Obrazovanie (Primer: Visshee-teh) : “);

scanf (“%s”, &a[s].obraz);

fprintf (Inp, “%s “, a[s].obraz);

printf (“Kakoe uchebnoe zavedenie okonchil (Primer: MGOU) : “);

scanf (“%s”, &a[s].ucheb);

fprintf (Inp, “%s “, a[s].ucheb);

printf (“Oblast’ tehniki : “);

scanf (“%s”, &a[s].obteh);

fprintf (Inp, “%s “, a[s].obteh);

printf (“Kolichestvo proektov : “);

scanf (“%d”, &a[s].proek);

fprintf (Inp, “%d “, a[s].proek);

printf (“Oklad : “);

scanf (“%ld”, &a[s].okl);

fprintf (Inp, “%ld “, a[s].okl);

printf (“Kolichestvo detey : “);

scanf (“%d”, &a[s].deti);

fprintf (Inp, “%d”, a[s].deti);

if (a[s].proek>0)

{

textcolor (10);

cprintf (“nnOpisanie Proekta ili razrabotki !!!r”);

for (i=0; i<a[s].proek; i++)

{

fprintf (Inp2, “n%s “, a[s].fam);

fprintf (Inp2, “%s “, a[s].im);

fprintf (Inp2, “%s “, a[s].och);

printf (“nnNaimenovanie %d-ogo proekta ili razrabotki:n(Vvoditsa_bes_probelov): “,i+1);

scanf (“%s”, &b[k].raz);

fprintf (Inp2, “%s “, b[k].raz);

printf (“Tip (Proekt ili Razrabotka) : “);

scanf (“%s”, &b[k].tip);

fprintf (Inp2, “%s “, b[k].tip);

printf (“Data nachala sozdaniya proekta (Primer: 20 11 1999) : “);

scanf (“%d”, &b[k].nden);

fprintf (Inp2, “%d “, b[k].nden);

scanf (“%d”, &b[k].nmes);

fprintf (Inp2, “%d “, b[k].nmes);

scanf (“%d”, &b[k].ngod);

fprintf (Inp2, “%d “, b[k].ngod);

printf (“Data konca sozdaniya proekta (Primer: 01 10 2000) : “);

scanf (“%d”, &b[k].kden);

fprintf (Inp2, “%d “, b[k].kden);

scanf (“%d”, &b[k].kmes);

fprintf (Inp2, “%d “, b[k].kmes);

scanf (“%d”, &b[k].kgod);

fprintf (Inp2, “%d “, b[k].kgod);

printf (“Polucheniy effekt v rub. : “);

scanf (“%ld”, &b[k].eff);

fprintf (Inp2, “%ld “, b[k].eff);

printf (“Tip effecta (Tehnicheskiy ili Ekonomicheskiy) : “);

scanf (“%s”, &b[k].tef);

fprintf (Inp2, “%s”, b[k].tef);

k=k+1;

}

}

fcloseall (); // закрытие файлов для обновления списка после его перезаписи (добавления)

return 0;

}

void delsotr() // Процедура удаления из списка

{

int i,j,l;

char w[20],r[20],g[20];

Inp=fopen(“tab1.rd”, “w”); // открытие файлов для записи

Inp2=fopen (“tab2.rd”, “w”);

textcolor (10);

cprintf (“Vvedite F.I.O sotrudnika kotororo sleduet udalit’ iz bazi !!!nnr”);

printf (“Familiya : “);

scanf (“%s”, &w);

printf (“Ima : “);

scanf (“%s”, &r);

printf (“Ochestvo : “);

scanf (“%s”, &g);

j=0;

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

if (strcmp(a[i].fam,w)!=0 &&

strcmp(a[i].im,r)!=0 &&

strcmp(a[i].och,g)!=0)

{

a[j]=a[i]; j++;

}

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

{

fprintf (Inp, “%s “, a[i].nomer);

fprintf (Inp, “%s “, a[i].fam);

fprintf (Inp, “%s “, a[i].im);

fprintf (Inp, “%s “, a[i].och);

fprintf (Inp, “%s “, a[i].pol);

fprintf (Inp, “%s “, a[i].gor);

fprintf (Inp, “%s “, a[i].ulic);

fprintf (Inp, “%s “, a[i].dk);

fprintf (Inp, “%s “, a[i].tel);

fprintf (Inp, “%s “, a[i].staj);

fprintf (Inp, “%s “, a[i].rojd);

fprintf (Inp, “%s “, a[i].obraz);

fprintf (Inp, “%s “, a[i].ucheb);

fprintf (Inp, “%s “, a[i].obteh);

fprintf (Inp, “%d “, a[i].proek);

fprintf (Inp, “%ld “, a[i].okl);

if (i==(j-1))

fprintf (Inp, “%d”, a[i].deti);

else fprintf (Inp, “%dn”, a[i].deti);

}

s=s-1;

j=0;

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

if (strcmp(b[i].fam,w)!=0 &&

strcmp(b[i].im,r)!=0 &&

strcmp(b[i].och,g)!=0)

{

b[j]=b[i]; j++;

}

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

{

fprintf (Inp2, “%s “, b[i].fam);

fprintf (Inp2, “%s “, b[i].im);

fprintf (Inp2, “%s “, b[i].och);

fprintf (Inp2, “%s “, b[i].raz);

fprintf (Inp2, “%s “, b[i].tip);

fprintf (Inp2, “%d “, b[i].nden);

fprintf (Inp2, “%d “, b[i].nmes);

fprintf (Inp2, “%d “, b[i].ngod);

fprintf (Inp2, “%d “, b[i].kden);

fprintf (Inp2, “%d “, b[i].kmes);

fprintf (Inp2, “%d “, b[i].kgod);

fprintf (Inp2, “%ld “, b[i].eff);

if (i==(j-1))

fprintf (Inp2, “%s”, b[i].tef);

else fprintf (Inp2, “%sn”, b[i].tef);

}

k=j;

fcloseall (); // закрытие файлов для обновления списка после его перезаписи (удаления)

}

int main()

{

char let;

clrscr();

// Вывод на экран простейшего интерфейса

do

{

clrscr ();

textcolor (10);

cprintf (“Vibirite deystvie !!!nnr”);

textcolor (11);

cprintf (“[1] – Zapros #1nr”);

cprintf (“[2] – Zapros #2nr”);

cprintf (“[3] – Zapros #3nr”);

cprintf (“[4] – Zapros #4nr”);

cprintf (“[5] – Dobavit’ sotrudnikanr”);

cprintf (“[6] – Udalit’ sotrudnikanr”);

cprintf (“[7] – Spisok sotrudnikovnr”);

cprintf (“[0] – Quit program”);

scantab();

let=getch();

// Вызов процедур в зависимости от нажатой кнопки

switch (let)

{

case ‘1’ : clrscr() ; sort1 (); getch (); break;

case ‘2’ : clrscr() ; sort2 (); getch (); break;

case ‘3’ : clrscr() ; sort3 (); getch (); break;

case ‘4’ : clrscr() ; sort4 (); getch (); break;

case ‘5’ : clrscr() ; dobsotr (); getch (); break;

case ‘6’ : clrscr() ; delsotr (); getch (); break;

case ‘7’ : clrscr() ; printlist (); getch (); break;

case ‘0’ : return 1;

default : clrscr (); break;

}

}

while (1);

}

база данное запрос алгоритм

5. Блок-схемы к запросам

5.1 Первый запрос

Результат запроса выводится в форме: (номер/ Ф.И.О/улица).

5.2 Второй запрос

Результат запроса выводится в форме (номер/ Ф.И.О/Учебное заведение).

5.3 Третий запрос

Результат запроса выводится в форме (номер/Ф.И.О/Эффект/Проект).

5.4 Четвертый запрос

Результат запроса выводится в форме (Ф.И.О/ суммарный эффект).

6. Системные требования

Операционная система: MS-Windows 9-x, Me, NT, 2k, 2k3, XP, Vista;

Оперативная память: 8 Mb и выше;

CPU: Intel 386 и выше;

Видеокарта: 4 Mb и выше;

Не менее 10 мегабайт свободного места на жестком диске.

Не требует установки С++ на компьютер.

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

1. Программирование на алгоритмических языках: : Лабораторный практикум / Под ред. И.Т. Артемьев, Л.А. Ильина, Д.В. Ильин. -Чебоксары.: Чуваш. ун-т. 2005г -100 с.

Леонид Федотов
Леонид Федотов
Окончил НИУ ВШЭ факультет компьютерных наук. Сам являюсь кандидатом наук. По специальности работаю 13 лет, за это время создал 8 научных статей и 2 диссертации. В компании подрабатываю в свободное от работы время уже более 5 лет. Нравится помогать школьникам и студентам в решении контрольных работ и написании курсовых проектов. Люблю свою профессию за то, что это направление с каждым годом становится все более востребованным и актуальным.
Поделиться дипломной работой:
Поделиться в telegram
Поделиться в whatsapp
Поделиться в skype
Поделиться в vk
Поделиться в odnoklassniki
Поделиться в facebook
Поделиться в twitter
Похожие статьи
Раздаточный материал для дипломной работы образец

Когда студент выходит на защиту перед экзаменационной комиссией, ему требуется подготовить все необходимые материалы, которые могут повысить шансы на получение высокого балла. Один из таких

Читать полностью ➜
Задание на дипломную работу образец заполнения

Дипломная — это своеобразная заключительная работа, которая демонстрирует все приобретенные студентом знания во время обучения в определенном вузе. В зависимости от специализации к исследовательским работам

Читать полностью ➜