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




Скачать 51.96 Kb.
PDF просмотр
НазваниеКурсовая работа
Дата конвертации04.10.2012
Размер51.96 Kb.
ТипКурсовая
СибГУТИ
Кафедра ВС
Программирование на языке высокого уровня (ПЯВУ), семестр 1
2008­2009 учебный год
Поляков А.Ю.
Курсовая работа
Цель работы: Разработать программное обеспечения базы данных в соответствии с зада­
нием.
Методические указания
Структурный тип
Структура ­ это набор из одной или более переменных, возможно различных типов, 
сгруппированных под одним именем для удобства обработки. (В некоторых языках, са­
мый известный из которых паскаль, структуры называются "записями").
Рассмотрим структурный тип, содержащий дату. Дата состоит из нескольких частей 
таких, как день, месяц, и год, и, возможно, день года и имя месяца. Эти пять переменных 
можно объединить в одну структуру вида:
struct date {
int day; 
int month; 
int year; 
int yearday; 
char mon_name[4];
};
Описание структуры, состоящее из заключенного в фигурные скобки списка описаний, 
начинается с ключевого слова struct. За словом struct может следовать необязательное 
имя, называемое ярлыком (тэгом) структуры (в данном случае date). Такой ярлык имену­
ет структуры этого вида и может использоваться в дальнейшем как сокращенная запись 
подробного описания.
Элементы или переменные, упомянутые в структуре, называются членами. Ярлыки и 
члены структур могут иметь такие же имена, что и обычные переменные (т.е. не являю­
щиеся членами структур), поскольку их имена всегда можно различить по контексту. Ко­
нечно, обычно одинаковые имена присваивают только тесно связанным объектам.
Точно так же, как в случае любого другого базисного типа, за правой фигурной скоб­
кой, закрывающей список членов, может следовать список переменных. оператор
struct {...} x,y,z; 
синтаксически аналогичен
int x,y,z; 
в том смысле, что каждый из операторов описывает x, y и z в качестве переменных соот­
ветствующих типов и приводит к выделению для них памяти.
Описание структуры, за которым не следует списка переменных, не приводит к выде­
лению какой­либо памяти; оно только определяет шаблон или форму структуры. Однако, 
если такое описание снабжено ярлыком, то этот ярлык может быть использован позднее 
при определении фактических экземпляров структур. Например, если дано приведенное 
выше описание date, то
struct date d; 
определяет переменную d в качестве структуры типа date.

Рекурсивные объявления структур недопустимы (структура не может содержать эле­
мент того же типа что и она сама), например:
struct bad_struct {
int a;
struct bad_struct bad_elem; /* данный элемент недопускается */
};
Но допустимо чтобы структура содержала поле­указатель на саму себя:
struct good_struct {
int a;
struct good_struct *good_elem;
};
Допустимые операции:
1. присваивание переменных­структур переменным того же типа;
2. взятие адреса структуры;
3. обращение к элементам структуры;
4. Применение операции sizeof для определения ее размера.
Инициализация структуры
Структуру можно инициализировать, поместив вслед за ее определением список ини­
циализаторов для ее компонент:
struct date d={ 4, 7, 1776, 186, "jul"}; 
Если инициализаторов в списке меньше, чем элементов структуры – остальным автома­
тически присваивается значение 0 или NULL (для указателей).
Структуры также можно инициализировать с помощью операции присваивания:
struct date d={ 4, 7, 1776, 186, "jul"},d1; 
d1 = d;
Обращение к элементу
Член определенной структуры может быть указан в выражении с помощью конструк­
ции вида
<имя структуры>.<имя элемента структуры>
Операция указания элемента структуры "." связывает имя структуры и имя элемента. 
В качестве примера определим leap (признак високосности года) на основе даты, находя­
щейся в структуре d:
leap = d.year % 4;
или проверим имя месяца
if (strcmp(d.mon_name, "aug") == 0) ... 
Или преобразуем первый символ имени месяца так, чтобы оно начиналось со строчной 
буквыd.mon_name[0] = lower(d.mon_name[0]); 
Для обращения к полю структуры, представленной указателем, например:
struct date *d;
используется операция­стрелка "­>":
lep = d->year % 4;
Вложенность структур
Cтруктуры могут быть вложенными; учетная карточка служащего может фактически 
выглядеть так:
struct  person  {
    char name[namesize];
    char address[adrsize];
    long zipcode;   /* почтовый индекс */
    long ss_number; /* код соц. Обеспечения */
    double salary;  /* зарплата */
    struct date birthdate; /* дата рождения */

    struct date hiredate; /* дата поступления
     на работу */
 };
структура person содержит две структуры типа date. Если мы определим emp как
struct person emp; 
то emp.birthdate.month 
будет ссылаться на месяц рождения. Операция указания члена структуры "." ассоцииру­
ется слева направо.
Массивы структур
Структуры особенно подходят для управления массивами связанных переменных. 
Рассмотрим, например, программу подсчета числа вхождений каждого ключевого слова 
языка "C". Нам нужен массив символьных строк для хранения имен и массив целых для 
подсчета. одна из возможностей состоит в использовании двух параллельных массивов 
keyword и keycount:
char *keyword [nkeys]; int keycount [nkeys]; 
Но сам факт, что массивы параллельны, указывает на возможность другой организа­
ции. Каждое ключевое слово здесь по существу является парой:
char *keyword; int keycount; 
и, следовательно, имеется массив пар. описание структуры
struct key  {
   char *keyword;
   int  keycount;
} keytab [nkeys];
определяет массив keytab структур такого типа и отводит для них память. Каждый эле­
мент массива является структурой. Это можно было бы записать и так:
struct key  {
   char *keyword;
   int  keycount;
}
struct key keytab [nkeys];
Объединения
Объединение ­ это переменная, которая в различные моменты времени может содер­
жать объекты разных типов и размеров, причем компилятор берет на себя отслеживание 
размера и требований выравнивания. Объединения представляют возможность работать с 
различными видами данных в одной области памяти, не вводя в программу никакой ма­
шинно­зависимой информации.
В качестве примера, снова из символьной таблицы компилятора. Предположим, что 
константы могут быть типа int, float или быть указателями на символы. значение каждой 
конкретной константы должно храниться в переменной соответствующего типа, но все же 
для управления таблицей самым удобным было бы, если это значение занимало бы один и 
тот же объем памяти и хранилось в том же самом месте независимо от его типа
Синтаксис объединений схож со структурами:
union u_tag { 
int ival; 
float fval; 
char *pval; 
} uval; 
переменная uval будет иметь достаточно большой размер, чтобы хранить наибольший 
из трех типов, независимо от машины, на которой осуществляется компиляция, ­ про­

грамма не будет зависить от характеристик аппаратных средств. Любой из этих трех ти­
пов может быть присвоен uvar и затем использован в выражениях, пока такое использова­
ние совместимо: извлекаемый тип должен совпадать с последним помещенным типом. 
Дело программиста ­ следить за тем, какой тип хранится в объединении в данный момент; 
если что­либо хранится как один тип, а извлекается как другой, то результаты будут за­
висеть от используемой машины.
Допустимые операции
1. присваивание переменных­структур переменным того же типа;
2. взятие адреса структуры;
3. обращение к элементам структуры;
4. Применение операции sizeof для определения ее размера.
Обращение к элементу
Синтаксически доступ к членам объединения осуществляется так же как и к членам 
структуры. С помощью операций "." и "­>":
union u_tag {
int ival;
float fval;
char *pval;
} uval, *puval=&uval;
uval.ival = 10;
puval->fval=1.2;
Определение типа
В языке "C" предусмотрена возможность, называемая typedef для введения новых имен 
для типов данных. Например, описание
typedef int length; 
делает имя length синонимом для int. "Тип" length может быть использован в описаниях, 
переводов типов и т.д. Точно таким же образом, как и тип int:
length len, maxlen; 
length *lengths[]; 
Обратите внимание, что объявляемый в конструкции typedef тип появляется в позиции 
имени переменной, а не сразу за словом typedef. Синтаксически конструкция typedef 
подобна описаниям класса памяти extern, static и т. д. Мы также использовали прописные 
буквы, чтобы яснее выделить имена.
В качестве более сложного примера мы используем конструкцию typedef для описания 
узлов дерева, рассмотренных ранее в этой лекции:
typedef struct tnode {/* the basic node */ 
char *word; /* points to the text */ 
int count; /* number of occurrences */ 
}node *pnode; 
В результате получаем два новых ключевых слова: node (структура) и pnode (указатель 
на структуру). 
Необходимо подчеркнуть, что описание typedef не приводит к созданию нового в ка­
ком­либо смысле типа; оно только добавляет новое имя для некоторого существующего 
типа. По существу конструкция typedef сходна с #define за исключением того, что она ин­
терпретируется компилятором и потому может осуществлять подстановки текста, кото­
рые выходят за пределы возможностей макропроцессора языка "C". Например,
typedef int (*pfi) (); 
создает тип pfi для "указателя функции, возвращающей значение типа int"

Битовые поля
Когда вопрос экономии памяти становится очень существенным, то может оказаться 
необходимым помещать в одно машинное слово несколько различных объектов; одно из 
особенно распространенных употреблений ­ набор однобитовых признаков в применени­
ях, подобных символьным таблицам компилятора. Внешне обусловленные форматы дан­
ных, такие как интерфейсы аппаратных средств также зачастую предполагают возмож­
ность получения слова по частям.
В языке Си существует специальная конструкция – битовые поля. Битовые поля опре­
деляются только в структурах:
struct {
unsigned 1bit_f : 1; 
unsigned 2bit_f : 2; 
unsigned 3bit_f : 3; 
} flags; 
Здесь определяется переменная с именем flags, которая содержит 1­битовое поле 
1bit_f, 2­хбитовое поле 2bit_f и 3­хбитовое поле 3bit_f. Следующее за двоеточием число 
задает ширину поля в битах. 
Потоковый ввод­вывод
Поток
По историческим причинам структура данных языка Си, описывающая поток данных 
называется FILE (а не поток). Эта структура объявлена в файле stdio.h. FILE содержит 
внутреннюю информацию о состоянии соединения с ассоциированным файлом, включая 
информацию о позиции курсора, информацию о буферизации, индикатор конца файла и 
ошибки (они могут быть получены с помощью функций feof и ferror. Выделение памяти и 
управление данной структурой выполняется библиотечными функциями ввода/вывода . 
Программист не должен работать с FILE напрямую, для написания переносимого кода 
необходимо работать с ней ТОЛЬКО через соответствующие функции.
Открытие файла (потока)
Открытие файла выполняется с помощью функции fopen и создает новый поток ассо­
циированный с открываемым файлом. Данное действие может привести к созданию ново­
го файла.
FILE * fopen (const char *filename, const char *opentype) 
Функция fopen открывает поток для ввода/вывода в/из файла filename и возвращает ука­
затель на поток. 
Агрумент opentype — это строка, управляющая режимом открытия файла. Она должна 
начинаться со следующих символов:
"r"
Открытие существующего файла filename только для чтения
"w" 
Открытие файла только для записи. Если файл уже существует его со­
держимое очищается. В противном случае будет создан новый файл с 
именем filename.
"a"
Открытие файла для добавления, т.е. только запись в конец файла. 
Если файл уже существует его содержимое не изменяется, а новые 
данные дописываются в конец. В противном случае создается новый 
файл.

"r+"
Открытие существующего файла как для записи так и для чтения. Со­
держимое файла не изменяется, позиция чтения/записи установлена в 
начало файла. При записи старое содержимое будет заменяться на но­
вое.
"w+" Открытие существующего файла как для записи так и для чтения. 
Если файл уже существует его содержимое очищается. В противном 
случае будет создан новый файл с именем filename.
"a+"
Открытие файла как для чтения так и для добавления. Если файл су­
ществует — его содержимое не изменяется, позиция чтения установле­
на на начало файла, добавление выполняется в конец файла./записи 
установлена в начало файла. Если файла не существует — он создает­
ся.
'+' запрашивает поток в котором разрешены операции как ввода так и вывода. Стандарт 
ANSI требует вызова функции fflush или вызова позиционирующей функции (например 
fseek) при переключении между чтением и записью и наоборот. В противном случае 
встроенные буферы могут быть очищены некорректно.
В библиотеке GNU также используется символ `x', означающий что open выполнится 
успешно ТОЛЬКО в том случае если файл не существовал на момент открытия. 
Символ 'b' означает что открывается бинарный файл (не текстовый). В POSIX системах 
(включая GNU системы) – различий между бинарными и текстовыми файлами не делает­
ся.
Любые другие символы в аргументе opentype игнорируются.
В случае неуспеха fopen возвращает NULL.
Закрытие потока
Поток закрывается с помощью функции fclose, которая разрывает соединение между 
потоком и файлом. Буферизованный вывод записывается в файл, а любой буфериз. ввод 
отбрасывается.
int fclose (FILE *stream);
fclose возвращает 0 в случае успеха и EOF в случае ошибки. 
Очень важно проверять не произошла ли ошибка, поскольку это достаточно обычная 
ситуация. Например ситуация когда носитель переполнен.
В случае завершения функции main или вызова exit – все открытые потоки автоматиче­
ски и корректно закрываются. В случае же аварийного завершения возможно некоррект­
ное закрытие и потеря данных в файле.
Стандартные потоки
Когда управление передается функции main имеется 3 готовых к использованию потока. 
Они называются "стандартными" каналами ввода/вывода:

Variable: FILE * stdin 
Стандартный поток ввода. При запуске программы по умолчанию это клавиатура.
Variable: FILE * stdout 
Стандартный поток вывода. По умолчанию — дисплей компьютера.
Variable: FILE * stderr 
Стандартный поток ошибок. По умолчанию — дисплей компьютера.
В GNU C это обычные переменные, поэтому с ними можно работать как с любыми дру­
гими переменными, объявленными программистом. Поэтому возможна такая операция:
fclose (stdout);
stdout = fopen ("standard-output-file", "w");
НО!! в других ОС stdin, stdout, and stderr – это макросы и доступ к ним не может быть 
выполнен вышеописанным образом.
Форматный ввод/вывод
Ввод осуществляется в соответствии с форматом, который описывается форматной 
строкой.
Спецификация преобразования НЕ должна содержать пробелов
Спецификация преобразования для форматной строки вывода имеет вид:
% flags width [ . precision ] type conversion

0 или более флагов, которые изменяют модифицируют стандартное отображение 
спецификации преобразования.

Необязательное поле – положительное десятичное целое, указывающее минималь­
ный размер поля. Если указано просто десятичное число, а фактич. ширина меньше 
указ – заполняется пробелами, если указано десятичное с 0­м вначале – заполняет­
ся нулями.

Необязательное поле precision (точность), определяющее:
1. минимальное число цифр, которые могут быть выведены для целых.
2. Число цифр после запятой для вещественных
3. максимальное число символов для спецификатора s.

Необязательное поле type(модификатор), которое указывает тип данных соответ­
ствующего аргумента, если оно отличается от типа по умолчанию. (Например 
преобразование целого типа подразумевает тип int, но вы можете указать `h', `l', or 
`L' для обозначения других целых типов.) .
'h' => преобразование применяется к типу short
'l' => ­//­ к типу long
'L' => к типу long double

Символ­спецификатор, указывающий тип преобразования. 
Спецификация преобразования для форматной строки ввода имеет вид:
% flags width type conversion

Необязательный параметр `*' – значит игнорировать значение считанное для данно­
го преобразования. Для спецификации со звездочкой аргумент пропускается. Счет­
чик успешного считывания также не инкрементируется.

Необязательны параметр – положительное десятичное целое – определяет макси­
мальное количество символов, которое может быть считано (фактически может 

быть меньше). В случае ввода строки – необходимо учитывать что признак оконча­
ния строки не учтен в ширине поля. 

Модификатор (type modifier character). Аналогично выводу. 

Аналогично выводу.
Таблица преобразователей
%d
десятичное целое (int *)
%i
десятичное, восьмиричное или шестнадцатиричное целое (int *)
%x,%X
шестнадцатиричное (маленькими или большими)
%u
unsigned
%o
восьмиричное целое

один символ
%s
строка, ограниченная справа и слева пробелами
%p
значение указателя
%f
печать числа с плавающей точкой в обычном формате
%e, %E
печать вещественного числа в экспоненциальной форме (%e – в 
нижнем регистре, E – в верхнем)
%g,%G
печать в наиболее удобном формате (обычном или эксп.)
Флаги  преобразователей для целых (описываются спецификаторы `%d', `%i', `%o', `%u', `
%x', `%X'):
`­' – Выравнивание по левому краю (по умолчанию – по правому) 
`+' – Для знаковых – печатает '+', если число положительное. 
` ' – Для знаковых печатает пробел, если нет знака минус. Этот флаг перекрывается фла­
гом '+'.
`#' – Для спецификатора `%o' – первая цифра '0'. Для `%x' or `%X' ­ префикс `0x' or `0X'. 
Не влияет на `%d', `%i', or `%u'. Данный флаг выводит данные в формате понятном функ­
ции strtoul и  scanf с `%i' спецификатором. 
`0' – дополнять нулями вместо пробелов. Перекрывается флагом `­' или точностью.
Функции вывода
printf (const char *template, ...) 
int fprintf (FILE *stream, const char *template, ...) 
int sprintf (char *s, const char *template, ...) 
int snprintf (char *s, size_t size, const char *template, ...)
Функции ввода
scanf (const char *template, ...) 
int fscanf (FILE *stream, const char *template, ...) 
int sscanf (const char *s, const char *template, ...)
Бинарные файлы
Двоичный (бинарный) файл — в широком смысле: последовательность произвольных 
байтов. Название связано с тем, что байты состоят из бит, т.е. двоичных (англ.  binary) 
цифр.

В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При 
этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы яв­
ляются частным случаем двоичных файлов, и, таким образом, в широком значении слова 
под определение «двоичный файл» подходит любой файл.
Часто двоичными файлами называют исполняемые файлы и сжатые данные.
В контексте данной работы бинарный файл должен содержать массив структур, описы­
вающих БД, сохраненный нейизменно (в двоичном виде) в файл.
Задание
Номер варианта вычисляется по формуле:
<номер студента в журнале> % 12, где % - остаток от деления
1. Необходимо описать предметную область, выделить наиболее существенный для 
нее набор данных, который будет храниться в базе данных (БД);
2. Количество записей в любой таблице должно быть не более 1024;
3. Необходимо разработать и реализовать интерфейс для работы с БД: 
добавление/удаление/модификация записей. Интерфейс необходимо реализовать в 
виде текстового меню;
4. При выходе из программы работы с БД все ее данные должны сохраняться на 
жесткий диск, при запуске — считываться (БД хранить на диске в бинарном 
файле);
5. Для работы со строками необходимо использовать библиотечные функции;
Варианты заданий

1. Создание упрощенной базы данных сотовой кампании
Обеспечить хранение и изменение сведений об абоненте. Сведения должны включать 
личные данные (требуемые при покупке SIM­карты), и данные, необходимые для работы 
с абонентом. (не менее 10 параметров).
Реализовать интерфейс оператора, который позволяет добавить/удалить абонента; 
выполнить поиск абонента; пополнить счет абонента; вывести информацию об абоненте, 
включая общее время разговоров и остаток на счете; вывод всех абонентов в алфавитном 
порядке, остаток на счете которых не превышает заданной величины .
2. Разработка упрощенного ПО для учета персонала фирмы
Обеспечить хранение информации об отделах фирмы, ее названии, директоре, со­
трудниках, заработной плате каждого сотрудника, приеме/увольнении, отпусках, преми­
ях.
Реализовать выполнение следующих процедур: прием на работу/увольнение сотруд­
ника; вывод основной информации о фирме; поиск сотрудников (по имени); вычисление 
даты начала/окончания отпуска сотрудника (считать что отпуск дается каждые полгода 
на 2 недели); поиск всех сотрудников, принятых за определенный период; назначение но­
вого директора, начисление зарплаты, премий, вывод всех сотрудников в алфавитном 
порядке.
3. Разработка ПО для инвентаризации имущества
Обеспечить хранение информации об отделах и объектах собственности предприя­
тия, (каждый объект собственности приписан какому­либо из отделов). Каждый объект 
характеризуется датой постановки на учет, стоимости его закупки, типом (введите типы 
объектов, например: мебель, офисная техника, канц. товары и т.д.).
Реализовать создание/расформирование отдела; постановку/снятие объекта с учета; 
предоставление информации об объекте по его инвентарному номеру; вывод информа­
ции об объектах указанного типа; вывод информации об объектах по названию (в ал­
фавтном порядке), по дате приема, по отделу.
4. Реализовать ПО учета книг в библиотеке
Обеспечить хранение информации о каждой книге (не менее 7 полей) и каждом чи­
тателе (имя, фамилия, отчество, дата рождения, адрес, место работы). Каждой книге и 
читателю присваивается порядковый номер в списке соответственно книг и читателей.
Реализовать прием новых/списание старых книг, добавление/удаление нового чита­
теля, вывод списка книг, отсортированных по автору, по названию, по году издания, 
списка читателей, выдачу книги читателю, вывод всех книг взятых указанным читателем 
упоряоченных по названию, поиск задолжников, не вернувших книги вовремя.
5. ПО обслуживающее магазин
Обеспечить хранение информации о товарах, ценах, наличии на складе, количестве, 
сроке годности, дате поставки.
Реализовать операцию приема товара; продажи товара; поиска товара; поиска товара 
определенного типа; поиска товаров в заданном ценовом промежутке; поиск товаров с 
закончившимся сроком годности; списание товаров с закончившимся сроком годности, 
вывод всех товаров в алфавитном порядке, вывод всех товаров заданного типа. 
6. База данных студентов университета

Обеспечить хранение информации о факультете, студентах, группах (отдельные 
типы данных). По каждому объекту должна храниться вся необходимая информация.
Реализовать создание нового факультета, формирование/расформирование группы; 
прием абитуриентов; выпуск специалистов; отчисление студентов; перевод студента на 
следующий курс; перевод группы на следующий курс; поиск студента по нескольким па­
раметрам (напр.: имя, фамилия, год поступления); вывод всех студентов указанной 
группы в алфавитном порядке, начисление стипендии студентам.
7. ПО работы кинопроката
Обеспечить хранение информации о всех фильмах, имеющихся в наличии (помимо 
прочего указывать тип носителя (CD,DVD,VHS) режиссера и т.д.). Обеспечить хранение 
информации о клиентах, необходимую для гарантии возврата фильма.
Реализовать добавление клиента; добавление фильма; выдачу/прием фильма клиен­
ту; поиск фильма по названию; по жанру, году выпуска; вывод всех фильмов имеющихся 
в наличии; поиск клиента, взявшего указанный фильм; поиск всех фильмов находящихся 
у указанного клиента, получить список клиентов в алфавитном порядке.
8. ПО поликлиники
Обеспечить хранение информации об отделениях, врачах и пациентах поликлиники. 
Каждый врач относится к определенному отделению, пациент может проходить лечение 
в нескольких отделениях сразу.
Реализовать формирование нового отделения; прием на работу нового врача; запись 
нового пациента; назначение пациента участковому врачу; перевод пациентов, назначен­
ных одному участковому врачу, к другому; вывод всех пациентов указанного врача; вы­
вод врача указанного пациента; поиск пациента и врача по имени, список пациентов в ал­
фавитном порядке. 
9. ПО хранения информации о компьютерной сети предприятия.
Вся техника предприятия делится на домены, который обслуживается группой ИТ 
специалистов. Каждое устройство принадлежит определенному домену и имеет ряд се­
тевых (IP, MAC адреса и доменное имя) и специфических (для принтера – уровень 
картриджа, для компьютера тип процессора, объем ОЗУ и т.д.) параметров.
Реализовать создание/удаление домена, добавление/удаление устройства в домен, 
миграция устройства из одного домена в другой,поиск домена, которому принадлежит 
устройство, вывод всех устройств домена, поиск людей, обслуживающих данное устрой­
ство, вывод информации обустройстве, список всех устройств, упорядоченный по IP ад­
ресу.
10. База данных таксомоторного парка
Каждый автомобиль характеризуется набором параметров ( марка, регистрационный 
номер, дата тех. осмотра, расход топлива на 100 км, пробег, водитель). Каждый сотруд­
ник (водитель) также характеризуется параметрами (самостоятельно). Необходимо так­
же хранить информацию о затратах на бензин каждого водителя, количество обслужен­
ных заявок.
Реализовать прием/снятие с учета автомобиля, прием/увольнение сотрудника, назна­
чение заявки водителю, выдача денег на 40л бензина (полный бак), получить список во­
дителей, упорядоченный по каоличеству заявок, обработанных за заданный период, по­
лучить список водителей, упорядоченный по затратам на бензин, вычислить пробег авто­

мобиля исходя из потраченного бензина и сравнить с фактическим.
11. База данных аптеки
Хранить информацию о сотрудниках (в том числе должность), препаратах аптеки 
(помимо всего прочего необходимо хранить информацицию о дате изготовления и сроке 
годности).
Реализовать прием/увольнение сотрудника, прием/списание препаратов (при этом 
фиксируется сотрудник выполнивший эту операцию), продажу препарата (при этом 
фиксируется сотрудник, продавший товар), резервацию препарата и продажу по резер­
вации (резервируется на фамилию, срок резервации – сутки. по прошествии этого срока 
товар может быть продан).
12. База данных ГИБДД
Хранить информацию об инспекторах, водителях, автомобилях (водитель может 
владеть несколькими автомобилями).
Реализовать Прием/увольнение инспектора, регистрацию/снятие с учета автомобиля, 
регистрацию правонарушений (при этом необходимо фиксировать инспектора, водителя, 
автомобиль, размер штрафа), поиск водителя и вывод информации о нем, поиск автомо­
биля и информация о нем, вывод списка всех инспекторов в алфавитном порядке, спи­
сок водителей отсортированный по количеству нарушений.


Похожие:

Курсовая работа iconКурсовая работа по курсу "Организация эвм и систем"
Курсовая   работа  "Программно-аппаратное   конфигурирование   вычислительной   системы"  
Курсовая работа iconКурсовая работа
Курсовая работа подтверждает развитие исследовательских навыков студентов и углубленное освоение учебного материала соответствующего...
Курсовая работа iconКурсовая   работа   по   учебной   дисциплине   является   одним   из 
Курсовая работа выполняется студентом на третьем курсе по любой  из изучаемых дисциплин
Курсовая работа iconКурсовая  работа  по  организации  производства  и  менеджменту  в  ма
...
Курсовая работа icon  Курсовая работа является видом учебной и научно-исследовательской 
...
Курсовая работа iconКурсовая  работа  способствует  формированию  у  студента  навыков 
Курсовая работа является одним из важнейших видов учебного процесса  и выполняется студентом в соответствии с учебным планом. 
Курсовая работа iconКурсовая работа по дисциплине «Компьютерная графика»
Данная курсовая работа посвящена планировке и разработке бдау (Базе Данных Арбитражного Управляющего, работающей «в веб браузере»)...
Курсовая работа icon6. Курсовая работа выполняется под руководством преподавателя  научного руководите
Курсовая  работа  выполняется  студентами  2,3  года обучения  очного  и  заочного отде
Курсовая работа iconКурсовая работа
В соответствии с учебным планом, студенты во время обучения самостоятельно выполняют две курсовые работы: в 4 и 6 семестрах. Курсовая...
Курсовая работа iconКурсовая работа    тема:  Реализация интерфейсов мультиагентной системы  обучения программированию     Общие положения    Курсовая работа (проект) и лабораторный практикум предусматривают возможность 
Для  этого  после  титульного  листа  приводится  список  исполнителей  с  указанием 
Разместите кнопку на своём сайте:
TopReferat


База данных защищена авторским правом ©topreferat.znate.ru 2012
обратиться к администрации
ТопРеферат
Главная страница