资源描述
超市管理系统 设计者: 指导老师:1、 绪论1.1 超市销售系统概述超市销售系统是针对超级市场的销售而开发的。超市销售系统的使用,能转变超市的工作方式,有效提高销售速度和服务水平,提高客户对超市的信任度和满意度,改善客户关系。运用超市销售系统,在销售商品时实行出口一次性付款,做到快速准确。运用超市销售系统,超市内部实现现代化管理,能够准确把握每一种商品的销售动态,可以防止商品断档或过量储备,商品开发方向、进货的适时化都可通过超市销售系统来完成。超市销售系统将手工已编制好的销售账目或根据原始超市销售直接在系统内制作超市销售信息,同时可对输入的超市销售信息进行修改、查询等操作,这种集约化的销售管理模式便于超市销售信息的收集、整理和加工,又便于操作员的需求信息在最短的时间内得到反馈,同时超市销售系统可自动分析各种商品销售变化规律,商品销售结构、居民消费变化等,从而为合理进货、经营、加工、库存、销售等提供科学决策的依据。1.2应用背景最初的超市资料管理,都是靠人力来完成的。但近几年我国超市经营规模日趋扩大,销售额和门店数量大幅度增加,而且许多超市正在突破以食品为主的传统格局,向品种多样化发展。小型超市在业务上需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息,并对商品各种信息进行统计分析。因此,在超市管理中引进现代化的办公软件,实现超市庞大商品的控制和传输,从而方便销售行业的管理和决策,为超市和超市管理人员解除后顾之忧。1.3设计目标超市销售系统主要实现以下目标:1、信息管理功能:能够即时浏览、添加、删除、修改和查询员工、商品及供货商相关信息。2、日常工作管理:对超市的进货进行管理与登记。3、销售管理:包括客户结账、营业利润分析、销售查询和销售商品单,对整个超市的销售过程进行有效的分析与管理。4、更新信息:由于商品信息的即时性很强,要求所有商品可以随时被更新、添加或删除等。5、提高服务满意度。1.4 系统技术分析超市销售系统主要采用了Delphi技术和SQL Server 2000数据库,分别从Delphi技术的特点、应用范围,以及SQL Server 2000数据库的发展、特点和应用等方面进行简述,以明确开发系统所使用的技术有足够的可行性和明显的针对性,并能满足系统移植性能的要求。1.4.1 Delphi技术简介Delphi 7是著名的Borland(现Inprise)公司开发的快速、可视化程序开发工具。“真正的程序员用C+,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,但是在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC功能强大和VB简单易学的特点,它一直是程序员至爱的编程工具。Delphi具有以下几个特性:基于窗体和面向对象的方法、高速的编译器、强大的数据库支持、与Windows编程紧密结合、强大而成熟的组件技术。但最重要的还是Object Pascal语言,它才是一切的根本。Object Pascal语言是在Pascal语言的基础上发展起来的,简单易学2。1.4.2 SQL Server 2000技术简介超市销售系统的开发选择了Microsoft SQL Server2000数据库。SQL适用于中小型事物处理及客户端/服务端结构的应用系统,它功能强大操作简便,日益为广大数据库用户所喜爱,越来越多的开发工具提供了与SQL Server的接口。SQL Server最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本,在Windows NT 推出后,Microsoft与Sybase在SQL Server的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发、推广SQL Server 的Windows NT 版本3。SQL Server 2000是Microsoft公司推出的SQL Server数据库管理系统的最新版本,是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果。SQL Server 2000能够满足今天的商业环境要求不同类型的数据库解决方案,它是一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等4。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键,除这些核心企业品质外,SQL Server 2000还为您的数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好与相关软件集成程度高等优点。可跨越从运行Microsoft Windows 98的膝上型电脑到运行Microsoft Windows 2000的大型多处理器的服务器等多种平台使用。MSSQL Server不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。事实上,SQL Server数据库处理的基本结构,采取关系型数据库模式,尽管如此,相信大家都可以轻易的发现,在SQL Server的数据库处理方式,则是使用面向对象的操作方式与精神,也就是说,SQL Server的所有功能,都可以基于系统已经建立好的一些对象来达成,是相当OO(面向对象)的一个系统结构。SQL Server企业管理器是 SQL Server的主要管理工具,它提供了一个遵从 MMC 标准的用户界面,使用户得以:1、定义 SQL Server实例组。2、将个别服务器注册到组中。3、为每个已注册的服务器配置所有 SQL Server选项。4、在每个已注册的服务器中创建并管理所有 SQL Server数据库、对象、登录、用户和权限。5、在每个已注册的服务器上定义并执行所有 SQL Server管理任务。6、通过唤醒调用 SQL 查询分析器,交互地设计并测试SQL语句、批处理和脚本。它支持中小型数据库、多用户的高性能和事物处理,支持分布式数据库和分布处理,能够实现安全性和完整性控制,具有可移植性、可兼容性和可联结性,它具有良好的数据管理能力和良好的开发性5。2、总体方案设计2.1 设计原理1、模块化模块是构成程序的基本构件,模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求。采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。该系统正是采用模块化的原理,将整个系统分成四个主要模块,每个模块都有它独立的功能,整个超市销售系统结构清晰,用户容易理解和操作。2、抽象当考虑对任何问题的模块化解法时,可以提出许多抽象的层次,系统设计过程的每一步都是对软件解法的抽象层次的一次精化,在可行性研究阶段,是对整个超市销售系统的抽象,在需求分析阶段,是对超市销售系统功能的抽象。3、逐步求精逐步求精是对整个设计过程的细化,由可行性研究到需求分析,再到总体设计和详细设计,每一步都对超市销售系统进行了细化,这样使超市销售系统的结构越来越清晰,功能越来越完善。4、信息隐藏和局部化在超市销售系统的设计过程中,涉及到许多数据信息,有的信息对于不需要它的模块来说是不能访问的,需要隐藏起来,而局部化有助于实现信息隐藏,该系统正是运用了这一原理来进行设计的。5、模块独立该系统的各个模块之间没有过多的相互作用,每个模块的功能都比较独立,这样的软件容易开发出来。系统的各模块都相对独立,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够插入模块,这样系统比较容易测试和维护。2.2 功能模块设计模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干个模块的过程。每个模块完成一个特定的功能,所有的模块都按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。根据前面在可行性分析时对系统提出的要求以及在需求分析阶段提出的系统功能需求,将系统结构分成四个模块:基本信息管理模块、日常工作管理模块、销售管理模块、统计报表模块,每个模块的具体功能如下:1、信息管理模块:实现对员工、商品、供货商、会员等基本信息管理的功能,让管理层对整个超市的人事及商品有详细的了解,这个模块包括“员工管理”、“商品管理”、“供货商管理”三个功能模块。(1)员工信息管理,这个模块对超市的所有员工的信息进行登记管理,包括添加、修改、删除、查询操作。(2)商品信息管理和供货商信息管理,这两个模块功能同员工信息管理模块。2、日常工作管理:实现对整个超市的日常工作管理的功能,使整个超市的工作井然有序,这个模块包括 “进货管理”一个功能模块。 (1)进货管理,这个模块对超市所购进的商品进行登记。3、销售管理模块:是系统最主要的模块,对商品的销售进行一条龙管理,能够对每日商品销售信息进行输入、查询、统计等操作。这个模块包括 “营业利润分析”、“客户结账”、“销售查询”三个模块。 (1)营业利润分析,这个模块通过对商品销售的分析,得出各种商品的所得利润及整个超市公司的收益。同时帮助超市经营者掌握和分析营销情况,及时做出正确决策。(2)客户结账,超市在销售商品时,对客户所购买商品的信息进行登记,并结算客户销售金额。(3)销售查询,这个模块实现对销售商品、销售金额等的查询功能。功能模块如图4.1所示。图4.1超市销售系统功能模块图2.3 数据库设计数据库是信息管理的基础,其结构直接关系到各种功能的实现和程序运行的效率,进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)11。根据上一章的需求分析,建立了一个数据库名为:超市管理系统的数据库,其中有六个数据表。员工信息表:此表中记录了员工的所有信息,管理员通过此表对员工进行添加、删除、修改管理,也可通过此表查询某个员工的信息,此表的主键为“员工编号”。其结构如表4.1所示。表4.1员工信息表的结构字段名数值类型(长度)是否允许为空员工编号Char(10)否员工姓名char(10)否性别char(2)否身份证号Char(18)否家庭住址Varchar(30)否联系电话char(20)否职务Varchar(10)否商品信息表:此表记录了超市的所有商品信息,管理人员可以通过此表对商品进行添加、删除、修改等操作,在进货管理、客户结账过程中,都涉及到对此表的操作,此表的主键是商品编号。其结构如表4.2所示。表4.2商品信息表的结构字段名数值类型(长度)是否允许为空商品编号Char(20)否商品名称Char(20)否商品类型Char(10)否供货商编号Char(20)否进价Char(10)否售价Char(10)否备注Char (16)是入库信息表:此表主要记录进货商品的相关信息,以方便以后管理员查看进货信息,此表的主键是RK_ID。其结构如表4.4所示。表4.4入库信息表的结构字段名数值类型(长度)是否允许为空进货单号Char(20)否商品编号Char(20)否供货商名称Char(30)否进货数量Char(10)否进价Char(10)否进货时间Char(20)否经手人Char(10)否销售信息表:此表记录了超市所有商品销售记录,营业利润分析通过此表进行分析统计,销售详细单也是通过此表打印的。其结构如表4.5所示。表4.5销售信息表的结构字段名数值类型(长度)是否允许为空流水账号Char(20)否商品编号Char(20)否商品名称Char(30)否单价Char(10)否数量Char(10)否总价Char(19)否销售日期Char(10)否收银员Char(10)否供货商信息表:此表记录了所有供货商的基本信息,其结构如表4.6所示。表4.6供货商信息表的结构字段名数值类型(长度)是否允许为空供货商编号Char(10)否供货商名称Char(30)否联系人Char(10)否联系电话Char(20)否联系地址Char(30)否备注Char(250)是用户登录表:此表主要记录了员工的密码信息,可进行相关查询,修改。此表的主键是用户编号。其结构如表4.8所示。表4.8 会员充值记录表的结构字段名数值类型(长度)是否允许为空员工编号Char(20)否密码Char(10)是职务Varchar(10)是2.4 小结这一部分主要是对超市销售系统进行总体设计,得出设计此系统的原理以及功能模块,设计出此系统的数据库,为下面进行系统详细设计奠定基础。3、系统详细设计与实现通过前部分的分析与设计,接下来进行系统的详细设计,详细设计的根本目标是确定应该怎样具体地实现所要求的系统,主要任务是设计出程序的“蓝图”,再根据这个蓝图写出实际的程序代码。3.1 系统窗口的设计与实现进入系统,首先会出现系统窗口,分别有“系统介绍”,“用户登录”,“关于我们”,“退出系统”的功能键指导用户使用本系统。窗体上的组件位置如图3.1所示。 图3.1系统窗体设计界面3.2 登录窗体的设计与实现为了提高系统的安全性,在超市销售系统的登录界面设置用户以及密码。用户登录窗体很简单,首先在用户输入框输入用户身份,再输入用户名,然后对应输入口令,程序将与用户数据库连接,确认用户是其中一员,并输入了正确的口令,然后进入主界面,否则警告出错,让用户重新输入。窗体上的组件位置如图3.2所示 图3.2登录窗体设计界面登录的关键代码如下:ADOQuery1.SQL.Text := select * from 用户登录表 where 员工编号=+QuotedStr(Edit1.Text);(Trim(ADOQuery1.FieldByName(职务).AsVariant)=老板)Trim(ADOQuery1.FieldByName(用户名).AsVariant)=Trim(edit2.Text)Trim(ADOQuery1.FieldByName(职务). AsVariant)=Trim(edit3.Text)3.3 主窗体模块的设计与实现主窗体模块主要是完成系统功能模块的划分。超市销售系统主窗体包括四个下拉菜单:基本信息管理菜单、日常工作管理菜单、销售管理菜单、统计表菜单,考虑到有些功能是经常使用的,另外在窗体上设置了快捷按钮,以便操作更快捷。在设置该窗体时主要是设置MainMeun组件的属性。双击MainMeun组件,建立如下的下拉选单:基本信息管理日常工作管理销售管理密码管理密码信息修改密码客户结账营业利润分析销售查询进货管理员工管理商品管理供货商管理3.4 基本信息管理模块的设计与实现基本信息管理模块实现了对员工、供货商、商品信息的添加、修改、删除、查询等功能。该模块窗体上的组件位置如图3.4所示图3.4基本信息窗体设计界面设置PageControl组件的属性:右击此组件,在弹出的菜单中选择NewPage,将其 Caption属性设置成“员工信息”,相同的方法添加“商品信息”、“供货商信息”、“商品信息”三个页面;设置DataSource组件的属性:DataSource1设置DataSetADOQuery1,DataSource2设置DataSetADOQuery1,DataSource3设置DataSetADOQuery1 ;设置DBGrid组件的属性:DBGrid1设置DataSourceDataSource1, DBGrid2设置DataSourceDataSource2, DBGrid3设置DataSourceDataSource3其中员工管理的主要代码如下:1、 查询按钮的主要代码如下:ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:=select * from 员工信息表 where +SQL; ADOQuery1.Open; 2、添加的主要代码如下:ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(insert into 员工信息表); ADOQuery1.SQL.Add(员工编号,姓名,性别,身份证号,家庭住址,联系电话,职务); ADOQuery1.SQL.Add(values(+QuotedStr(Edit1.Text)+,+QuotedStr(Edit2.Text)+,+QuotedStr(ComboBox1.Text)+,+QuotedStr(Edit3.Text)+,+QuotedStr(Edit4.Text)+,+QuotedStr(Edit5.Text)+,+QuotedStr(Edit6.Text)+ ); ADOQuery1.ExecSQL;3.添加的主要代码如下: ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:=delete from 员工信息表 where +SQL; ADOQuery1.ExecSQL; ADOQuery1.Close;3.5 日常工作管理模块的设计与实现进货管理的功能主要是将购进的商品进行入库。在入库时由工作人员将商品信息输入到入库信息表中,然后系统将入库的商品的名称与库存里的商品信息比较,如果能找到相同的名称,则说明库存里有这种商品,只要相应增加这种商品的库存量,如果找不到,则说明原来库存里没有这种商品,则要增加这种商品的一系列信息。进货的信息会显示在窗体上的数据表中。进货窗体如图3.5所示。图5.3进货管理窗体主要代码如下:(1)、进货主要代码ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add(insert into 进货信息表); ADOQuery2.SQL.Add(进货单号,商品编号,商品名称,供货商名称,进货数量,进价,进货时间,经手人); ADOQuery2.SQL.Add(values(:JH_ID,+QuotedStr(Edit1.Text)+ ,+QuotedStr(Edit2.Text)+ ,+QuotedStr(Edit3.Text)+ ,+QuotedStr(Edit4.Text)+ ,+QuotedStr(Edit5.Text)+ ,:Time,+QuotedStr(ComboBox1.Text)+ ); ADOQuery2.Parameters.ParamByName(JH_ID).Value:=formatdatetime(yyyyMMdd,Date)+formatdatetime(hhmmss,now(); ADOQuery2.Parameters.ParamByName(Time).Value:=FormatdateTime(ddddd,now); ADOQuery2.ExecSQL; ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add(select * from 进货信息表); ADOQuery2.Open; showmessage(入库成功!);ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Text:=select * from 进货信息表 where +SQL; ADOQuery2.Open;(2)、向combobox组件中自动添加表中内容的代码如下(以向combobox4中添加自动添加商品的名称为例):ADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add(select * from 员工信息表 where 职务=进货员);ADOQuery1.Open;ComboBox1.Clear;for i:=0 to ADOQuery1.RecordCount-1 dobegin combobox1.Items.Add(ADOQuery1.FieldByName(姓名).AsString); ADOQuery1.Next;end;3.6 销售管理模块的设计与实现销售管理模块是超市销售系统的最主要也是最重要的模块,所有与销售有关的功能都在此模块当中,此模块所产生的数据也是数据库中数量最大的最重要的数据。此模块主要包括四个子模块:客户结账模块、利润分析模块、销售查询模块。3.6.1 客户结账模块的设计与实现客户结账模块是顾客在购买商品时,由收银员将顾客购买的商品名称输入到销售窗口中,系统自动根据商品名称把这种商品的相应商品价格和应付金额反馈到数据窗口中,客户交钱后自动计算找零金额。其窗体如图3.6所示图3.6客户结账窗体其中关键代码如下:1、 计算销售金额的关键代码: Pay_M:=0;for i:=0 to j dobegin Pay_M:=Pay_M+Alli;end;Edit3.Text:=Floattostr(Pay_M);change:=strtofloat(Edit4.Text)-Pay_M;Edit5.Text:=Floattostr(change);2、往销售表中添加客户此次销售的信息的关键代码:ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add(insert into 销售信息表); ADOQuery2.SQL.Add(流水账号,商品编号,商品名称,单价,数量,总计,时间,收银员); ADOQuery2.SQL.Add(values(:sale_ID,+QuotedStr(Edit1.Text)+,:C_Name,:S_P,+QuotedStr(Edit2.Text)+,:Total,:Time,+QuotedStr(ComboBox1.Text)+ ); ADOQuery2.Parameters.ParamByName(sale_ID).Value:=Sale_ID;ADOQuery2.Parameters.ParamByName(C_Name).Value:=ADOQuery1.FieldByName(商品名称).AsString ;ADOQuery2.Parameters.ParamByName(S_P).Value:=ADOQuery1.FieldByName(售价).AsString ;ADOQuery2.Parameters.ParamByName(Total).Value:=Floattostr(strtofloat(ADOQuery1.FieldByName(售价).AsString)*strtofloat(Edit2.Text) ;ADOQuery2.Parameters.ParamByName(Time).Value:=FormatdateTime(ddddd,now); ADOQuery2.ExecSQL;3.6.2 利润分析的设计与实现利润分析模块主要是对超市的收入进行统计与分析,根据四个不同的分析条件,得出相应条件下销售商品的数量、销售商品的总成本、销售商品的总收入和利润收入。其中销售商品的数量则是将不同条件下的每次销售商品的数量相加,总成本是不同条件下的每次销售商品的进价总和,总收入是不同条件下的每次销售商品的售价总和,利润则是将不同条件下的总收入减去总成本。利润分析窗体如图3.7所示。1、按日统计的关键代码:SQL:=ComboBox1.Text+-+ComboBox2.Text+-+ComboBox3.Text; SQL:=时间=+Quotedstr(SQL);2、按月统计的关键代码:SQL:= ComboBox4.Text+-+ComboBox5.Text+-+%; SQL:=时间 like +Quotedstr(SQL);图3.7营业利润分析窗体3、按季度统计的关键代码:begin if Trim(ComboBox7.Text)=第一季度 then begin SQL:=时间 like +Quotedstr(ComboBox6.Text+-+1+-+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+2+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+3+%); end; if Trim(ComboBox7.Text)=第二季度 then begin SQL:=时间 like +Quotedstr(ComboBox6.Text+-+4+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+5+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+6+%); end; if Trim(ComboBox7.Text)=第三季度 then begin SQL:=时间 like +Quotedstr(ComboBox6.Text+-+7+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+8+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+9+%); end; if Trim(ComboBox7.Text)=第四季度 then begin SQL:=时间 like +Quotedstr(ComboBox6.Text+-+10+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+11+%); SQL:=SQL+ or +时间 like +Quotedstr(ComboBox6.Text+-+12+%); end;4、按指定日期区间统计的关键代码:begin Time1:=ComboBox8.Text+-+ComboBox9.Text+-+ComboBox10.Text; Time2:=ComboBox11.Text+-+ComboBox12.Text+-+ComboBox13.Text; SQL:=时间 between+Quotedstr(Time1)+ and +Quotedstr(Time2);end;3.6.3 销售查询的设计与实现销售查询模块是实现管理对超市所销售出去的商品的查询功能,根据不同的查询条件,在数据表格中会显示相应的查询结果。其窗体如图3.8所示。图3.8销售查询窗体该模块的主要代码如下:ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:=select * from 销售信息表 where +SQL; ADOQuery1.Open;3.7 密码管理模块 密码管理模块主要实现对员工登录系统进行管理,使管理员有查看,查询,添加的权利,而普通工作人员只能修改自己的密码。其窗体如图3.9所示。图3.9销售查询窗体该模块的主要代码如下:ADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add(insert into 用户登录表);ADOQuery1.SQL.Add(员工编号,密码,职务);ADOQuery1.SQL.Add(values(:a,+QuotedStr(Edit5.Text)+,+QuotedStr(Duty)+);ADOQuery1.Parameters.ParamByName(a).Value:=Staff_ID;ADOQuery1.ExecSQL;showmessage(修改成功!);end;if (M=0) thenbegin showmessage(原密码输入错误!); Edit4.Clear;end;if J=0 thenbegin showmessage(两次输入密码不一致!); Edit5.Clear; Edit6.Clear;4、结束语 经过这段时间对delphi和SQL的研习,我基本掌握其使用方法,能够独立自主的编程。对于一些较为常见的问题能够通过某些途径去解决。总之自己的能力有明显的提高。但由于时间有限,离实际使用也还有一定的距离,需要以后进行不断地补充和完善。5、参考文献1田原,官东,李素若,李文波Delphi7.0程序设计北京:清华大学出版社,2005:90,105-119,337.2 李钟尉,吕双Delphi开发技术宝典人民邮电出版社,2009-2-1. 3 闪四清 SQL Server 2000系统管理指南北京:清华大学出版社,2001:300-309.20
展开阅读全文