///////////////////////////////////////////////////////////////////////////////////////////////////////////// // Datei: admin_sql_04.cpp // Autor: Yongxin Yu // // Version 0.4 (27 12 2002 // Neu: // - Anbindung an MySql // - Anzeige der Tabelleninhalte // // ToDo: // - Gruppe <-> Praktika // // Version: 0.31 (03 12 2002) // Neu: // - Student Hinzufügen Dialog erweitert // - Student Ändern Dialog erweitert // Version: 0.3 // Neu: // - Neue Größe des Login_Dialog's // - Beenden - Button auf dem Login_Dialog // // Kompilieraufruf (etwa) : g++ -I/usr/lib/qt3/include -L/usr/lib/qt3/lib -o admin_main3 admin_main3.cpp -lqt // qt3 ist vielleicht durch qt2 zu ersetzen ////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include #include #include #include #include // QSQL Header #include #include #include #include #define DRIVER "QMYSQL3" #define DATABASE "UePraK" #define USER "root" #define PASSWORD "" #define HOST "localhost" ///////////////// MAIN ///////////////////////////////////////// int main (int argc, char **argv) { QApplication myapp(argc,argv); // Database Connection START bool db_open = FALSE; QSqlDatabase* db = QSqlDatabase::addDatabase(DRIVER); db->setDatabaseName( DATABASE ); db->setUserName( USER ); db->setPassword( PASSWORD ); db->setHostName( HOST ); if( !db->open() ){ QMessageBox::information( 0, "Unable to open database", db->lastError().databaseText() + "\nPlease read the README file in the sqltable directory for more information."); return 1; } else db_open=TRUE; // Database Connection END // Definition des Hauptfensters QMainWindow* mainwin = new QMainWindow(); mainwin->setGeometry(0,0,800,550); // Definition des Benutzerwechseldialogs QDialog* login_dialog = new QDialog(); // login_dialog->setGeometry(200,220,400,200); login_dialog->setGeometry(20,20,400,300); // Definition des Hinzufügen Dialog Student QDialog* student_dialog = new QDialog(); student_dialog->setGeometry(100,100,380,450); // Definition des Bearbeiten Dialog Student2 QDialog* student_dialog2 = new QDialog(); student_dialog2->setGeometry(100,100,380,450); // Definition des Bearbeiten Dialog Student3 QDialog* student3_dialog = new QDialog(); student3_dialog->setGeometry(100,100,400,100); /////////////////////////////////////////////// // Dialog Benutzerwechsel // QPushButton* button_benutzer_login = new QPushButton("Login", login_dialog); button_benutzer_login->setGeometry(20,200,100,30); QObject::connect(button_benutzer_login, SIGNAL(clicked()), mainwin, SLOT(show())); // Hauptfenster anzeigen QObject::connect(button_benutzer_login, SIGNAL(clicked()), login_dialog, SLOT(hide())); // Login Dialog "verstecken" QPushButton* button_benutzer_reset = new QPushButton("Reset", login_dialog); button_benutzer_reset->setGeometry(140,200,100,30); //QObject::connect(zweiter_Button, SIGNAL(clicked()), &myapp, SLOT(done())); QPushButton* button_benutzer_quit = new QPushButton("Beenden", login_dialog); button_benutzer_quit->setGeometry(260,200,100,30); QObject::connect(button_benutzer_quit, SIGNAL(clicked()), login_dialog, SLOT(close()) ); QLabel *mylabel = new QLabel("Login",login_dialog); mylabel->setGeometry(125,10,200,50); mylabel->setFont(QFont("Times",24,QFont::Bold)); QLabel *benutzer_label = new QLabel("Benutzer:",login_dialog); benutzer_label->setGeometry(30,75,400,30); benutzer_label->setFont(QFont("Times",18)); QLabel *kennwort_label = new QLabel("Kennwort:",login_dialog); kennwort_label->setGeometry(30,110,400,30); kennwort_label->setFont(QFont("Times",18)); QLineEdit* benutzer2 = new QLineEdit(login_dialog); benutzer2->setGeometry(200,75,150,30); QLineEdit* kennwort = new QLineEdit(login_dialog); kennwort->setGeometry(200,110,150,30); ////////////////////////////////////////////////////////////////////////////////////////// // Dialog Student // ////////////////////////////////////////////////////////////////////////////////////////// QLabel *dialog_student = new QLabel("Student hinzufügen",student_dialog); dialog_student->setGeometry(50,0,200,30); dialog_student->setFont(QFont("Times",20,QFont::Bold)); QLabel* dialog_student_matnr = new QLabel("MatNr",student_dialog); dialog_student_matnr->setGeometry(10,40,100,25); QLineEdit* dialog_student_matnr_line = new QLineEdit(student_dialog); dialog_student_matnr_line->setGeometry(150,40,100,25); QLabel* dialog_student_vorname = new QLabel("Vorname",student_dialog); dialog_student_vorname->setGeometry(10,70,100,25); QLineEdit* dialog_student_vorname_line = new QLineEdit(student_dialog); dialog_student_vorname_line->setGeometry(150,70,180,25); QLabel* dialog_student_name = new QLabel("Name",student_dialog); dialog_student_name->setGeometry(10,100,100,25); QLineEdit* dialog_student_name_line = new QLineEdit(student_dialog); dialog_student_name_line->setGeometry(150,100,180,25); QLabel* dialog_student_gebort = new QLabel("Geburtsort",student_dialog); dialog_student_gebort->setGeometry(10,130,100,25); QLineEdit* dialog_student_gebort_line = new QLineEdit(student_dialog); dialog_student_gebort_line->setGeometry(150,130,180,25); QLabel* dialog_student_plz = new QLabel("PLZ Geburtsort",student_dialog); dialog_student_plz->setGeometry(10,160,100,25); QLineEdit* dialog_student_plz_line = new QLineEdit(student_dialog); dialog_student_plz_line->setGeometry(150,160,50,25); QLabel* dialog_student_gebdatum = new QLabel("Geburtsdatum",student_dialog); dialog_student_gebdatum->setGeometry(10,190,100,25); QLineEdit* dialog_student_gebdatum_line = new QLineEdit(student_dialog); dialog_student_gebdatum_line->setGeometry(150,190,80,25); QLabel* dialog_student_email = new QLabel("Email",student_dialog); dialog_student_email->setGeometry(10,220,100,25); QLineEdit* dialog_student_email_line = new QLineEdit(student_dialog); dialog_student_email_line->setGeometry(150,220,180,25); QLabel* dialog_student_passwort = new QLabel("Passwort",student_dialog); dialog_student_passwort->setGeometry(10,250,100,25); QLineEdit* dialog_student_passwort_line = new QLineEdit(student_dialog); dialog_student_passwort_line->setGeometry(150,250,100,25); QLabel* dialog_student_studgang = new QLabel("Studiengang",student_dialog); dialog_student_studgang->setGeometry(10,280,100,25); QLineEdit* dialog_student_studgang_line = new QLineEdit(student_dialog); dialog_student_studgang_line->setGeometry(150,280,150,25); QLabel* dialog_student_studrich = new QLabel("Studienrichtung",student_dialog); dialog_student_studrich->setGeometry(10,310,100,25); QLineEdit* dialog_student_studrich_line = new QLineEdit(student_dialog); dialog_student_studrich_line->setGeometry(150,310,150,25); QLabel* dialog_student_semester = new QLabel("Fachsemester",student_dialog); dialog_student_semester->setGeometry(10,340,100,25); QLineEdit* dialog_student_semester_line = new QLineEdit(student_dialog); dialog_student_semester_line->setGeometry(150,340,50,25); QLabel* dialog_student_regdatum = new QLabel("Registrierdatum",student_dialog); dialog_student_regdatum->setGeometry(10,370,100,25); QLineEdit* dialog_student_regdatum_line = new QLineEdit(student_dialog); dialog_student_regdatum_line->setGeometry(150,370,80,25); QPushButton* dialog_student_ok = new QPushButton("O.K.",student_dialog); dialog_student_ok->setGeometry(10,400,100,30); QObject::connect(dialog_student_ok, SIGNAL(clicked()), student_dialog, SLOT(close())); QPushButton* dialog_student_exit = new QPushButton("Abbruch.",student_dialog); dialog_student_exit->setGeometry(150,400,100,30); QObject::connect(dialog_student_exit, SIGNAL(clicked()), student_dialog, SLOT(close())); ////////////////////////////////////////////////////////////////////////////////////////// // Dialog Student 2 // ////////////////////////////////////////////////////////////////////////////////////////// QLabel *dialog_student2 = new QLabel("Student bearbeiten",student_dialog2); dialog_student2->setGeometry(50,0,200,30); dialog_student2->setFont(QFont("Times",20,QFont::Bold)); QLabel* dialog_student_matnr2 = new QLabel("MatNr",student_dialog2); dialog_student_matnr2->setGeometry(10,40,100,25); QLineEdit* dialog_student_matnr_line2 = new QLineEdit(student_dialog2); dialog_student_matnr_line2->setGeometry(150,40,100,25); QLabel* dialog_student_vorname2 = new QLabel("Vorname",student_dialog2); dialog_student_vorname2->setGeometry(10,70,100,25); QLineEdit* dialog_student_vorname_line2 = new QLineEdit(student_dialog2); dialog_student_vorname_line2->setGeometry(150,70,180,25); QLabel* dialog_student_name2 = new QLabel("Name",student_dialog2); dialog_student_name2->setGeometry(10,100,100,25); QLineEdit* dialog_student_name_line2 = new QLineEdit(student_dialog2); dialog_student_name_line2->setGeometry(150,100,180,25); QLabel* dialog_student_gebort2 = new QLabel("Geburtsort",student_dialog2); dialog_student_gebort2->setGeometry(10,130,100,25); QLineEdit* dialog_student_gebort_line2 = new QLineEdit(student_dialog2); dialog_student_gebort_line2->setGeometry(150,130,180,25); QLabel* dialog_student_plz2 = new QLabel("PLZ Geburtsort",student_dialog2); dialog_student_plz2->setGeometry(10,160,100,25); QLineEdit* dialog_student_plz_line2 = new QLineEdit(student_dialog2); dialog_student_plz_line2->setGeometry(150,160,50,25); QLabel* dialog_student_gebdatum2 = new QLabel("Geburtsdatum",student_dialog2); dialog_student_gebdatum2->setGeometry(10,190,100,25); QLineEdit* dialog_student_gebdatum_line2 = new QLineEdit(student_dialog2); dialog_student_gebdatum_line2->setGeometry(150,190,80,25); QLabel* dialog_student_email2 = new QLabel("Email",student_dialog2); dialog_student_email2->setGeometry(10,220,100,25); QLineEdit* dialog_student_email_line2 = new QLineEdit(student_dialog2); dialog_student_email_line2->setGeometry(150,220,180,25); QLabel* dialog_student_passwort2 = new QLabel("Passwort",student_dialog2); dialog_student_passwort2->setGeometry(10,250,100,25); QLineEdit* dialog_student_passwort_line2 = new QLineEdit(student_dialog2); dialog_student_passwort_line2->setGeometry(150,250,100,25); QLabel* dialog_student_studgang2 = new QLabel("Studiengang",student_dialog2); dialog_student_studgang2->setGeometry(10,280,100,25); QLineEdit* dialog_student_studgang_line2 = new QLineEdit(student_dialog2); dialog_student_studgang_line2->setGeometry(150,280,150,25); QLabel* dialog_student_studrich2 = new QLabel("Studienrichtung",student_dialog2); dialog_student_studrich2->setGeometry(10,310,100,25); QLineEdit* dialog_student_studrich_line2 = new QLineEdit(student_dialog2); dialog_student_studrich_line2->setGeometry(150,310,150,25); QLabel* dialog_student_semester2 = new QLabel("Fachsemester",student_dialog2); dialog_student_semester2->setGeometry(10,340,100,25); QLineEdit* dialog_student_semester_line2 = new QLineEdit(student_dialog2); dialog_student_semester_line2->setGeometry(150,340,50,25); QLabel* dialog_student_regdatum2 = new QLabel("Registrierdatum",student_dialog2); dialog_student_regdatum2->setGeometry(10,370,100,25); QLineEdit* dialog_student_regdatum_line2 = new QLineEdit(student_dialog2); dialog_student_regdatum_line2->setGeometry(150,370,80,25); QPushButton* dialog_student_ok2 = new QPushButton("O.K.",student_dialog2); dialog_student_ok2->setGeometry(10,400,100,30); QObject::connect(dialog_student_ok2, SIGNAL(clicked()), student_dialog2, SLOT(close())); QPushButton* dialog_student_exit2 = new QPushButton("Abbruch.",student_dialog2); dialog_student_exit2->setGeometry(150,400,100,30); QObject::connect(dialog_student_exit2, SIGNAL(clicked()), student_dialog2, SLOT(close())); ////////////////////////////////////////////////////////////////////////////////////////// // Dialog Student 3 // ////////////////////////////////////////////////////////////////////////////////////////// QLabel *dialog_student3 = new QLabel("Wollen Sie den gewählten Studenten löschen?",student3_dialog); dialog_student3->setGeometry(0,20,400,30); dialog_student3->setAlignment(4); // 4 heisst center dialog_student3->setFont(QFont("Times",10,QFont::Bold)); QPushButton* dialog_student3_ok = new QPushButton("Ja",student3_dialog); dialog_student3_ok->setGeometry(50,60,100,30); QObject::connect(dialog_student3_ok, SIGNAL(clicked()), student3_dialog, SLOT(close())); QPushButton* dialog_student3_exit = new QPushButton("Nein.",student3_dialog); dialog_student3_exit->setGeometry(250,60,100,30); QObject::connect(dialog_student3_exit, SIGNAL(clicked()), student3_dialog, SLOT(close())); /////////////////////////////////////////////////////////////////////////////////////////// // +++ Hauptfenster +++ // /////////////////////////////////////////////////////////////////////////////////////////// // einzelne Registerseiten QWidget* widget1 = new QWidget(); QWidget* widget2 = new QWidget(); QWidget* widget3 = new QWidget(); QWidget* widget4 = new QWidget(); QWidget* widget5 = new QWidget(); // Inhalt Seite 1 Student QPushButton* erster_Button = new QPushButton("Hinzufügen", widget1); erster_Button->setGeometry(10,10,100,30); QObject::connect(erster_Button, SIGNAL(clicked()), student_dialog, SLOT(exec())); QPushButton* zweiter_Button = new QPushButton("Bearbeiten", widget1); zweiter_Button->setGeometry(120,10,100,30); QObject::connect(zweiter_Button, SIGNAL(clicked()), student_dialog2, SLOT(exec())); QPushButton* dritter_Button = new QPushButton("Löschen", widget1); dritter_Button->setGeometry(230,10,100,30); QObject::connect(dritter_Button, SIGNAL(clicked()), student3_dialog, SLOT(exec())); QSqlCursor studCur( "Student" ); QDataTable *studTable = new QDataTable(&studCur,TRUE,widget1); studTable->setGeometry(10,50,740,390); studTable->setSorting(TRUE); studTable->refresh(); studTable->show(); // Inhalt Seite 2 Praktika QPushButton* erster_Button_Seite2 = new QPushButton("Hinzufügen", widget2); erster_Button_Seite2->setGeometry(10,10,100,30); // QObject::connect(erster_Button_Seite2, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* zweiter_Button_Seite2 = new QPushButton("Bearbeiten", widget2); zweiter_Button_Seite2->setGeometry(120,10,100,30); // QObject::connect(zweiter_Button_Seite2, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* dritter_Button_Seite2 = new QPushButton("Löschen", widget2); dritter_Button_Seite2->setGeometry(230,10,100,30); // QObject::connect(dritter_Button_Seite2, SIGNAL(clicked()), &myapp, SLOT(quit())); //QTable* praktika = new QTable(1,10,widget2);// keine Zeiger mehr, damit Header funktionieren !! //praktika->setGeometry(10,50,500,300); QSqlCursor gruppCur( "Gruppe" ); QDataTable *gruppTable = new QDataTable(&gruppCur,TRUE,widget2); gruppTable->setGeometry(10,50,740,390); gruppTable->setSorting(TRUE); gruppTable->refresh(); gruppTable->show(); // GURUPPE <> PRAKTIKA !!!??? // Inhalt Seite 3 Übungen QGroupBox* gruppen = new QGroupBox("Gruppen",widget3); gruppen->setGeometry(5,5,375,400); QGroupBox* leiter = new QGroupBox("Gruppenleiter",widget3); leiter->setGeometry(385,5,375,400); QPushButton* erster_Button_Seite5 = new QPushButton("Hinzufügen", gruppen); erster_Button_Seite5->setGeometry(10,20,100,30); // QObject::connect(erster_Button_Seite2, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* zweiter_Button_Seite5 = new QPushButton("Bearbeiten", gruppen); zweiter_Button_Seite5->setGeometry(120,20,100,30); // QObject::connect(zweiter_Button_Seite2, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* dritter_Button_Seite5 = new QPushButton("Löschen", gruppen); dritter_Button_Seite5->setGeometry(230,20,100,30); QPushButton* erster_Button_Seite6 = new QPushButton("Hinzufügen", leiter); erster_Button_Seite6->setGeometry(10,20,100,30); // QObject::connect(erster_Button_Seite2, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* zweiter_Button_Seite6 = new QPushButton("Bearbeiten", leiter); zweiter_Button_Seite6->setGeometry(120,20,100,30); // QObject::connect(zweiter_Button_Seite2, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* dritter_Button_Seite6 = new QPushButton("Löschen", leiter); dritter_Button_Seite6->setGeometry(230,20,100,30); QTable gruppen_tab(1,7,gruppen); // keine Zeiger mehr, damit Header funktionieren !! gruppen_tab.setGeometry(10,70,350,300); QHeader *header_gruppen = gruppen_tab.horizontalHeader(); header_gruppen->setLabel( 0, QObject::tr( "ID" ) ); header_gruppen->setLabel( 1, QObject::tr( "Fach" ) ); header_gruppen->setLabel( 2, QObject::tr( "Termin" ) ); header_gruppen->setLabel( 3, QObject::tr( "MaxTeilnehmerzahl" ) ); header_gruppen->setLabel( 4, QObject::tr( "Leiter" ) ); header_gruppen->setLabel( 5, QObject::tr( "AnmeldungAbDatum" ) ); header_gruppen->setLabel( 6, QObject::tr( "AnmeldungBisDatum" ) ); header_gruppen->setMovingEnabled(TRUE); QTable gruppen_tab2(1,8,leiter); // keine Zeiger mehr, damit Header funktionieren !! gruppen_tab2.setGeometry(10,70,350,300); QHeader *header_leiter = gruppen_tab2.horizontalHeader(); header_leiter->setLabel( 0, QObject::tr( "ID" ) ); header_leiter->setLabel( 1, QObject::tr( "Vorname" ) ); header_leiter->setLabel( 2, QObject::tr( "Nachname" ) ); header_leiter->setLabel( 3, QObject::tr( "Strasse") ); header_leiter->setLabel( 4, QObject::tr( "Ort" ) ); header_leiter->setLabel( 5, QObject::tr( "PLZ" ) ); header_leiter->setLabel( 6, QObject::tr( "EMail" ) ); header_leiter->setLabel( 7, QObject::tr( "Passwort" ) ); header_leiter->setMovingEnabled(TRUE); // Inhalt Seite 4 Klausur QPushButton* erster_Button_Seite4 = new QPushButton("Hinzufügen", widget4); erster_Button_Seite4->setGeometry(10,10,100,30); // QObject::connect(erster_Button_Seite4, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* zweiter_Button_Seite4 = new QPushButton("Bearbeiten", widget4); zweiter_Button_Seite4->setGeometry(120,10,100,30); // QObject::connect(zweiter_Button_Seite4, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* dritter_Button_Seite4 = new QPushButton("Löschen", widget4); dritter_Button_Seite4->setGeometry(230,10,100,30); // QObject::connect(dritter_Button_Seite4, SIGNAL(clicked()), &myapp, SLOT(quit())); QSqlCursor klausurCur( "Klausur" ); QDataTable *klausurTable = new QDataTable(&klausurCur,TRUE,widget4); klausurTable->setGeometry(10,50,740,390); klausurTable->setSorting(TRUE); klausurTable->refresh(); klausurTable->show(); // Inhalt Seite 5 Einstellungen QLabel* kennwort_aendern = new QLabel("Kennwort ändern",widget5); kennwort_aendern->setGeometry(10,10,200,30); kennwort_aendern->setFont(QFont("Times",20,QFont::Bold)); QLabel* benutzer = new QLabel("Benutzer :",widget5); benutzer->setGeometry(10,45,75,25); benutzer->setFont(QFont("Times",14)); QLabel* kennwort_alt = new QLabel("altes Kennwort :",widget5); kennwort_alt->setGeometry(180,45,100,25); kennwort_alt->setFont(QFont("Times",14)); QLabel* kennwort_neu = new QLabel("neues Kennwort :",widget5); kennwort_neu->setGeometry(380,45,100,25); kennwort_neu->setFont(QFont("Times",14)); QLineEdit* benutzer_feld = new QLineEdit(widget5); benutzer_feld->setGeometry(100,45,75,25); QLineEdit* kennwort_alt_feld = new QLineEdit(widget5); kennwort_alt_feld->setGeometry(295,45,75,25); QLineEdit* kennwort_neu_feld = new QLineEdit(widget5); kennwort_neu_feld->setGeometry(485,45,75,25); QPushButton* absenden = new QPushButton("Ändern", widget5); absenden->setGeometry(570,45,100,25); // QObject::connect(absenden, SIGNAL(clicked()), &myapp, SLOT(quit())); // Init der Register QTabWidget* tabwid = new QTabWidget(mainwin); tabwid->setGeometry(10,20,775,500); tabwid->addTab(widget1,"Studenten"); tabwid->addTab(widget2,"Praktika"); tabwid->addTab(widget3,"Übungen"); tabwid->addTab(widget4,"Klausurverwaltung"); tabwid->addTab(widget5,"Einstellungen"); // sonstiger Inhalt mainwin QPushButton* beenden = new QPushButton("Beenden", mainwin); beenden->setGeometry(10,520,120,25); QObject::connect(beenden, SIGNAL(clicked()), &myapp, SLOT(quit())); QPushButton* wechsel = new QPushButton("Benutzer wechseln", mainwin); wechsel->setGeometry(135,520,120,25); QObject::connect(wechsel, SIGNAL(clicked()), login_dialog, SLOT(show())); QObject::connect(wechsel, SIGNAL(clicked()), mainwin, SLOT(hide())); /////////////////////////////////////////////////////////////////////////////////// myapp.setMainWidget(login_dialog); login_dialog->show(); return myapp.exec(); }