Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Тема 5. Информационная система ДЕКАНАТ для автоматизации работы деканата факультета вуза
Пусть максимальное число кафедр на факультете равно 10, кафедры готовят студентов по 12 специальностям.
По каждой специальности имеется учебный план, который содержит список всех предметов, изучаемых на этой специальности, с указанием общего количества лекционных, практических, лабораторных часов, раскладку предметов и курсовых работ по семестрам с указанием количества часов, форму сдачи предмета (зачет/экзамен).
На каждого студента заводится учебная карточка, в которую заносятся его точные данные, а также список предметов, подлежащих сдаче согласно учебному плану специальности. По мере сдачи предметов и перехода с курса на курс учебная карточка заполняется соответствующими оценками. По окончании вуза копия учебной карточки выдается студенту как приложение к диплому.
Система должна обеспечивать ввод и обработку учебных планов специальностей, учебных карточек студентов.
Разработать:
Схема данных приведена на рис. 1
Разработанные формы приведены на рис. 2-5.
Обработчики данных представлена на стр. 6-18
Рис. 1. Главная форма
Рис. 2. Форма "Учебные планы"
Рис. 3. Форма "Учебные карточки"
Рис. 4. Форма "Предметы"
//----------------------------------Главная форма--------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMain_Form *Main_Form;
//---------------------------------------------------------------------------
__fastcall TMain_Form::TMain_Form(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMain_Form::BPlansClick(TObject *Sender)
{
Plans->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TMain_Form::BCardsClick(TObject *Sender)
{
Students -> ShowModal ();
}
//---------------------------------------------------------------------------
void __fastcall TMain_Form::PredmClick(TObject *Sender)
{
Subjects -> ShowModal ();
}
//---------------------------------------------------------------------------
void __fastcall TMain_Form::BExitClick(TObject *Sender)
{
Main_Form -> Close ();
}
//---------------------------------------------------------------------------
//-------------------Форма "Учебные планы"------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "main.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TPlans *Plans;
//---------------------------------------------------------------------------
__fastcall TPlans::TPlans(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Edit_KafKeyPress(TObject *Sender, char &Key)
{
int value;
if (Key == 13)
{
TPlans::Add_KafClick(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Add_KafClick(TObject *Sender)
{
int value;
FindKaf -> Active = False;
FindKaf -> ParamByName ("KafName") -> Value = Edit_Kaf -> Text;
FindKaf -> Active = True;
if (FindKaf -> FieldByName ("NUMBER") -> Value !=0) MessageBox (NULL, "Кафедры не могут иметь одинаковые названия", NULL, MB_OK);
else
{
if (Edit_Kaf->Text=="") MessageBox (NULL, "Необходимо ввести название кафедры", NULL, MB_OK);
else
{
if (Kaf -> FindLast () == False) value = 0; else value = Kaf -> FieldByName ("Код кафедры") -> Value;
value++;
Kaf -> Append ();
Kaf -> FieldByName ("Код кафедры") -> Value = value;
Kaf -> FieldByName ("Название") -> Value = Edit_Kaf -> Text;
Kaf -> Post ();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Chg_KafClick(TObject *Sender)
{
FindKaf -> Active = False;
FindKaf -> ParamByName ("KafName") -> Value = Edit_Kaf -> Text;
FindKaf -> Active = True;
if (FindKaf -> FieldByName ("NUMBER") -> Value !=0) MessageBox (NULL, "Кафедры не могут иметь одинаковые названия", NULL, MB_OK);
else
{
Kaf -> Edit ();
Kaf -> FieldByName ("Название") -> Value = Edit_Kaf -> Text;
Kaf -> Post ();
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Del_KafClick(TObject *Sender)
{
if (MessageBox (NULL, "Удалить кафедру. Вы уверены?", "Удаление", MB_OKCANCEL) == 1)
{
Spec -> First();
while (!Spec->Eof)
{
if (Spec -> FieldByName ("Код кафедры") -> Value == Kaf -> FieldByName ("Код кафедры") -> Value)
{
Stud -> First();
while (!Stud->Eof)
{
if (Stud -> FieldByName ("Код специальности") -> Value == Spec -> FieldByName ("Код специальности") -> Value)
{
Otm -> First ();
while (!Otm -> Eof)
{
if (Stud -> FieldByName ("Код студента") -> Value == Otm-> FieldByName ("Код студента") -> Value) Otm -> Delete ();
Otm -> Next ();
}
Stud -> Delete();
}
Stud -> Next ();
}
Plan_All->First();
while (!Plan_All->Eof)
{
if (Plan_All -> FieldByName ("Код специальности") -> Value == Spec -> FieldByName ("Код специальности") -> Value) Plan_All ->Delete();
Plan_All -> Next ();
}
Spec -> Delete ();
}
Spec -> Next ();
}
Kaf -> Delete ();
Plan -> Active = False;
Plan -> Active = True;
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Add_SpecClick(TObject *Sender)
{
int value;
if (Edit_SpecNum -> Text == "") MessageBox (NULL, "Необходимо ввести № специальности", NULL, MB_OK);
else
{
if (Edit_Spec -> Text == "") MessageBox (NULL, "Необходимо ввести название специальности", NULL, MB_OK);
else
{
FindSpec -> Active = False;
FindSpec -> ParamByName ("SpecNum") -> Value = Edit_SpecNum -> Text;
FindSpec -> Active = True;
if ((FindSpec -> FieldByName ("NUMBER") -> Value !=0)&&(Spec -> FieldByName ("№ специальности") -> Value == Edit_SpecNum -> Text)) MessageBox (NULL, "Специальности не могут иметь одинаковые номера", NULL, MB_OK);
else
{
if (Spec_All -> FindLast() == False) value = 0;
else value = Spec_All -> FieldByName ("Код специальности") -> Value;
value++;
Spec -> Append ();
Spec -> FieldByName ("Код специальности") -> Value = value;
Spec -> FieldByName ("Название") -> Value = Edit_Spec -> Text;
Spec -> FieldByName ("№ специальности") -> Value = Edit_SpecNum -> Text;
Spec -> FieldByName ("Код кафедры") -> Value = Kaf -> FieldByName ("Код кафедры") -> Value;
Spec -> Post ();
Spec -> Active = False;
Spec -> Active = True;
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Edit_SpecNumKeyPress(TObject *Sender, char &Key)
{
if (Key == 13)
{
Plans -> ActiveControl = Edit_Spec;
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Chg_SpecClick(TObject *Sender)
{
FindSpec -> Active = False;
FindSpec -> ParamByName ("SpecNum") -> Value = Edit_SpecNum -> Text;
FindSpec -> Active = True;
if ((FindSpec -> FieldByName ("NUMBER") -> Value !=0)&&(Spec -> FieldByName ("№ специальности") -> Value != Edit_SpecNum -> Text) && (Spec -> FieldByName ("Название") -> Value == Edit_Spec -> Text)) MessageBox (NULL, "Специальности не могут иметь одинаковые номера", NULL, MB_OK);
else
{
if (Edit_Spec -> Text == "") MessageBox (NULL, "Необходимо ввести название специальности", NULL, MB_OK);
else
{
Spec -> Edit ();
Spec -> FieldByName ("Название") -> Value = Edit_Spec -> Text;
Spec -> FieldByName ("№ специальности") -> Value = Edit_SpecNum -> Text;
Spec -> Post ();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Del_SpecClick(TObject *Sender)
{
if (MessageBox (NULL, "Удалить специальность. Вы уверены?", "Удаление", MB_OKCANCEL) == 1)
{
Stud -> First();
while (!Stud->Eof)
{
if (Stud -> FieldByName ("Код специальности") -> Value == Spec -> FieldByName ("Код специальности") -> Value)
{
Otm -> First ();
while (!Otm -> Eof)
{
if (Stud -> FieldByName ("Код студента") -> Value == Otm-> FieldByName ("Код студента") -> Value) Otm -> Delete ();
Otm -> Next ();
}
if (Stud -> FieldByName ("Код студента") -> Value == Otm-> FieldByName ("Код студента") -> Value) Otm -> Delete ();
}
Stud -> Delete ();
Stud -> Next ();
}
if (Stud -> FieldByName ("Код специальности") -> Value == Spec -> FieldByName ("Код специальности") -> Value) Stud -> Delete ();
}
Spec -> Delete ();
Plan -> Active = False;
Plan -> Active = True;
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Grid_KafCellClick(TColumn *Column)
{
Plan -> Active = False;
Plan -> ParamByName ("Kod_Spec") -> Value = Spec -> FieldByName ("Код специальности") -> Value;
int value = Semestr -> ItemIndex;
value++;
Plan -> ParamByName ("Sem_Num") -> Value = value;
Plan -> Active = True;
if (Kaf -> FieldByName ("Код кафедры")!=0) Edit_Kaf -> Text = Kaf -> FieldByName ("Название") -> Value;
}
//---------------------------------------------------------------------------
void __fastcall TPlans::SemestrChange(TObject *Sender)
{
Plan -> Active = False;
Plan -> ParamByName ("Kod_Spec") -> Value = Spec -> FieldByName ("Код специальности") -> Value;
int value = Semestr -> ItemIndex;
value++;
Plan -> ParamByName ("Sem_Num") -> Value = value;
Plan -> Active = True;
}
//---------------------------------------------------------------------------
void __fastcall TPlans::GridSpecCellClick(TColumn *Column)
{
Plan -> Active = False;
Plan -> ParamByName ("Kod_Spec") -> Value = Spec -> FieldByName ("Код специальности") -> Value;
int value = Semestr -> ItemIndex;
value++;
Plan -> ParamByName ("Sem_Num") -> Value = value;
Plan -> Active = True;
if (Spec -> FieldByName ("Код специальности")!=0)
{
Edit_SpecNum -> Text = Spec -> FieldByName ("№ специальности")-> Value;
Edit_Spec -> Text = Spec -> FieldByName ("Название")-> Value;
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Add_PredmClick(TObject *Sender)
{
if (Semestr -> ItemIndex == -1) MessageBox (NULL, "Необходимо выбрать семестр", NULL, MB_OK);
else
{
if (ComboPredm -> Text == "") MessageBox (NULL, "Необходимо выбрать предмет", NULL, MB_OK);
else
{
int value;
FindPlan -> Active = False;
FindPlan -> ParamByName ("NamePredm") -> Value = ComboPredm-> Text;
FindPlan -> ParamByName ("SpecNum") -> Value = Spec -> FieldByName ("Код специальности")->Value;;
FindPlan -> ParamByName ("SemNum") -> Value = Semestr -> Text;
FindPlan -> Active = True;
FindPredm -> Active = False;
FindPredm -> ParamByName ("NamePredm") -> Value = ComboPredm-> Text;
FindPredm -> Active = True;
if (FindPlan -> FieldByName ("NUMBER") -> Value !=0)
{
Plan_All -> Edit ();
Plan_All -> FieldByName ("Наличие экзамена") -> Value = Examen -> ItemIndex;
Plan_All -> FieldByName ("Наличие курсовика") -> Value = Kursovik -> ItemIndex;
Plan_All -> FieldByName ("Лабораторных часов")-> Value = EditLab -> Text;
Plan_All -> FieldByName ("Лекционных часов") -> Value= EditLekt -> Text;
Plan_All -> FieldByName ("Практических часов") ->Value = EditPrakt -> Text;
}
else
{
if (Plan_All -> FindLast() == False) value = 0;
else value = Plan_All -> FieldByName ("Код") -> Value;
value++;
Plan_All -> Append ();
Plan_All -> FieldByName ("Код") -> Value = value;
Plan_All -> FieldByName ("Код специальности") -> Value = Spec -> FieldByName ("Код специальности") -> Value;
Plan_All -> FieldByName ("Код предмета") -> Value = FindPredm -> FieldByName ("Код предмета") -> Value;
Plan_All -> FieldByName ("№ семестра") -> Value = Semestr-> Text;
Plan_All -> FieldByName ("Наличие экзамена") -> Value = Examen -> ItemIndex;
Plan_All -> FieldByName ("Наличие курсовика") -> Value = Kursovik -> ItemIndex;
Plan_All -> FieldByName ("Лабораторных часов")-> Value = EditLab -> Text;
Plan_All -> FieldByName ("Лекционных часов") -> Value= EditLekt -> Text;
Plan_All -> FieldByName ("Практических часов") ->Value = EditPrakt -> Text;
}
Plan_All -> Post ();
Plan -> Active = False;
Plan -> Active = True;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TPlans::Del_PredmClick(TObject *Sender)
{
if (MessageBox (NULL, "Удалить запись. Вы уверены?", "Удаление", MB_OKCANCEL) == 1)
while (!Plan_All-> Eof)
{
if (Plan_All -> FieldByName ("Код") -> Value == Plan -> FieldByName ("Код") -> Value) Plan_All -> Delete();
Plan_All -> Next();
}
Plan -> Active = False;
Plan -> Active = True;
}
//---------------------------------------------------------------------------
//---------------Форма "Учебные карточки"------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TStudents *Students;
//---------------------------------------------------------------------------
__fastcall TStudents::TStudents(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TStudents::SemestrChange(TObject *Sender)
{
Otm -> Active = False;
int value = Semestr -> ItemIndex;
value++;
Otm -> ParamByName ("SemNum") -> Value = value;
Otm -> ParamByName ("StudNum") -> Value = Stud->FieldByName ("Код студента")->Value;
Otm -> Active = True;
Predm -> Active = False;
Predm -> ParamByName ("SemNum") -> Value = value;
Predm -> ParamByName ("SpecNum") -> Value = Spec->FieldByName ("Код специальности")->Value;
Predm -> Active = True;
}
//---------------------------------------------------------------------------
void __fastcall TStudents::DBGrid1CellClick(TColumn *Column)
{
Otm -> Active = False;
int value = Semestr -> ItemIndex;
value++;
Otm -> ParamByName ("SemNum") -> Value = value;
Otm -> ParamByName ("StudNum") -> Value = Stud->FieldByName ("Код студента")->Value;
Otm -> Active = True;
}
//---------------------------------------------------------------------------
void __fastcall TStudents::DBGrid2CellClick(TColumn *Column)
{
Otm -> Active = False;
int value = Semestr -> ItemIndex;
value++;
Otm -> ParamByName ("SemNum") -> Value = value;
Otm -> ParamByName ("StudNum") -> Value = Stud->FieldByName ("Код студента")->Value;
Otm -> Active = True;
}
//---------------------------------------------------------------------------
void __fastcall TStudents::Add_StudClick(TObject *Sender)
{
Edit_Stud -> Visible = True;
Edit_Stud -> Text = "";
LStud -> Visible = True;
BStud_OK -> Visible = True;
Students -> ActiveControl = Edit_Stud;
}
//---------------------------------------------------------------------------
void __fastcall TStudents::Edit_StudKeyPress(TObject *Sender, char &Key)
{
Stud -> Active = False;
int value;
if (Key == 13)
{
if (Edit_Stud -> Text=="") MessageBox (NULL, "Необходимо ввести ФИО", NULL, MB_OK);
else
{
if (Stud_All -> FindLast () == False ) value = 0;
else value = Stud_All -> FieldByName ("Код студента") -> Value;
value++;
Stud_All -> Append ();
Stud_All -> FieldByName ("Код студента") -> Value = value;
Stud_All -> FieldByName ("Код специальности") -> Value = Spec -> FieldByName ("Код специальности") -> Value ;
Stud_All -> FieldByName ("ФИО") -> Value = Edit_Stud -> Text;
Stud_All -> Post ();
}
}
Stud -> Active = True;
}
//---------------------------------------------------------------------------
void __fastcall TStudents::BStud_OKClick(TObject *Sender)
{
Stud -> Active = False;
int value;
if (Edit_Stud->Text=="") MessageBox (NULL, "Необходимо ввести ФИО", NULL, MB_OK);
else
{
if (Stud_All -> FindLast () == False ) value = 0;
else value = Stud_All -> FieldByName ("Код студента") -> Value;
value++;
Stud_All -> Append ();
Stud_All -> FieldByName ("Код студента") -> Value = value;
Stud_All -> FieldByName ("Код специальности") -> Value = Spec -> FieldByName ("Код специальности") -> Value ;
Stud_All -> FieldByName ("ФИО") -> Value = Edit_Stud -> Text;
Stud_All -> Post ();
}
Stud -> Active = True;
}
//---------------------------------------------------------------------------
void __fastcall TStudents::Add_OtmClick(TObject *Sender)
{
if (Semestr ->ItemIndex == -1) MessageBox (NULL, "Необходимо выбрать семестр", NULL, MB_OK);
else
{
Predm -> Active = False;
int value = Semestr -> ItemIndex;
value++;
Predm -> ParamByName ("SpecNum") -> Value = Spec-> FieldByName ("Код специальности")->Value;
Predm -> ParamByName ("StudNum") -> Value = Stud-> FieldByName ("Код студента")->Value;
Predm -> ParamByName ("SemNum") -> Value = value;
Predm -> Active = True;
ComboPredm -> Visible = True;
ComboEx -> Visible = True;
ComboKurs -> Visible = True;
LPredm -> Visible = True;
LEx -> Visible = True;
LKurs -> Visible = True;
BPredm_OK -> Visible = True;
Students -> ActiveControl = ComboPredm;
}
}
//---------------------------------------------------------------------------
void __fastcall TStudents::BPredm_OKClick(TObject *Sender)
{
if (ComboPredm -> Text == "") MessageBox (NULL, "Необходимо выбрать предмет", NULL, MB_OK);
else
{
int value;
FindOtm -> Active = False;
FindOtm -> ParamByName ("SemNum") -> Value = Semestr -> Text;
FindOtm -> ParamByName ("PredmNum") -> Value = Predm -> FieldByName ("Код предмета") -> Value;
FindOtm -> ParamByName ("StudNum") -> Value = Stud-> FieldByName ("Код студента")->Value;
FindOtm -> Active = True;
Otm -> Active = False;
if (FindOtm -> FindLast() == True)
{
Otm_All -> Edit ();
if (ComboEx -> Text == "") Otm_All -> FieldByName ("Оценка за экзамен") -> Value = 0;
else Otm_All -> FieldByName ("Оценка за экзамен") -> Value = ComboEx -> Text;
if (ComboKurs -> Text == "") Otm_All -> FieldByName ("Оценка за курсовик") -> Value = 0;
else Otm_All -> FieldByName ("Оценка за курсовик") -> Value = ComboKurs -> Text;
}
else
{
if (Otm_All -> FindLast() == False) value = 0;
else value = Otm_All -> FieldByName ("Код") -> Value;
value++;
Otm_All -> Append ();
Otm_All -> FieldByName ("Код") -> Value = value;
Otm_All -> FieldByName ("Код студента") -> Value = Stud -> FieldByName ("Код студента") -> Value;
Otm_All -> FieldByName ("Код предмета") -> Value = Predm -> FieldByName ("Код предмета") -> Value;
if (ComboEx -> Text == "") Otm_All -> FieldByName ("Оценка за экзамен") -> Value = 0;
else Otm_All -> FieldByName ("Оценка за экзамен") -> Value = ComboEx -> Text;
if (ComboKurs -> Text == "") Otm_All -> FieldByName ("Оценка за курсовик") -> Value = 0;
else Otm_All -> FieldByName ("Оценка за курсовик") -> Value = ComboKurs -> Text;
Otm_All -> FieldByName ("№ семестра") -> Value = Semestr -> Text;
}
Otm_All -> Post ();
Otm -> Active = True;
}
}
//---------------------------------------------------------------------------
//--------------------Форма "Предметы"------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSubjects *Subjects;
//---------------------------------------------------------------------------
__fastcall TSubjects::TSubjects(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------