商品材料分类库存管理系统设计报告_第1页
商品材料分类库存管理系统设计报告_第2页
商品材料分类库存管理系统设计报告_第3页
商品材料分类库存管理系统设计报告_第4页
商品材料分类库存管理系统设计报告_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE PAGE IXX大学财务管理信息系统课程设计 商品材料分类库存管理系统系统设计报告/说明书学院:年级:2009级专业:学号:姓名:提交日期:目录 TOC o 2-2 h z t 标题 1,1,标题 3,3 HYPERLINK l _Toc151531578 1引言 PAGEREF _Toc151531578 h 1 HYPERLINK l _Toc151531579 1.1编写目的 PAGEREF _Toc151531579 h 1 HYPERLINK l _Toc151531580 1.2项目背景 PAGEREF _Toc151531580 h 1 HYPERLINK l _Toc

2、151531581 1.3开发条件及约束 PAGEREF _Toc151531581 h 2 HYPERLINK l _Toc151531582 1.4术语定义 PAGEREF _Toc151531582 h 3 HYPERLINK l _Toc151531583 1.5参考资料 PAGEREF _Toc151531583 h 3 HYPERLINK l _Toc151531584 2系统总体技术方案 PAGEREF _Toc151531584 h 4 HYPERLINK l _Toc151531585 2.1模块设计 PAGEREF _Toc151531585 h 42.2输入设计 82.3

3、输出设计 92.4数据库设计 92.5网络设计 142.6安全保密设计 14 2.7实施方案说明 15PAGE 17PAGE 291引言1.1编写目的软件系统设计是把软件需求变换成为软件的具体设计方案,即模块结构的过程。一般分为总体设计和详细设计两个阶段。总体设计阶段根据软件需求分析所得到的数据流程或数据结构,使用结构化设计技术,导出软件的模块结构;详细设计阶段是给出软件模块的内部过程描述,即模块内部的算法设计。该文档直接给软件开发人员来看。本系统提供了更优化的材料分类及检索方法,能够快速查阅某种材料的属性、成分及用途,在原检索软件的基础上更进一步,提高效率与精度。预期读者为库存管理人员、材料

4、采购人员、生产管理人员等。1.2项目背景材料分类及优化检索管理系统是一个企事业单位不可缺少的部分。随着企业的规模不断扩大,材料的流通数量会大幅度增加,材料库存量也会扩大,库存人员的工作量会很大,此时就需要材料分类及优化检索管理系统来提高员工的效率。通过管理系统,可以做到信息的规范管理,科学统计和快速查询,从而减少管理和检索的工作量,更加方便快捷。材料种类繁多,检索复杂,对研究人员或企业来说是一项繁琐复杂的工作,在需要某种材料或材料特性时,往往靠手工方式来处理,极大的浪费了人力,故开发一套适合材料分类及优化检索管理的信息系统是非常具有现实意义的事情,提高工作效率,推动社会生产力的发展。通过该系统

5、实现材料从种类到到性能的一系列检索,可以实现材料类别的任意增加、修改、删除等工作,实现对材料的录入、输出清单及材料信息的修改,以及据用户或者管理员的条件设置和要求,列出材料的库存清单。项目名称:材料分类及优化检索管理系统;项目产品名称:材料分类及优化检索管理系统;项目组织者:材料分类及优化检索管理系统开发小组;产品用户: 企事业单位和研发组织;产品设计者:材料分类及优化检索管理系统开发小组;产品生产者:材料分类及优化检索管理系统开发小组;产品所有权:材料分类及优化检索管理系统开发小组拥有。1.3开发条件及约束1.3.1开发环境本文设计的分类及优化检索系统主要采用数据库技术和.NET技术,数据库

6、技术能够实现对数据的组织和管理,.NET技术可以开发应用软件,实现数据库和应用软件程序的共享。(1)编程环境的选择.NET是运行和生产下一代XMLWebServiCeS和应用程序的WindowS的内部组件,主要能够实现以下目标功能:将版本控制和软件部署冲突降低到最小化的一个代码执行环境提供给用户;为确保使用.NET开发的代码和其它代码的统一融合,通常按照工业标准来生产全部的通信;提供给用户一个能够在面对不同类型的应用程序时执行环境保持一致的应用环境;提供给用户的代码执行环境应该能提高代码执行的安全性;提供给用户的编程环境是一个统一的面向对象的环境,无论用户将对象代码在本地执行还是存储还是在本地

7、执行但程序分布在互联网上还是远程执行;提供给用户的代码执行环境应该可消除解释环境或者脚本环境等性能的问题.NET类库和公共语言运行库是.NETFramework的两个主要组件,其中公共语言运行库是.NET的基础。是一个管理代码的代理,提供线程管理、远程管理和内存管理等核心服务,还实施了更加严格的可提高程序安全性、类型安全以及可靠性等代码的正确性。运行库的基本原则是代码管理的概念,托管代码都是以运行库为目标的代码,而类库是一个面向对象的,一个综合性的可重用类型集合,是.NET的一个主要组件,可以使用类库开发包括图形用户界面或者包含传统命令行的应用程序,还能开发最新创新的应用程序。故而,实现本系统

8、,.NET是一个相对较好的选择。(2)关系型数据库的实现对于传统数据库存取数据,在开发时,需要各厂商所提供的应用程序来卡发其系统。如果要更换数据库,编程人员需重新熟悉另外一套应用程序,造成编程人员的负担。Microsoft Access是Microsoft公司推出的小型数据库管理系统,是目前广为使用的数据库系统之一。它具有保持数据结构单一型,易学易用,规模小,统一的语法结构和多种使用方法等特点,并且语言简洁,可以使设计的数据库一目了然,同时还可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能,是实现系统数据库的较好选择。(3)运行环境软件基本运行环境为Windows环境,只要是P

9、C机,配备Access数据库系统就可以运行。随着后期系统的完善,逐步需要网络环境的支持。1.3.2条件与限制为了评价设计阶段的设计结果的“优劣程度”,必须遵循以下几个准则:(1)软件设计应当表现出层次结构,应巧妙地利用各个软件部件之间的控制关系。(2)设计应当是模块化的,即该软件应当从逻辑上被划分成多个部件,分别实现各种特定功能和子功能。(3)设计最终应当给出具体的模块(例如子程序或过程),这些模块就具有独立的功能特性。(4)应当应用在软件需求分析期间得到的信息,采取循环反复的方法来获得设计结果。1.4术语定义人员维护:可以注册用户、管理员可对用户的信息进行修改、删除、查看会员的权限以及修改用

10、户权限。材料类别管理:可以实现材料类别的任意增加、修改、删除等工作。材料操作:实现对材料的录入、输出清单及材料信息的修改,以及生成清单、打印清单。材料维护:管理员可以查看所有商品信息,对其进行更新、删除。1.5参考资料1.王晓东.计算机算法设计与分析电子工业出版社,2003年12月2.江义华.Java完美经典中国铁道出版社,2004年3月3.张海藩.软件工程导论(第四版)清华大学出版社,2003年12月4.王克宏.JavaZ程序设计【M】清华大学出版社,2000年9月2系统总体技术方案 系统的总体任务是实现材料分类检索的系统化,规范化和自动化。2.1模块设计2.1.1系统功能概述人员维护:可以

11、注册用户、管理员可对用户的信息进行修改、删除、查看会员的权限以及修改用户权限。材料类别管理:可以实现材料类别的任意增加、修改、删除等工作。材料操作:实现对材料的录入、输出清单及材料信息的修改,以及生成清单、打印清单。材料维护:管理员可以查看所有商品信息,对其进行更新、删除。2.1.2系统功能模块图本系统分人员维护、类别维护、材料操作、材料维护四大模块,这些模块下还有子模块,具体结构如下图所示: 功能模块表2.1.3系统流程图开始用户登录 密码多次错误退出程序系统主界面材料类别维护管理开始用户登录 密码多次错误退出程序系统主界面材料类别维护管理材料维护管理人员维护管理材料操作管理系统总体流程图(

12、2)详细流程图材料类别管理用如下图:2)材料录入管理用例如下图3)材料输出用例如下图2.1.4后台管理本系统的后台管理功能用下表表示:2.2输入设计输入设计的目的是保证向系统输入正确的数据。在此前提下,应做到输入方法简单,迅速,经济,方便。所以,因该遵循最小量原则,也就是保证满足处理要求的前提下,使输入量最小,这样出错几率小;简单性原则,输入的准备,输入的过程应尽量容易,以减少错误发生。早检验原则,对数据的检验尽量接近原数据发生点,使错误能及时得到改正;少转换原则,输入数据尽量用其处理所需形式记录,以避免数据转换介质时发生错误。本系统的输入设计主要是采用人工录入和及时校验的方式,同时提供数据导

13、入功能,通过提供各种信息的登录界面,一方面可以简化输入信息量,另一方面可以减少信息输入错误,关于信息校对可以采用以下方法进行:重复校验(多次输入,对输入结果进行匹配,比如,设置密码),视觉校验(人工进行)数据类型校验(不匹配的或不存在的提示输入错误)界限校验(超过界限范围的报错)逻辑校验(如属性上的输入)2.3输出设计输出内容主要是系统给出满足用户需求的处理结果,其中包括材料供给信息、材料库存信息、材料结算信息等; 输出设备,我们拟定采用标准输出设备,即屏幕显示,以及打印机,后者主要是满足用户的离线信息处理需求,以文本形式体现;输出格式采用类似报表的形式输出,分表头,表体和表尾。报表的输出,可

14、以根据用户的需求采用不同形式。对于单个用户一次性使用的表格,因为没有保留价值,可以在显示终端上输出。对于个用户需要多次使用的表格,可打印输出。需要长期保留的输出的报表,可采用磁盘文件形式输出,以便保存。2.4数据库设计本数据与其他数据管理系统相比具有如下基本特点:2.4.1数据结构化在文件系统中,独立文件内部的数据一般是有结构的,但文件之间不存在联系,因此从数据的整体来说是没有结构的。数据库系统虽然也常常分成许多独立的数据文件,并且文件内部也具有完整的数据结构,但是它更注意同一数据库中各数据文件之间的相互联系,特别适应大量数据管理的客观需要。2.4.2数据共享共享是数据库系统的目的,也是它的重

15、要特点。一个数据库中的数据,不仅可以为同一企业或组织的内部各部门共享,还可以为不同组织、地区甚至不同国家的用户所共享。而在文件系统中,数据总是由特定用户专用的。2.4.3数据独立性在文件系统中,数据结构和应用程序是相互依赖的。任何一方的改变总是要影响另一方。在数据库系统中,这种相互依赖性是很小的,数据和程序具有相对的独立性。数据库的建立独立于程序,是通过模式来描述的。其结构如下图所示:从上图可以看出,数据库模式主要分为物理结构和逻辑结构两个方面。描述物理结构的称为物理数据库描述,它直接与操作系统或硬件相联系。一个数据库系统只有一个内模式。描述逻辑结构的称为模式,它是数据库数据的完整表示,是所有

16、用户的公共数据视图。一个数据库系统只有一个模式,它总是以某一种数据模型为基础,统一考虑所有用户的要求,并有机地综合成一个逻辑整体。下图表示了从现实世界到机器世界数据的转换过程。2.4.4设计目标制作一个简单的桌面数据库系统,不需要网络的支持,实现材料信息的录入、修改、分类和检索。2.4.5功能设计本系统主要实现材料分类信息的管理,具体保括:人员维护:可以注册用户、管理员可对用户的信息进行修改、删除、查看会员的权限以及修改用户权限。材料类别管理:可以实现材料类别的任意增加、修改、删除等工作。材料操作:实现对材料的录入、输出清单及材料信息的修改,以及生成清单、打印清单。材料维护:管理员可以查看所有

17、商品信息,对其进行更新、删除。此外要实现系统的集成化处理,利用切换面板管理器来实现。2.4.6需求性能规定由于本系统不涉及到网络环境,数据量本身并不是很大,因此,在性能上本身并没有太高的要求,只需要满足基本的需求就可以了,具体如下: (1)数据精确度 由于采用数据库技术并且用户的应用领域对数据精确度的要求不是太高,所以这点在系统中表现得比较少,但是用户数据的安全性与正确性是完全保证的,所以对用户的使用没有多大的障碍。 (2)时间特性 本系统的数据库较小,所以程序在响应时间,数据更新处理时间上性能是比较突出的。而且也正由于数据量相对较少,故在数据传输时间和系统运行时间上表现的较让人满意。 (3)

18、适应性 该软件是使用.NET在windows xp系统下完成的,所以只要是兼容windows的软件或是操作系统,该软件都可以正确地运行,有较好的适应能力与兼容性。2.4.7运行环境要求(设备、支撑软件等) 本系统对运行环境要求如下:数据库系统:Access操作系统:Windows 内存:128MCPU:P4硬盘:20G2.4.8逻辑设计方案我们整个程序只需一个数据库(db.dbf),库中有多张物理表。本系统采用的数据库为关系型数据库,故数据的组织和管理采用表格的形式,下面列出几个重要的表格,表的设计结构如下: 管理人员信息表 主键:管理员编号(Adminid 材料类别信息表主键:类别编号(lb

19、id) 材料信息表主键:材料编号(ProId)+所属类别(LBID),外键:类别编号(LBID) 材料文档管理主键:文档编号(PrId) 材料入库登记信息表主键:入库编号(Inid),外键:管理员号(AdminId) 材料出库信息表主键:出库编号(Outid),外键:管理员号(Adminld) 库存信息表主键:库存编号(Stockld),外键:商品编号(ProId) 材料与供应商关系表主键:材料编号(ProId)!供应商编号(supId) 供应商信息表主键:供应商编号:(ProId)2.4.9物理设计方案2.4.9物理设计方案整个系统的物理结构具体由数据库管理系统来设计与生成,比如数据表的创建

20、,程序模块之间的关系等,故此处略。 2.5网络设计网络设计对于网络环境下的管理信息系统非常重要,直接确定系统能否正常、高效运行。但由于本系统主要是单机版,最终形成的是一个桌面数据库系统。并且只是一个模拟系统,不涉及到网络环境,故此部分省略。2.6安全保密设计由于本系统是一个小型的模拟系统,因此,主要通过密码技术来确保系统的安全,系统的系统用户管理保证了只有授权的用户才能进入系统进行数据操作,而且对一些重要数据,系统设置为只有更高权限的人员方可读取或是操作。此外通过防火墙等安全技术来实现系统的安全保证。对于大型系统采取的安全措施相对要多很多,但目前基本上已经有比较成熟的安全保障体系,在具体设计时

21、,只需要根据需要选择相应的模块即可。2.7实施方案说明【即实施计划,说明具体的实施安排,给出各项工作(包括文件编制、用户培训等)的预定开始日期和完成日期,规定各项工作完成的先后次序及工作完成的标志,可以用或甘特图表示。经费预算需要逐项列出本开发项目实施需要的各项经费(包括办公费、差旅费、机时费、资料费、设备租金等)】2.7.1实施计划项目启动时间:2012-可行性研究报告(第周)项目开发计划系统分析报告/说明书:系统设计报告/说明书:整个过程中贯穿着数据库的学习和整个实践工作,开始验收工作。完成的最后期限为:2.7.2各项任务的先后次序文档类的内容按照2.7.1的顺序依次操作并完成。实践性质的

22、内容按照下面的顺序依次来实现,两项工作并行进行。(1)建立数据库表,并输入一定的数据,完成标志是形成一系列信息表(2)基于该表可以提供数据的更新功能,以及前一条,后一条,最前,最后功能,同时这些功能都要在表单的形式下进行,提供预期的功能模块,主要是通过窗体,宏和查询来实现,完成标志是形成一系列窗体,宏和查询,同时通过宏将窗体和查询联系起来,实现系统的自动化处理。(3)提供报表与统计生成功能,完成标志形成一系列报表。(4)做登录界面(5)添加菜单(6)其他完善工作,比如联调、使用说明需要注意的是,各个小组要将自己的具体内容放进去。2.7.3开发费用预算由于本系统是模拟系统,因此,此部分省略。此外

23、,需要审批实施方案,并将许审批意见及审批人员名单附于系统设计说明书之后,批准后,实施方案方可生效。虽然不是系统设计的内容,但仍然要作 为一个附件将其附加在系统设计说明书之后。附录资料:不需要的可以自行删除 perl函数应用一、进程处理函数1、进程启动函数函数名eval调用语法eval(string)解说将string看作Perl语句执行。正确执行后,系统变量$为空串,如果有错误,$中为错误信息。例子$print = print (hello,worldn);eval ($print);结果输出hello, world函数名system调用语法system(list)解说list中第一个元素为程

24、序名,其余为参数。system启动一个进程运行程序并等待其结束,程序结束后错误代码左移八位成为返回值。例子proglist = (echo, hello,world!);system(proglist);结果输出hello, world!函数名fork调用语法procid = fork();解说创建程序的两个拷贝-父进程和子进程-同时运行。子进程返回零,父进程返回非零值,此值为子程序的进程ID号。例子$retval = fork();if ($retval = 0) # this is the child process exit; # this terminates the child pr

25、ocess else # this is the parent process结果输出无函数名pipe调用语法pipe (infile, outfile);解说与fork合用,给父进程和子进程提供通信的方式。送到outfile文件变量的信息可以通过infile文件变量读取。步骤:1、调用pipe2、用fork将程序分成父进程和子进程3、一个进程关掉infile,另一个关掉outfile例子pipe (INPUT, OUTPUT);$retval = fork();if ($retval != 0) # this is the parent process close (INPUT); prin

26、t (Enter a line of input:n); $line = ; print OUTPUT ($line); else # this is the child process close (OUTPUT); $line = ; print ($line); exit (0);结果输出$programEnter a line of input:Here is a test lineHere is a test line$函数名exec调用语法exec (list);解说与system类似,区别是启动新进程前结束当前程序。常与fork合用,当fork分成两个进程后,子进程用exec启动

27、另一个程序。例子 结果输出函数名syscall调用语法syscall (list);解说调用系统函数,list第一个元素是系统调用名,其余为参数。如果参数是数字,就转化成C的整型数(type int)。否则传递字符串的指针。详见UNIX的帮助或Perl文档。使用syscall必须包含文件syscall.pl,即:require (syscall.ph); 例子结果输出2、进程终止函数函数名Die调用语法die (message);解说终止程序并向STDERR输出错误信息。message可以为字符串或列表。如果最后一个参数不包含换行符,则程序文件名和行号也被输出。例子die (Cannot op

28、en input file);结果输出Cannot open input file at myprog line 6.函数名warn调用语法warn (message);解说与die类似,区别是不终止程序。例子warn(Danger! Danger!n);结果输出Danger! Danger!函数名exit调用语法exit (retcode);解说终止程序并指定返回值。例子exit(2);结果输出无函数名kill调用语法kill (signal, proclist);解说给一组进程发送信号。signal是发送的数字信号,9为杀掉进程。proclist是进程ID列表。详见kill的UNIX帮助。

29、例子结果输出3、进程控制函数函数名sleep调用语法sleep (time);解说将程序暂停一段时间。time是停止的秒数。返回值为实际停止的秒数。例子sleep (5);结果输出无函数名wait调用语法procid = wait();解说暂停程序执行,等待子进程终止。不需要参数,返回值为子进程ID,如果没有子进程,返回-1。例子结果输出函数名waitpid调用语法waitpid (procid, waitflag);解说暂停程序执行,等待特定的子进程终止。procid为等待的进程ID例子$procid = fork();if ($procid = 0) # this is the child

30、 process print (this line is printed firstn); exit(0); else # this is the parent process waitpid ($procid, 0); print (this line is printed lastn);结果输出$ programthis line is printed firstthis line is printed last$4、其它控制函数函数名caller调用语法subinfo = caller();解说返回调用者的程序名和行号,用于Perl Debugger。返回值为三元素的列表:1、调用处的包

31、名2、调用者文件名3、调用处的行号例子结果输出函数名chroot调用语法chroot (dir);解说改变程序的根目录,详见chroot帮助。例子结果输出函数名local调用语法local($variable);解说在语句块(由大括号包围的语句集合)中定义局域变量,仅在此语句块中起作用,对其的改变不对块外同名变量造成影响。千万不要在循环中使用,否则每次循环都定义一个新的局域变量!例子结果输出函数名times调用语法timelist = times解说返回该程序及所有子进程消耗的工作时间。返回值为四个浮点数的列表:1、程序耗用的用户时间2、程序耗用的系统时间3、子进程耗用的用户时间4、子进程耗用

32、的系统时间例子结果输出二、数学函数函数名sin调用语法retval = sin (value);解说参数为弧度值。函数名cos调用语法retval = cos (value);解说参数为弧度值。函数名atan2调用语法retval = atan2 (value1, value2);解说运算并返回value1除以value2结果的arctan值,单位为弧度,范围在-PIPI。应用例:角度转化成弧度子程序。sub degrees_to_radians local ($degrees) = _; local ($radians);11: $radians = atan2(1,1) * $degree

33、s / 45;函数名sqrt调用语法retval = sqrt (value);解说平方根函数。value为非负数。函数名exp调用语法retval = exp (value);解说返回e的value次方。函数名log调用语法retval = log (value);解说以e为底的自然对数。函数名abs调用语法retval = abs (value);解说绝对值函数。(Perl 4中没有)函数名rand调用语法retval = rand (num);解说随机数函数,返回0和整数num之间的一个浮点数。函数名srand调用语法srand (value);解说初始化随机数生成器。保证每次调用ran

34、d真正随机。三、字符串处理函数函数名index调用语法position = index (string, substring, position);解说返回子串substring在字符串string中的位置,如果不存在则返回-1。参数position是可选项,表示匹配之前跳过的字符数,或者说从该位置开始匹配。函数名rindex调用语法position = rindex (string, substring, position);解说与index类似,区别是从右端匹配。函数名length调用语法num = length (string);解说返回字符串长度,或者说含有字符的数目。函数名pos调用

35、语法offset = pos(string);解说返回最后一次模式匹配的位置。函数名substr调用语法substr (expr, skipchars, length)解说抽取字符串(或表达式生成的字符串)expr中的子串,跳过skipchars个字符,或者说从位置skipchars开始抽取子串(第一个字符位置为0),子串长度为length,此参数可忽略,意味着取剩下的全部字符。当此函数出现在等式左边时,expr必须为变量或数组元素,此时其中部分子串被等式右边的值替换。函数名study调用语法study (scalar);解说用一种内部格式提高变量的访问速度,同一时刻只对一个变量起作用。函数名

36、lcuc调用语法retval = lc(string);retval = uc(string);解说将字符串全部转换成小/大写字母。函数名lcfirstucfirst调用语法retval = lcfirst(string);retval = ucfirst(string);解说将第一个字母转换成小/大写。函数名quotameta调用语法newstring = quotemeta(oldstring);解说将非单词的字母前面加上反斜线()。语句 : $string = quotemeta($string);等效于:$string = s/(W)/$1/g;常用于模式匹配操作中,确保字符串中没有字

37、符被看作匹配操作符。函数名join调用语法join (joinstr, list);解说把字符串列表(数组)组合成一个长的字符串,在每两个列表元素间插入串joinstr。函数名sprintf调用语法sprintf (string, fields);解说与printf类似,区别是结果不输出到文件,而作为返回值赋给变量。例子$num = 26;$outstr = sprintf(%d = %x hexadecimal or %o octaln,$num, $num, $num);print ($outstr);结果输出26 = 1a hexadecimal or 32 octal四、标量转换函数函

38、数名chop调用语法$lastchar = chop (var);解说var可为变量或数组,当var为变量时,最后一个字符被删除并赋给$lastchar,当var为数组/列表时,所有元素的最后一个字符被删除,最后一个元素的最后一个字母赋给$lastchar。函数名chomp调用语法result = chomp(var);解说检查字符串或字符串列表中元素的最后一个字符是否为由系统变量$/定义的行分隔符,如果是就删除。返回值为实际删除的字符个数。函数名crypt调用语法result = crypt (original, salt);解说用DES算法加密字符串,original是将要加密的字符串,s

39、alt是两个字符的字符串,定义如何改变DES算法,以使更难解码。返回值为加密后的串。函数名hex调用语法decnum = hex (hexnum);解说将十六进制数(字符串形式)转化为十进制数。函数名int调用语法intnum = int (floatnum);解说将浮点数舍去小数部分转化为整型数。函数名oct调用语法decnum = oct (octnum);解说将八进制数(字符串形式)或十六进制数(0 x.形式)转化为十进制数。函数名ord调用语法asciival = ord (char);解说返回单个字符的ASCII值,与PASCAL中同名函数类似。函数名chr调用语法$char = c

40、hr (asciival);解说返回ASCII值的相应字符,与PASCAL中同名函数类似。函数名pack调用语法formatstr = pack(packformat, list);解说把一个列表或数组以在实际机器存贮格式或C等编程语言使用的格式转化(包装)到一个简单变量中。参数packformat包含一个或多个格式字符,列表中每个元素对应一个,各格式字符间可用空格或tab隔开,因为pack忽略空格。除了格式a、A和外,重复使用一种格式多次可在其后加个整数,如: $twoints = pack (i2, 103, 241);把同一格式应用于所有的元素则加个*号,如: $manyints = p

41、ack (i*, 14, 26, 11, 83);对于a和A而言,其后的整数表示要创建的字符串长度,重复方法如下: $strings = pack (a6 x 2, test1, test2);格式的情况比较特殊,其后必须加个整数,该数表示字符串必须的长度,如果长度不够,则用空字符(null)补足,如: $output = pack (a 6 a, test, test2);pack函数最常见的用途是创建可与C程序交互的数据,例如C语言中字符串均以空字符(null)结尾,创建这样的数据可以这样做: $Cstring = pack (ax, $mystring);下表是一些格式字符与C中数据类型

42、的等价关系:字符 等价C数据类型CcharddoubleffloatiintIunsigned int (or unsigned)llongLunsigned longsshortSunsigned short完整的格式字符见下表。 格式字符 描述a用空字符(null)补足的字符串A用空格补足的字符串b位串,低位在前B位串,高位在前c带符号字符(通常-128127)C无符号字符(通常8位)d双精度浮点数f单精度浮点数h十六进制数串,低位在前H十六进制数串,高位在前i带符号整数I无符号整数l带符号长整数L无符号长整数n网络序短整数N网络序长整数p字符串指针s带符号短整数S无符号短整数u转化成uu

43、encode格式vVAX序短整数VVAX序长整数x一个空字节X回退一个字节以空字节(null)填充函数名unpack调用语法list = unpack (packformat, formatstr);解说unpack与pack功能相反,将以机器格式存贮的值转化成Perl中值的列表。其格式字符与pack基本相同(即上表),不同的有:A格式将机器格式字符串转化为Perl字符串并去掉尾部所有空格或空字符;x为跳过一个字节;为跳过一些字节到指定的位置,如4为跳过4个字节。下面看一个和X合同的例子: $longrightint = unpack (* X4 L, $packstring);此语句将最后四

44、个字节看作无符号长整数进行转化。下面看一个对uuencode文件解码的例子:1 : #!/usr/local/bin/perl2 : 3 : open (CODEDFILE, /u/janedoe/codefile) |4 : die (Cant open input file);5 : open (OUTFILE, outfile) |6 : die (Cant open output file);7 : while ($line = ) 8 : $decoded = unpack(u, $line);9 : print OUTFILE ($decoded);10: 11: close (O

45、UTFILE);12: close (CODEDFILE); 当将pack和unpack用于uuencode时,要记住,虽然它们与UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和末行,如果想用uudecode对由pack的输出创建的文件进行解码,必须也把首行和末行输出(详见UNIX中uuencode帮助)。函数名vec调用语法retval = vec (vector, index, bits);解说顾名思义,vec即矢量(vector)函数,它把简单变量vector的值看作多块(维)数据,每块含一定数目的位,合起来即一个矢量数据。每次的调用访问其中一块数据,可以读取

46、,也可以写入。参数index就象数组下标一样,提出访问哪一块,0为第一块,依次类推,要注意的是访问次序是从右到左的,即第一块在最右边。参数bits指定每块中的位数,可以为1,2,4,8,16或32。例子1 : #!/usr/local/bin/perl2 : 3 : $vector = pack (B*, 11010011);4 : $val1 = vec ($vector, 0, 4);5 : $val2 = vec ($vector, 1, 4);6 : print (high-to-low order values: $val1 and $val2n);7 : $vector = pac

47、k (b*, 11010011);8 : $val1 = vec ($vector, 0, 4);9 : $val2 = vec ($vector, 1, 4);10: print (low-to-high order values: $val1 and $val2n); 结果high-to-low order values: 3 and 13low-to-high order values: 11 and 12函数名defined调用语法retval = defined (expr);解说判断一个变量、数组或数组的一个元素是否已经被赋值。expr为变量名、数组名或一个数组元素。如果已定义,返

48、回真,否则返回假。函数名undef调用语法retval = undef (expr);解说取消变量、数组或数组元素甚至子程序的定义,回收其空间。返回值始终为未定义值,此值与空串等效。五、数组和列表函数函数名grep调用语法foundlist = grep (pattern, searchlist);解说与同名的UNIX查找工具类似,grep函数在列表中抽取与指定模式匹配的元素,参数pattern为欲查找的模式,返回值是匹配元素的列表。例子list = (This, is, a, test);foundlist = grep(/tT/, list);结果foundlist = (This, te

49、st);函数名splice调用语法retval = splice (array, slipelements, length, newlist);解说拼接函数可以向列表(数组)中间插入元素、删除子列表或替换子列表。参数skipelements是拼接前跳过的元素数目,length是被替换的元素数,newlist是将要拼接进来的列表。当newlist的长度大于length时,后面的元素自动后移,反之则向前缩进。因此,当length=0时,就相当于向列表中插入元素,而形如语句splice (array, -1, 0, Hello);则向数组末尾添加元素。而当newlist为空时就相当于删除子列表,这时,如果length为空,就从第skipelements个元素后全部删除,而删除最后一个元素则为:splice (array, -1);这种情况下,返回值为被删去的元素列表。函数名shift调用语法element =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论