Автор работы: Пользователь скрыл имя, 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
ui->prep_viev->
//Вывод таблицы Student
Student=new QSqlTableModel(0,db);
Student->setTable("
Student->select();
Student->setEditStrategy(
ui->stud_viev->setModel(
ui->stud_viev->
//Вывод таблицы Plan
Plan=new QSqlTableModel(0,db);
Plan->setTable("Plan");
Plan->select();
Plan->setEditStrategy(
ui->plan_viev->setModel(
ui->plan_viev->
//Вывод таблицы Prep_Plan
Prep_Plan=new QSqlTableModel(0,db);
Prep_Plan->setTable("
Prep_Plan->select();
Prep_Plan->
//Вывод таблицы Inf_Stud
Inf_Stud=new QSqlTableModel(0,db);
Inf_Stud->setTable("Inf_
Inf_Stud->select();
Inf_Stud->
//Вывод таблицы Inf_Disc
Inf_Disc=new QSqlTableModel(0,db);
Inf_Disc->setTable("Inf_
Inf_Disc->select();
Inf_Disc->
model44.setQuery("SELECT
b_disc,b_prep FROM Prepodavatel, Disciplina, Inf_Disc WHERE Prepodavatel.ID_prep=Inf_Disc.
ui->tableView_2->
//Вывод таблицы отчёт
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT
b_disc,b_stud,c_stud,b_prep,b_
ui->tableView->setModel(
Отображение кнопок:
ui->add_new_stud->setEnabled(
ui->del_new_stud->setEnabled(
ui->add_nagr->setEnabled(
ui->ok_nagruz->setEnabled(
ui->del_nagruz->setEnabled(
ui->ok_nagruz->setEnabled(
Сигналы:
//Сигналы для вкладки "Дисциплины и Преподаватели"
QObject::connect(ui->add_
QObject::connect(ui->del_
QObject::connect(ui->ok_
QObject::connect(ui->
QObject::connect(ui->add_
QObject::connect(ui->del_
QObject::connect(ui->ok_
//Сигналы для вкладки "Студенты и Учебные планы"
QObject::connect(ui->add_
QObject::connect(ui->del_plan,
QObject::connect(ui->ok_plan,
QObject::connect(ui->can_plan,
QObject::connect(ui->add_stud,
QObject::connect(ui->del_stud,
QObject::connect(ui->ok_stud,
QObject::connect(ui->can_stud,
QObject::connect(ui->add_new_
QObject::connect(ui->del_new_
QObject::connect(ui->plan_
this,SLOT(plan_and_students())
QObject::connect(ui->add_nagr,
QObject::connect(ui->del_
QObject::connect(ui->ok_
QObject::connect(ui->stud_
QObject::connect(ui->listView,
QObject::connect(ui->nagruz_
ui->add_new_stud->setEnabled(
ui->del_new_stud->setEnabled(
ui->add_nagr->setEnabled(
ui->ok_nagruz->setEnabled(
ui->del_nagruz->setEnabled(
ui->ok_nagruz->setEnabled(
//Сигналы для вкладки "Отчёт"
QObject::connect(ui->
QObject::connect(ui->
ComboBox для вкладки "Отчёт":
QSqlQuery q("select distinct b_stud from Student");
int i=0;
QString str;
while(q.next())
{
str=q.value(0).toString();
ui->comboBox_2->addItem(str,i)
i++;
}
Добавить запись:
//Описание функции кнопки Добавить
void MainWindow::add_dis()
{
add_disc form;
form.exec();
Disciplina->select();
}
void MainWindow::add_prep()
{
add_prepod form;
form.exec();
Prepodavatel->select();
}
void MainWindow::add_plan()
{
Plan->insertRecord(-1,
}
void MainWindow::add_stud()
{
Student->insertRecord(-1,
}
void MainWindow::add_nagr()
{
Prep_Plan->insertRecord(-1,
add_nagruz form;
form.exec();
Prep_Plan->select();
int a=ui->plan_viev->currentIndex(
QSqlRecord record1=Plan->record(a);
model1.setQuery(tr("SELECT
b_disc,kurs,lec,labs,prakt,
ui->nagruz_viev_2->setModel(&
}
void MainWindow::add_new_stud()
{
int a=ui->plan_viev->currentIndex(
QSqlRecord record1=Plan->record(a);
int n=ui->stud_viev->currentIndex(
QSqlRecord record2=Student->record(n);
int str=record1.value("ID_plan").
int str1=record2.value("ID_stud").
QSqlQuery query;
query.prepare("INSERT INTO Inf_Stud (ID_stud, ID_plan)"
"VALUES (:id1, :id2)");
query.bindValue(":id1",str1);
query.bindValue(":id2",str);
query.exec();
model11.setQuery(tr("SELECT
b_stud FROM Student, Inf_Stud, Plan WHERE (Student.ID_stud=Inf_Stud.ID_
ui->listView->setModel(&
Inf_Stud->submitAll();
ui->add_new_stud->setEnabled(
}
Удалить запись:
void MainWindow::del_dis()
{
int a=ui->disc_viev->currentIndex(
QSqlRecord record1=Disciplina->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_disc").
k=true;
}
for(int i=0;i<Inf_Disc->rowCount();i++
{
QSqlRecord record2=Inf_Disc->record(i);
if(record1.value("ID_disc").
l=true;
}
if (k==false&&l==false)
{
Disciplina->removeRow(a);
Disciplina->submitAll();
}
else
{
int r = QMessageBox::question(this, tr("DELETE DISCIPLINE"),
tr("Delete \"%1\" and its links?")
.arg(record1.value("b_disc").
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_disc").
{
Prep_Plan->removeRow(i);
Prep_Plan->submitAll();
}
}
for(int i=0;i<Inf_Disc->rowCount();i++
{
QSqlRecord record2=Inf_Disc->record(i);
if(record1.value("ID_disc").
{
Inf_Disc->removeRow(i);
Inf_Disc->submitAll();
}