Qt实战项目学习2———学生管理系统(1)
注:参照编程小鱼酱教程
特别感谢博主教学
一.登陆界面设计及主界面设计
1.登录按钮实现
登陆界面自定义信号 并发射信号
signals://成功登录发送信号void sendLoginSuccess();
emit sendLoginSuccess();
主界面.h中创建登录界面 并在cpp中进行连接 (main.cpp中将主.show屏蔽)
Login login;
//登录按钮connect(&login,&Login::sendLoginSuccess,[=](){login.hide();this->show();});
2.主界面中的treeWidget 构建
效果如图
设置treewidget列数
ui->treeWidget->setColumnCount(1);
设置根节点
addTopLevelItem(QTreeWidgetItem *item) //注意参数类型
在父节点之后创建新节点 参数(父节点指针,节点内容)(注:为QStringList)
QTreeWidgetItem(QTreeWidget *parent, const QStringList &strings, int type = Type)
QStringList l;l<<"学生管理系统";QTreeWidgetItem * pf = new QTreeWidgetItem(ui->treeWidget,l);ui->treeWidget->addTopLevelItem(pf);clear();l<<"学生管理";QTreeWidgetItem* p1 = new QTreeWidgetItem(pf,l);ui->treeWidget->addTopLevelItem(p1);l.clear();l<<"管理员管理";QTreeWidgetItem* p2 = new QTreeWidgetItem(pf,l);ui->treeWidget->addTopLevelItem(p2);
将创建的子节点添加到父节点中 设置为默认全部打开状态
pf->addChild(p1);
pf->addChild(p2);ui->treeWidget->expandAll();
二.数据库设计
1.新建学生数据库文件:studentSql.h与studentSql.cpp
新建用户类与学生类,并将在头文件中添加属性
struct stuInfo
{int id;QString name;quint8 age;quint16 grade;quint16 uiclass;quint32 studentid;QString phone;QString wechat;
};
struct userInfo
{QString username;QString password;QString aut; //权限
};
其中数据类型对应
quint8 | char | 8位无符号整型 |
quint16 | short int | 16位无符号整型 |
quint 32 | int | 32位无符号整型 |
8位即8个二进制数字,转换为十进制范围为0-255 ;以此类推
将各功能接口写入
2.数据库初始化
(此部分未学习。有待更正)
void studentSql::init()
{//判断是否有驱动if (QSqlDatabase::drivers().isEmpty())QMessageBox::information(0,"about","为空");//连接数据库 参数1 驱动名称 参数2 数据文件路径m_db = QSqlDatabase::addDatabase("QSQLITE");//设置数据库路径m_db.setDatabaseName("E:/data.db");//判断是否成功打开if (!m_db.open()){QMessageBox::warning(0, "warning","打开失败");}
}
而后在各功能接口中执行sql语句
sql语句https://blog.csdn.net/hiwoshixiaoyu/article/details/122275684?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167590430416800182116818%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167590430416800182116818&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-3-122275684-null-null.blog_rank_default&utm_term=%E7%AE%A1%E7%90%86&spm=1018.2226.3001.4450语句参照:编程小鱼酱
//声明数据库QSqlQuery sql(m_db);
//exec中输入对应sql语句sql.exec();
}
3.模拟生成数据
使用QRandomGenerator随机生成年龄,班级,年级
//声明随机生成器QRandomGenerator g;
//随机种子g.seed(0);
//生成随机数,左闭右开g.bounded(7,10);
在生成按钮的点击槽函数中实现,完整代码如下
void MainWindow::on_btn_simultion_clicked()
{//制作10001条学生数据QRandomGenerator g,c;g.seed(0);c.seed(0);for(int i=0;i<100;i++){auto grade= g.bounded(7,10);//在7-10 左闭右开中随机生成auto uiclass=g.bounded(1,8);stuInfo info;if(i%3){info.name=QString("张%1").arg(i);info.age=16;}if(i%7){info.name=QString("李%1").arg(i);info.age=17;}if(i%2){info.name=QString("王%1").arg(i);info.age=18;}info.grade =grade;info.uiclass=uiclass;info.studentid=i;info.phone="12345678";info.wechat="12345678";m_ptrStuSql->addStu(info);}
}
三.数据库内容显示到界面
将显示数据库内容封装到刷新函数中,实现每个功能时调用,刷新界面信息
//封装更新函数
void MainWindow::upTable();
1.表格部分
1.首先对表格进行设置 首先清空表格内容,使用代码实现表头可避免被清空
ui->tableWidget->clear();//设置Tablewidget表头ui->tableWidget->setColumnCount(9);QStringList l;l<<"序号"<<"id"<<"姓名"<<"年龄"<<"年级"<<"班级"<<"学号"<<"电话"<<"微信";ui->tableWidget->setHorizontalHeaderLabels(l); //设置水平表头//设置表格不可编辑ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置单行选中ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
2.通过学生数据库指针,调用获取当前页学生信息接口(返回值为学生列表)
通过ui->tableWidget->setItem()将内容显示到表格中
语法 :setItem(int row, int column, QTableWidgetItem item)
参数三为指针类型
for(int i=0;i<lStudent.size();i++){ui->tableWidget->setItem(i,0,new QTableWidgetItem(QString::number(i)));//序号ui->tableWidget->setItem(i,1,new QTableWidgetItem(QString::number(lStudent[i].id)));//序号ui->tableWidget->setItem(i,2,new QTableWidgetItem(lStudent[i].name)); //姓名ui->tableWidget->setItem(i,3,new QTableWidgetItem(QString::number(lStudent[i].age))); //年龄ui->tableWidget->setItem(i,4,new QTableWidgetItem(QString::number(lStudent[i].grade))); //年级ui->tableWidget->setItem(i,5,new QTableWidgetItem(QString::number(lStudent[i].uiclass))); //班级ui->tableWidget->setItem(i,6,new QTableWidgetItem(QString::number(lStudent[i].studentid))); //学号ui->tableWidget->setItem(i,7,new QTableWidgetItem(lStudent[i].phone));ui->tableWidget->setItem(i,8,new QTableWidgetItem(lStudent[i].wechat));}
2.制作标签 显示当前学生个数
通过指针调用获取学生数量接口,通过settext显示标签上
//获取学生数量auto cnt=m_ptrStuSql->getStudentCont();ui->lb_cnt->setText(QString("数量:%1").arg(cnt));
效果如图
Qt实战项目学习2———学生管理系统(1)相关推荐
- 【Qt实战派学习群】 建立啦!
建了一个Qt学习群,供大家交流学习. 群文件提供博客源码免费下载! 还有大量Qt实战项目源码.程序员工具.电子书等学习资料! 群号码:1149411109 (若满加2群:917341904) 群名称: ...
- 迅为-i.MX6ULL开发板-QT实战项目DHT11网络编程实战练习(一)
迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一) 发布时间:2021-7-2 09:49 发布者:落风 |编辑 文章目录1 项目前准备2 软件流程图3 Lin ...
- vue实战项目:电商管理系统实现步骤笔记(一)
vue实战项目 视频地址以及项目文件 一.项目概述 1.1电商项目基本业务概述 1.2电商后台管理系统的功能 1.3电商后台管理系统的开发模式(前后端分离) 1.4电商后台管理系统的技术选型 1.4. ...
- 01-Flutter移动电商实战-项目学习记录
01-Flutter移动电商实战-项目学习记录 一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常 ...
- python3实战练手项目_Python0基础练手项目有哪些值得推荐?附实战项目+学习图谱...
原标题:Python 0基础练手项目,有哪些值得推荐?附实战项目+学习图谱 刚学Python的时候,因为豆瓣帖子老沉,就写了一个顶帖脚本.就是用这个脚本,给自己的帖子顶了两年,在小组里追到了现在的女朋 ...
- JavaWeb学习案例——学生管理系统
JavaWeb学习案例--学生管理系统 引入jar包: 1. c3p0-0.9.1.2.jar // 第三方数据库连接池 2.commons-dbutils-1.4.jar // 第三方数据库操作方法 ...
- 【源码及课件分享】Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战
Java实战项目又双叒叕来咯~小伙伴们请查收~酒店客房管理系统![源码及课件分享]Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战_Java毕业设计https://www.bil ...
- 20-Vue实战项目:电商管理系统(Element-UI)总结
20-Vue实战项目:电商管理系统(Element-UI)总结 结果如下: 这算是我自己跟着视频做的第一个比较完整的可以看的项目了,用时18天,但这视频的总时间是20个小时,自己还是比较的低效率.不多 ...
- 【java学习】学生管理系统项目实现(四)
文章目录 前言 一.学生管理系统的实现准备 二.ArrayList的使用 三.学生管理系统的实现 1,构造方法的实现 2,主界面的实现 3,添加学生的方法实现 实现思路 4,删除学生的方法实现 实现思 ...
最新文章
- [转载]李开复先生给中国学生的第四封信:大学四年应是这样度过
- .NET中读取csv文件内容
- python怎么输入文件数据库_python学习日记——文件及数据库
- BootStrap2学习日记16---选项卡内容
- 《转载》使用Chrome浏览器截取整个网页
- Javascript 已被弃用的或删除的特性(V客学院知识分享)
- java案例代码3-机票打折的案例
- linux系统的drm配置mipi,Linux 进阶 DRM等.....
- Windows XP安装sql2000企业版的办法
- 时尚透气的KN95口罩,防护可靠的穿搭小件
- Gspay 和 95epay
- chatgpt在中国怎么使用
- 知乎服务器出现故障:APP出现异常提示
- iView的table表格购物车的使用案例
- xp系统为何无法登陆服务器,xp系统怎么登陆云服务器
- 如何让百度搜索网站带图片公司logo
- Learning Hammerspoon中英文互译
- “机器学习”名字的由来
- 国产的开源的MATLAB软件!牛
- java VPI文档 (JDK帮助文档)
热门文章
- 工业互联网标识Handle企业节点搭建及开发服务
- 秒懂QPS、TPS、PV、UV、GMV、IP、RPS
- 模拟android系统是什么,使用手机模拟器与android操作系统
- Sql语句中的DML语句
- mysql 查看 dml,MySQL系列-DML语句
- Struts2 使用.do后缀的请求方式
- 【视频】R2S软路由扩展2.4|5G双频WiFi应用演示——01_硬件介绍
- springboot毕设项目招投标管理系统57xwe(java+VUE+Mybatis+Maven+Mysql)
- Python系列脚本
- Lucene FST