实用文库汇编之软件用户操作手册编写模板
- 格式:doc
- 大小:16.50 KB
- 文档页数:3
*实用文库汇编之软件汉化全教程*初识资源『资源简介』软件界面上的各种文字、图像、图标等,在编程的时候根据特定的格式分门别类地存放在软件里面,这些特定的格式就叫“资源”(Resource)。
软件资源分为标准资源和非标准资源(简称非标),标准资源通常可以通过PE类资源查看工具(如:PE Explorer、ResScope 等)可视化查看编辑(VB除外),而非标目前还无法实现可视化预览。
特别注意的是VB 程序资源比较特殊,上述分类概念不适用,但汉化人一般把VB 窗体汉化器等提取的窗体资源称为标准资源,而通过点睛字符替换器提取的VB 字串、Unicode 字串和ASCII 字串均称为非标。
常见的标准资源通常有Bitmap(位图)、Menu(菜单)、Dialog(对话框)、String(字符串)、RCData(RC-数据)、Cursor(光标)、Accelerator(加速器)、Icon(图标)、Version(版本)、Toolbar(工具栏)、Form(窗体),其中RC-data多见于Delphi程序中,Form多见于VB程序中。
非标资源主要包括ASCII字串、Unicode字串两大类。
标准资源汉化后,在软件界面或调用信息时显示、但又不出现在上述标准资源中的字串多数属于非标资源。
『汉化资源分布』由于编写软件所使用的编程工具不同,软件中的汉化资源发布位置也不尽相同,常见如下:1. VC 类标准资源由Microsoft Visual C++ 编写,汉化资源一般分布于Menu、Dialog、String 等;2.Delphi 类标准资源由Borland Delphi 编写,汉化资源一般分布在Rcdata 和String 中;3.VB 类标准资源由Microsoft Visual Basic 编写,汉化资源一般出现在Form 窗体中;3.非标资源Unicode 字串和ASCII 字串,后者又可细分为VB 字串、Delphi 字串和其他ASCII 字串。
编号:版本号:发放号:文件名称:用户操作手册编写规范变更记录注:对该文件内容增加、删除或修改均需填写此变更记录,详细记载变更信息,以保证其可追溯性。
用户操作手册编写规范用户操作手册旨在告诉软件的使用者在使用本软件时所应采用的方法与程序,并提供有关的信息,如系统结构、软件功能、操作流程等,以协助软件的使用。
用户操作手册的重点章节是‘第四章功能概述与操作说明’。
操作说明必须尽量地详尽,以便使用者易于掌握。
目录第一章简介本章将简要地说明用户操作手册(以下简称本手册)的目的、范围、名词定义和参考文件。
1、手册目的本手册的目的在于告诉某某系统软件的使用者,本系统软件提供了哪些功能,以及如何正确地、有效地来使用这些功能。
2、手册范围本手册首先简要地介绍本系统软件的结构以及软件环境,然后说明本系统软件为使用者提供的各项功能及其详细的操作步骤。
本手册的使用者包括:{在此罗列使用者……}本手册各章节内容安排如下:第一章简介:简单说明本手册的目的、范围、名词定义和参考文件。
第二章系统概述:简单说明本系统的结构及其执行环境。
第三章公共操作:介绍开机、系统注册与退出、关机等公共操作,并指明为系统中各项操作所共有的屏幕属性、按钮定义及键盘定义。
第四章功能概述与操作说明:逐一说明各项功能及其详细的操作步骤。
其中“第四章功能概述与操作说明”为本手册之重点, 希望使用者能深入了解。
3、名词定义这里定义为了准确地解释本手册所需要的字头词和缩写词。
这些信息也可以由手册的附录提供,或引用别的文档。
4、参考文件参考文件清单。
每个参考文件的标题、索引号或文件号、发布或发表日期、出版单位等。
每个参考文件的来源。
这些信息也可以由手册的附录提供,或引用别的文档。
用户操作手册的参考文件至少应包括本系统的“软件需求分析报告”。
第二章系统概述本章将简要说明本系统之目标、范围、结构、及软件环境。
1、系统目标说明本系统主要目标。
2、系统范围说明本系统之主要范围。
*作者:飞将下*作品编号:94877660222254创作日期:2020年12月20日实用文库汇编之河北省公务用车信息化管理平台操作指南1.操作指南 (2)1.1. 登录系统 (2)1.1.1. 进入系统,修改密码 (3)1.2进入信息公告页 (4)1.3基础信息 (5)1.3.1单位信息 (5)1.3.2车辆信息 (7)1.3.3司勤信息 (10)1.4车辆调派 (15)1.4.1申请用车 (15)1.4.2用车审批 (17)1.4.3派车查询 (18)1.4.4回库登记 (18)1.5投诉处理 (19)1.6配备处置流程 (21)1.7社会车辆租赁 (22)1.7.1申请租车 (22)1.7.2租车审批 (23)1.7.3评价确认 (24)1.7.4租车单列表审核 (25)1.操作指南1.1. 登录系统进入登录页后输入用户名、密码、验证码点击登录,图中验证码如果看不清,点击验证码进行刷新。
1.1.1.进入系统,修改密码1.首次登录后,先进行修改密码操作,点击首页右上角图标,如图:2.点击上图图标后出现如下页面,然后点击修改密码3.然后在下图文本框中,输入原始密码,和新密码,并确认密码,密码强度最少要达到中级以上,确认无误后点击确定,修改成功后进行重新登录操作1.2进入信息公告页登录后进入系统首页,点击左侧第一栏信息公告,可查看信息公告和政策文件,点击箭头指向地方“文件标题”可下载文件进行阅览。
1.3基础信息1.3.1单位信息1.进入单位信息页后点击箭头所指,进入单位详细信息页2.单位详细信息页中浏览本单位信息,如果信息错误则点击左上角修改本单位信息3.在单位信息页,拖动滚动条,或者鼠标滚轮向下滑动,对本单位三级用户进行修改。
4.点击修改后进入如下页面对本单位的三级用户进行修改ps:手机号码等信息一定要正确填写1.3.2车辆信息1.点击车辆信息进入下图页面,然后点击箭头所指,进入车辆详细信息页面2.进入本单位车辆页面后,点击箭头指向方向进入车辆详情页3.车辆详情页4.点击添加车辆进入添加车辆页面,其中车辆价格,与日期为必填项5.在当前页面滑动鼠标滚轮或者拖动滚动条,对信息保存或者提交,点击保存可在审核状态页对该车辆进行修改,若点击提交,则不可更改,只能等待省级审核,审核通过后,则不可在进行更改,若被驳回则继续进行修改6.点击左侧菜单栏审核状态,可查看本单位所以审核车辆,其中审核状态为待完善或者被驳回,则可在右侧点击编辑进行车辆修改1.3.3司勤信息1.点击左侧菜单栏中司勤人员信息点击箭头指向进入司勤人员信息列表页2.点击司勤人员,进入司勤人员信息,此操作与车辆类似作者:飞将下作品编号:94877660222254创作日期:2020年12月20日3.点击左侧菜单栏中添加司勤人员信息,对本单位司勤人员进行添加,司勤人员只进行提交不需省级审核4.点击左侧修改司勤人员进入司勤人员列表页,然后点击在右侧操作栏中的状态,来改变司勤人员的工作状态,如果修改司勤人员个人信息则点击编辑,进入编辑页对信息进行修改5.修改人员状态,例:将人员状态由值班改为事假,点击事假按钮操作结果6.点击编辑按钮操作7.进入编辑司勤人员页面,完善信息并确认无误后,点击提交1.4车辆调派1.4.1申请用车1.选择车辆—各个单位车辆申请员,接到单位职工申请用车后进入派车流程,第一步选择出行车辆,选中车辆后点击下一步,选择司机驾驶人员2.选择司机—申请员选择车辆后进入选择司机页,选择司机后点击下一步,进入派车单填写页面,或者点击上一步重新选择车辆3.填写派车单—选择司机后点击下一步进入填写派车单流程,首先选择出行类型,指市内,省内,或者省外出行,其中市内出行,需要车辆管理部门主任或处长审批,如果省内或者省外,需要处长或主任审批后再由车辆主管厅、局长审批。
软件用户操作手册编写模板一、简介在本节中,我们将为您提供一份适用于编写软件用户操作手册的模板。
通过遵循以下结构和指导,您可以轻松地创建一份清晰、易于理解和实用的操作手册。
二、目录操作手册的目录应该列出所有的章节和小节,以便用户可以快速找到所需信息。
下面是一个示例目录结构:1. 简介2. 安装与配置2.1 硬件要求2.2 软件安装2.3 配置设置3. 用户界面3.1 主界面3.2 菜单栏3.3 工具栏4. 功能操作4.1 基本操作4.2 高级功能5. 常见问题解答6. 支持与反馈6.1 联系信息6.2 反馈渠道三、章节结构每个章节应该以清晰且具有信息量的标题开始,下面是一些建议的章节结构:1. 简介- 简要介绍操作手册的内容和宗旨- 引导用户理解手册的重要性和使用方法2. 安装与配置- 提供所需的硬件和软件要求- 详细说明软件的安装过程- 提供配置设置的步骤和指导3. 用户界面- 描述主界面的不同元素和布局- 说明菜单栏和工具栏的各个功能和操作- 提供用户界面定制化的方法和技巧4. 功能操作- 分步介绍常用功能的操作步骤- 为高级功能提供详细的说明和示例- 使用图表、截图或示意图来增强说明的可视化效果5. 常见问题解答- 列举和解答用户常遇到的问题- 提供常见错误和故障排除的方法和建议6. 支持与反馈- 提供联系信息,例如客服电话或邮箱- 引导用户通过反馈渠道提供意见和建议四、排版与格式在编写操作手册时,整洁美观的排版和格式对于用户的阅读体验非常重要。
以下是一些建议:1. 使用清晰的标题和子标题,标明章节和小节的层次结构。
2. 使用有序和无序列表来呈现步骤和说明,使其易于阅读。
3. 使用粗体或斜体强调关键词或术语。
4. 使用表格、图表和示意图来帮助解释和展示操作步骤。
5. 注意语句通顺,并避免冗余和重复。
6. 使用简明扼要的语言,避免使用复杂的技术术语,以确保用户可以轻松理解。
五、总结通过遵循上述操作手册编写模板,您可以创建一份有效、易于使用和用户友好的软件用户操作手册。
用户手册和操作手册项目名称:负责人:指导教师:委托单位:开发单位:开发时间:年月~年月时间:2007.101引言1.1编写目的说明编写这份用户手册的目的,指出预期的读者。
等级考试网上辅导系统是教育信息化、网络培训的一个重要组成部分,研究的目的是为了改革考试手段,实现考试技术现代化、考试过程科学化、考试管理自动化、考试资料无纸化。
利用计算机网络进行测试,可以大量采用标准化试题,使用计算机评卷;也可以利用计算机从试题库中随机抽题组卷进行测试;还可以直接把成绩送到数据库中,进行排序、统计分析等操作,并能实现远程等级考试网上辅导。
本课题是软件开发试训课程在计算机科学与技术专业教学中的应用,应用ASP 程序设计,开发基于WEB应用程序,从而完善课程的网络畅通程度,其中采用的B /S模式,让客户端从繁重的数据计算的劳动中解脱出来,C/S模式又提高了软件的可控与安全性,这种三层模式的数据库访问与管理方式让我们数据库的管理与访问变得更加高效快捷。
本系统的软件实现计划ASP语言,SQLServer数据库,因此具有很强的应用性、可维护性、可扩展性以及重复使用的能力,可以很方便进行版本控制、数据库操作等复杂度比较高的控制。
1.2背景说明:a.这份用户手册所描述的软件系统的名称;b.该软件项目的任务提出者、开发者、用户(或首批用户)及安装此软件的计算中心。
随着社会的不断发展,计算机的使用更是日益普及,无论是工作生活都与其息息相关,人必须要掌握计算机的操作,而计算机的水平很大程度是由国家计算机等级考试确定的,所以我们围绕计算机等级考试设计了等级考试网上辅导系统,主要提供与计算机等级考试相关的内容,如考试动态、历年的真题、考题分析和讨论交流等。
1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.4参考资料列出有用的参考资料,如:a.项目的经核准的计划任务书或合同、上级机关的批文;b.属于本项目的其他已发表文件;c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。
图4.3“安装”功能中的内容图4.4“维护”功能中的内容图4.5“资源”功能中的内容图4.6“高级”功能中的内容图4.7“选项”功能中的内容4.2 安装过程步骤一:在开始安装前,首先需要安装 Visual Studio 2008 SP1 ,否则在后续的升级规则验证中无法通过。
为实现开发需要,本次选择的是S QL Server 2008 Developer版本,并从 SQL Server 2005 进行升级安装。
单击“安装”功能中的“从 SQL Server 2000 或 SQL Server 2005升级”选项,将打开下面的“产品密钥”页面。
由于是180天试用版本,产品密钥会自动显示在文本框中。
如4.8所示:附:Microsoft SQL Server 2008 注册码开发版(Developer): PTTFM-X467G-P7RH2-3Q6CG-4DMYB企业版(Enterprise): JD8Y6-HQG69-P9H84-XDTPG-34MBB图4.8安装程序之产品密钥步骤二:单击“下一步”按钮,打开下面的“许可条款”页面。
如图4.9所示:图4.9安装程序之许可条款步骤三:选择“我接受许可条款”复选框,并单击“下一步”按钮。
打开下面的“安装程序支持文件”页面。
如图4.20所示:图4.10安装程序之支持文件步骤四:单击“安装”按钮,打开下面的“选择实例”页面,选择要升级的实例。
?如图4.11所示:图4.11安装程序之选择实例步骤五:单击“下一步”按钮,打开下面的“选择功能”页面。
由于是升级安装,所以这些功能全部不可选。
需要注意的是,在 SQL Server 2 008 全新安装时,Business Intelligence Development Studio 是 SQL Server 安装的一个单独选项,并且 SQL Server 的代码示例和示例数据库不再随产品一起提供,但可以从的 Microsoft SQL Server Samples and Community Projects(Microsoft SQL Server 示例和社区项目)网站中查找并下载这些示例和示例数据库。
在项目开发进程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精准性、清楚性、完整性、灵活性、可追溯性。
◇ 可行性分析报告:说明该软件开发项目的实此刻技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各类可能实施方案,说明并论证所选定实施方案的理由。
◇ 项目开发打算:为软件项目实施方案制订出具体打算,应该包括各部份工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。
◇ 软件需求说明书(软件规格说明书):对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。
它是在用户与开发人员两边对软件需求取得一起明白得并达成协议的条件下编写的,也是实施开发工作的基础。
该说明书应给出数据逻辑和数据搜集的各项要求,为生成和保护系统数据文件做好预备。
◇ 概要设计说明书:该说明书是概要实际时期的工作功效,它应说明功能分派、模块划分、程序的整体结构、输入输出和接口设计、运行设计、数据结构设计和犯错处置设计等,为详细设计提供基础。
◇ 详细设计说明书:着重描述每一模块是如何实现的,包括实现算法、逻辑流程等。
◇ 用户操作手册:本手册详细描述软件的功能、性能和用户界面,利用户对如何利用该软件取得具体的了解,为操作人员提供该软件各类运行情形的有关知识,专门是操作方式的具体细节。
◇ 测试打算:为做好集成测试和验收测试,需为如何组织测试制订实施打算。
打算应包括测试的内容、进度、条件、人员、测试用例的选取原那么、测试结果许诺的误差范围等。
◇ 测试分析报告:测试工作完成以后,应提交测试打算执行情形的说明,对测试结果加以分析,并提出测试的结论意见。
◇ 开发进度月报:该月报系软件人员按月向治理部门提交的项目进展情形报告,报告应包括进度打算与实际执行情形的比较、时期功效、碰到的问题和解决的方法和下个月的打算等。
◇ 项目开发总结报告:软件项目开发完成以后,应与项目实施打算对照,总结实际执行的情形,如进度、功效、资源利用、本钱和投入的人力,另外,还需对开发工作做出评判,总结出体会和教训。
软件用户操作手册1.1编写目的【阐明编写手册的目的,指明读者对象.】ﻫ2.1项目背景【说明项目1.引言ﻫ来源、委托单位、开发单位及主管部门。
】ﻫ1.3定义【列出手册中使用的专门术语的定义和缩写词的原意。
】ﻫ1.4参考资料【列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:a.项目的计划任务书、合同或批文.b.项目开发计划.c.需求规格说明书;d.概要设计说明书;e.详细设计说明书;f.测试计划;g.手册中引用的其他资料、采用的软件工程标准或软件工程规范。
】2.软件概述2.1目标ﻫ 2.2功能2.3性能a.数据精确度【包括输入、输出及处理数据的精度。
】b.时间特性【如响应时间、处理时间、数据传输时间等。
】ﻫ c.灵活性【在操作方式、运行环境需做某些变更时软件的适应能力.】ﻫ3.运行环境3.1硬件【列出软件系统运行时所需的硬件最小配置,如a.计算机型号、主存容量.b.外存储器、媒体、记录格式、设备型号及数量.c.输入、输出设备;d.数据传输设备及数据转换设备的型号及数量.】ﻫ 3.2支持软件【如:a.操作系统名称及版本号.b.语言编译系统或汇编系统的名称及版本号;c.数据库管理系统的名称及版本号;d.其他必要的支持软件。
】4.使用说明4.1安装和初始化【给出程序的存储形式、操作命令、反馈信息及其含意、表明安装完成2.4输入【给出输入数据或参数的要求。
】的测试实例以及安装所需的软件工具等。
】ﻫﻫ4.2.1数据背景【说明数据来源、存储媒体、出现频度、限制和质量管理等。
】4.2.2数据格式【如.a.长度.b.格式基准;c.标号;d.顺序;e.分隔符;f.词汇表;g.省略3.4输出【给出每项输出数据的说明。
】和重复;h.控制。
】ﻫ4.2.3输入举例ﻫ4.3.1数据背景【说明输出数据的去向、使用频度、存放媒体及质量管理等。
】4.3.2数据格式【详细阐明每一输出数据的格式,如:首部、主体和尾部的具体形式。
*作者:座殿角*作品编号48877446331144215458创作日期:2020年12月20日实用文库汇编之#include <tybs/commandline.h>#include <tybs/dir.h>#include <tybs/entropy.h>#include <tybs/file.h>#include <tybs/hash.h>#include <tybs/os.h>#include <tybs/platform.h>#include <tybs/resource.h>#include <tybs/stdio.h>#include <tybs/string.h>#include <tybs/task.h>#include <tybs/timer.h>#include <tybs/util.h>#include <tybscc/result.h>#include <dns/dispatch.h>#include <dns/name.h>#include <dns/result.h>#include <dns/view.h>#include <dst/result.h>#define NS_MAIN 1#include <named/ns_smf_globals.h>#endif#ifdef DLZ#include <dlz/dlz_drivers.h>#endifstatic tybs_boolean_t want_stats = TYBS_FALSE;static char program_name[TYBS_DIR_NAMEMAX] = "named"; static char absolute_conffile[TYBS_DIR_PATHMAX];static char saved_command_line[512];static char version[512];static unsigned int maxsocks = 0;voidns_main_earlywarning(const char *format, ...) {va_list args;va_start(args, format);if (ns_g_lctx != NULL) {tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_W ARNING,format, args);} else {fprintf(stderr, "%s: ", program_name);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}va_end(args);}Void ns_main_earlyfatal(const char *format, ...) {va_list args;va_start(args, format);if (ns_g_lctx != NULL) {tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,format, args);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,"exiting (due to early fatal error)");} else {fprintf(stderr, "%s: ", program_name);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}va_end(args);exit(1);}static voidassertion_failed(const char *file, int line, tybs_assertiontype_t type,const char *cond){if (ns_g_lctx != NULL) {tybs_assertion_setcallback(NULL);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,"%s:%d: %s(%s) failed", file, line,tybs_assertion_typetotext(type), cond);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,"exiting (due to assertion failure)");} else {fprintf(stderr, "%s:%d: %s(%s) failed\n",file, line, tybs_assertion_typetotext(type), cond);fflush(stderr);}if (ns_g_coreok)abort();exit(1);}static voidlibrary_fatal_error(const char *file, int line, const char *format,va_list args) TYBS_FORMA T_PRINTF(3, 0);static voidlibrary_fatal_error(const char *file, int line, const char *format,va_list args)作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日{if (ns_g_lctx != NULL) {tybs_error_setfatal(NULL);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,"%s:%d: fatal error:", file, line);tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,format, args);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,"exiting (due to fatal error in library)");} else {fprintf(stderr, "%s:%d: fatal error: ", file, line);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}if (ns_g_coreok)abort();exit(1);}static voidlibrary_unexpected_error(const char *file, int line, const char *format,va_list args) TYBS_FORMAT_PRINTF(3, 0);static voidlibrary_unexpected_error(const char *file, int line, const char *format,va_list args){if (ns_g_lctx != NULL) {tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_ERROR,"%s:%d: unexpected error:", file, line);tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_ERROR,format, args);} else {fprintf(stderr, "%s:%d: fatal error: ", file, line);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}}static voidlwresd_usage(void) {fprintf(stderr,"usage: lwresd [-4|-6] [-c conffile | -C resolvconffile] ""[-d debuglevel]\n"" [-f|-g] [-n number_of_cpus] [-p port] ""[-P listen-port] [-s]\n"" [-t chrootdir] [-u username] [-i pidfile]\n"" [-m {usage|trace|record|size|mctx}]\n");}static voidusage(void) {if (ns_g_lwresdonly) {lwresd_usage();return;}fprintf(stderr,"usage: named [-4|-6] [-c conffile] [-d debuglevel] ""[-f|-g] [-n number_of_cpus]\n"" [-p port] [-s] [-t chrootdir] [-u username]\n"" [-m {usage|trace|record|size|mctx}]\n");}static voidsave_command_line(int argc, char *argv[]) {int i;char *src;char *dst;char *eob;const char truncated[] = "...";tybs_boolean_t quoted = TYBS_FALSE;dst = saved_command_line;eob = saved_command_line + sizeof(saved_command_line);for (i = 1; i < argc && dst < eob; i++) {*dst++ = ' ';src = argv[i];while (*src != '\0' && dst < eob) {if (quoted || isalnum(*src & 0xff) ||*src == '-' || *src == '_' ||*src == '.' || *src == '/') {*dst++ = *src++;quoted = TYBS_FALSE;} else {*dst++ = '\\';quoted = TYBS_TRUE;}}}INSIST(sizeof(saved_command_line) >= sizeof(truncated));if (dst == eob)strcpy(eob - sizeof(truncated), truncated);else*dst = '\0';}static intparse_int(char *arg, const char *desc) {char *endp;作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日int tmp;long int ltmp;ltmp = strtol(arg, &endp, 10);tmp = (int) ltmp;if (*endp != '\0')ns_main_earlyfatal("%s '%s' must be numeric", desc, arg);if (tmp < 0 || tmp != ltmp)ns_main_earlyfatal("%s '%s' out of range", desc, arg);return (tmp);}static struct flag_def {const char *name;unsigned int value;} mem_debug_flags[] = {{ "trace", TYBS_MEM_DEBUGTRACE },{ "record", TYBS_MEM_DEBUGRECORD },{ "usage", TYBS_MEM_DEBUGUSAGE },{ "size", TYBS_MEM_DEBUGSIZE },{ "mctx", TYBS_MEM_DEBUGCTX },{ NULL, 0 }};static voidset_flags(const char *arg, struct flag_def *defs, unsigned int *ret) { for (;;) {const struct flag_def *def;const char *end = strchr(arg, ',');int arglen;if (end == NULL)end = arg + strlen(arg);arglen = end - arg;for (def = defs; def->name != NULL; def++) {if (arglen == (int)strlen(def->name) &&memcmp(arg, def->name, arglen) == 0) {*ret |= def->value;goto found;}}ns_main_earlyfatal("unrecognized flag '%.*s'", arglen, arg);found:if (*end == '\0')break;arg = end + 1;}}static voidparse_command_line(int argc, char *argv[]) {int ch;int port;tybs_boolean_t disable6 = TYBS_FALSE;tybs_boolean_t disable4 = TYBS_FALSE;save_command_line(argc, argv);tybs_commandline_errprint = TYBS_FALSE;while ((ch = tybs_commandline_parse(argc, argv,"46c:C:d:fgi:lm:n:N:p:P:""sS:t:T:u:vVx:")) != -1) {switch (ch) {case '4':if (disable4)ns_main_earlyfatal("cannot specify -4 and -6");if (tybs_net_probeipv4() != TYBS_R_SUCCESS)ns_main_earlyfatal("IPv4 not supported by OS");tybs_net_disableipv6();disable6 = TYBS_TRUE;break;case '6':if (disable6)ns_main_earlyfatal("cannot specify -4 and -6");if (tybs_net_probeipv6() != TYBS_R_SUCCESS)ns_main_earlyfatal("IPv6 not supported by OS");tybs_net_disableipv4();disable4 = TYBS_TRUE;break;case 'c':ns_g_conffile = tybs_commandline_argument;lwresd_g_conffile = tybs_commandline_argument;if (lwresd_g_useresolvconf)ns_main_earlyfatal("cannot specify -c and -C");ns_g_conffileset = TYBS_TRUE;break;case 'C':lwresd_g_resolvconffile = tybs_commandline_argument;if (ns_g_conffileset)ns_main_earlyfatal("cannot specify -c and -C");lwresd_g_useresolvconf = TYBS_TRUE;break;case 'd':ns_g_debuglevel = parse_int(tybs_commandline_argument,"debug level");break;case 'f':ns_g_foreground = TYBS_TRUE;break;case 'g':ns_g_foreground = TYBS_TRUE;ns_g_logstderr = TYBS_TRUE;break;/* XXXBEW -i should be removed */case 'i':lwresd_g_defaultpidfile = tybs_commandline_argument;break;case 'l':ns_g_lwresdonly = TYBS_TRUE;break;作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日case 'm':set_flags(tybs_commandline_argument, mem_debug_flags,&tybs_mem_debugging);break;case 'N': /* Deprecated. */case 'n':ns_g_cpus = parse_int(tybs_commandline_argument,"number of cpus");if (ns_g_cpus == 0)ns_g_cpus = 1;break;case 'p':port = parse_int(tybs_commandline_argument, "port");if (port < 1 || port > 65535)ns_main_earlyfatal("port '%s' out of range",tybs_commandline_argument);ns_g_port = port;break;/* XXXBEW Should -P be removed? */case 'P':port = parse_int(tybs_commandline_argument, "port");if (port < 1 || port > 65535)ns_main_earlyfatal("port '%s' out of range",tybs_commandline_argument);lwresd_g_listenport = port;break;case 's':want_stats = TYBS_TRUE;break;case 'S':maxsocks = parse_int(tybs_commandline_argument,"max number of sockets");break;case 't':ns_g_chrootdir = tybs_commandline_argument;break;case 'T':if (strcmp(tybs_commandline_argument, "clienttest") == 0) ns_g_clienttest = TYBS_TRUE;elsefprintf(stderr, "unknown -T flag '%s\n",tybs_commandline_argument);break;case 'u':ns_g_username = tybs_commandline_argument;break;case 'v':printf("BIND %s\n", ns_g_version);exit(0);case 'V':printf("BIND %s built with %s\n", ns_g_version,ns_g_configargs);exit(0);case '?':usage();if (tybs_commandline_option == '?')exit(0);ns_main_earlyfatal("unknown option '-%c'",tybs_commandline_option);default:ns_main_earlyfatal("parsing options returned %d", ch);}}argc -= tybs_commandline_index;argv += tybs_commandline_index;if (argc > 0) {usage();ns_main_earlyfatal("extra command line arguments");}}static tybs_result_tcreate_managers(void) {tybs_result_t result;unsigned int socks;#ifdef TYBS_PLATFORM_USETHREADSunsigned int cpus_detected;#endif#ifdef TYBS_PLATFORM_USETHREADScpus_detected = tybs_os_ncpus();if (ns_g_cpus == 0)ns_g_cpus = cpus_detected;tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,TYBS_LOG_INFO, "found %u CPU%s, using %u worker thread%s",cpus_detected, cpus_detected == 1 ? "" : "s",ns_g_cpus, ns_g_cpus == 1 ? "" : "s");#elsens_g_cpus = 1;#endifresult = tybs_taskmgr_create(ns_g_mctx, ns_g_cpus, 0, &ns_g_taskmgr);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_taskmgr_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}result = tybs_timermgr_create(ns_g_mctx, &ns_g_timermgr);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_timermgr_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}result = tybs_socketmgr_create2(ns_g_mctx, &ns_g_socketmgr, maxsocks);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_socketmgr_create() failed: %s",tybs_result_totext(result));作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日return (TYBS_R_UNEXPECTED);}result = tybs_socketmgr_getmaxsockets(ns_g_socketmgr, &socks);if (result == TYBS_R_SUCCESS) {tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_SERVER,TYBS_LOG_INFO, "using up to %u sockets", socks);}result = tybs_entropy_create(ns_g_mctx, &ns_g_entropy);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_entropy_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}result = tybs_hash_create(ns_g_mctx, ns_g_entropy, DNS_NAME_MAXWIRE);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_hash_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}return (TYBS_R_SUCCESS);}static voiddestroy_managers(void) {ns_lwresd_shutdown();tybs_entropy_detach(&ns_g_entropy);if (ns_g_fallbackentropy != NULL)tybs_entropy_detach(&ns_g_fallbackentropy);tybs_taskmgr_destroy(&ns_g_taskmgr);tybs_timermgr_destroy(&ns_g_timermgr);tybs_socketmgr_destroy(&ns_g_socketmgr);tybs_hash_destroy();}static voidsetup(void) {tybs_result_t result;#ifdef HA VE_LIBSCFchar *instance = NULL;#endifns_os_inituserinfo(ns_g_username);ns_os_tzset();ns_os_opendevnull();#ifdef HA VE_LIBSCFresult = ns_smf_get_instance(&instance, 0, ns_g_mctx);if (result == TYBS_R_SUCCESS)ns_smf_got_instance = 1;elsens_smf_got_instance = 0;if (instance != NULL)tybs_mem_free(ns_g_mctx, instance);#endif /* HA VE_LIBSCF */#ifdef PATH_RANDOMDEVif (ns_g_chrootdir != NULL) {result = tybs_entropy_create(ns_g_mctx, &ns_g_fallbackentropy);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_entropy_create() failed: %s",tybs_result_totext(result));result = tybs_entropy_createfilesource(ns_g_fallbackentropy,PA TH_RANDOMDEV);if (result != TYBS_R_SUCCESS) {ns_main_earlywarning("could not open pre-chroot ""entropy source %s: %s",PA TH_RANDOMDEV,tybs_result_totext(result));tybs_entropy_detach(&ns_g_fallbackentropy);}}#endifns_os_chroot(ns_g_chrootdir);ns_os_minprivs();result = ns_log_init(TYBS_TF(ns_g_username != NULL));if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("ns_log_init() failed: %s",tybs_result_totext(result));if (!ns_g_foreground)ns_os_daemonize();result = tybs_app_start();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_app_start() failed: %s",tybs_result_totext(result));tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, "starting BIND %s%s", ns_g_version,saved_command_line);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, "built with %s", ns_g_configargs);(void)tybs_resource_getlimit(tybs_resource_stacksize,&ns_g_initstacksize);(void)tybs_resource_getlimit(tybs_resource_datasize,&ns_g_initdatasize);(void)tybs_resource_getlimit(tybs_resource_coresize,&ns_g_initcoresize);(void)tybs_resource_getlimit(tybs_resource_openfiles,&ns_g_initopenfiles);if (! tybs_file_isabsolute(ns_g_conffile)) {result = tybs_file_absolutepath(ns_g_conffile,absolute_conffile,sizeof(absolute_conffile));if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("could not construct absolute path of ""configuration file: %s",tybs_result_totext(result));ns_g_conffile = absolute_conffile;}result = tybs_time_now(&ns_g_boottime);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_time_now() failed: %s",tybs_result_totext(result));result = create_managers();if (result != TYBS_R_SUCCESS)作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日ns_main_earlyfatal("create_managers() failed: %s",tybs_result_totext(result));ns_builtin_init();#ifdef DLZresult = dlz_drivers_init();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("dlz_drivers_init() failed: %s",tybs_result_totext(result));#endifns_server_create(ns_g_mctx, &ns_g_server);}static voidcleanup(void) {destroy_managers();ns_server_destroy(&ns_g_server);ns_builtin_deinit();#ifdef DLZdlz_drivers_clear();#endifdns_name_destroy();tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, "exiting");ns_log_shutdown();}static char *memstats = NULL;voidns_main_setmemstats(const char *filename) {if (memstats != NULL) {free(memstats);memstats = NULL;}if (filename == NULL)return;memstats = malloc(strlen(filename) + 1);if (memstats)strcpy(memstats, filename);}#ifdef HA VE_LIBSCFtybs_result_tns_smf_get_instance(char **ins_name, int debug, tybs_mem_t *mctx) { scf_handle_t *h = NULL;int namelen;char *instance;REQUIRE(ins_name != NULL && *ins_name == NULL);if ((h = scf_handle_create(SCF_VERSION)) == NULL) {if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_handle_create() failed: %s",scf_strerror(scf_error()));return (TYBS_R_FAILURE);}if (scf_handle_bind(h) == -1) {if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_handle_bind() failed: %s",scf_strerror(scf_error()));scf_handle_destroy(h);return (TYBS_R_FAILURE);}if ((namelen = scf_myname(h, NULL, 0)) == -1) {if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_myname() failed: %s",scf_strerror(scf_error()));scf_handle_destroy(h);return (TYBS_R_FAILURE);}if ((instance = tybs_mem_allocate(mctx, namelen + 1)) == NULL) { UNEXPECTED_ERROR(__FILE__, __LINE__,"ns_smf_get_instance memory ""allocation failed: %s",tybs_result_totext(TYBS_R_NOMEMORY));scf_handle_destroy(h);return (TYBS_R_FAILURE);}if (scf_myname(h, instance, namelen + 1) == -1) {if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_myname() failed: %s",scf_strerror(scf_error()));scf_handle_destroy(h);tybs_mem_free(mctx, instance);return (TYBS_R_FAILURE);}scf_handle_destroy(h);*ins_name = instance;return (TYBS_R_SUCCESS);}#endifintmain(int argc, char *argv[]) {tybs_result_t result;#ifdef HA VE_LIBSCFchar *instance = NULL;#endifstrlcat(version,#ifdef __DATE__"named version: BIND " VERSION " (" __DA TE__ ")",#else"named version: BIND " VERSION,#endifsizeof(version));result = tybs_file_progname(*argv, program_name, sizeof(program_name));if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("program name too long");if (strcmp(program_name, "lwresd") == 0)ns_g_lwresdonly = TYBS_TRUE;tybs_assertion_setcallback(assertion_failed);tybs_error_setfatal(library_fatal_error);tybs_error_setunexpected(library_unexpected_error);ns_os_init(program_name);dns_result_register();dst_result_register();tybscc_result_register();parse_command_line(argc, argv);作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日if (ns_g_chrootdir != NULL) {int len = strlen(ns_g_chrootdir);if (strncmp(ns_g_chrootdir, ns_g_conffile, len) == 0 &&(ns_g_conffile[len] == '/' || ns_g_conffile[len] == '\\'))ns_main_earlywarning("config filename (-c %s) contains ""chroot path (-t %s)",ns_g_conffile, ns_g_chrootdir);}result = tybs_mem_create(0, 0, &ns_g_mctx);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_mem_create() failed: %s",tybs_result_totext(result));tybs_mem_setname(ns_g_mctx, "main", NULL);setup();do {result = tybs_app_run();if (result == TYBS_R_RELOAD) {ns_server_reloadwanted(ns_g_server);} else if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_app_run(): %s",tybs_result_totext(result));result = TYBS_R_SUCCESS;}} while (result != TYBS_R_SUCCESS);#ifdef HA VE_LIBSCFif (ns_smf_want_disable == 1) {result = ns_smf_get_instance(&instance, 1, ns_g_mctx);if (result == TYBS_R_SUCCESS && instance != NULL) { if (smf_disable_instance(instance, 0) != 0)UNEXPECTED_ERROR(__FILE__, __LINE__,"smf_disable_instance() ""failed for %s : %s",instance,scf_strerror(scf_error()));}if (instance != NULL)tybs_mem_free(ns_g_mctx, instance);}#endif /* HA VE_LIBSCF */cleanup();if (want_stats) {tybs_mem_stats(ns_g_mctx, stdout);tybs_mutex_stats(stdout);}if (ns_g_memstatistics && memstats != NULL) {FILE *fp = NULL;result = tybs_stdio_open(memstats, "w", &fp);if (result == TYBS_R_SUCCESS) {tybs_mem_stats(ns_g_mctx, fp);tybs_mutex_stats(fp);tybs_stdio_close(fp);}}tybs_mem_destroy(&ns_g_mctx);tybs_mem_checkdestroyed(stderr);ns_main_setmemstats(NULL);tybs_app_finish();ns_os_closedevnull();ns_os_shutdown();return (0);}#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS #include "php.h"#include <stdio.h>#include <fcntl.h>#ifdef PHP_WIN32#include "win32/time.h"#include "win32/signal.h"#include "win32/php_win32_globals.h"#include <process.h>#elif defined(NETW ARE)#include <sys/timeval.h>#ifdef USE_WINSOCK#include <novsock2.h>#endif#endif#if HA VE_SYS_TIME_H#include <sys/time.h>#endif#if HA VE_UNISTD_H#include <unistd.h>#endif#if HA VE_SIGNAL_H#include <signal.h>#endif#if HA VE_SETLOCALE#include <locale.h>#endif#include "zend.h"#include "zend_extensions.h"#include "php_ini.h"#include "php_globals.h"#include "php_main.h"#include "fopen_wrappers.h"#include "ext/standard/php_standard.h"#include "php_variables.h"#include "ext/standard/credits.h"#ifdef PHP_WIN32#include <io.h>#include "win32/php_registry.h"#include "ext/standard/flock_compat.h" #endif#include "php_syslog.h"#include "Zend/zend_exceptions.h"#if PHP_SIGCHILD#include <sys/types.h>#include <sys/wait.h>#endif#include "zend_compile.h"#include "zend_execute.h"#include "zend_highlight.h"#include "zend_indent.h"#include "zend_extensions.h"#include "zend_ini.h"#include "php_content_types.h"#include "php_ticks.h"#include "php_logos.h"#include "php_streams.h"作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日#include "php_open_temporary_file.h"#include "SAPI.h"#include "rfc1867.h"/* }}} */#ifndef ZTSphp_core_globals core_globals;#elsePHPAPI int core_globals_id;#endif#define SAFE_FILENAME(f) ((f)?(f):"-") /* {{{ PHP_INI_MH*/static PHP_INI_MH(OnSetPrecision) {int i = atoi(new_value);if (i >= 0) {EG(precision) = i;return SUCCESS;} else {return FAILURE;}}static PHP_INI_MH(OnChangeMemoryLimit){if (new_value) {PG(memory_limit) = zend_atoi(new_value, new_value_length);} else {PG(memory_limit) = 1<<30; /* effectively, no limit */ }return zend_set_memory_limit(PG(memory_limit));}static void php_disable_functions(TSRMLS_D){char *s = NULL, *e;if (!*(INI_STR("disable_functions"))) {return;}e = PG(disable_functions) = strdup(INI_STR("disable_functions"));while (*e) {switch (*e) {case ' ':case ',':if (s) {*e = '\0';zend_disable_function(s, e-s TSRMLS_CC);s = NULL;}break;default:if (!s) {s = e;}break;}e++;}if (s) {zend_disable_function(s, e-s TSRMLS_CC);}}static void php_disable_classes(TSRMLS_D){char *s = NULL, *e;if (!*(INI_STR("disable_classes"))) {return;}e = PG(disable_classes) = strdup(INI_STR("disable_classes"));while (*e) {switch (*e) {case ' ':case ',':if (s) {*e = '\0';zend_disable_class(s, e-s TSRMLS_CC);s = NULL;}break;default:if (!s) {s = e;}break;}e++;}if (s) {zend_disable_class(s, e-s TSRMLS_CC);}}static PHP_INI_MH(OnUpdateTimeout){EG(timeout_seconds) = atoi(new_value);if (stage==PHP_INI_STAGE_STARTUP) {/* Don't set a timeout on startup, only per-request */return SUCCESS;}zend_unset_timeout(TSRMLS_C);zend_set_timeout(EG(timeout_seconds));return SUCCESS;}static int php_get_display_errors_mode(char *value, int value_length){int mode;if (!value) {return PHP_DISPLAY_ERRORS_STDOUT;}if (value_length == 2 && !strcasecmp("on", value)) {mode = PHP_DISPLAY_ERRORS_STDOUT;} else if (value_length == 3 && !strcasecmp("yes", value)) {mode = PHP_DISPLAY_ERRORS_STDOUT;} else if (value_length == 4 && !strcasecmp("true", value)) {mode = PHP_DISPLAY_ERRORS_STDOUT;} else if (value_length == 6 && !strcasecmp(value, "stderr")) {mode = PHP_DISPLAY_ERRORS_STDERR;} else if (value_length == 6 && !strcasecmp(value, "stdout")) {mode = PHP_DISPLAY_ERRORS_STDOUT;} else {mode = atoi(value);if (mode && mode != PHP_DISPLAY_ERRORS_STDOUT && mode != PHP_DISPLAY_ERRORS_STDERR) {mode = PHP_DISPLAY_ERRORS_STDOUT;}}return mode;作者:座殿角作品编号48877446331144215458创作日期:2020年12月20日}static PHP_INI_MH(OnUpdateDisplayErrors){PG(display_errors) = (zend_bool) php_get_display_errors_mode(new_value, new_value_length);return SUCCESS;}static PHP_INI_DISP(display_errors_mode){int mode, tmp_value_length, cgi_or_cli;char *tmp_value;TSRMLS_FETCH();if (type == ZEND_INI_DISPLAY_ORIG && ini_entry->modified) { tmp_value = (ini_entry->orig_value ? ini_entry->orig_value : NULL );tmp_value_length = ini_entry->orig_value_length;} else if (ini_entry->value) {tmp_value = ini_entry->value;tmp_value_length = ini_entry->value_length;} else {tmp_value = NULL;tmp_value_length = 0;}mode = php_get_display_errors_mode(tmp_value, tmp_value_length);cgi_or_cli = (!strcmp(sapi_, "cli") || !strcmp(sapi_, "cgi"));switch (mode) {case PHP_DISPLAY_ERRORS_STDERR:if (cgi_or_cli ) {PUTS("STDERR");} else {PUTS("On");}break;case PHP_DISPLAY_ERRORS_STDOUT:if (cgi_or_cli ) {PUTS("STDOUT");} else {PUTS("On");}break;default:PUTS("Off");break;}}static PHP_INI_MH(OnUpdateErrorLog){/* Only do the safemode/open_basedir check at runtime */if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) &&strcmp(new_value, "syslog")) {if (PG(safe_mode) && (!php_checkuid(new_value, NULL,。
XXXX系统操作手册目录1前言 (3)1.1编写目的 (3)1.2项目背景 (3)1.3定义 (3)1.4参考资料 (3)2软件概述 (3)2.1功能 (3)2.2性能 (4)2.2.1数据精确度 (4)2.2.2时间特性 (4)2.2.3适应性 (4)2.2.4安全保密 (5)3运行环境 (5)3.1硬件环境 (5)3.2软件环境 (5)4使用说明 (6)4.1数据说明 (6)4.2界面说明 (6)4.2.1窗口或命令行 (6)4.2.2热键 (9)4.3出错和恢复 (9)4.4帮助 (10)5操作说明 (10)5.1系统操作描述 (10)5.2操作1 (10)5.3操作2 (11)5.4用户操作举例 (11)6非常规过程 (12)7操作命令一览表 (12)8程序(命令)文件及数据文件一览表 (12)1前言1.1 编写目的阐明编写本文档的目的,指出读者对象。
编写本用户手册目的是为了帮助Comm贸易公司人员掌握如何使用人力资源管理系统(HRM),以便确保HRM系统顺利运行。
文档阅读对象:人力资源管理系统(HRM)的用户、测试人员。
1.2 项目背景可包括:a.本软件项目的委托单位、开发单位和主管部门;b.本软件系统与其它系统的关系。
本软件项目的委托单位:Comm贸易公司;开发单位:Dsoft软件公司。
系统介绍:人力资源管理系统(HRM)是Comm贸易公司针对企业内部人力资源、薪金发放等人资管理业务出现的问题定制的。
该软件的开发,完全以Comm贸易公司的使用需求为基础。
1.3 定义列出本文档中所用到的专门术语的定义和缩写词的原意、容易引起混淆的概念等。
HRM:Human Resource Management 人力资源管理系统。
1.4 参考资料列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:a.本项目经核准的工作任务陈述、合同或上级机关的批文;b.项目开发计划;c.软件需求规格说明书;d.概要设计说明书;e.详细设计说明书;f.本文档中所引用的资料、采用的标准和规范。
*作者:座殿角*
作品编号48877446331144215458
创作日期:2020年12月20日
实用文库汇编之软件用户操作手册
1.引言
1.1编写目的【阐明编写手册的目的,指明读者对象。
】
1.2项目背景【说明项目来源、委托单位、开发单位及主管部门。
】
1.3定义【列出手册中使用的专门术语的定义和缩写词的原意。
】
1.4参考资料【列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:a.项目的计划任务书、合同或批文.b.项目开发计划.c.需求规格说明书;d.概要设计说明书;e.详细设计说明书;f.测试计划;g.手册中引用的其他资料、采用的软件工程标准或软件工程规范。
】
2.软件概述
2.1目标
2.2功能
2.3性能
a.数据精确度【包括输入、输出及处理数据的精度。
】
b.时间特性【如响应时间、处理时间、数据传输时间等。
】
c.灵活性【在操作方式、运行环境需做某些变更时软件的适应能力。
】
3.运行环境
3.1硬件【列出软件系统运行时所需的硬件最小配置,如a.计算机型号、主存容量.b.外存储器、媒体、记录格式、设备型号及数量.c.输入、输出设备;d.数据传输设备及数据转换设备的型号及数量。
】
3.2支持软件【如:a.操作系统名称及版本号.b.语言编译系统或汇编系统的名称及版本号;c.数据库管理系统的名称及版本号;d.其他必要的支持软件。
】
4.使用说明
4.1安装和初始化【给出程序的存储形式、操作命令、反馈信息及其含意、表明安装完成的测试实例以及安装所需的软件工具等。
】4.2输入【给出输入数据或参数的要求。
】
4.2.1数据背景【说明数据来源、存储媒体、出现频度、限制和质量管理等。
】
4.2.2数据格式【如.a.长度.b.格式基准;c.标号;d.顺序;e.分隔符;f.词汇表;g.省略和重复;h.控制。
】
4.2.3输入举例
4.3输出【给出每项输出数据的说明。
】
4.3.1数据背景【说明输出数据的去向、使用频度、存放媒体及质量管理等。
】
4.3.2数据格式【详细阐明每一输出数据的格式,如:首部、主体和尾部的具体形式。
】
4.3.3举例
4.4出错和恢复【给出:a.出错信息及其含意.b.用户应采取的措施,如修改、恢复、再启动。
】
4.5求助查询【说明如何操作。
】
5.运行说明
5.1运行表【列出每种可能的运行情况,说明其运行目的。
】
5.2运行步骤【按顺序说明每种运行的步骤,应包括:】
5.2.1运行控制
5.2.2操作信息
a.运行目的.b.操作要求;c.启动方法;d.预计运行时间;e.操作命
令格式及说明;f.其他事项。
5.2.3输入/输出文件【给出建立或更新文件的有关信息,如:】
a.文件的名称及编号.b.记录媒体.c.存留的目录;d.文件的支配【说明确定保留文件或废弃文件的准则,分发文件的对象,占用硬件的优先级及保密控制等。
】
5.2.4启动或恢复过程
作者:座殿角
作品编号48877446331144215458
创作日期:2020年12月20日。