Автор работы: Пользователь скрыл имя, 27 Марта 2011 в 09:22, курсовая работа
Данная курсовая есть результат работы, выполненной в ходе изучения дисциплины “Базы данных”. В качестве задания необходимо создать программу, предназначенную для работы с базой данных, содержащей в себе информацию об учебных планах. На мой взгляд, были выполнены все требования и пожелания преподавателя касаемо функционирования и представления данных.
1.Введение………………………………………………………………………...3
2.Задача
a.Предметная область и ER-диаграмма……………….………………………………………………..4
b.Физическая модель данных (макеты таблиц)…………………………. 5
c.Список явных ограничений целостности……………………………………………………………….6
3.Описание приложения
a.Функции и процедуры, а так же связи.......………………………...……7
b.Классы, их методы и поля класса………………………………………25
4.Описание функционирования базы данных
a.Процедуры и функции по реализации ограничений целостности, включая SQL запросы……………………………………………….......28
b.SQL запросы по ведению электронного аналога документа…………………………………………………………….…..29
5.Описание экранных форм……………………………………………………...30
6.Руководство по эксплуатации………………………………………………....31
7.Заключение…………………………………………………………………..….32
8.Список литературы………………………………………………………..……33
9.Приложение……………………………………………………………….….…34
QSqlRecord record2=Plan->record(b);
idplan=record2.value("ID_plan"
idkurs=record1.value("kurs").
model55.setQuery(tr("SELECT
ID_disc FROM Disciplina WHERE (b_disc=\"%1\")").arg(record1.
record1=model55.record(0);
iddisc=record1.value("ID_disc"
izmenitnagr form;
form.exec();
model1.setQuery(tr("SELECT
b_disc,kurs,lec,labs,prakt,
ui->nagruz_viev_2->setModel(&
}
Обновить:
void MainWindow::Refresh()
{
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT
b_disc,b_stud,c_stud,b_prep,b_
ui->tableView->setModel(model)
QSqlQuery q("select distinct b_stud from Student");
int i=0; QString str;
ui->comboBox_2->clear();
while(q.next())
{
str=q.value(0).toString();
ui->comboBox_2->addItem(str,i)
i++;
}}
Генерировать отчёт:
void MainWindow::Report()
{
QString k,y;
k=ui->comboBox_2->currentText(
QSqlQuery query;
query.exec("delete from tmp");
query.prepare("INSERT INTO tmp (b_stud, year_plan)"
"VALUES (:id1, :id2)");
query.bindValue(":id1",k);
query.bindValue(":id2",y);
query.exec();
rep_int=dynamic_cast<Report::
rep_int->setDatabase(db);
rep_int->exec();
}
Отображение нагрузки и студентов по нажатию на учебный план:
void
MainWindow::plan_and_students(
{
f=true; c=true;
ui->ok_nagruz->setEnabled(
ui->del_new_stud->setEnabled(
ui->add_nagr->setEnabled(true)
ui->del_nagruz->setEnabled(
int
a=ui->plan_viev->currentIndex(
QSqlRecord record1=Plan->record(a);
model11.setQuery(tr("SELECT
b_stud FROM Student, Inf_Stud, Plan WHERE (Student.ID_stud=Inf_Stud.ID_
ui->listView->setModel(&
model1.setQuery(tr("SELECT
b_disc,kurs,lec,labs,prakt,
ui->nagruz_viev_2->setModel(&
QString
str=record1.value("b_plan").
int
d=record1.value("ID_plan").
QSqlQuery query;
query.exec("delete from tmp");
query.prepare("INSERT INTO tmp (b_stud, year_plan)"
"VALUES (:id1, :id2)");
query.bindValue(":id1",str);
query.bindValue(":id2",d);
query.exec();
}
Функции обеспечения ограничений целостности (сокрытие кнопок):
void MainWindow::st()
{
ui->del_new_stud->setEnabled(
}
void MainWindow::st_viev()
{
if(f==true)
ui->add_new_stud->setEnabled(
ui->del_new_stud->setEnabled(
int a=ui->stud_viev->currentIndex(
QSqlRecord record1=Student->record(a);
bool k=false;
for(int i=0;i<Inf_Stud->rowCount();i++
{
QSqlRecord record2=Inf_Stud->record(i);
if(record1.value("ID_stud").
k=true;
}
if (k==true)
{
ui->add_new_stud->setEnabled(
}
}
void MainWindow::izm_nag()
{
ui->ok_nagruz->setEnabled(
ui->del_nagruz->setEnabled(
}
Для
неосновного класса add_disc
(добавить дисциплину):
Отображение таблиц:
Disciplina=new QSqlTableModel(0,db);
Disciplina->setTable("
Disciplina->select();
Сигналы:
QObject::connect(m_ui->
Добавить дисциплину:
void add_disc::add()
{
QString str=m_ui->lineEdit->text();
bool k=false;
for(int i=0;i<Disciplina->rowCount();
{
QSqlRecord record1=Disciplina->record(i);
if(record1.value("b_disc").
k=true;
}
if(k==true)
{
QMessageBox::information(this, tr("DUBL"),
tr("This discipline is already in the table"));
}
else {
QSqlQuery query;
query.prepare("INSERT INTO Disciplina (b_disc)"
"VALUES (:id2)");
query.bindValue(":id2",str);
query.exec();
add_disc::close();
}
}
Для
неосновного класса
add_nagruz (связь
Дисциплина-План):
Отображение таблиц:
Prep_Plan=new QSqlTableModel(0,db);
Prep_Plan->setTable("Prep_
Prep_Plan->select();
Вывод в комбо бокс преподавателей:
QString str;
QSqlQuery q("select distinct b_disc from Disciplina"); //вывод в комбо боксы преподавателей
int i=0;
while(q.next())
{
str=q.value(0).toString();
m_ui->_prep->addItem(str,i);
i++;
Сигналы:
QObject::connect(m_ui->add1,
SIGNAL(clicked()),this, SLOT(add1()));
Добавить
нагрузку:
void add_nagruz::add1()
{
Qt::CheckState state_1, state_2;
int zach, exam;
state_1 = m_ui->checkBox->checkState();
state_2 = m_ui->checkBox_2->checkState()
if ( state_1 == Qt::Checked ) {zach=1;}
else {zach=0;}
if ( state_2 == Qt::Checked ) {exam=1;}
else {exam=0;}
int kurs, lec, labs, prakt;
kurs=m_ui->spinBox->value();
lec=m_ui->spinBox_2->value();
labs=m_ui->spinBox_3->value();
prakt=m_ui->spinBox_4->value()
QString k,s;
k=m_ui->_prep->currentText();
model1.setQuery("SELECT ID_disc FROM Disciplina WHERE b_disc='"+k+"'");
QSqlRecord record3=model1.record(0);
int prep=record3.value("ID_disc").
model1.setQuery("SELECT year_plan FROM tmp");
record3=model1.record(0);
int plan=record3.value("year_plan"
bool d=false;
for(int i=0;i<Prep_Plan->rowCount();i+
{
QSqlRecord record2=Prep_Plan->record(i);
if(record2.value("ID_disc").
d=true;
}
if(d==true){
QMessageBox::information(this, tr("DUBL"),
tr("This plan is already in the table"));
}
else
{
QSqlQuery query;
query.prepare("INSERT INTO Prep_Plan (ID_disc, ID_plan, kurs, lec, labs, prakt, zach, exam)"
"VALUES (:id1, :id2, :kurs, :lec, :labs, :prakt, :zach, :exam)");
query.bindValue(":id1",prep);
query.bindValue(":id2",plan);
query.bindValue(":kurs",kurs);
query.bindValue(":lec",lec);
query.bindValue(":labs",labs);
query.bindValue(":prakt",
query.bindValue(":zach",zach);
query.bindValue(":exam",exam);
query.exec();
}
}
Для
неосновного класса add_prep (добавить
преподавателя):
Отображение таблиц:
Prepodavatel=new QSqlTableModel(0,db);
Prepodavatel->setTable("
Prepodavatel->select();
Сигналы:
QObject::connect(m_ui->