当前位置: 首页 > news >正文

转行做网站云服务器服务安全

转行做网站,云服务器服务安全,wordpress的选页插件,购物网站开发案例教程视频项目#xff1a;7----汽车销售管理系统#xff08;登录#xff0c;品牌车管理#xff0c;新车入库#xff0c;销售统计图表#xff09;-----项目视频没有#xff0c;代码也不全#xff0c;更改项目练习#xff1a;学生信息管理系统。 学生信息管理系统#xff1…视频项目7----汽车销售管理系统登录品牌车管理新车入库销售统计图表-----项目视频没有代码也不全更改项目练习学生信息管理系统。 学生信息管理系统简介两个页面主页面学生信息添加页面下面的例子仅举例学号和姓名 1.点击添加按钮弹出添加对话框 添加一个继承自QDialog的QT界面类AddDialog注意如果AddDialog是继承QWidget的话在主页面new 一个AddDialog的时候AddDialog页面会直接显示在主页面上 主页面 #include adddialog.h ... AddDialog *m_addDialog; //添加学生信息窗口//构造函数 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);m_addDialog new AddDialog(this); } void Widget::on_pushButton_add_clicked() {//点击按钮弹出新增窗口qDebug()on_pushButton_add_clicked;m_addDialog-show(); }2.添加按钮点击取消则关闭对话框 void AddDialog::on_btnCancel_clicked() {qDebug()on_btnCancel_clicked;this-close(); }3.添加一个数据类定义需要存储数据类型子界面存入传递给主界面显示 添加Q_DECLARE_METATYPE(type)宏能使type类型让所有基于模板的函数识别 #ifndef CSTUDENTINFO_H #define CSTUDENTINFO_H#include QString #include QMetaTypeclass CStudentInfo { public:CStudentInfo();bool setData(int id,QString name);int id() const;void setId(int id);QString name() const;void setName(const QString name);private://此处举例仅用两个数据信息类int m_id; //学生id 四位数字QString m_name; //学生名称};Q_DECLARE_METATYPE(CStudentInfo)// 该宏放在类或结构体声明的最后面 #endif // CSTUDENTINFO_H #include cstudentinfo.hCStudentInfo::CStudentInfo() {}bool CStudentInfo::setData(int id, QString name) {m_id id;m_name name;return true; }int CStudentInfo::id() const {return m_id; }void CStudentInfo::setId(int id) {m_id id; }QString CStudentInfo::name() const {return m_name; }void CStudentInfo::setName(const QString name) {m_name name; }在子界面上按这个数据类存进入 void AddDialog::on_btnConfirm_clicked() {qDebug()on_btnConfirm_clicked;//......//把检测合格的数据添加进入int id ui-edtId-text().toInt();QString name ui-edtName-text();//数据类型CStudentInfo stuInfo;stuInfo.setData(id,name);//仅进行数据的修改到主页面对话框不关闭emit sig_addStuInfo(stuInfo); }通过信号槽把数据类接收并显示在主页面 信号槽传递 //关联槽函数connect(m_addDialog,AddDialog::sig_addStuInfo,this,Widget::slot_addStuInfo);bool Widget::slot_addStuInfo(CStudentInfo stuInfo) {//收到添加对话框发出的信号把添加的内容显示到UI上appendToModel(stuInfo); //此处可以收到信号传来的return true; }主页面model模型显示 构造函数中 //实例化modelm_standardModel new QStandardItemModel(this);//设置tableView 菜单策略 customContextMenuRequested(const QPoint pos)ui-tableView_StudentInfo-setContextMenuPolicy(Qt::CustomContextMenu);//添加表头QStringList headerList;headerList学号姓名;m_standardModel-setHorizontalHeaderLabels(headerList);ui-tableView_StudentInfo-setModel(m_standardModel);bool Widget::appendToModel(CStudentInfo stuInfo) {QStandardItem *itemId new QStandardItem(QString(%1).arg(stuInfo.id(),4,10,QLatin1Char(0)));itemId-setCheckable(true); //添加复选框itemId-setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);QStandardItem *itemName new QStandardItem(stuInfo.name());itemName-setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);QListQStandardItem* rowItem;rowItem.append(itemId);rowItem.append(itemName);m_standardModel-appendRow(rowItem);return true;}效果后续需要添加学号是否存在验证等需另外再加入判断 4.加入数据库进行数据的长期存储主页面显示子页面写入以及删除功能 先创建一个数据库的类CDataSQLite #ifndef CDATASQLITE_H #define CDATASQLITE_H#include cstudentinfo.h #include QSqlDatabaseclass CDataSQLite { public:CDataSQLite();/*** brief 查询所有信息* param stuInfos* return*///用来遍历virtual bool selectStuInfos(QListCStudentInfo stuInfoList) ; //用来新增virtual bool addStuInfo(CStudentInfo stuInfo) ; virtual bool updateStuInfo(CStudentInfo stuInfo) ;//用来删除virtual bool deleteStuInfo(int id) ; private:QSqlDatabase m_db; //数据库连接 };#endif // CDATASQLITE_HCDataSQLite的构造函数 //打开数据库m_db QSqlDatabase::addDatabase(QSQLITE); //QMYSQLm_db.setDatabaseName(./stuInfoDB_demo.db); // 相对路径是相对于.exe所在的文件夹下即bin文件夹下if(!m_db.open()){qDebug() Failed to Open database;return;}qDebug() success Open ;//如果没有这个表则会创建QSqlQuery query;QString sql QString(create table if not exists tb_stuInfo(id int primary key not null,name varchar(50),overallScore real););if(!query.exec(sql)){qDebug() Failed to create table;qDebug() query.lastQuery();return;}//关闭数据库m_db.close();bool CDataSQLite::addStuInfo(CStudentInfo stuInfo) {//新增if(!m_db.open()){qDebug() Failed to Open Database : addStuInfo;return false;}QSqlQuery query;query.prepare(insert into tb_stuInfo (id,name)values(:id,:name));query.bindValue(:id,stuInfo.id());query.bindValue(:name,stuInfo.name());if(!query.exec()){qDebug() query.lastQuery();m_db.close();return false;}m_db.close();return true;}bool CDataSQLite::selectStuInfos(QListCStudentInfo stuInfoList) {//查询if(!m_db.open()){qDebug() Failed to Open Database : selectStuInfos;return false;}QSqlQuery query;QString sql Select * from tb_stuInfo;;if(!query.exec(sql)){qDebug() Failed to selcet tb_stuInfo;;return false;}while(query.next()){CStudentInfo stuInfo;int id query.value(id).toInt();QString name query.value(name).toString();stuInfo.setData(id,name);stuInfoList.append(stuInfo);}m_db.close();return true; }bool CDataSQLite::deleteStuInfo(int id) {if(!m_db.open()){qDebug() Failed to Open Database : deleteStuInfo;return false;}QSqlQuery query;QString sql QString(delete from tb_stuInfo where id %1).arg(id);if(!query.exec(sql)){qDebug() Failed to delete stuInfo!!!;m_db.close();return false;}m_db.close();return true; }使用CDataSQLite数据库类 在主页面中构造函数中会先实例化数据库类然后进行遍历查询进行显示。 //在.h文件中 CDataSQLite *m_dataSource; //数据源//.cpp构造函数中 //实例化数据源m_dataSource new CDataSQLite();//查询数据QListCStudentInfo stuInfoList;bool res m_dataSource-selectStuInfos(stuInfoList);if(!res){QMessageBox::information(this,提示,查询学生信息失败);return;}qDebug() stuInfoList.size();for(int i0;istuInfoList.size();i){appendToModel(stuInfoList[i]);} 在新增页面点击确认发送信号之后主页面接收到信号在槽函数中进行数据库类新增 //接收到子页面的确认添加按钮发出的处理信号的槽函数 bool Widget::slot_addStuInfo(CStudentInfo stuInfo) {//把数据添加到数据库中bool res m_dataSource-addStuInfo(stuInfo);if(!res){QMessageBox::information(this,提示,插入失败);return false;}//收到添加对话框发出的信号把添加的内容添加appendToModel(stuInfo);return true; }删除主页面的删除按钮点击之后槽函数on_pushButton_delate_clicked会把勾选的数据从数据库中以及主页面中删除 void Widget::on_pushButton_delate_clicked() {QMapint,QStandardItem* delRowsMap; //待删除的行for(int row 0;rowm_standardModel-rowCount();row){QStandardItem *item m_standardModel-item(row);if(item-checkState() Qt::Checked){delRowsMap.insert(row,item);}}if(delRowsMap.size()1)return;//弹出删除提示int res QMessageBox::information(this,提示,是否真的要删除,QMessageBox::Yes|QMessageBox::No);if(res QMessageBox::No) return;QListint keyList delRowsMap.keys();//1.删除数据库中的数据for(int keykeyList.size()-1;key0;--key){if(m_dataSource-deleteStuInfo(delRowsMap.value(keyList[key])-text().toInt())){//2.删除窗口中的数据m_standardModel-removeRow(keyList[key]);}}}存着自己看看 项目原例子源码链接 项目练习源码跟博客相同但是功能相比原例子不全链接
http://www.hkea.cn/news/14280071/

相关文章:

  • 天津网站优化公司合肥网页设计哪家服务好
  • 玉溪网站开发公司帮别人做网站备案
  • 审计局网站建设管理做视频比较好的理财网站有哪些
  • 怎样让网站优化的方式适合女孩做的网站
  • 网站设计三把火汉中建设工程招投标信息网
  • 企业网站建设基本步骤大连微信网站开发
  • 使用wordpress建站网站寄生虫怎么做
  • 卢氏住房和城乡建设厅网站自媒体视频剪辑教学视频
  • 那个网站做的系统最好网站开发询价单
  • 阿里云个人备案可以做企业网站设计网站室内
  • 内蒙古有做购物网站的吗做百度手机网站关键词排名
  • 贵阳企业网站模板17种新型商业模式
  • 安庆做网站做新年公告图片的网站
  • 做外贸的国际网站有哪些内容网站建设运作流程
  • 辽阳网站网站建设网站登录验证码怎么做
  • 如何快速更新网站快照甘肃省交通建设项目招投标中心网站
  • 做酒的网站有哪些全球速卖通注册条件
  • 婚纱摄影类网站模板专业建网站 优帮云
  • 五个推进网站建设工作国外做直播网站
  • 网站开发与运维面试问题wordpress 网站小模块
  • 全球网站流量排名100资阳seo公司
  • 推广网站免费网站开发接单群
  • seo网站分析企业主页的特点
  • 太原网站优化价格营销点子
  • 中国建设银行安徽省分行招聘网站深圳华强做网站
  • 增长超人做网站多少钱低价建网站
  • 公司建网站多少钱wordpress 全站备份
  • 章贡网站建设网站建设运行情况简介
  • 二级域名网站怎么做做网页流程
  • php网页模板南宁seo