• 开学有课设的要求,大家都一顿网上源码...做数据库的可视化的话,很多语言都能做,我们的课程要求是JDBC,也就是java数据库,但是大多数的老师应该都允许使用自己熟悉或者喜欢的语言。 我周围的人课设用的语言如下:...
    开学有课设的要求,大家都一顿网上源码download,有的出钱买,但是下载的有的调试不好,或者做的太牛批了不敢用,为了温习一下Qt,自己亲手写了一个,幸亏老师比较仁慈,作品比较low但也过了,在此做一下课设的总结。
    
    ### 一、编程语言
    做数据库的可视化的话,很多语言都能做,我们的课程要求是JDBC,也就是java数据库,但是大多数的老师应该都允许使用自己熟悉或者喜欢的语言。
    
    我周围的人课设用的语言如下:
    - Java
    - Qt
    - Python
    #### 1、java
    Java做图形界面的话无疑需要使用swing,一个比较好的插件是windowbuilder,需要的可以自行安装,效果就是可以自行拖拽按钮等控件来对图形界面进行设计:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914125557659.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6X0NhbGVi,size_16,color_FFFFFF,t_70)
    #### 2、Qt
    Qt是基于C++语言进行开发的,使用MinGW进行编译运行的,Qt 的项目有ui文件,也可以直接对需要使用的容器和控件等进行拖拽来进行图形界面的设计:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914125828153.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6X0NhbGVi,size_16,color_FFFFFF,t_70)
    #### 3、Python
    Python图形界面可以使用pyQt,为什么叫pyqt呢,因为使用的模式和机制和qt的完全一样,应该说是用Python语言来实现Qt,需要安装模块pyqt5和pyqt5-tools,pyqt5-tools里面有designer可以对图形界面进行设计:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914130242259.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6X0NhbGVi,size_16,color_FFFFFF,t_70)Qt和Java我都试过,但是作为以前使用c++比较多的情况下,感觉Qt更好用一点,也有朋友说Java难用,具体怎样可以去试试,总有一款适合自己。
    
    ### 二、作品效果
    上传限制5M。。。弄了两个gif
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914133229431.gif)
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914133241711.gif)
    ### 三、遇到的问题及解决办法
    #### 1、去边框
    做了一个登陆界面,但是一般的界面框都是有边框的,下面是一个最简单的界面:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914131132691.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6X0NhbGVi,size_16,color_FFFFFF,t_70)
    想要的效果是把这个边框去掉,这样就变成了两个问题:
    - 去边框
    - 界面的拖拽移动(因为想要用鼠标移动界面需要拖动边框,去边框之后设置成无论拖拽哪里都可以移动界面)
    
    解决方案:
    ```c
    //所需要的头文件要include
    #include 
    -------------------------------------------------------------------
    //去边框
    setWindowFlags(Qt::FramelessWindowHint); 
    //setAttribute(Qt::WA_TranslucentBackground);//背景透明    这个用不到,不用透明
    
    //拖拽:
    void Widget::mouseMoveEvent(QMouseEvent *event)
    {
        if (m_bPressed)
            move(event->pos() - m_point + pos());
    }
    
    void Widget::mouseReleaseEvent(QMouseEvent *event)
    {
        Q_UNUSED(event);
        m_bPressed = false;
    }
    
    void Widget::mousePressEvent(QMouseEvent *event)
    {
        if (event->button() == Qt::LeftButton)
        {
            m_bPressed = true;
            m_point = event->pos();
        }
    }
    ```
    ### 2、窗口背景
    用label也应该可以实现,但是label需要在最底层,而且上层控件的背景色都要是透明的,不是太方便,实现办法:
    ```c
    //需要的头文件
    #include
    #include 
    ------------------------------------------------
    //QPalette是窗口的属性背景
    QPixmap pImage3 = QPixmap(":/image/bglog.jpg").scaled(this->size());
    QPalette tPalette3 = this->palette();
    tPalette3.setBrush(QPalette::Background, QBrush(pImage3));
    this->setPalette(tPalette3);
    ```
    #### 3、welcome界面
    这个就是上面gif图片的达康书记,用了stackwidget容器来切换到welcome界面,设置了一个定时器来制定界面显示时间:
    ```c
    #include 
    ---------------------------------------------------------
    void Widget::loginBtn_start()
    {
        //判断用户名和密码是否正确
        if(ui->nameEdit->text().trimmed() == tr("admin")
                && ui->passwdEdit->text() == tr("123456"))
        {
            ui->stackedWidget->setCurrentIndex(1);
            QPixmap pImage = QPixmap(":/image/king_meitu_1.jpg").scaled(this->size());
            QPalette tPalette = this->palette();
            tPalette.setBrush(QPalette::Background, QBrush(pImage));
            this->setPalette(tPalette);
    
            QTimer *timer = new QTimer(this);
            connect(timer, SIGNAL(timeout()), this, SLOT(MainRun()));
            timer->start(2000);   //设置时间为2s
    
        }else{
            QMessageBox::warning(this, tr("Waring"),
                                 tr("username or password error!"),
                                 QMessageBox::Yes);
    
            ui->nameEdit->clear();
            ui->passwdEdit->clear();
            ui->nameEdit->setFocus();
        }
    }
    
    void Widget::MainRun()
    {
        this->hide();
        MW.show();       //显示管理界面的窗口
    }
    ```
    
    #### 4、连接数据库
    ```c
    #include 
    #include 
    #include 
    ------------------------------------------------------
    //打印支持的数据库驱动
        qDebug() 
    ----------------------------------------------------------------------
    TmodelOne->setTable("routeone");         //设置model关联的表
    TmodelOne->setEditStrategy(QSqlTableModel::OnManualSubmit);  //设置修改方式为手动提交,也就是说不可以直接修改,需要进行确定操作
    
    ui->tableView->setModel(TmodelOne);  //把model放到view中
    TmodelOne->select();                //显示全部数据
    //currentModel = TmodelOne;     gif图中可见有许多的table需要显示,设置一个current来保存当前的model
    ```
    #### 6、增删改查操作
    ###### 1)增加一行记录
    ```c
    #include 
    ---------------------------------------------------------
    QSqlRecord record = currentModel->record();
    int row = currentModel->rowCount();
    currentModel->insertRecord(row, record);
    ```
    ###### 2)删除记录(可以同时选中多条)
    ```c
    void MainWindow::on_ButtonDel_clicked()
    {
        //获取选中的模型
        QItemSelectionModel *sModel =ui->tableView->selectionModel();
        //取出模型中的索引
        QModelIndexList list = sModel->selectedRows();
        //删除所有选中的行
        for(int i = 0; i removeRow( list.at(i).row() );
        }
    }
    ```
    ###### 3)修改记录
    修改可以直接双击修改内容,不过因为策略问题需要进行提交(下面会提到),提交之后就能同步到数据库中。
    
    ###### 4)查询记录
    ```c
    void MainWindow::on_ButtonQuery_clicked()
    {
        QString duan = ui->lineEditduan->text();
        QString content = ui->lineEditContent->text();
    
        QString queryt = QString("%1 = '%2'").arg(duan, content);  //格式为name='Josephine'
        currentModel->setFilter(queryt);
        currentModel->select();
    }
    ```
    ###### 5)修改策略
    ```c
    //因为使用的策略是手动提交,所以要用了submitAll时候才会在数据库中同步修改
    if(!currentModel->submitAll())
            QMessageBox::warning(this, "Error", dbcar.lastError().text());
    
    ---------------------------------------------------------------------------
    //修改或添加之后没有submitAll之前想撤销操作
    void MainWindow::on_ButtonCancel_clicked()
    {
        currentModel->revertAll();
        currentModel->submitAll();
    }
    ```
    
    ### 四、小结
    这一次是多个表,使用的是一个view,然后通过切换currentmodel来显示每个表对应的model的,一个model对应一个view,然后用stackwidget来通过不同的索引来显示每个view的话,好像会有问题:在stackwidget中的view不能进行修改,或者submitAll不成功等。
    不知道是怎么回事,可能stackwidget会影响model-view模式吧。
    
    总之作品还是比较简单的,Qt还是一个可以尝试的语言的。
    
    展开全文
  • 项目报告.........................................................................................
  • 以下文章将逐步深入地介绍公交车路线查询系统后台数据库设计: 1.查询算法 —— 实现站点到站点的换乘路线查询 2.关联地名和站点 —— 实现通过地名或站点的路线查询 3.引入步行路线 —— 在...
  • 这几天在做数据库课程设计,突然发现自己会的太少了,毫无头绪 这个是下载地址,里面包含了ACESS数据库,笔记,资料,和课程设计报告 点我进入下载页面...
  • 公交查询系统的设计 2019-06-13 00:43:10
    公交查询系统设计随着的发展,公交查询系统已经成为城市道路交通的重要组成部分。为了使一些发展较落后的地区能够用上公交查询系统,获得更多的信息,设计公交查询系统。1,系统的目标:(1)方便市民更好地掌握公交...
  • 数据库与信息管理课设公交车运行系统。谢谢大神们了。有没有现成的。好人一生平安。
  • 文档内容:整个课程设计具体内容(包括源码) 使用技术:Java web相关技术,基于TomCat服务器,mysql数据库 使用工具:Eclipse(eclipse-jee-luna-SR1-win32) 参考城市:武汉(小型模拟) 补充说明:如果想直接获取...
  • 数据库设计实验报告 2020-06-15 23:30:25
    在线公交查询系统,能够根据站点,线路和换乘三种情况查询公交线路。换乘查询分为时间最短和换乘最少两种。
  • /************************************************* *版权所有 : 张志康 * *文件名称:bus.h,bus.cpp,show.cpp,main.cpp *文件标识:无 *内容摘要:该代码用于获取满足后缀要求的第一个文件 ...
  • 公交查询系统源码(C)。可以直接运行。做毕业设计,课程设计或者想研究下的可以下载学习。
  • 数据库软件设计(8684) 2018-07-20 09:19:50
       《数据库原理与应用》课程设计   课设题目: 8684公交数据库分析设计 院 系: ...
  • 本次设计中采用的是JavaWeb的相关技术来完成系统的设计,利用了JDBC从数据库中获取相应的数据,并结合面向对象的思想对数据进行封装,始终贯穿MVC的开发模式和面向对象封装的思想来书写代码和模块。 2.2 基本思路 如...
  • \毕业课程设计共享源码 (0 folders, 49 files, 61.64 MB, 61.64 MB in total.) asp+access图书管理系统.rar 835.16 KB [asp.net+sqlserver2005]网络书店系统[毕业设计参考].rar 2.43 MB asp+access实现...
  • 数据库实训作业报告 2019-09-28 21:52:07
    班级图书管理系统数据库 小组成员:**** 班级:18安管1班 日期:2019-6-27 设计目的 3 本组课题及分工 3 数据库功能简介 3 功能需求分析 4 概念模型设计(E-R图) 5 逻辑结构设计,转换成关系模型 6 数据库的实现,...
  • 前面的博客我写过公交查询系统设计的数据流图,实体联系图和状态转换图,老师给任务了,这次写的是程序流程图。 之前的公交查询系统:http://13271983.blog.51cto.com/13261983/1970591 用户登录模块:功能描述:该...
  • 公交车管理系统源码.txt 2020-07-08 23:31:11
    公交管理系统 c语言 便于更多同学完成老师布置的课程设计作业 拿到该拿到的学分 防止挂科
  • C++_SQL毕业设计--完整报告+论文+答辩--城市公交查询系统+源码
  • SQL-公交车线路查询系统 2010-11-19 15:23:00
    来自:http://hi.baidu.com/mazda6/blog/category/asp.net%202.0内容:经过站1路汽车:a,b,c,d..........2路汽车:e,f...数据库中保存每个线路经过的站名检索出包含起点或终点的所有线路则同时包含起点和终点的线路不需
  • ASP 类计算机专业毕业设计题目 第 1-100 个题目 网络留言薄 客户管理系统 多媒体积件管理库的开发与应用 基于 WEB的多媒体素材管理库的开发与应用 网络教学软件中的教学设计与应用 小型教育网站的开发与建设 基于...
  • 基于C++实现的迷你数据库 2019-01-21 18:01:34
    1 引言1.1 目的为了深入学习和了解数据库以及小学期课程需要,我们小组决定自己编写一个简单的mini-database。1.2 背景1970年,IBM的研究员,有“关系数据库之父”之称的埃德加•弗兰克•科德(Edgar Frank Codd或E....
1 2 3 4 5 ... 20
收藏数 1,048
精华内容 419