【基于Qt和mysql的酒店管理系统(毕业设计)】

发布于:2023-01-10 ⋅ 阅读:(476) ⋅ 点赞:(0)

写在前面

        Hello,各位程序员大佬和还在学校的同学们以及初入IT行业的兄弟姐妹们你们好,这是我的第一篇个人博客,写的不好请轻点喷,我内心很脆弱的~~呜呜呜.

        关于我:我是一名刚从学校毕业的大学生,软件工程专业,我现在从事的是qt方面以及刚接触的MFC框架的开发新手小白。

        今天写这篇博客主要是想记录自己的一个的成长的过程以及无偿分享给各位还在学校学习的同学们,有什么疑问留言下来,我尽量帮你们解答,也欢迎大家和我一起探讨在学校的千奇百怪,我做的这个系统也是比较随性,里面的代码有点乱咳咳(不过无偿献出也是够意思了吧),很适合新手hahaha,源码的链接我就放在文章的最后面了。


一些个系统的截图

        首先是登陆,我分成了三种用户、前台、客户和店长。登陆成功后进行滑动验证。

查询的滑动验证

 前台

        这边是前台的一个查询用户,下拉列表是查询的条件,可以点击对应的房间号直接入住

 店长

        酒店主页主要是放了一个轮播图和酒店房间价格范围表。

         查询房间的这个是可以直接点击房间左下角的客房入住直接弹出跟前台入住一样的入住框的,然后数据库就会有相应的数据了,入住成功后这里下面就会显示已入住了。

 管理员

        管理员主要就是对一些数据的增删查改了,都大同小异了。


        好了,里面其实也没有什么复杂的东西,主要是锻炼自己的一个写代码的耐受力和自己解决问题的一个过程。

        里面的一些个我猜想你们感兴趣的代码也贴出来吧,无偿献给各位学弟学妹了hahaha。

//  Myclass/myitemdelegate.cpp:
//  这是需要继承QStyledItemDelegate类来实现表格项的委托,
//  重写里面paint方法来实现刚刚展示的自主入住从而达到一种自定义表格控件的操作。 

void myItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    //decorationrole支持图标icon、image等显示
    QByteArray arr=index.data(Qt::DecorationRole).toByteArray();
    QString pic=index.data(Qt::DecorationRole).toString();
    QPixmap pixmap;
    pixmap.loadFromData(arr,"jpg");
    //等比例缩放
   pixmap=pixmap.scaled(150,150,Qt::KeepAspectRatioByExpanding,Qt::SmoothTransformation);
    QString text="";
    //设置当前文本option的xy坐标
    int x=option.rect.x();
    int y=option.rect.y()+170;
    //设置照片的option的xy坐标
    int pix_x=option.rect.x();
    int pix_y=option.rect.y();
    //设置按钮位置
    QStyleOptionButton button;
    button.text="客房入住";
    button.rect=QRect(option.rect.x(),option.rect.y()+220,80,20);
    button.state=option.state;
    if(option.state &QStyle::State_Selected)
        painter->fillRect(option.rect,option.palette.highlight());//高亮绘制
    QStyleOptionViewItem p;
    text=index.data(Qt::DisplayRole).toString();
//    button.text=index.data(Qt::ToolTipRole).toString();
    qApp->style()->drawItemPixmap(painter,QRect(pix_x,pix_y,200,180),Qt::AlignCenter,pixmap);
    qApp->style()->drawItemText(painter,QRect(x,y,180,40),option.displayAlignment,QApplication::palette(),true,text);
    if(pic!="")
    {
        qApp->style()->drawControl(QStyle::CE_PushButton,&button,painter);
    }

}

        管理员的 一些分页功能以及删除编辑对应的房间信息:

//其实我这里的分页功能就是,控制显示从数据库的第几个数据到第几个数据的问题
//通过数据库的limit关键字查询就好了,其他自己设置啦。
void superPage1::findPageRange(int first, int last,QString roomid)
{
    mymodel=new mysqlQueryModel;
    QString findroom=QString("select * from room limit %1,%2").arg(first).arg(last);
    if(roomid!="")
    {
        findroom=QString("select * from room  where roomid like '%%1%' limit %2,%3").arg(roomid).arg(first).arg(last);
    }
    //设置表头数据
    mymodel->setQuery(findroom);
    mymodel->removeColumn(1,QModelIndex());
    mymodel->insertColumns(4,2,QModelIndex());
    mymodel->setHeaderData(0,Qt::Horizontal,QString("房间号"));
    mymodel->setHeaderData(1,Qt::Horizontal,QString("房间价格"));
    mymodel->setHeaderData(2,Qt::Horizontal,QString("房间状态"));
    mymodel->setHeaderData(3,Qt::Horizontal,QString("房间类型"));
    mymodel->setHeaderData(4,Qt::Horizontal,QString("编辑"));
    mymodel->setHeaderData(5,Qt::Horizontal,QString("删除"));
    ui->tableView->setModel(mymodel);
    //为每行的数据添加两个按钮以及关联按钮事件
    for(int i=0;i<mymodel->rowCount();i++)
    {
        edit_bn=new QPushButton("编辑");
        delete_bn=new QPushButton("删除");
        QString roomid=mymodel->record(i).value(0).toString();
        edit_bn->setProperty("rowIndex",roomid);
        delete_bn->setProperty("rowIndex",roomid);
        ui->tableView->setIndexWidget(mymodel->index(i,4),edit_bn);
        ui->tableView->setIndexWidget(mymodel->index(i,5),delete_bn);
        connect(edit_bn,&QPushButton::clicked,this,&superPage1::editbutton_clicked);
        connect(delete_bn,&QPushButton::clicked,this,&superPage1::deletebutton_clicked);
    }
}

        好了,我的第一篇博客就写这么多了,反正压箱底也是压箱底,不如写出来大家一起共享,如果这篇博客反响还不错的话,我还会继续坚持写我的博客的。追风赶月莫停留,平芜尽处是春山。希望各位学弟学妹好好珍惜在学校的时候,能尽量在学校找对象就在学校找了吧哈哈哈,出来之后真是...一言难尽。

链接:https://pan.baidu.com/s/1Ri7hDg6oZPxVLzyed6kdag 
提取码:in86


网站公告

今日签到

点亮在社区的每一天
去签到