发布时间:2025-12-09 17:56:19 浏览次数:5
目录
一、需求分析
二、软件设计
框架设计
流程设计
关键算法
本文从头开发教你开发一个带滚动效果的抽奖软件。最终效果如下:
源码在文章最后
软件开发的第一步是需求分析,其实好的开发人员就是半个产品经理,我相信很多开发者都被产品经理坑过,需求一变再变,所以我们要在开发之前就把需求问清楚,越细越完善越好,尤其是面对领导编程的时候更加需要把需求明确下来。
正确的方向才会得到正确的结果,错误的方向再怎么努力也不会有好的结果。
不知道你遇到过这样的需求吗?通常是一句话,在这个抽奖软件中,客户也只是给了一句话:“我想要一个带滚动效果的抽奖,在晚会上面使用。”
如果只是满足他的这个一句话的需求,那么软件开发完成客户肯定不会满意。我们需要在开发之前确定一些隐藏的功能点。
例如:
1、需不需要音乐?背景音乐和滚动音乐。
这个项目案例中未开发,但是实际场景中肯定是需要的。
2、抽奖的触发方式是什么?有没有额外的硬件按钮、鼠标控制还是键盘控制。
这个项目案例未开发,但是实际场景中可以需要适配硬件按钮,蓝牙或者无线等通信触发。
3、需要不需要指定中将号码?
开发过抽奖的软件的工程师一般都不会相信所谓的抽奖软件了。
项目中开发了该功能。
4、需要不需要将抽奖数据保存在文件中?
这个功能是肯定需要的,项目中预留的保存数据接口。
5、字体颜色会随时改变吗?
使用过程中,客户有时候会喜欢改变字体颜色显得更加高大上,尤其是户外的显示屏的颜色和开发过程中的效果可能不一样,因此可能需要针对具体的显示屏和环境进行调整背景图片以及颜色。
项目中预留了颜色调整的接口。
有了需求其实就可以针对需求进行设计。
软件框架图如下:
RollingLotteryView : 抽奖窗口类,主要管理抽奖停止循序,已经抽奖的背景图等。
NumItem:抽奖号码类,每个抽奖号码的管理,号码滚动效果都在这里类中完成。
接口:
| 接口 | 说明 |
| setItemBackground(QImage img) | 设置每一个抽奖号码的背景 |
| bool setItemColor(QColor color) | 设置抽奖号码的颜色 |
| bool setBackground(QImage img) | 设置整体的大背景图 |
| void start() | 开始抽奖 |
| void stop(int res=-1) | 结束抽奖,如果设置数据那么会在指定的数据下停止 |
| void sigStop(int num) | 信号,抽奖结束后会触发该信号, 用户可以通过绑定该信号获取抽奖结果 |
用户调用start接口,触发每一个num_item的定时器,然后让每一个号码转动起来。启动流程如下:
暂停流程比较复杂,因为需要逐个停止,因此每一个停止之后需要告诉主页面触发下一个号码的停止,流程图如下:
git源码传送门