注:参照编程小鱼酱教程

特别感谢博主教学

一.登陆界面设计及主界面设计

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)相关推荐

  1. 【Qt实战派学习群】 建立啦!

    建了一个Qt学习群,供大家交流学习. 群文件提供博客源码免费下载! 还有大量Qt实战项目源码.程序员工具.电子书等学习资料! 群号码:1149411109 (若满加2群:917341904) 群名称: ...

  2. 迅为-i.MX6ULL开发板-QT实战项目DHT11网络编程实战练习(一)

    迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一) 发布时间:2021-7-2 09:49    发布者:落风 |编辑 文章目录1 项目前准备2 软件流程图3 Lin ...

  3. vue实战项目:电商管理系统实现步骤笔记(一)

    vue实战项目 视频地址以及项目文件 一.项目概述 1.1电商项目基本业务概述 1.2电商后台管理系统的功能 1.3电商后台管理系统的开发模式(前后端分离) 1.4电商后台管理系统的技术选型 1.4. ...

  4. 01-Flutter移动电商实战-项目学习记录

    01-Flutter移动电商实战-项目学习记录 一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常 ...

  5. python3实战练手项目_Python0基础练手项目有哪些值得推荐?附实战项目+学习图谱...

    原标题:Python 0基础练手项目,有哪些值得推荐?附实战项目+学习图谱 刚学Python的时候,因为豆瓣帖子老沉,就写了一个顶帖脚本.就是用这个脚本,给自己的帖子顶了两年,在小组里追到了现在的女朋 ...

  6. JavaWeb学习案例——学生管理系统

    JavaWeb学习案例--学生管理系统 引入jar包: 1. c3p0-0.9.1.2.jar // 第三方数据库连接池 2.commons-dbutils-1.4.jar // 第三方数据库操作方法 ...

  7. 【源码及课件分享】Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战

    Java实战项目又双叒叕来咯~小伙伴们请查收~酒店客房管理系统![源码及课件分享]Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战_Java毕业设计https://www.bil ...

  8. 20-Vue实战项目:电商管理系统(Element-UI)总结

    20-Vue实战项目:电商管理系统(Element-UI)总结 结果如下: 这算是我自己跟着视频做的第一个比较完整的可以看的项目了,用时18天,但这视频的总时间是20个小时,自己还是比较的低效率.不多 ...

  9. 【java学习】学生管理系统项目实现(四)

    文章目录 前言 一.学生管理系统的实现准备 二.ArrayList的使用 三.学生管理系统的实现 1,构造方法的实现 2,主界面的实现 3,添加学生的方法实现 实现思路 4,删除学生的方法实现 实现思 ...

最新文章

  1. [转载]李开复先生给中国学生的第四封信:大学四年应是这样度过
  2. .NET中读取csv文件内容
  3. python怎么输入文件数据库_python学习日记——文件及数据库
  4. BootStrap2学习日记16---选项卡内容
  5. 《转载》使用Chrome浏览器截取整个网页
  6. Javascript 已被弃用的或删除的特性(V客学院知识分享)
  7. java案例代码3-机票打折的案例
  8. linux系统的drm配置mipi,Linux 进阶 DRM等.....
  9. Windows XP安装sql2000企业版的办法
  10. 时尚透气的KN95口罩,防护可靠的穿搭小件
  11. Gspay 和 95epay
  12. chatgpt在中国怎么使用
  13. 知乎服务器出现故障:APP出现异常提示
  14. iView的table表格购物车的使用案例
  15. xp系统为何无法登陆服务器,xp系统怎么登陆云服务器
  16. 如何让百度搜索网站带图片公司logo
  17. Learning Hammerspoon中英文互译
  18. “机器学习”名字的由来
  19. 国产的开源的MATLAB软件!牛
  20. java VPI文档 (JDK帮助文档)

热门文章

  1. 工业互联网标识Handle企业节点搭建及开发服务
  2. 秒懂QPS、TPS、PV、UV、GMV、IP、RPS
  3. 模拟android系统是什么,使用手机模拟器与android操作系统
  4. Sql语句中的DML语句
  5. mysql 查看 dml,MySQL系列-DML语句
  6. Struts2 使用.do后缀的请求方式
  7. 【视频】R2S软路由扩展2.4|5G双频WiFi应用演示——01_硬件介绍
  8. springboot毕设项目招投标管理系统57xwe(java+VUE+Mybatis+Maven+Mysql)
  9. Python系列脚本
  10. Lucene FST