当前位置: 首页 > 编程日记 > 正文

最好的程序界面就是用户无需去阅读操作手册就知道该如何使用的界面

最好的程序界面就是用户无需去阅读操作手册就知道该如何使用的界面。 

原则 

1.一致性 
如果你可以在一个列表的项目上双击后能 够弹出对话框,那么应该在任何列表中双击都能弹出对话框。要有统一的字体写号、统一的色调、统一的提示用词、窗口在统一的位置、按钮也在窗口的相同的位 置。 
2.设置标准并遵循它 
可以参数一些工业标准,如IBM的界面设计规范或MS的设计规则,它提供了90%你所需要的规范。 
3. 设置向导 
如果用户使用了一个功能后,不知道如何做下一个,他们就会放弃。如果*作流程和手工工作流程一致,用户就会努力去完成它。最好的方式来 引导用户就是在桌面上设置一个流程向导。 
4.提示信息必须恰当且规范 
提示信息必须容易理解并且口径统一,比如“您输入了错误的数 据”、“用户编码不能超过8位”。一致的措词,提示信息还应该出现在一致的位置,如弹出提示窗口、窗口的上方或窗口的下方。对用户的称呼应该统一,比如有 时提示“用户输入了错误的数据”,有时提示“您输入了错误的数据”,有时又提示“纳税人输入了错误的数据”,这样会使用户无所适从。 
5.借鉴好的程序 
多了解同类软件的界面,并加以分析与了解,直到能够区别好的用户界面与差的用户界面。但不能够机械的模仿别人的界面。 
6.功能的统一 
有一些很常用的功能,如添加、修改、删除、查看,同一个软件中,这些功能应该有相同的*作方法。举个例子,几乎我们所有的程序中都有*作 员管理这一块功能,但没有一个功能最完善统一的模块可供调用,结果虽然程序员间相互复制这个模块,但经过修改后,每个程序的*作管理都不相同。 
7. 变灰的功能 
有时有些功能不可用,最好不要删除这些按钮若项目,而是使他们变灰为不可用状态,这样有助于用户理解整个程序的功能。 
8. 默认按钮 
使用不具有破坏功能的默认按钮,在每个窗口中,为了方便用户,一般都定义了一个默认按钮,当用户敲回车键时可以快速执行某功能,但有时 用户会不小心按错回车键,这时候执行了默认功能后,不能产生不可还原的操作,比如删除或保存。 

<二>

界面是软件与用户交互 的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的*作,起到向导的作用。同时界面如同人的面孔,具有吸 引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏 惧与放弃中付诸东流。目前界面的设计引起软件设计人员的重视的程度还远远不够,直到最近网页制作的兴起,才受到专家的青睐。而且设计良好的界面由于需要具 有艺术美的天赋而遭拒绝。

目前流行的界面风格有三种方式:多窗体、单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的。

1: 易用性
按钮名称应该易懂,用词准确,屏弃没楞两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好。理想的情况是用户不用查阅帮助就能 知道该界面的功能并进行相关的正确*作。
易用性细则:
1):完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。
2): 完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。
3):按功能将界面划分局域块,用Frame框括起来,并要有功能说明或标题。
4): 界面要支持键盘自动浏览按钮功能,即按Tab键的自动切换功能。
5):界面上首先应输入的和重要信息的控件在Tab顺序中应当靠前,位置也应放在 窗口上较醒目的位置。 
6):同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示。
7):分页界面要支持在页 面间的快捷切换,常用组合快捷键Ctrl+Tab
8):默认按钮要支持Enter及选*作,即按Enter后自动执行默认按钮对应操作。
9): 可写控件检测到非法输入后应给出说明并能自动获得焦点。
10):Tab键的顺序与控件排列顺序要一直,目前流行总体从上到下,同时行间从左到右的 方式。
11):复选框和选项框按选择几率的高底而先后排列。
12):复选框和选项框要有默认选项,并支持Tab选择。
13):选 项数相同时多用选项框而不用下拉列表框。
14):界面空间较小时使用下拉框而不用选项框。
15):选项数叫少时使用选项框,相反使用下拉 列表框。
16):专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。

2:规范性
通常界面设计都按 Windows界面的规范来设计,即包含“菜单条、工具栏、工具厢、状态栏、滚动条、右键快捷菜单”的标准格式,可以说:界面遵循规范化的程度越高,则易 用性相应的就越好。小型软件一般不提供工具厢。
规范性细则:
1):常用菜单要有命令快捷方式。
2):完成相同或相近功能的菜单用 横线隔开放在同一位置。
3):菜单前的图标能直观的代表要完成的*作。
4):菜单深度一般要求最多控制在三层以内。
5):工具栏 要求可以根据用户的要求自己选择定制。
6):相同或相近功能的工具栏放在一起。
7):工具栏中的每一个按钮要有及时提示信息。
8): 一条工具栏的长度最长不能超出屏幕宽度。
9): 工具栏的图标能直观的代表要完成的*作。
10):系统常用的工具栏设置默认放置位置。
11): 工具栏太多时可以考虑使用工具厢。
12):工具厢要具有可增减性,由用户自己根据需求定制。
13):工具厢的默认总宽度不要超过屏幕宽度 的1/5。
14): 状态条要能显示用户切实需要的信息,常用的有:
目前的*作、系统状态、用户位置、用户信息、提示信息、错误信息等, 如果某一*作需要的时间较长,还应该显示进度条和进程提示。
15):滚动条的长度要根据显示信息的长度或宽度能及时变换,以利于用户了解显示信息 的位置和百分比。
16):状态条的高度以放置五好字为宜,滚动条的宽度比状态条的略窄。
17):菜单和工具条要有清楚的界限;菜单要求凸 出显示,这样在移走工具条时仍有立体感。
18):菜单和状态条中通常使用5号字体。工具条一般比菜单要宽,但不要宽的太多,否则看起来很不协调。
19): 右键快捷菜单采用与菜单相同的准则。

3:帮助设施
系统应该提供详尽而可靠的帮助文档,在用户使用产生迷惑时可以自己寻求解决方 法。
帮助设施细则:
1):帮助文档中的性能介绍与说明要与系统性能配套一致。(我们的系统帮助文档都是系统的祖先时期的说明,让人困 惑)。
2):打包新系统时,对作了修改的地方在帮助文档中要做相应的修改。
3):*作时要提供及时调用系统帮助的功能。常用F1。
4): 在界面上调用帮助时应该能够及时定位到与该*作相对的帮助位置。也就是说帮助要有即时针对性。
5):最好提供目前流行的联机帮助格式或HTML帮 助格式。
6):用户可以用关键词在帮助索引中搜索所要的帮助,当然也应该提供帮助主题词。
7):如果没有提供书面的帮助文档的话,最好有 打印帮助的功能。
8 ):在帮助中应该提供我们的技术支持方式,一旦用户难以自己解决可以方便的寻求新的帮助方式。

4:合理性
屏 幕对角线相交的位置是用户直视的地方,正上方四分之一处为易吸引用户注意力的位置,在放置窗体时要注意利用这两个位置。
合理性细则:
1): 父窗体或主窗体的中心位置应该在对角线焦点附近。
2):子窗体位置应该在主窗体的左上角或正中。
3):多个子窗体弹出时应该依次向右下方 偏移,以显示窗体出标题为宜。
4):重要的命令按钮与使用较频繁的按钮要放在界面上注目的位置。
5):错误使用容易引起界面退出或关闭的 按钮不应该放在易点位置。横排开头或最后与竖排最后为易点位置。
6):与正在进行的*作无关的按钮应该加以屏蔽(Windows中用灰色显示,没 法使用该按钮)。
7):对可能造成数据无法恢复的*作必须提供确认信息,给用户放弃选择的机会。
8):非法的输入或*作应有足够的提示说 明。
9): 对运行过程中出现问题而引起错误的地方要有提示,让用户明白错误出处,避免形成无限期的等待。
10):提示、警告、或错误说 明应该清楚、明了、恰当。

5:美观与协调性
界面应该大小适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力。
美 观与协调性细则:
1): 长宽接近黄金点比例,切忌长宽比例失调、或宽度超过长度。
2): 布局要合理,不宜过于密集,也不能过于空旷,合理的利用空间。
3): 按钮大小基本相近,忌用太长的名称,免得占用过多的界面位置。
4): 按钮的大小要与界面的大小和空间要协调。
5): 避免空旷的界面上放置很大的按钮。
6):放置完控件后界面不应有很大的空缺位置。
7): 字体的大小要与界面的大小比例协调, 通常使用的字体中宋体9-12较为美观,很少使用超过12号的字体。
8): 前景与背景色搭配合理协调,反差不宜太大,最好少用深色,如大红、大绿等。常用色考虑使用Windows界面色调。
9): 如果使用其他颜色,主色要柔和,具有亲和力与磁力,坚决杜绝刺目的颜色。
10): 大型系统常用的主色有#E1E1E1、#EFEFEF、#C0C0C0等。
11): 界面风格要保持一致,字的大小、颜色、字体要相同,除非是需要艺术处理或有特殊要求的地方。
12): 如果窗体支持最小化和最大化或放大时,窗体上的控件也要随着窗体而缩放;切忌只放大窗体而忽略控件的缩放。
13):对于含有按钮的界面一般不应该 支持缩放,即右上角只有关闭功能。
14): 通常父窗体支持缩放时,子窗体没有必要缩放。
15):如果能给用户提供自定义界面风格则更 好,由用户自己选择颜色、字体等。

6:菜单位置
菜单是界面上最重要的元素,菜单位置按照按功能来组织。
菜单设测试细则:
1): 菜单通常采用“常用--主要--次要--工具--帮助”的位置排列,符合流行的Windows风格。
2):常用的有“文件”、“编辑”,“查看” 等,几乎每个系统都有这些选项,当然要根据不同的系统有所取舍。
3):下拉菜单要根据菜单选项的含义进行分组,并切按照一定的规则进行排列,用横 线隔开。
4): 一组菜单的使用有先后要求或有向导作用时,应该按先后次序排列。
5): 没有顺序要求的菜单项按使用频率和重要性排列,常用的放在开头, 不常用的靠后放置;重要的放在开头,次要的放在后边。
6): 如果菜单选项较多,应该采用加长菜单的长度而减少深度的原则排列。
7): 菜单深度一般要求最多控制在三层以内。
8): 对常用的菜单要有快捷命令方式,组合原则见8。
9):对与进行的*作无关的菜单要用屏蔽的方式加以处理,如果采用动态加载方式——即只有需要的菜 单才显示——最好。
10):菜单前的图标不宜太大,与字高保持一直最好。
11):主菜单的宽度要接近,字数不应多于四个,每个菜单的字数 能相同最好。
12):主菜单数目不应太多,最好为单排布置。

7: 独特性
如果一味的遵循业界的界面标准,则会丧失自己的 个性.在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要。尤其在商业软件流通中有着很好的迁移默化的广告效用。
1):安装界面上 应有单位介绍或产品介绍,并有自己的图标。
2):主界面,最好是大多数界面上要有公司图标。
原帖地址 http://www.cocoachina.com/bbs/read.php?tid-19297.html,欢迎讨论

转载于:https://www.cnblogs.com/star250/archive/2011/03/04/1970967.html

相关文章:

Ant Design Vue中a-select组件下拉列表在局部滚动时不跟随问题解决方法

问题如下&#xff1a; 修改方法如下 <a-tree-select:getPopupContainer"triggerNode > {return triggerNode.parentNode || document.body;}"style"width: 100%":dropdownStyle"{ maxHeight: 400px, overflow: auto }":treeData"tree…

ospf路由汇总的目的

ospf路由汇总的目的减少网络中lsa传输的数量&#xff0c;减少网络中的变化&#xff0c;减少链路状态数据库&#xff0c;减少路由表&#xff0c;大大提高数据包查表转发的能力&#xff0c;能减少因为链路状态数据库的变化而引起的spf算法的重计算。转载于:https://blog.51cto.co…

第九周学习笔记

聚合&#xff1a; 1.当聚集函数遇到空值时&#xff0c;除COUNT(*)外&#xff0c;都跳过空值而出处理非空值。 2.WHERE子句中不能使用聚集函数。 3.聚集函数只能用于SELECT和GROUP BY中的HAVING语句。 常用的聚合函数 1 count 2 sum 3 avg 4 max 5 min 使…

2019年5月26日

距离考核结束的时间只剩下5天了&#xff0c;一个特别大的问题就是前后端的交流问题&#xff0c;不单单是项目的进度&#xff0c;更多的是人与人之间的交流。页面的进度完成了一整个流程&#xff0c;剩下的就是和后端的进行交互&#xff0c;后端的进度有点慢&#xff0c;导致我现…

Django3.0 +Python3 连接mysql遇到django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer

使用idea 创建了一个Django项目&#xff0c;不想使用默认的数据库进行操作&#xff0c;想切换成mysql数据&#xff0c;在此遇到了一些问题特此记录。 按照网上所说使用pymysql进行数据库连接操作&#xff0c;安装并且配置完毕后&#xff0c;在执行数据迁移操作时报错 django.…

栈的push、pop序列

题目&#xff1a;输入两个整数序列。其中一个序列表示栈的push顺序&#xff0c;判断另一个序列有没有可能是对应的pop顺序。为了简单起见&#xff0c;我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5&#xff0c;那么4、5、3、2、1就有可能是…

const常对象成员与常成员函数

#include <iostream>#include <string>using namespace std;class pt{public:   pt(int a,int b){this->xa,this->yb;}   int getX() const {return this->x;} //此处必须加const&#xff08;关键&#xff09;&#xff0c;否则A.getX()将无法正常调用…

根据CPU核数合理设置线程池大小

一般来说池中总线程数是核心池线程数量两倍&#xff0c;只要确保当核心池有线程停止时&#xff0c;核心池外能有线程进入核心池即可。 我们所需要关心的主要是核心池线程的数量该如何设置。 自定义线程池代码 package com.lc.concurrent; import java.util.concurrent.ArrayB…

云答题微信小程序 实现 前端加后台管理

1.为什么要使用微信云开发 微信云开发自己是不需要域名&#xff08;备案的域名&#xff09;&#xff0c;服务器&#xff0c;搭建数据库等。 2.使用技术 微信小程序相关云接口java &#xff08;SpringBootMaven&#xff09;后台管理使用 VUE 3.实现微信小程序效果如下 微信小…

用Windows Media Player截图的方法

视频截图方法&#xff1a; 关闭“视频加速功能即可”。 以Windows Media Player 9.0为例&#xff0c;选择菜单“工具→选项”&#xff0c;找到“性能”选项卡中的“视频加速”一栏&#xff0c;然后拖动下方的拉杆将默认的“完成”改为“无”&#xff0c;按“确定”保存设置&…

基于OHCI的USB主机 —— 结束语

从去年11月份开始连载的《基于OHCI的USB主机》系列总算告一段落了&#xff0c;到UFI命令层为止&#xff0c;所有USB主机的底层处理就结束了&#xff0c;再上面就是磁盘读写、文件系统、文件读写和应用系统了。这些上层应用基本上是与USB主机没有什么关系的&#xff0c;我的这个…

mac os x 查看网络端口情况

查看端口是否打开 使用 netstat 命令 a. netstat -nat | grep <端口号> , 如命令 netstat -nat | grep 3306 b. netstat -nat |grep LISTEN 使用 lsof 命令 # yongfu-pro at yongfu-pro.local in ~ [22:39:32] $ lsof -n -P -i TCP -s TCP:LISTEN COMMAND PID USER FD …

POJ1149-PIGS

1&#xff0c;从各个顾客到汇点各有一条边&#xff0c;容量就是各个顾客能买的数量上限。 2&#xff0c;在某一轮中&#xff0c;从该顾客打开的所有猪圈都有一条边连向该顾客&#xff0c;容量都是∞。 3&#xff0c;最后一轮除外&#xff0c;从每一轮的i号猪圈都有一条边连向下…

Center OS 离线安装Mysql5.7

1.相关资料准备 1.离线安装包下载 或者百度网盘 链接&#xff1a;https://pan.baidu.com/s/1oVP3u8GSaavxoJqKnvZPKg 提取码&#xff1a;vw88 2.libao库文件下载 链接&#xff1a;https://pan.baidu.com/s/12hrQIEF3kk2h2HlWE41G7w 提取码&#xff1a;fvt8 2.开始安装 检…

offsetTop,clientX,clientTop,clientWidth,offsetWidth 坐标,一次弄明白

这几个属性都是IE火狐完全兼容的&#xff0c;不多说&#xff0c;看我测试结果便知&#xff1a; 【源码如下】 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ht…

各小组对于自己产品的预期“软件下载/用户人数”

组号 预期下载/用户人数Team1 100Team2 1000Team3 30下载&#xff0c;20篇博客引用Team4 1000Team5 3000Team6 100Team7 600Team8 1000下载&#xff0c;50个搜索结果引用Team9 300Team10 500在产品发布之后&#xff0c;再比照这个期望值&…

DB2 9 使用拓荒(733 检讨)认证指南,第 2 部分: DB2 数据操作(6)

学习根柢根底观观点操作游标游标措置概述在本节中&#xff0c;您将更进一步看到若安在嵌入式 SQL 使用次第中运用游标。异常&#xff0c;根柢根底的步骤照旧是声明、翻开、获取、更新/删除&#xff08;可选&#xff09;和封闭。为了赞助看法游标的观观点&#xff0c;假定 DB2 构…

判断字符串有无汉字

判断字符串是否全为汉字 1 String str1 "java判断是否为汉字" 2 String str2 "全为汉字" 3 String reg "[\\u4e00-\\u9fa5]" 4 boolean result1 str1.matches(reg)//false 5 boolean result2 str2.matches(reg)//true 提取字符串中…

获取指定字符的宽度

https://www.cnblogs.com/gaodu2003/archive/2009/06/12/1502242.html 方法一&#xff1a;var CharX, CharY: Integer;with Canvas do begin Font.Name : 宋体; Size : 9; CharX : TextExtent(字符串).cx; //字符串宽度&#xff0c;单位为像素 CharY : TextExtent(字符…

选课微信小程序开发 java

1.使用技术 javaspringbootmysqlhibernate微信小程序 2.功能介绍 后台管理 学生管理课程管理类型管理选课管理操作中心管理员中心导入导出学生微信小程序端 学生端 查看课程选课查看选课课程表个人中心管理员 查看课程新增课程用户管理课程类型管理管理员中心 3.系统功能展示…

危险进程大集合咯!(吐血推荐)

一般电脑中都有20-33个进程在后台运行着。有的占用了太多的系统资源&#xff0c;造成机器运行缓慢。更为不幸的是&#xff0c;一些进程是间谍软件和***&#xff0c;如此你的隐私和机器的控制权会被***所掌控。 不安全风险进程A 180ax.exe 是注册为TROJ.ISTZONE.H的下载器。这个…

老王Python-进阶篇4-异常处理1.3(周末习题)

一 编写with操作类Fileinfo()&#xff0c;定义__enter__和__exit__方法。完成功能&#xff1a; 1.1 在__enter__方法里打开Fileinfo(filename)&#xff0c;并且返回filename对应的内容。如果文件不存在等情况&#xff0c;需要捕获异常。 1.2 在__enter__方法里记录文件打开的当…

Springboot 日志管理模块编写记录

/**配置类 **/Component Order(value1) public class MyApplicationRunner implements ApplicationRunner{ /*private static final Logger logger LoggerFactory.getLogger(MyApplicationRunner.class);Autowiredprivate MemoryService memoryService; Overridepublic void r…

IEs 4 Linux 新版支撑 IE 7

Toy Posted in AppsIEs 4 Linux 可以让在 Linux 上安插 IE 变成一件异常俭省和高兴的事。昨天发布的 IEs 4 Linux 2.1 beta2 版末尾支撑安插 IE 7 了。不过&#xff0c;需求使用 –beta-install-ie7 的下令行选项来激活。据作者称&#xff0c;在 Linux 安插的 IE 7&#xff0c;…

h3c 3600 acl 配置 滤源IP是网关的ARP报文的ACL规则

h3c 3600 acl 配置 滤源IP是网关的ARP报文的ACL规则 悬赏分&#xff1a;100 - 解决时间&#xff1a;2009-3-8 14:30 星号之间是我在网上查到的华为交换机的配置方法&#xff1a; ************************************************ 全局配置ACL禁止所有源IP是网关的ARP报文 acl…

useradd与adduser的区别

useradd与adduser都是创建新的用户 在CentOs下useradd与adduser是没有区别的都是在创建用户&#xff0c;在home下自动创建目录&#xff0c;没有设置密码&#xff0c;需要使用passwd命令修改密码。 注&#xff1a;有朋友在博客园上回复我说 centos adduser 不创建用户home目录…

入门linux

作者&#xff1a;opmetic 出自: http://www.linuxdiyf.com说到入门linux ,仍是在大二的时辰&#xff0c;由于插手了黉舍的一个比赛举动&#xff0c;是在linux下的一个顺序匹敌&#xff0c;以是在自己的机子上装了一个RedHat9。厥后风闻它没有更新版本了&#xff0c;接着黉舍检…

springboot之异步调用@Async

引言&#xff1a; 在Java应用中&#xff0c;绝大多数情况下都是通过同步的方式来实现交互处理的&#xff1b;但是在处理与第三方系统交互的时候&#xff0c;容易造成响应迟缓的情况&#xff0c;之前大部分都是使用多线程来完成此类任务&#xff0c;其实&#xff0c;在spring 3.…

js将字符串作为函数名调用函数

需求&#xff1a;获取JSON对象的函数名称&#xff0c;并执行该函数。 解决&#xff1a;用eval函数&#xff0c;字符串转换为命令行执行都可以通过eval函数。 计算 JavaScript 字符串&#xff0c;并把它作为脚本代码来执行。 function loadForm(itemCode){for(var i0;i<ITEM…

2010网络营销-电子商务厦门峰会即将开幕

曾几何时&#xff0c;安踏、361度等福建晋江企业通过在央视大规模投放广告使企业的知名度得到迅速提升&#xff0c;产品销量也节节攀升。如今&#xff0c;大批福建企业又把营销的战场转向了互联网&#xff0c;如何在互联网这个营销新战场续写辉煌成了众多福建企业当前最关心的问…