如何构建一个向导操作模式程序

引导新用户熟悉产品的方式多种多样,向导程序是其中最经典也是最常用的一种。今天的文章,我们来聊聊向导程序的设计模式。

什么是向导程序
向导程序通常会提供一系列的步骤或者目标,让用户在完成步骤达成目标的过程中,逐步熟悉这个平台或者产品。向导程序(Wizerd),或者说是新手向导最初是附带在实物产品的说明书当中,告诉用户如何起步,怎么使用产品。在此之后不就,随着互联网的和数字产品的发展,它也引入到数字产品当中。最典型的,就是各种软件的安装向导。

许多传统的桌面端软件在安装的时候,是有安装向导程序来引导用户完成这个步骤的,直到今天也是如此。这种设计模式是随着Windows 95的大规模普及而得到了推广。

向导程序的好处并不少:

简化任务
将复杂的任务分解成为一系列简单易行的小步骤,帮你进行精简。

分割处理,各个击破。

正如同之前所说的,桌面端软件安装的向导就是非常典型的例子。在安装向导的指引下,用户需要自己复制文件,编辑配置文件,选取安装目录,并检查软件是否正常运行。安装向导将复杂的条件转化为可理解可执行的步骤,它所带来的回报也是明显的:减少了培训和客户服务上的成本。

降低用户决策所需的负担
许多操作和决策是需要专业知识支撑的,但是向导程序很好的解决这个问题,帮用户合理的规避了这些障碍。用户只需要按照预设的路径一步步完成整个初始化过程:“不要让我想,只需要告诉我下一步要怎么做。”

什么时候需要向导程序
向导程序可以在下面情况下发挥作用:

1、用户想要达成一个需要多个步骤才能完成的目标

你正在设计的UI牵涉到一个超长的任务或者是一个无法直接简化流程的任务,而向导程序能够让这个任务的复杂性看起来降低了,而可行性和易用性提高了。

2、用户必须按照特定的顺序来完成的任务

对于必须按照特定顺序来执行的任务,是需要学习的,而向导程序能够降低学习曲线,同时,细分的流程让用户不会错过重要的步骤,降低出错的机率。

向导程序不适用的情况
向导程序肯定不是万能的,甚至可以说它是需要谨慎使用的。将任务分解成小步骤,并不是每次都能给人带来良好的体验:

1、当任务本身并不复杂的时候

当一个任务只需要一个简单的表单,或者点击几下按钮就能完成的话,那么它并不需要使用向导程序来引导用户。

2、当用户本身就是进阶用户之时

向导程序通常会将复杂的问题简化来处理,但是这种解决方案并不能应对所有的用户需求。对于进阶用户,或者说重度用户而言,向导程序常常会显得僵化,他们会觉得受限。向导程序是用来帮助用户的,但是重度用户所追求的自由和定制性常常无法从向导程序中获得。对于创意工作者和程序员而言,尤其是如此。

小贴士:最好是在向导程序以外提供额外的选项。

3、当你想要指引用户的时候

不要使用向导程序来阐述概念。用户在向导过程中阅读大量的补充文本,他们会更加专注于任务本身。

向导程序最佳实践
当你在设计你的下一个产品的向导程序的时候,可以参考下面的最佳实践,来确保它的有效性:

尽可能少的设置步骤
向导程序的UI设计难度在于分割步骤的大小和数量之间的平衡。只有一两个步骤的向导程序根本没有存在的意义,而超过10个步骤的向导程序则会让人觉得过长。最理想的设计是将向导程序控制在3~5个步骤。之后,将你所设计的向导拿来做可用性测试,确保它能为用户所接受。

确保目标明确
在每个步骤当中,你需要让用户明白这个步骤的功能和存在的意义。同时,每个步骤当中,你应该给予用户足够的信息来确保他们能作出正确的决定。想要每个步骤都有明确的目标,这两个东西是关键:

清晰而简洁的向导标签
每个步骤都有简要的目的说明

反例:Homesite 这个网站在第一屏上并未对目标作出陈述,如果用户从其他的页面直接跳转过来,很难立刻弄明白要干啥。

移除不必要的界面元素
不必要的界面元素在用户完成任务的过程中,会分散他们的注意力。删除这些元素能够让用户更加专注。

你应该搞清楚向导程序的边界在哪里,这样才能确保用户明白何时完成。为了让你的向导程序更好的引导用户,你应该让它的这些功能有所体现:

将步骤编号
表明这些步骤推进的方向(从上到下还是从左到右)
区分正在执行的步骤的和待完成的步骤
指示已经成功完成的步骤
完成之后给予用户以确认信息

反例:不要让每一个步骤都是孤立的,最好让它和前后步骤联系起来,让用户看到。

范例:清楚地在步骤旁边标上步骤数字,此外,从UI上体现所有步骤的概述。

提供良好的默认设定
默认值,或者说默认设定是非常有用的。无论你如何安排步骤,用户始终还是希望拥有控制权的,而默认值能给用户作为参考。比如程序的安装位置。

提供取消按钮
有的时候,由于种种原因用户决定放弃执行当前步骤,而取消按钮让用户在决定放弃的时候,有安全的退出路径。

每个步骤都能撤销
如果用户有新的想法,或者有新的主意,那么用户可能会撤销已完成的步骤,重新开始,修改数据,或者完全放弃。让用户可以回到上一个步骤,撤销已经执行的步骤,则能够重新开始引导,按照新的想法来重新设置。

提供摘要
在即将完成整个向导程序的时候,将用户完成过程中所执行的选择总结成为摘要,让用户可以在完成前确认所有的信息。

结语
设计一个良好的向导程序并不容易,你需要做出大量的规划,通过试错来验证设计。希望今天所列举出的最佳实践能够帮你完成向导程序的设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13 Tensorflow机制(翻译)

代码: tensorflow/examples/tutorials/mnist/ 本文的目的是来展示如何使用Tensorflow训练和评估手写数字识别问题。本文的观众是那些对使用Tensorflow进行机器学习感兴趣的人。 本文的目的并不是讲解机器学习。 请确认您已经安装了Tensorflow。 教程文件 文件作用mn…

鸟哥的 Linux 私房菜7 -- 首次开机关机与基本指令执行

鸟哥的 Linux 与 ADSL 私房菜 开机、关机、在线求助与指令下达方式最近更新日期:2004/05/01第一次登入系统与离开系统 图形模式与文字模式的切换方式 指令下达方式与基础指令练习 在线求助:man, info 正确的关机方式 开机过程的问题排解 本章习题练习 第…

Ignoring query to other database

Ignoring query to other database Ignoring query to other database 自己今天刚遇到,进入MySQL的时候,输入show databases; 产生如下错误 错误提示 Ignoring query to other database 郁闷,半天,怎么查询不了,开…

Qt QObject::connect: Parentheses expected错误原因

Qt 运行提示 QObject::connect: Parentheses expected, signal QUdpSocket::readyRead in …\terminal\net103.cpp:55 这个是 signal希望一个父类,其实是因为slot 函数 ,声明没有在放在private slots: 错误原因:槽函数错误的放在 private&a…

有趣的Web版Ubuntu Linux

其实这不是真的 Ubuntu 啦。不过,在看到 Wubuntu 时,其逼真的模仿效果真是令人惊叹不已。不管怎么样,让我们来体验一把 Web 版的 Ubuntu 吧。首先,我们会经历一个 Ubuntu 启动过程。其启动画面与真实的 Ubuntu 一模一样。接着&…

东软、天健、金仕达、杭创、中联、NECHIS、军字一号 HIS产品的比较

HIS主流厂商产品介绍1、沈阳东软医疗系统有限公司创立于1998年公司是中国目前最大的软件集团——东软集团为技术和资源依托,以研制生产大型医疗设备为主,同时为医院数字化提供全面解决方案。但是,公司改制后,PACS事业部与HIS事业部…

Qt 有层级关系的qss样式,使用id定位到具体控件

Qwidget 下有多个控件,区分相同和不同设置来管理; QWidget { background-image: url(:/images/homePageBackgroundDown.png); border: 2px ; border-radius: 10px; font: 24px; font-weight: 500; icon-size: 74px; padding-top:25px; padding-bottom:20…

重新定义旅游网站,米胖新版发布

还记得一年多之前,我在web 2.0 网站推荐这篇博客中提到了米胖。没多久,我认识了米胖的两位帅气又有才气的当家人。在多次聊天之后,我被他们的激情与专注深深地折服了,在那时我就坚信米胖一定能够发展得很好,走出一条属…

wait和notify使用例子

public class Test2 {public static void main(String[] args) {String lock "lock";Thread thread1 new Thread(new Runnable() {Overridepublic void run() {synchronized (lock){System.out.println("线程1开始等待" System.currentTimeMillis());tr…

Linux基础系列:常用命令(5)_samba服务与nginx服务

作业一:部署samba 每个用户有自己的目录,可以浏览内容,也可以删除 所有的用户共享一个目录,只能浏览内容,不能删 安装samba服务 1、准备环境 setenforce 0 2、安装软件包 yum -y install samba 3、修改配置文件 /etc/s…

python练习,随机数字 函数,循环,if,格式化输出

# double ball game import random count 10000000000 # 设置多少注 blue_start 1 blue_end 5 a [] def make_surprise():i 0while i < 6:i 1number random.randrange(1, 32, 1)a.append(format({:02d}.format(number)))a.append(format({:02d}.format(rando…

notify()唤醒线程,不会立即释放锁对象,需要等到当前同步代码块都执行完后才能释放锁对象

notify()唤醒线程&#xff0c;不会立即释放锁对象&#xff0c;需要等到当前同步代码块都执行完后才能释放锁对象 public class Test3 {public static void main(String[] args) {List<String> list new ArrayList<>();Thread thread1 new Thread(new Runnable(…

LINUX下的APACHE的配置

今天写一下LINUX下的APACHE的配置方法。APACHE是作为WEB服务器的。它的优点在于用缓存方式来加快网页的搜索速度。APACHE缺省只支持静态网页LINUX下有APACHE的RPM包安装上第一张盘里的httpd-2.0.40-21.i386.rpm 包1 /etc/httpd/conf.d 放在这里的都是动态网页的配置文件2 /etc/…

程序实践:命令行之连连看

命令行之连连看 程序实践周课题&#xff0c;VC6.0上可编译执行 游戏截图&#xff1a; #include <cstdio>#include <cstring> #include <iostream> #include <windows.h> #include <time.h> #include <algorithm> using namespace std; in…

Qt 进程使用 使用当前进程启动另外进程

业务场景&#xff1a; A 进程启动B进程后退出&#xff0c; B进程干完活后启动 A进程退出 1.使用 QT &#xff1a;&#xff1a;QProcess 类的接口函数 waitForStarted() 出现 A进程退出来了 B进程一直没有起来的情况&#xff0c; 2. 解决方法: 在 waitFor Started() 后加延时1s…

interrupt()会中断线程的wait等待

public class Thread5 {public static void main(String[] args) {SubThread subThread new SubThread();subThread.start();try {//主线程睡眠2秒&#xff0c;确保子线程处于wait状态Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}subThread.i…

在ASP.Net 2.0中实现多语言界面的方法

1&#xff0e; 跟以前一样做界面&#xff0c;只是注意&#xff0c;把所有需要有多语言界面的文字都用label来做 2&#xff0e; 做完以后&#xff0c;在Solution Explorer里选中这个文件&#xff0c;选Tools-&#xff1e;Generate Local Resource3&#xff0e; 你会发现生成了一…

Qt编译报 undefined vtable问题

在类添加信号槽&#xff0c;继承 QObject 后编译&#xff0c;需要先清理项目 &#xff0c;然后执行qmake&#xff0c; 再构建就不会出错&#xff0c;需要使用来moc编译一下支持信号槽源文件

安装DNN时,数据库连接字符串的设置

最近接触到了DNN&#xff0c;觉得这是一个东西。关于DNN的安装网上有很多文章。我在安装我的第一个DNN程序时&#xff0c;虽然看了那些文章&#xff0c;但是还是无济于事&#xff0c;有的时候&#xff0c;我的系统配置和别人的就是不一样。安装DNN程序时&#xff0c;程序自带的…