Advertisement
Guest User

Untitled

a guest
Nov 13th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QPushButton>
  4. #include <QHBoxLayout>
  5. #include <QFile>
  6. #include <QTextStream>
  7. #include <QtSql/QSqlDatabase>
  8. #include <QtSql/QSqlQuery>
  9. #include <train_handler.h>
  10. #include <QSqlError>
  11. MainWindow::MainWindow(QWidget *parent) :
  12.     QMainWindow(parent),
  13.     ui(new Ui::MainWindow)
  14. {
  15.     ui->setupUi(this);
  16.     ui->tableWidget->setColumnWidth(0, 120);
  17.     ui->tableWidget->setColumnWidth(1, 120);
  18.     ui->tableWidget->setColumnWidth(2, 160);
  19.     ui->tableWidget->setColumnWidth(3, 160);
  20.     ui->tableWidget->setColumnWidth(4, 170);
  21.     ui->tableWidget->setColumnWidth(5, 200);
  22. }
  23.  
  24. void MainWindow::RemoveTrain()
  25. {
  26.  
  27. }
  28. void MainWindow::Edit()
  29. {
  30.  
  31. }
  32. void MainWindow::details()
  33. {
  34.  
  35. }
  36. MainWindow::~MainWindow()
  37. {
  38.     delete ui;
  39. }
  40.  void MainWindow::Add(vector<cities> &s)
  41.  {
  42.  
  43.      ui->tableWidget->insertRow(ui->tableWidget->rowCount());//вставка нового маршруту
  44.      for(int i = 0; i<ui->tableWidget->columnCount(); i++)
  45.      {
  46.          if(i==0)//опція видалення маршруту
  47.          {
  48.              QWidget* pWidget = new QWidget(this);
  49.              QPushButton* btn_edit = new QPushButton();
  50.              btn_edit->setText("Remove");
  51.              connect(btn_edit, &QPushButton::clicked, this, &MainWindow::RemoveTrain);
  52.              QHBoxLayout* pLayout = new QHBoxLayout(pWidget);
  53.              pLayout->addWidget(btn_edit);
  54.              pLayout->setAlignment(Qt::AlignCenter);
  55.              pLayout->setContentsMargins(0, 0, 0, 0);
  56.              pWidget->setLayout(pLayout);
  57.              ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1, i, pWidget);
  58.              continue;
  59.          }
  60.          if(i == 1)//опція редагування маршруту
  61.          {
  62.              QWidget* pWidget = new QWidget(this);
  63.              QPushButton* btn_edit = new QPushButton();
  64.              btn_edit->setText("Edit");
  65.              connect(btn_edit, &QPushButton::clicked, this, &MainWindow::Edit);
  66.              QHBoxLayout* pLayout = new QHBoxLayout(pWidget);
  67.              pLayout->addWidget(btn_edit);
  68.              pLayout->setAlignment(Qt::AlignCenter);
  69.              pLayout->setContentsMargins(0, 0, 0, 0);
  70.              pWidget->setLayout(pLayout);
  71.              ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1, i, pWidget);
  72.              continue;
  73.          }
  74.          if(i==2)// показати деталі
  75.          {
  76.              QWidget* pWidget = new QWidget(this);
  77.              QPushButton* btn_edit = new QPushButton();
  78.              btn_edit->setText("Show details");
  79.              connect(btn_edit, &QPushButton::clicked, this, &MainWindow::details);
  80.              QHBoxLayout* pLayout = new QHBoxLayout(pWidget);
  81.              pLayout->addWidget(btn_edit);
  82.              pLayout->setAlignment(Qt::AlignCenter);
  83.              pLayout->setContentsMargins(0, 0, 0, 0);
  84.              pWidget->setLayout(pLayout);
  85.              ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1, i, pWidget);
  86.              continue;
  87.          }
  88.          if(i == 3)//імя стартового міста
  89.          {
  90.              QTableWidgetItem*item = new QTableWidgetItem(s[0].city_);
  91.              item->setFlags(item->flags() ^ Qt::ItemIsEditable);
  92.              item->setTextAlignment(Qt::AlignCenter);
  93.              ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, i, item);
  94.              ui->tableWidget->item(ui->tableWidget->rowCount()-1,3)->setToolTip(ui->tableWidget->item(ui->tableWidget->rowCount()-1,3)->text());
  95.          }
  96.          if(i==4)//імя кінцевого міста
  97.          {
  98.              QTableWidgetItem*item = new QTableWidgetItem(s[s.size()-1].city_);
  99.              item->setFlags(item->flags() ^ Qt::ItemIsEditable);
  100.              item->setTextAlignment(Qt::AlignCenter);
  101.              ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, i, item);
  102.              ui->tableWidget->item(ui->tableWidget->rowCount()-1,4)->setToolTip(ui->tableWidget->item(ui->tableWidget->rowCount()-1,4)->text());
  103.          }
  104.          if(i==5)//імена проміжних міст
  105.          {
  106.              QString between = "";
  107.              for(int i = 1; i< s.size()-1;i++)
  108.              {
  109.                  if(i != s.size()-2)
  110.                  between += s[i].city_ + " - ";
  111.                  else
  112.                   between += s[i].city_ ;
  113.              }
  114.              QTableWidgetItem*item = new QTableWidgetItem(between);
  115.              item->setFlags(item->flags() ^ Qt::ItemIsEditable);
  116.              ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, i, item);
  117.              ui->tableWidget->item(ui->tableWidget->rowCount()-1,5)->setToolTip(ui->tableWidget->item(ui->tableWidget->rowCount()-1,5)->text());
  118.          }
  119.      }
  120.  
  121.  }
  122.  void MainWindow::on_actionAdd_train_triggered()
  123. {
  124.     Dialog e;
  125.     if(e.exec())
  126.     {
  127.         if(e.duplicate == "")
  128.         {
  129.          Add(e.Cities);
  130.         QFile inputFile("Data.txt");
  131.         if (inputFile.open(QIODevice::ReadOnly))
  132.         {
  133.            QTextStream in(&inputFile);
  134.            while (!in.atEnd())
  135.            {
  136.               QString line = in.readLine();
  137.                //ui->textBrowser->append(line);
  138.            }
  139.            inputFile.close();
  140.         }
  141.        //  ui->textBrowser->append(e.POPULATION);
  142.      /*  for(auto City: e.Cities)
  143.        {
  144.            ui->textBrowser->append(City.city_+ " " + City.depart_+ " " +City.leave_);
  145.        }*/
  146.  
  147.     //   Add(e.Cities);
  148.       static int i = 0;
  149.        static vector<train>T__;
  150.        vector<city>Cities_;
  151.       db = QSqlDatabase::addDatabase("QSQLITE");
  152.        db.setDatabaseName("C:\\SQLiteDatabaseBrowserPortable\\Data\\cities.db");
  153.         db.open();
  154.         QSqlQuery query;
  155.        for(int i = 0;i<e.Cities.size();i++)
  156.        {
  157.            query.exec("SELECT * FROM "+e.train_name+" WHERE city = '" +e.Cities[i].city_+ "'");
  158.            while(query.next())
  159.            {
  160.                QString city__ = query.value(1).toString();
  161.                QString arrival_time__ = query.value(2).toString();
  162.                QString depart_time__ = query.value(3).toString();
  163.                QString distance_to_previous__ = query.value(4).toString();
  164.                 QString population__ = query.value(5).toString();
  165.                city C(city__,arrival_time__,depart_time__,distance_to_previous__.toFloat(),population__.toInt(),i);
  166.                Cities_.push_back(C);
  167.            }
  168.        }
  169.        // db.close();
  170.       // train::train(int number, int people,QString name_, vector<city>&cities)
  171.        train T(i,1000,e.train_name,Cities_);
  172.        /*T__.push_back(T);
  173.        T__[T__.size()-1].*/
  174.        T.set_appropriate_placess_values();
  175.        for(auto item: T.placess)
  176.        {
  177.            QString s = "";
  178.            for(auto i:item)
  179.            {
  180.                s += QString::number(i)+" ";
  181.            }
  182.             ui->textBrowser->append(s);
  183.        }
  184.        T.random_passanger();
  185.        T.set_cost();
  186.  
  187.  
  188.        QSqlDatabase  db_ = QSqlDatabase::addDatabase("QSQLITE");
  189.         db_.setDatabaseName("C:\\SQLiteDatabaseBrowserPortable\\Data\\cities.db");
  190.          db_.open();
  191.       if(db_.isOpen())
  192.          ui->textBrowser_2->append("Opened");
  193.       QSqlQuery q;
  194.       ui->textBrowser_2->append(e.train_name+"_people " + QString::number(T.passangers.size()));
  195.  
  196.   /*    if(query.exec("create table "+s+" "
  197.                                             "(id integer primary key, "
  198.                                             "depart_city varchar(30), "
  199.                                             "arrival_city varchar(30), "
  200.                                             "firstname varchar(30), "
  201.                                             "lastname varchar(30), "
  202.                                             "bot varchar(10),"
  203.                                             "vagon integer,"
  204.                                             "place integer,"
  205.                                             "privileges varchar(5), "
  206.                                             "distance integer, "
  207.                                             "ticket_price integer)"))*/
  208.   //   {
  209.  
  210.       for(int i = 0; i< T.passangers.size();i++)//Add passengers
  211.       {
  212.           QString bot = "bot";
  213.           QString privilages = "No";
  214.           QString dataB = e.train_name+"_people";
  215.  
  216.           if(i % 10 == 0 )
  217. ui->textBrowser_2->append(QString::number(i+1)+" "+T.passangers[i].left_city+" "+T.passangers[i].arrival_city+" "+T.passangers[i].name+" "
  218. +T.passangers[i].surname+" "+QString::number(T.passangers[i].wagon)+" "+QString::number(T.passangers[i].place)+" "+QString::number(T.passangers[i].way_distance));
  219. if(!q.exec("INSERT INTO " +dataB +" (depart_city,arrival_city,firstname,lastname,bot,vagon,place,privileges,distance,ticket_price)"
  220.           +"values('"+T.passangers[i].left_city+"','"+T.passangers[i].arrival_city+"','"+T.passangers[i].name+"','"
  221. +T.passangers[i].surname+"','"+bot+"','"+T.passangers[i].wagon+"','"+T.passangers[i].place+"','"+privilages+"','"+T.passangers[i].way_distance+"','"+T.passangers[i].ticket_cost+"')"))
  222. {
  223.     ui->textBrowser_2->append(q.lastError().text()+" "+QString::number(q.lastError().number()));
  224. }
  225.       }
  226.        i++;
  227.        db_.close();
  228.        ui->textBrowser_2->append(T.res);
  229.         }
  230.     }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement