База данных

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

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

— 546.75 Кб (Скачать файл)

    }

    Disciplina->removeRow(a);

    Disciplina->submitAll();

    }

    }

    }

    void MainWindow::del_prep()

    {

    int a=ui->prep_viev->currentIndex().row();

    QSqlRecord record1=Prepodavatel->record(a);

    bool k=false;

    for(int i=0;i<Inf_Disc->rowCount();i++)

    {

    QSqlRecord record2=Inf_Disc->record(i);

    if(record1.value("ID_prep").toInt()==record2.value("ID_prep").toInt())

    k=true;

    }

    if (k==false)

    {

    Prepodavatel->removeRow(a);

    Prepodavatel->submitAll();

    }

    else

    {

    int r = QMessageBox::question(this, tr("DELETE PREPOD"),

    tr("Delete \"%1\" and its links?")

    .arg(record1.value("b_prep").toString()),

    QMessageBox::Yes | QMessageBox::Default,

    QMessageBox::No | QMessageBox::Escape);

    if (r == QMessageBox::No)

    return;

    else

    {

    for(int i=0;i<Inf_Disc->rowCount();i++)

    {

    QSqlRecord record2=Inf_Disc->record(i);

    if(record1.value("ID_prep").toInt()==record2.value("ID_prep").toInt())

    {

    Inf_Disc->removeRow(i);

    Inf_Disc->submitAll();

    }

    }

    Prepodavatel->removeRow(a);

    Prepodavatel->submitAll();

    }

    }

    }

    void MainWindow::del_plan()

    {

    int a=ui->plan_viev->currentIndex().row();

    QSqlRecord record1=Plan->record(a);

    bool k=false,l=false;

    for(int i=0;i<Prep_Plan->rowCount();i++)

    {

    QSqlRecord record2=Prep_Plan->record(i);

    if(record1.value("ID_plan").toInt()==record2.value("ID_plan").toInt())

    k=true;

    }

    for(int i=0;i<Inf_Stud->rowCount();i++)

    {

    QSqlRecord record2=Inf_Stud->record(i);

    if(record1.value("ID_plan").toInt()==record2.value("ID_plan").toInt())

    l=true;

    }

    if (k==false&&l==false)

    {

    Plan->removeRow(a);

    Plan->submitAll();

    }

    else

    {

    int r = QMessageBox::question(this, tr("DELETE PLAN"),

    tr("Delete \"%1\" and its links?")

    .arg(record1.value("b_plan").toString()),

    QMessageBox::Yes | QMessageBox::Default,

    QMessageBox::No | QMessageBox::Escape);

    if (r == QMessageBox::No)

    return;

    else

    {

    for(int i=0;i<Prep_Plan->rowCount();i++)

    {

    QSqlRecord record2=Prep_Plan->record(i);

    if(record1.value("ID_plan").toInt()==record2.value("ID_plan"))

    {

    Prep_Plan->removeRow(i);

    Prep_Plan->submitAll();

    }

    }

    for(int i=0;i<Inf_Stud->rowCount();i++)

    {

    QSqlRecord record2=Inf_Stud->record(i);

    if(record1.value("ID_plan").toInt()==record2.value("ID_plan").toInt())

    {

    Inf_Stud->removeRow(i);

    Inf_Stud->submitAll();

    }

    }

    Plan->removeRow(a);

    Plan->submitAll();

    }

    }

    }

    void MainWindow::del_stud()

    {

    int a=ui->stud_viev->currentIndex().row();

    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").toInt()==record2.value("ID_stud").toInt())

    k=true;

    }

    if (k==false)

    {

    Student->removeRow(a);

    Student->submitAll();

    }

    else

    {

    int r = QMessageBox::question(this, tr("DELETE STUENT"),

    tr("Delete \"%1\" and its links?")

    .arg(record1.value("b_stud").toString()),

    QMessageBox::Yes | QMessageBox::Default,

    QMessageBox::No | QMessageBox::Escape);

    if (r == QMessageBox::No)

    return;

    else

    {

    for(int i=0;i<Inf_Stud->rowCount();i++)

    {

    QSqlRecord record2=Inf_Stud->record(i);

    if(record1.value("ID_stud").toInt()==record2.value("ID_stud").toInt())

    {

    Inf_Stud->removeRow(i);

    Inf_Stud->submitAll();

    }

    }

    Student->removeRow(a);

    Student->submitAll();

    }

    }

    }

    void MainWindow::del_nagruz()

    {

    int a=ui->nagruz_viev_2->currentIndex().row();

    QSqlRecord record1=model1.record(a);

    int b=ui->plan_viev->currentIndex().row();

    QSqlRecord record2=Plan->record(b);

    model1.setQuery(tr("DELETE FROM Prep_Plan WHERE (ID_disc IN (SELECT ID_disc FROM Disciplina WHERE b_disc=\"%1\")) AND (ID_plan IN (SELECT ID_plan FROM Plan WHERE b_plan=\"%2\")) AND kurs=\"%3\"").arg(record1.value("b_disc").toString()).arg(record2.value("b_plan").toString()).arg(record1.value("kurs").toString()));

    model1.setQuery(tr("SELECT b_disc,kurs,lec,labs,prakt,zach,exam FROM Disciplina, Plan, Prep_Plan WHERE Disciplina.ID_disc=Prep_Plan.ID_disc AND Prep_Plan.ID_plan=Plan.ID_plan AND (b_plan=\"%1\") AND (year_plan=\"%2\") AND (year_prod=\"%3\")").arg(record2.value("b_plan").toString()).arg(record2.value("year_plan").toInt()).arg(record2.value("year_prod").toInt()));

    ui->nagruz_viev_2->setModel(&model1);

    }

    void MainWindow::del_new_stud()

    {

    int a=ui->listView->currentIndex().row();

    int n=ui->plan_viev->currentIndex().row();

    QSqlRecord record1=Plan->record(n);

    QSqlRecord record2=model11.record(a);

    model33.setQuery(tr("DELETE FROM Inf_Stud WHERE (ID_stud IN (SELECT ID_stud FROM Student WHERE b_stud=\"%1\")) AND (ID_plan IN (SELECT ID_plan FROM Plan WHERE b_plan=\"%2\"))").arg(record2.value("b_stud").toString()).arg(record1.value("b_plan").toString()));

    model11.setQuery(tr("SELECT b_stud FROM Student, Inf_Stud, Plan WHERE (Student.ID_stud=Inf_Stud.ID_stud) AND (Inf_Stud.ID_plan=Plan.ID_plan) AND (b_plan=\"%1\") AND (year_plan=\"%2\") AND (year_prod=\"%3\")").arg(record1.value("b_plan").toString()).arg(record1.value("year_plan").toInt()).arg(record1.value("year_prod").toInt()));

    ui->listView->setModel(&model11);

    ui->del_new_stud->setEnabled(false);

    Inf_Stud->submitAll();

      } 

Применить:

    void MainWindow::ok_disc()

    {

    Disciplina->submitAll();

    ui->disc_viev->resizeColumnsToContents();

    model44.setQuery("SELECT b_disc,b_prep FROM Prepodavatel, Disciplina, Inf_Disc WHERE Prepodavatel.ID_prep=Inf_Disc.ID_prep AND Inf_Disc.ID_disc=Disciplina.ID_disc");

    ui->tableView_2->setModel(&model44);

    if(c==true){

    int a=ui->plan_viev->currentIndex().row();

    QSqlRecord record1=Plan->record(a);

    model1.setQuery(tr("SELECT b_disc,kurs,lec,labs,prakt,zach,exam FROM Disciplina, Plan, Prep_Plan WHERE Disciplina.ID_disc=Prep_Plan.ID_disc AND Prep_Plan.ID_plan=Plan.ID_plan AND (b_plan=\"%1\") AND (year_plan=\"%2\") AND (year_prod=\"%3\")").arg(record1.value("b_plan").toString()).arg(record1.value("year_plan").toInt()).arg(record1.value("year_prod").toInt()));

    ui->nagruz_viev_2->setModel(&model1);}

    }

    void MainWindow::ok_prep()

    {

    Prepodavatel->submitAll();

    ui->prep_viev->resizeColumnsToContents();

    model44.setQuery("SELECT b_disc,b_prep FROM Prepodavatel, Disciplina, Inf_Disc WHERE Prepodavatel.ID_prep=Inf_Disc.ID_prep AND Inf_Disc.ID_disc=Disciplina.ID_disc");

    ui->tableView_2->setModel(&model44);

    }

    void MainWindow::ok_plan()

    {

    bool k=false;

    QSqlRecord record0=Plan->record(Plan->rowCount()-1);

    for(int i=0;i<Plan->rowCount()-1;i++)

    {

    QSqlRecord record1=Plan->record(i);

    if(record1.value("b_plan").toString()==record0.value("b_plan").toString()&&record1.value("year_plan").toInt()==record0.value("year_plan").toInt()&&record1.value("year_prod").toInt()==record0.value("year_prod").toInt())

    k=true;

    }

    if(k==true)

    {

    QMessageBox::information(this, tr("DUBL"),

    tr("This plan is already in the table"));

    Plan->revertAll();

    }

    else

    Plan->submitAll();

    }

    void MainWindow::ok_stud()

    {

    Student->submitAll();

    if(c==true){

    int a=ui->plan_viev->currentIndex().row();

    QSqlRecord record1=Plan->record(a);

    model11.setQuery(tr("SELECT b_stud FROM Student, Inf_Stud, Plan WHERE (Student.ID_stud=Inf_Stud.ID_stud) AND (Inf_Stud.ID_plan=Plan.ID_plan) AND (b_plan=\"%1\") AND (year_plan=\"%2\") AND (year_prod=\"%3\")").arg(record1.value("b_plan").toString()).arg(record1.value("year_plan").toInt()).arg(record1.value("year_prod").toInt()));

    ui->listView->setModel(&model11);}

    } 

Отменить:

    void MainWindow::can_plan()

    {

    Plan->revertAll();

    }

    void MainWindow::can_stud()

    {

    Student->revertAll();

    } 

Изменить:

    void MainWindow::ok_nagruz()

    {

    int a=ui->nagruz_viev_2->currentIndex().row();

    QSqlRecord record1=model1.record(a);

    int b=ui->plan_viev->currentIndex().row();

Информация о работе База данных