Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Курсовая в среде Borland Builder.
Рассматриваемый далее проект реализует базу данных сотрудников. Имя класса штат (staff), поля имя (name), должность (job) и оклад (pay). Контейнер (таблица) называется crew (штат, шайка, экипаж и т.п.). Вы должны назвать класс соответственно теме Вашего проекта. Естественно названия полей и контейнера так же необходимо поменять. Обратите внимание, что свойство Name редактируемых полей формы включает в себя класс визуального компонента и имя поля Вашего класса. Это необязательно, но очень удобно при написании кода. Так же из соображений удобства свойство Name кнопок включает в себя имя операции над базой данных.
Запустите Borland Builder. Создайте новый проект тип Application Form.
Сохраните проект (Save Project As) в папке на рабочем столе. Будьте внимательны будет предложено сохранить две группы файлов Unit (форма) и Project (проект). В каждой группе по три файла, плюс еще один, дополнительный. Откройте папку и запишите имена этих семи файлов именно их надо сохранять и переносить, это исходники.
Вы находитесь в режиме проектирования формы (design). Перейдите в окно кода выберите файл формы типа h, по умолчанию - Unit1.h. Добавьте после последней директивы #include… инструкции:
#include <vector.h>
#include <algorith.h>
struct staff{
char name[50];
char job[20];
int pay;
friend bool operator<(const staff& a,const staff& b)
{ return a.pay<b.pay; } // for sort by pay
friend bool operator==(const staff& a,const staff& b)
{ return a.pay==b.pay; } // for search by pay
};
using namespace std;
extern vector <staff> crew;
extern int iMax,iCur;
Теперь выберите файл формы типа cpp, по умолчанию - Unit1. cpp. Добавьте после объявления TForm1 *Form1; инструкции:
vector <staff> crew;
int iMax=0,iCur=0;
Вернитесь в режим проектирования формы (design для Builder 2009).
Поместите на форму компонент TLabel, это метка (надпись). Выберите этот компонент на форме и в окне инспектора задайте свойство Auto Size = false, а свойство Caption = имя. Добавьте на форму компонент TEdit (редактируемое поле) и задайте его свойства: Text пустое значение, Name = EditName.
Аналогично добавьте еще две пары метка поле: TLabel (Auto Size = false, Caption = должность), TEdit (Name = EditJob, Text пустое значение) и TLabel (Auto Size = false, Caption = оклад), TEdit (Name = EditPay, Text пустое значение).
Поместите внизу на форму еще один компонент TLabel для вывода номера текущей записи. Задайте свойство Auto Size = false, свойство Name = LabelNum, а свойство Caption = 0 (ноль).
Поместите на форму кнопку компонент TButton. Задайте свойства кнопки: Caption = добавить, Name = ButtonAdd. Для создания кода, выполняемого при нажатии на кнопку, дважды щелкните по этой кнопке. Вы попадете в режим редактирования кода. При этом будет создана заготовка функции, вызываемой при щелчке по кнопке:
void __fastcall TForm1::ButtonAddClick(TObject *Sender)
{
}
Добавьте между фигурными скобками следующие инструкции:
crew.push_back(staff());
strcpy(crew[iMax].name,EditName->Text.c_str()); // t_str() for Builder 2009
strcpy(crew[iMax].job,EditJob->Text.c_str()); // t_str() for Builder 2009
crew[iMax].pay=EditPay->Text.ToIntDef(0);
iCur=iMax; iMax++;
LabelNum->Caption= IntToStr(iMax);
Добавьте «вручную» в класс формы функцию, выводящую выбранную запись базы данных в окно формы. Для этого опять выберите файл формы с расширением h. Добавьте после инструкции:
public: // User declarations
строчку:
void __fastcall ShowRecord();
Выберите файл формы с расширением cpp. Добавьте в конец файла код функции:
void __fastcall TForm1::ShowRecord()
{
EditName->Text=crew[iCur].name;
EditJob->Text=crew[iCur].job;
EditPay->Text=IntToStr(crew[iCur].pay);
LabelNum->Caption=IntToStr(iCur+1);
}
Вернитесь в режим проектирования формы (design). Добавьте слева от надписи, предназначенной для вывода номера текущей записи кнопку TButton. Задайте свойства кнопки: Caption = <<, Name = ButtonPrev. Справа от надписи еще одну кнопку (Caption = >>, Name = ButtonNext). Эти кнопки предназначены для навигации по записям базы данных.
Выберите кнопку ButtonPrev. Дважды щелкните по ней и в созданную заготовку функции добавьте инструкции:
if(iCur<=0) return;
iCur--; ShowRecord();
Аналогично создайте функцию для кнопки ButtonNext. Соответствующий код:
if(iCur>=iMax-1) return;
iCur++; ShowRecord();
Проверьте работу программы. Она позволяет заполнять базу данных и осуществлять выбор нужной записи. Однако все записи остаются в оперативной памяти. Следовательно, следующим шагом должна стать реализация операций сохранения и чтения из файла нашей информации. Поместите на форму компоненты TSaveDialog и TOpenDialog.
В начало файла формы с расширением h или файла формы с расширением cpp добавьте директиву:
#include <stdio.h>
Добавьте на форму кнопки «сохранить» и «открыть». Код для кнопки «сохранить» может быть следующим:
SaveDialog1->Execute();
FILE *f=fopen(SaveDialog1->FileName.c_str(),"wb"); // t_str() for Builder 2009
if(f)fwrite(&crew[0],sizeof(staff),iMax,f);
else ShowMessage("file error");
fclose(f);
А код кнопки «открыть» таким:
OpenDialog1->Execute();
FILE *f=fopen(OpenDialog1->FileName.c_str(),"rb"); // t_str() for Builder 2009
if(f==0){
ShowMessage("file error");return;
}
for(int i=0;i<crew.max_size();i++){
staff s;
fread(&s,sizeof(staff),1,f);
if(feof(f)) break;
crew.push_back(s);
}
fclose(f);
iMax=crew.size(); iCur=0; ShowRecord();
Далее реализуем операции поиска и сортировки записей базы данных по окладу сотрудника. Поместите на форму компонент TEdit (редактируемое поле) и задайте его свойства: Text = 0 , Name = EditName. Добавьте на форму кнопки «искать» и «сортировать». Код для кнопки «сортировать» может быть следующим:
sort(crew.begin(),crew.end());
iCur=0; ShowRecord();
А код кнопки «искать» таким:
staff s;
vector <staff>::iterator p;
s.pay=EditSearch->Text.ToIntDef(0);
s.pay=EditSearch->Text.ToIntDef(0);
p=find(crew.begin(),crew.end(),s);
iCur=p-crew.begin(); ShowRecord();
Замечание: Эти коды не устойчивы. Не хватает проверок на случай пустой базы данных, безуспешного поиска и т.п. Более аккуратную реализацию этих, а так же других операций можно найти в пособии: «Маслянкин В.И. Разработка Windows приложений в среде Borland».
Возможный дизайн главного окна (формы) приведен ниже:
В пояснительной записке нужно отметить что:
1. Проект выполнен в среде Borland Builder.
2. Проект состоит из шести основных файлов (здесь приведены имена файлов,
задаваемые по умолчанию):
- Project1.bpr файл проекта
- Project1.res ресурсы проекта
- Project1.cpp функция WinMain (точка входа)
- Unit1.dfm ресурсы формы
- Unit1.h объявление класса формы
- Unit1.cpp реализация класса формы и основных операций
3. Необходимо полностью привести код четырех файлов:
Project1.cpp, Unit1.dfm, Unit1.h и Unit1.cpp
4. Программа написана не Вами и Вы в ней так ничего и не поняли...