停车场管理系统
分为建造者模式、用户模式、管理员模式
建造者:修改计费方式,修改免费时间,查看车辆,记录车辆状态,僵尸车
信号和槽机制
Qt最明显区别于其它开发框架的特征:信号和槽
面向对象—对象间消息传递
c++回调函数:不易理解,不直观, 回调函数和处理函数紧密耦合,源于处理函数必须知道哪一个函数被回调
信号-槽:命令-执行
信号:声明用signals(只能public,moc自动实现), 发送用emit
槽:函数
连接:connect()
- 格式:QObject::connect(发送方, SIGNAL(…), 接收方, SLOT(…) );
- QObject::connect可以把一个信号连接到多个槽,而当信号发射时,将按声明联系时的顺序依次调用槽
一个信号可以连接多个槽,多个信号可以连接一个槽,信号和信号之间可以连接
MVC/MVD架构
qt-mvd
在model/view框架中引入代理的好处是允许数据项的渲染和编辑可以被自定义。所以,传统的MVC在Qt中就变成了MVD。
模型/视图/代理之间经过信号和槽进行通讯。
它们之间的关系以下:
- 数据发生改变时,模型发出信号通知视图。
- 用户对界面进行操做,视图发生信号。
- 代理发出信号告知模型和视图编辑器目前的状态
使用Delegate的原因 Qt中当用到QTreeView和QTableView等用于显示item的视图时,你要编辑一个item用到的编辑工具可能是除了默认文字编辑lineEdit以外的工具,例如button,spinBox,甚至Slider,ProgressBar,也有可能是自定义的widget。所以Qt提供了一个委托类,用来处理View中的数据展示方式
举例一
配置一个view去显示model中的数据,只需要简单地调用setModel(),并把目录model作为参数传递。setRootIndex()告诉views显示哪个目录的信息,这需要提供一个model index,然后用这个model index去model中去获取数据
model:
- QStandardItemModel: 可以用在list, table, tree中
- QSqlTableModel
- 连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("DRIVER={Microsoft AccessDriver (*.mdb)}; FIL={MS Access}; DBQ=barcode.mdb;UID='';PWD=''"); bool ok = db.open();
新冠疫情APP
疫情总览 实时播报 辟谣
runOnUiThread()
非主UI线程更新视图的需要
- Handler: 采用传递消息的方式,调用Handler中方法来处理消息更新视图。这种方式对于不是很频繁的调用是可取的。如果更新的较快,则消息处理会一直排队处理,这样显示会相对滞后。
- Activity中的 runOnUiThread(Runnable ): 将需要执行的代码放到Runnable的run方法中,然后调用runOnUiThread()这个方法将Runnable的对象传入即可。
okhttp3:
httpclient–>request–>new call, call.enqueue()
首先调用HttpUtil.sendHttpRequest(address, new Callback())接口进行Http通信(在这里使用的网址是丁香园/丁香医生有关新冠疫情的网站),如果未连上网址,调用onFailure();连上网址,使用onResponse()得到服务器返回的具体内容,创建 Pattern及Matcher返回创建mathcer的pattern实例。使用response.body().string()来获取网站数据。当matcher.find()为true时(matcher中的字符串具有与pattern的规则匹配的时候),调用matcher.group()返回匹配到的子字符串。使用Gson()进行文本形式的数据交换格式, 将Json数组转成 List。
接着利用 getActivity().runOnUiThread(new Runnable)进行主线程和子线程之间的通信也就是创建新的view组件,同时为相应组件赋值添加时间,新闻标题及内容等等。
宿舍管理
DAO模式
什么是DAO
1.Data Access Object(数据存取对象)
2.位于业务逻辑和持久化数据之间
3.实现对持久化数据的访问
DAO模式的作用
1隔离业务逻辑代码和数据访问代码
2.隔离不同数据库的实现
业务逻辑层,数据访问层(Oracle,SQLServer,MySQL)
DAO模式的组成部分
DAO接口
DAO实现类
- 连接数据库(JDBC)
- 执行操作
- 关闭数据库
实体类
数据库连接和关闭工具类
- BaseDao
项目:
通过创建DaoImpl类对象,通过调用内部方法完成对数据库的访问与操作。
界面层中的实体类通过调用业务逻辑层中的相关方法,实现将数据库中的数据读取出来并且存储到相应对象中的功能。界面层由包括学生类,宿管类,宿舍楼类等在内的实体类与main方法组成