Разработка однотабличной базы данных - Программирование, компьютеры и кибернетика курсовая работа

Разработка однотабличной базы данных - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Разработка однотабличной базы данных

Конструирование программ на высокоуровневых языках программирования на примере Pelec C. Модульная схема программы. Добавление новых записей, удаление и редактирование старых. Приемы реализации динамических списков связного хранения, методы их обработки.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

1. АНАЛИЗ ЗАДАНИЯ И ПОСТАНОВКА ЗАДАЧ
1.3 Архитектурные требования к программе
ПРИЛОЖЕНИЕ А - МОДУЛЬНАЯ СХЕМА ПРОГРАММЫ
Цель курса: ознакомление студента с конструированием программ на высокоуровневых языках программирования на примере Pelec C, закрепление и углубление знаний, полученных в процессе изучения дисциплины «Конструирование программ и языки программирования». Также к задачам можно отнести приобретение навыков самостоятельного творческого решения общетеоретических и практических вопросов разработки различных программ.
Курсовая работа состоит в самостоятельном изучении, анализе и решении инженерной задачи, содержащей элементы практического и прикладного характера, является решающей оценкой знаний студента, также умения самостоятельно изучить материал, необходимый для разработки курсовой работы. Целью же курсовой является разработка программы, имеющей реальное применение на практике.
В процессе выполнения курсовой работы студент ознакомляется со специальной научно-технической литературой и документацией, методическими и другими материалами.
Для студентов заочного отделения предполагается изучение темы «однотабличная база данных».
1. АНАЛИЗ ЗАДАНИЯ И ПОСТАНОВКА ЗАДАЧ
База данных содержит информацию о компьютерных комплектующих на складе: тип (строка 10 символов),
- основные характеристики (строка 20 символов);
- серийный номер (целое шестизначное число);
Дата продажи при вводе записи не указывается. Дополнительно реализовать сервис продажи (при завершении указывается дата продажи), а также отчет о продажах за определенный день.
Курсовая работа представляет собой создание простейшей однотабличной базы данных. Программа должна осуществлять:
- Запись и загрузку файла базы данных (бинарный файл).
- Добавление новых записей, удаление и редактирование старых.
- Сортировать записи по любому из полей базы данных в любом направлении.
- Фильтровать записи по значению любого поля.
- Осуществлять поиск записей по значению любого поля.
- Выполнять дополнительную обработку (с сохранением результата в текстовый файл).
Обработку данных производить в динамическом списке связанного хранения.
Выделение и освобождение динамической памяти осуществляется поэлементно. Чтение и запись данных в файл базы данных производится поэлементно. Программа должна обладать дружественным и интуитивно понятным интерфейсом и проводить проверку на корректность вводимых данных.
1.3 Архитектурные требования к программе
Результатом выполнения курсовой работы должна стать разработка программы в соответствии с темой. К программе предъявляются следующие требования:
- аппаратная архитектура - IBM PC совместимый компьютер на базе x86 совместимого процессора;
- операционная система - MS Windows 9x/ME/XP;
- язык программирования - язык С стандарта ANSI С99 или C89;
- среда разработки - Pelles C 4.5 и выше;
- вид приложения - WinGUI (интерфейс должен быть построен с помощью WinApi).
По согласованию с преподавателем для реализации проекта выбран язык С++, среда разработки Borland C++ Builder 6.
Выбор обоснован тем, что использование данной среды позволит быстро сконструировать оконный интерфейс высокого уровня, не отвлекаясь на его реализацию и настройку, сосредоточившись на реализации классов бизнес-логики.
Для разработки проекта необходимо решить ряд более мелких задач, на которые можно разбить проект:
- реализация класса табличной записи о комплектующем. Потребуется изучить основы объектно-ориентированного программирования для реализации класса, содержащего указанные по заданию типы данных;
- реализация класса динамического списка связного хранения. Потребуется изучить приемы реализации динамических списков связного хранения, а также методов их обработки, таких как: вставка элемента, удаление элемента, изменение элемента, сортировка списка, поиск и фильтрация элементов списка;
- работа с файлами. Потребуется изучить методы чтения/записи бинарных файлов и записи текстовых файлов;
- создание графического интерфейса пользователя. Интерфейс должен быть дружелюбным и интуитивно понятным, поэтому потребуется освоить методы заполнения и получения данных таблиц, а также текстовых полей.
Программа будет разбита три окна: главное окно, окно просмотра/редактирования комплектующих и окно продажи комплектующих. Также будет создано три модуля: главный модуль, модуль с классом комплектующего и модуль с классом динамического списка.
В этом модуле будет находиться главная функция WINAPI WinMain, согласовывающая работу модулей и реализующая диалоговую работу с пользователем.
В этом модуле будет находиться реализация класса комплектующего.
В этом модуле будет находиться реализация класса динамического списка, включающая в себя его реализацию а также все методы обработки списка, описанные в разделе 2.
В этом модуле будет описано главное окно, к нему буду подключены другие модули с окнами.
В этом модуле будет находиться реализация табличного представления данных, а также текстовые поля, позволяющие редактировать и вводить новые данные.
В этом модуле будет находиться реализация класса табличного представления данных, а также сервис продажи комплектующих.
В модуль main.h будут подключаться интерфейсы других окон view.h и sell.h. В каждое из других окон будет подключен интерфейс динамического списка List.h. Модульная схема программы изображена в приложении А.
В этом модуле находится главная функция WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int), согласовывающая работу модулей и реализующая диалоговую работу с пользователем. (см. листинг 1):
#include //подключаем библиотеку визуальных компонентов
//---------------------------------------------------------------------------
USEFORM("main.cpp", MainForm); //форма главного окна
USEFORM("view.cpp", ViewForm); //форма просмотра комплектющих
USEFORM("sell.cpp", SellForm); //форма продажи комплектующих
//---------------------------------------------------------------------------
//HINSTANCE - идентификатор текущего приложения;
//HINSTANCE - идентификатор приложения, являющегося родительским для данного приложения;
//LPTSTR - С-строка, содержащая параметры командной строки;
//int nCmdShow - код вида начального отображения окна
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
Application->Initialize(); //инициализируем приложение
Application->CreateForm(__classid(TMainForm), &MainForm); //создаем главное окно
Application->CreateForm(__classid(TViewForm), &ViewForm); //создаем окно просмотра комплектующих
Application->CreateForm(__classid(TSellForm), &SellForm); //создаем окно продажи комплектующих
Application->Run(); //запускаем приложение
Application->ShowException(&exception);
Application->ShowException(&exception);
В модуле Hardware нет глобальных переменных, и интерфейс модуля содержит только прототипы функций, которые могут быть вызваны в модуле List.cpp, листинг 2 является листингом интерфейса Hardware.h.
char type[10]; //тип (строка 10 символов)
char describe[15]; //описание (строка 15 символов)
char parametrs[20]; //основные характеристики (строка 20 символов)
Integer serial; //серийный номер (целое шестизначное число)
TDate dateSell; //дата продажи (дд.мм.гггг)
Integer price; //цена (целое число)
__fastcall Hardware(char * inType,char * inDescribe, char * inParametrs, Integer inSerial, DATE inDateSell, Integer inPrice);
__fastcall ~Hardware();//деструктор
В Hardware.cpp находится реализация описанных методов класса (см. листинг 3):
__fastcall Hardware::Hardware(char * inType,char * inDescribe, char * inParametrs, Integer inSerial, DATE inDateSell, Integer inPrice){
strncpy(parametrs, inParametrs,20);
В модуле List нет глобальных переменных, и интерфейс модуля содержит только прототипы функций, которые могут быть вызваны в модуле view.cpp и sell.cpp, листинг 4 является листингом интерфейса List.h.
element* next; //Ссылка на следующий элемент списка
element* head; // Первый элемент (голова) списка
element* tail; // Последний элемент (хвост) списка
// Включение в список нового компонента
void element_del(Hardware * selHard);
void element_edit(int ind, Hardware* n);
void element_edit(Hardware* selHard, Hardware* n);
void saveSellOfDay(char * fileName,AnsiString dateSell);
// Сортировка списка по характеристикам
// Сортировка списка по серийному номеру
// Сортировка списка по дате продажи
Рассмотрим реализацию методов класса, для однообразных методов (таких как сортировка) будет рассмотрена одна реализация (см. листинг 5):
//---------------------------------------------------------------------------
// Включение в список нового компонента
void dyn_list::element_in(Hardware* n)
memcpy(c->hard,n,sizeof(Hardware));
void dyn_list::element_del(Hardware * selHard)
void dyn_list::element_edit(Hardware * selHard, Hardware* n)
//сравнение полей выделенного коплектующего с копмлектующим из списка
(strcmp(select->hard->type,selHard->type)==0)&&
(strcmp(select->hard->describe,selHard->describe)==0)&&
(strcmp(select->hard->parametrs,selHard->parametrs)==0)&&
(select->hard->serial == selHard->serial)&&
(select->hard->dateSell == selHard->dateSell)&&
(select->hard->price == selHard->price)
memcpy(select->hard,n,sizeof(Hardware)); //обновляем элемент новыми значениями
void dyn_list::load(char * fileName)
void dyn_list::save(char * fileName)
element * recovery = new element();
memcpy(buf,head->hard,sizeof(Hardware));
void dyn_list::saveSellOfDay(char * fileName,AnsiString dateSell)
fwrite("Продано ",StrLen("Продано "),1,f);
fwrite(dateSell.c_str(),strlen(dateSell.c_str()),1,f);
element * recovery = new element();
memcpy(buf,head->hard,sizeof(Hardware));
if(buf->dateSell.DateString()==dateSell){
fwrite(buf->type,StrLen(buf->type),1,f);
fwrite(buf->describe,StrLen(buf->describe),1,f);
fwrite(buf->parametrs,StrLen(buf->parametrs),1,f);
//integer переводим в строку для корректной записи
strcpy(strBuf,IntToStr(buf->serial).c_str());
fwrite(buf->dateSell.DateString().c_str(),StrLen(buf->dateSell.DateString().c_str()),1,f);
//integer переводим в строку для корректной записи
strcpy(strBuf,IntToStr(buf->price).c_str());
element * dyn_list::get(Hardware * selHard)
//сравнение полей выделенного коплектующего с копмлектующим из списка
(strcmp(select->hard->type,selHard->type)==0)&&
(strcmp(select->hard->describe,selHard->describe)==0)&&
(strcmp(select->hard->parametrs,selHard->parametrs)==0)&&
(select->hard->serial == selHard->serial)&&
(select->hard->dateSell == selHard->dateSell)&&
(select->hard->price == selHard->price)
bool swap = true; //признак того, что была перестановка значений
element * recovery = new element();
swap = false; //считаем что перестановок не будет
(strcmp(head->hard->type,head->next->hard->type)>0))||
(strcmp(head->hard->type,head->next->hard->type)<0))){
memcpy(buf,head->hard,sizeof(Hardware));
memcpy(buf1,head->next->hard,sizeof(Hardware));
memcpy(head->hard,buf1,sizeof(Hardware));
memcpy(head->next->hard,buf,sizeof(Hardware));
swap = true; //устанавливаем признак перестановки
В модуле Main нет глобальных переменных, и интерфейс модуля содержит только прототипы функций, которые могут быть вызваны в модуле (см. листинг 6):
//---------------------------------------------------------------------------
#include "view.h" //подключение формы просмотра комплектующих
#include "sell.h" //подключение формы продажи комплектующих
//---------------------------------------------------------------------------
__published: // IDE-managed elementonents
void __fastcall Button1Click(TObject *Sender);
void __fastcall ButtonSellClick(TObject *Sender);
__fastcall TMainForm(TComponent* Owner);
//---------------------------------------------------------------------------
extern PACKAGE TMainForm *MainForm;
//---------------------------------------------------------------------------
Реализация методов модуля представляет собой вызовы других окон (см. листинг 7):
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
//---------------------------------------------------------------------------
void __fastcall TMainForm::Button1Click(TObject *Sender)
//---------------------------------------------------------------------------
void __fastcall TMainForm::ButtonSellClick(TObject *Sender)
//---------------------------------------------------------------------------
В модуле View нет глобальных переменных, и интерфейс модуля содержит только прототипы функций, которые могут быть вызваны в модуле (см. листинг 8):
//---------------------------------------------------------------------------
#include "List.h" //подключаем класс списка
//---------------------------------------------------------------------------
__published: // IDE-managed elementonents
dyn_list * list; //список комплектующих
int selectedRow; //выделенная строка таблицы
Hardware * selectedHard; //выдыленный элемент списка
//направление сортировки для каждого поля
bool __fastcall chek(); //функция проверки корректности ввода
void __fastcall fillFilteredList(); //функция вывод списка учитывая фильтр и поиск
__fastcall TViewForm(TComponent* Owner);
//---------------------------------------------------------------------------
extern PACKAGE TViewForm *ViewForm;
//---------------------------------------------------------------------------
В модуле просмотра при отображении списка в таблицу используется поиск и фильтр по каждому из полей класса. Поиск построено по принципу вхождения подстроки, представленной значением текстового поля поиска, в строку поля элемента списка, для вывода элемента достаточно, чтобы хотя бы одно из полей удовлетворяло данному условию.
Далее список фильтруется используя тот же принцип вхождения подстроки, однако в данном случае если хоть одно из полей фильтра будет удовлетворять условию, то элемент списка будет отфильтрован. (см. листинг 9):
функция обработки списка перед выводом
void __fastcall TViewForm::fillFilteredList(){
StringGrid1->RowCount=1;//очищаем таблицу
element * recovery = new element(); //создаем буфер
recovery = list->head; //присваиваем ему начало списка
while(list->head != NULL){ //делаем обход списка
Hardware * hh = new Hardware(); //буфер для коплектующего
memcpy(hh,list->head->hard,sizeof(Hardware)); //из списка копируем
StringGrid1->RowCount++; //добавляем строку в таблицу
//заполняем строку таблицы параметрами
StringGrid1->Cells[0][StringGrid1->RowCount-1] = hh->type;
StringGrid1->Cells[1][StringGrid1->RowCount-1] = hh->describe;
StringGrid1->Cells[2][StringGrid1->RowCount-1] = hh->parametrs;
StringGrid1->Cells[3][StringGrid1->RowCount-1] = hh->serial;
StringGrid1->Cells[4][StringGrid1->RowCount-1] = hh->dateSell;
StringGrid1->Cells[5][StringGrid1->RowCount-1] = hh->price;
//если удовлетворяет условиям поиска по любому из полей
( //длина строки должна быть не нулевой И строка поиска должна входить в строку ячейки таблицы
((EditTypeSearch->Text.Length()>0)&&(StringGrid1->Cells[0][StringGrid1->RowCount-1].Pos(EditTypeSearch->Text)>0))||
((EditDescribeSearch->Text.Length()>0)&&(StringGrid1->Cells[1][StringGrid1->RowCount-1].Pos(EditDescribeSearch->Text)>0))||
((EditParametrsSearch->Text.Length()>0)&&(StringGrid1->Cells[2][StringGrid1->RowCount-1].Pos(EditParametrsSearch->Text)>0))||
((EditSerialSearch->Text.Length()>0)&&(StringGrid1->Cells[3][StringGrid1->RowCount-1].Pos(EditSerialSearch->Text)>0))||
((EditDateSellSearch->Text.Length()>0)&&(StringGrid1->Cells[4][StringGrid1->RowCount-1].Pos(EditDateSellSearch->Text)>0))||
((EditPriceSearch->Text.Length()>0)&&(StringGrid1->Cells[5][StringGrid1->RowCount-1].Pos(EditPriceSearch->Text)>0)
(EditTypeSearch->Text.Length()==0)&&
(EditDescribeSearch->Text.Length()==0)&&
(EditParametrsSearch->Text.Length()==0)&&
(EditSerialSearch->Text.Length()==0)&&
(EditDateSellSearch->Text.Length()==0)&&
(EditDateSellSearch->Text.Length()==0)&&
(EditPriceSearch->Text.Length()==0)
) && //И НИ ОДНА ИЗ строк полей фильтра не входит в ячейки таблицы
!( //длина строки должна быть не нулевой И строка фильтра должна входить в строку ячейки таблицы
((EditTypeFilter->Text.Length()>0)&&(StringGrid1->Cells[0][StringGrid1->RowCount-1].Pos(EditTypeFilter->Text)>0))||
((EditDescribeFilter->Text.Length()>0)&&(StringGrid1->Cells[1][StringGrid1->RowCount-1].Pos(EditDescribeFilter->Text)>0))||
((EditParametrsFilter->Text.Length()>0)&&(StringGrid1->Cells[2][StringGrid1->RowCount-1].Pos(EditParametrsFilter->Text)>0))||
((EditSerialFilter->Text.Length()>0)&&(StringGrid1->Cells[3][StringGrid1->RowCount-1].Pos(EditSerialFilter->Text)>0))||
((EditDateSellFilter->Text.Length()>0)&&(StringGrid1->Cells[4][StringGrid1->RowCount-1].Pos(EditDateSellFilter->Text)>0))||
((EditPriceFilter->Text.Length()>0)&&(StringGrid1->Cells[5][StringGrid1->RowCount-1].Pos(EditPriceFilter->Text)>0))
){ // то оставляем строку в таблице
}else if( //ИНАЧЕ если хотябы одно из полей введено
(EditTypeSearch->Text.Length()>0)||
(EditDescribeSearch->Text.Length()>0)||
(EditParametrsSearch->Text.Length()>0)||
(EditSerialSearch->Text.Length()>0)||
(EditDateSellSearch->Text.Length()>0)||
(EditDateSellSearch->Text.Length()>0)||
(EditPriceSearch->Text.Length()>0)||
(EditTypeFilter->Text.Length()>0)||
(EditDescribeFilter->Text.Length()>0)||
(EditParametrsFilter->Text.Length()>0)||
(EditSerialFilter->Text.Length()>0)||
(EditDateSellFilter->Text.Length()>0)||
(EditDateSellFilter->Text.Length()>0)||
){ //то удаляем строку, так как она не подходит под все условия
StringGrid1->RowCount--; //фильтруем элемент
list->head = list->head->next; //переходим к следующему элементу
Перед редактированием элемента или добавлением нового значения занесенные в текстовые поля проходят проверку на корректность. Сначала они укорачиваются до допустимой длины. На результат не влияет была ли превышена длина. Далее поля серийного номера, даты продажи и цены проверяются на соответствие своим форматам, при несоответствие действие будет отменено и будет выведено сообщение. (см. листинг 10):
//функция проверки корректности ввода
EditType->Text = EditType->Text.SubString(1,10);
EditDescribe->Text = EditDescribe->Text.SubString(1,15);
EditParametrs->Text = EditParametrs->Text.SubString(1,20);
EditSerial->Text = EditSerial->Text.SubString(1,6);
EditDateSell->Text = EditDateSell->Text.SubString(1,10);
//если не все поля заполнены - отказ
(EditParametrs->Text.Length()==0)||
ShowMessage("Не все поля заполнены");
//если числовые поля не получается преобразовать - отказ
ShowMessage("Строка серийного номера или цены числа не содержит");
//если числовые поля не получается преобразовать - отказ
ShowMessage("Строка серийного номера или цены числа не содержит");
//если дата имеет неправильный формат
ShowMessage("Дата имеет неверный формат");
После успешной проверки может быть вызвана функция добавления элемента в список (см. листинг 11):
функция добавления элемента в список
void __fastcall TViewForm::ButtonAddClick(TObject *Sender)
if((selectedRow > 0)&&(chek()==true)){//если проверка пройдена
strcpy(hard->type,EditType->Text.c_str());
strcpy(hard->describe,EditDescribe->Text.c_str());
strcpy(hard->parametrs,EditParametrs->Text.c_str());
hard->serial = EditSerial->Text.ToInt();
hard->price = EditPrice->Text.ToInt();
StringGrid1->RowCount++; //добавляем строку в таблицу
StringGrid1->Cells[0][StringGrid1->RowCount-1] = EditType->Text;
StringGrid1->Cells[1][StringGrid1->RowCount-1] = EditDescribe->Text;
StringGrid1->Cells[2][StringGrid1->RowCount-1] = EditParametrs->Text;
StringGrid1->Cells[3][StringGrid1->RowCount-1] = EditSerial->Text;
StringGrid1->Cells[4][StringGrid1->RowCount-1] = "0:00:00";
StringGrid1->Cells[5][StringGrid1->RowCount-1] = EditPrice->Text;
При выделении строки таблицы данные выделенной строки копируются в текстовые поля для редактирования (см. листинг 12):
функция обработки выделения строки таблицы
void __fastcall TViewForm::StringGrid1SelectCell(TObject *Sender, int ACol,
if(ARow > 0){ если выбрали не шапку таблицы
EditType->Text = StringGrid1->Cells[0][ARow];
EditDescribe->Text = StringGrid1->Cells[1][ARow];
EditParametrs->Text = StringGrid1->Cells[2][ARow];
EditSerial->Text = StringGrid1->Cells[3][ARow];
EditDateSell->Text = StringGrid1->Cells[4][ARow];
EditPrice->Text = StringGrid1->Cells[5][ARow];
//копируем выделенный элемент в буфер
strcpy(selectedHard->type,StringGrid1->Cells[0][ARow].c_str());
strcpy(selectedHard->describe,StringGrid1->Cells[1][ARow].c_str());
strcpy(selectedHard->parametrs,StringGrid1->Cells[2][ARow].c_str());
selectedHard->serial = StringGrid1->Cells[3][ARow].ToInt();
selectedHard->dateSell = StringGrid1->Cells[4][ARow];
selectedHard->price =StringGrid1->Cells[5][ARow].ToInt();
Реализация модуля Sell представляет собой заимствование методов модуля View с учетом того, что в таблицу отображаются только те комплектующие, которые еще не были проданы.
При запуске программы на экран будет выведен рисунок 1.
При выборе кнопки «комплектующие» будет открыто окно просмотра и редактирования как на рисунке 2. Над каждой из колонок располагается кнопка «сортировать» - при ее нажатии список будет отсортирован по указанному полю, каждое нажатие меняет направление сортировки на противоположное.
Для демонстрации работы поиска введем в поиск характеристик цифру 4, будут отображены все комплектующие кроме последнего, у которого нет этой цифры в характеристиках. (см. рисунок 3).
Окно просмотра и редактирования комплектующих
Теперь, если ввести в поле фильтра характеристик цифру 2, то останется только одно комплектующее (см. рисунок 4):
Если заведомо неверно ввести значения в поля серийного номера, даты продажи комплектующего, то при попытке добавления или редактирования элемента с введенными значениями будут выведены сообщения об ошибке, как на рисунке 5 и 6 соответственно:
сообщение об ошибке при неверном вводе (серийный номер)
сообщение об ошибке при неверном вводе (серийный номер)
Все произведенные изменения (редактирование, удаление, добавление) сохраняются в бинарном файле после нажатия кнопки «сохранить».
При выборе в главном окне кнопки «продажа» будет открыто окно, как на рисунке 7, в нем будут отображаться только те комплектующие, дата продажи у которых еще не установлена.
Для осуществления продажи достаточно выбрать комплектующее и указать дату продажи, после чего нажать кнопку «продать». При успешной проверки формата данных выбранное комплектующее исчезнет из отображаемого списка.
Для получения отчета о продажах в текстовый файл требуется в поле даты ввести требуемый день, после этого нажать кнопку «Продажи за день» - будет сформирован текстовый файл «продажи.txt»
Сделанные изменения также требуется сохранять.
В ходе реализации использование WINAPI в основном ограничилось главной функцией WinMain, остальные визуальные компоненты были использованы из библиотеки vlc, это сделано с расчетом более быстрого создания интерфейса более высокого уровня и более сложного, чем при использовании WINAPI.
Во время выполнения курсовой работы были закреплены, систематизированы, углублены и развиты теоретические и практические знания среды Borland C++ Builder 6.0, знания по объектно-ориентированному программированию, выработан индивидуальный подход по поиску, изучению и анализу специальной научно-технической литературы и документации, справочников, стандартов, методических и других материалов.
Программа реализована с дружественным, интуитивно понятным и соответствующим функциональным требованиям интерфейсом.
Программа может быть легко усовершенствована благодаря модульному строению, добавление новых модулей.
1 А.Я. Архангельский «Программирование в C++ Builder 6», «Бином» г. Москва 2003 с.1150.
2 Бобровский С. «Технологии С++ Builder. Разработка приложений для бизнеса» 2007 «ПИТЕР» с. 560.
3 Ю.П.Федоренко «Алгоритмы и программы на C++ Builder» «ДМК Пресс» Москва 2010 с. 345
ПРИЛОЖЕНИЕ А – МОДУЛЬНАЯ СХЕМА ПРОГРАММЫ
ПРИЛОЖЕНИЕ Б – ФУНКЦИОНАЛЬНАЯ СХЕМА ПРОГРАММЫ
Создание базы данных и описание программы "Учебная база данных", предназначенной для группировки сведений об учениках. Характеристика функциональных возможностей программы: добавление записей в базу, редактирование, удаление записей и сортировка данных. курсовая работа [1,2 M], добавлен 25.04.2011
Типы ограничений, поддерживающие целостность в реляционной модели данных. Определение значения поля первичного ключа с помощью генератора. Добавление, изменение и удаление записей в таблицу базы данных "Библиотека" на языке программирования SQL. лабораторная работа [30,5 K], добавлен 10.10.2012
Разработка приложения, которое содержит данные об экспонатах и выставках. Создание базы данных и добавление элемента с информацией в любую позицию списков. Добавление и удаление экспонатов с выставки. Сохранение всех списков в файлы, составление отчета. курсовая работа [1,2 M], добавлен 02.07.2014
Разработка автоматизированной информационно-справочной системы хранения и обработки информации оптового склада, которая способствует быстрому поиску необходимых данных. Создание таблиц и базы данных. Добавление и удаление данных в записной книжке. курсовая работа [1,0 M], добавлен 08.12.2014
Создание таблиц и просмотр содержимого базы данных. Редактирование данных и модификация структуры базы данных. Методы упорядочения записей (сортировка, индексирование). Выполнение вычислений в запросах. Приемы работы с формами, отчетами и макросами. лабораторная работа [5,9 M], добавлен 13.01.2010
Создание базы данных. Поиск, изменение и удаление записей. Обработка и обмен данными. Проектирование базы данных. Определение формул для вычисляемой части базы. Редактирование полей и записей. Формы представления информации, содержащейся в базе данных. курсовая работа [67,0 K], добавлен 23.02.2009
Создание простых форм-справочников. Редактирование свойств формы в режиме конструктора. Добавление и редактирование свойств элементов управления. Проектирование отчётов для базы данных. Приведение таблицы к нормальной форме и построение схемы данных. реферат [138,0 K], добавлен 23.11.2008
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Разработка однотабличной базы данных курсовая работа. Программирование, компьютеры и кибернетика.
Реферат по теме Предания табасаранского народа
Практическая Работа No 2 Неорганические Соединения Клетки
Реферат по теме Практические вопросы исчисления и уплаты ЕСН в адвокатских образованиях, являющихся юридическими лиц...
Структура Личности Преступника Реферат
Курсовая работа по теме Возникновение инфляции
Как Писать Сочинение Огэ 9.3 2022 Пример
Инженерная Доска Эссе Отзывы
Льготы на предпринимательскую деятельность
Курсовая работа по теме Экономическое и энергетическое обоснование производства валерианы
Сборник Самостоятельных И Контрольных Работ По Математике
Объем Сочинения Огэ
Реферат по теме Функции мозговых волн
Проблема Морали В Философии Юма Реферат
Реферат: Вадим Акентьев
Гдз Контрольные Работы Дорофеев 7
Дипломная работа по теме Проектирование активных фильтров на операционных усилителях
Реферат по теме Права, отстаиваемые гомосексуалистами, есть не что иное, как право на порок
Курсовая Работа На Тему 9 Организация Потребительского Кредитования
Реферат: Психологія судової діяльності
Дипломная работа: Вулканы Тихоокеанского складчатого пояса в пределах Камчатско-Курильской гряды
Опорно-двигательная система - Медицина презентация
Часто болеющие дети - Медицина презентация
Планирование рекламной кампании на примере ОАО "Вимм-Билль-Данн" - Маркетинг, реклама и торговля практическая работа


Report Page