采购部门实习报告

昆明理工大学

实习报告

系统分析与设计实习

学    号:         200710901109          

姓    名:                        

年    级:         0  7                  

学    院:    管理与经济学院             

系    别:    信息管理系                 

专    业:    信息管理与信息系统         

实验日期:2010628 20##913 

报告日期:    20## 912           


一、前言

系统分析与设计实习,旨在综合应用已学专业知识和技能,解决与本专业相关的典型问题,学习和掌握一种面向对象的CASE工具,并应用于本实习的分析设计之中。另外,还要求掌握信息系统分析、设计的基本方法和过程,同时学习和掌握系统开发相关的技术文档的写作。

本次实习模拟的企业主要有营销部门、运营部门、物流部门和财务部门的制造业企业,该企业目前业务处理模式为全手工处理,信息收集、加工等处理得都比较缓慢,不利于企业的市场竞争,而且手工式的处理使得从编制原始凭证、记帐凭证到登帐、结帐、编制会计报表,要经过很多人的手工才能完成,增加了数据处理差错的可能性。一切信息都记录在会计凭证、帐簿、报表等媒介上,数据的保存缺乏安全性。除此之外,要查询一个数据,特别是收集某一汇总或加总数据时速度很慢。本次实习每个组员分别担任企业的不同部门,并完成不同部门的系统分析与设计工作。本实习采用企业沙盘模拟的方式,了解企业业务需求,从而得出系统需求,采用面向对象方法进行系统分析与设计,并给出系统实现。

通过本次实习,复习、领会、巩固和应用课堂上所学到的软件开发方法和知识,初步掌握系统分析、系统设计、系统实现的方法,特别是结构化分析、结构化设计、面向对象分析和面向对象设计。通过参与小组团队的开发实践,为毕业后适应团队合作开发模式打下基础,了解项目管理、团队合作、文档编写、口头与书面表达能力,创造能力和与其他组员交往与协作开发软件的能力,提高今后开发稍大规模实际软件项目和探索未知领域的能力和信心。

二、采购部门需求分析

(一)、采购部门工作职责

1、采购计划的编制

负责根据生产、总务、设备及检验等各部门物品需求计划,编制与之相配套的采购计划,并组织具体的实施,保证经营过程中的物资供应。

2、供应商谈判

3、签订采购合同

4、监控采购过程

5、到货验收

6、仓储管理

7、采购支付抉择

8、与财务部协调

9、与生产部协调

(二)、采购部工作流程

通过沙盘模拟实习,我了解到了采购部门工作流程的概况,采购部主要负责生产性物料的采购工作。依据运营部门下达的生产计划编制物料采购计划及库存报表,然后根据采购计划下采购订单,同时将订单转发到财务部。采购人员根据订单到供应商采购物资,在收到供应商的发货订单之后,将物资验收入库,更新原料库存量,并将验收单发到财务部,财务部根据单据付款给供应商。

(三)、业务数据

    采购部门主要使用到的数据有生产计划量、实际采购量、原材料种类和库存量等。

(四)、数据处理逻辑

1、采购部向生产部门获取生产计划,根据生产计划量和各种产品的原料组成计算需要采购的原材料数量。

2、制定采购订单,并登记订单上的原料种类和数量。

3、在收到供应商的发货清单之后,将采购清单与发货清单进行核对,如果无误,则更新库存量,然后将应付账款数额发给财务部。

(五)、使用Visio制作数据流程图

(六)、采购子系统数据流图设计

数据字典:

加工条目:

加工名:编制采购计划

编号:4.1

输入信息:生产信息、财务信息

输出信息:原料信息

加工逻辑:根据相应的订单信息和原料供应谈判并将原料采购入库

加工名:仓储控制

编号4.2

输入信息:生产信息、财务信息、原料信息

输出信息:原料库存信息、产品库存信息

加工逻辑:根据生产信息输入和原料的入库,提供相应的库存信息

三、系统设计

(一)、目标

         实现仓库物资管理的基本功能,实现仓库物资管理所有流程的系统化,并且实现仓库数据的集中管理和维护,部分数据的统计和计算实现自动化,以节省大量的人力以及避免了由于人的失误而产生的错误。

         可以对仓库大部分相关数据进行处理,并对仓库管理需要实现的所有基本功能进行实现。实现快捷,方便,安全的管理仓库,并节省大量的枯燥反复的人工记录和统计数据的工作。

(二)、需求概述

主要实现的基本功能如下:

1. 订单信息的输入                        2. 财务信息的输入

3. 有关物资基本信息的输入。              4. 物资基本信息的查询与修改。

5. 入库物资信息的输入。                  6. 入库物资信息的查询与修改。

7. 出库物资信息的输入。                  8. 出库物资信息的查询与修改。

9. 物资余额信息的查询。                  10. 物资余额信息的浏览。

11.各种物资的按总余额的统计

(三)、处理流程

         总体流程图如下:

(四)、总体结构和模块外部设计

         为了实现安全管理,针对不同的权限的管理员有不同的视图,实现不同的功能。

         下面不同角色的视图对系统要实现的功能进行说明。

        

角色一:系统管理员用例图

注:用例人员信息维护是指对系统的各种管理员基本信息(包括权限)的管理。

         其中仓库信息维护的用例要实现的功能也包括此种信息的添加,删除,修改。和人员信息维护相似,则不再画这几个用例的子用例图了。

角色二:仓库管理员用例图

角色三:仓库采购员用例图

根据各个角色的用例图可以看出,针对不同的角色,具有不同的权限,所以可以执行的功能也不同。

(五)、外部接口

用户界面:

(六)、运行模块的组合

         对不同的用户有不同的视图,而且不同的用户可以选择的功能也很多,则对不同的用户只选取代表性的模块组合作为讲解。

         登陆信息错误时,只运行了登陆模块。

         系统管理员:

                   登陆成功不进行其他操作时,只运行登陆和物资信息维护模块;

                   登陆成功,并选择了除物资信息维护模块外的其他操作,如选择人员信息维护模块,     则运行了登陆模块,物资信息维护模块,人员信息维护模块;

                   登陆成功不进行其他操作时,只运行登陆和物资入库模块;

                   登陆成功,选择了除物资出库模块,则运行了登陆和物资入库模块,物资出库模块;

                   登陆成功后,选择了除物资出库模块和个人密码修改,则运行了登陆和物资入库模         块,物资出库模块,个人密码修改模块。

         仓库管理员:

                   登陆成功不进行其他操作时,只运行登陆和查看采购清单模块;

                   登陆成功后,选择了除查看采购清单外的个人密码修改模块,则运行了登陆和查看采购清单,个人密码修改模块。

(七)、类图

采购子系统的类图如下:

类图说明:

界面类:

SupplyGUI,是采购子系统界面类,下面有3个实体类构成:

1.、PurchasePlan 采购计划类

RawID   原料编号

Quantity  原料数量

PerCost   原料单价

Finished   是否完成

函数:

add() edit() del()query()分别为增、改、删、查找

2.、RawStock类

   RawID    原料编号

   Quantity   原料数量

   Cost    成本

函数:

    query()  add()  edit()  分别为查找、增加、改

getQuantity()    为得到指定原料的数量

pickRaw()      为取出原料

getCost()       为得到成本

3.、ProductStock类

ProductID    产成品编号

Quantity      产成品数量

函数:

query()  add()  sub()     为查找、增加、减少

getQuantity()  getCost()   为得到数量和成本

四、详细设计

(一)、数据库设计

通过对前面的数据流图等分析,我们可以得到数据库的初步结构,使用PowerDesigner设计数据库,并和其他部门建立表与表之间的数据关系。

生成数据库代码(部门表):

/*==============================================================*/

/* Table: Raw                                                   */

/*==============================================================*/

create table Raw (

   RawID                tinyint              not null,

   Quantity             smallint             not null,

   Cost                 float                not null,

   constraint PK_RAW primary key (RawID)

)

Go

 /*==============================================================*/

/* Table: PurchasePlan                                          */

/*==============================================================*/

create table PurchasePlan (

   RawID                tinyint              not null,

   Quantity             smallint             not null,

   Date                 tinyint              not null,

   PerCost              float                null,

   Finished             tinyint              not null

      constraint CKC_FINISHED_PURCHASE check (Finished in (0,1)),

   constraint PK_PURCHASEPLAN primary key (RawID)

)

Go

/*==============================================================*/

/* Table: ProducePlan                                           */

/*==============================================================*/

create table ProducePlan (

   ProductID            tinyint              not null,

   Quantity             smallint             not null,

   Finished             tinyint              not null

      constraint CKC_FINISHED_PRODUCEP check (Finished in (0,1)),

   constraint PK_PRODUCEPLAN primary key (ProductID)

)

go

/*==============================================================*/

/* Table: Product                                               */

/*==============================================================*/

create table Product (

   ProductID            tinyint              not null,

   Cost                 float                not null,

   Quantity             smallint             not null,

   RDfund               float                not null,

   Owned                tinyint              not null

      constraint CKC_OWNED_PRODUCT check (Owned in (1,0)),

   RawCompose           varchar(4)           null,

   constraint PK_PRODUCT primary key (ProductID)

)

go

采购部门的存储过程:产品更新

create procedure Qupdate3  as

declare  @id tinyint,@dtype tinyint,@isused tinyint ,@procycle tinyint,@owned tinyint

declare cur cursor for select ID,[Type],IsUsed,Procycle,Owned from ProLine

begin

    

    open cur

    fetch next from cur into @id,@dtype,@isused,@procycle,@owned

    while(@@fetch_status=0)

    begin

       

            if @owned=1

            begin

                 if @isused=1

                 begin

                        update ProLine set ProNow=ProNow+1 where ID=@id

                        if (select ProNow from ProLine where ID=@id)=@procycle

                        begin

                        update Product set Quantity=Quantity+1 where ProductID= (select ProductID from ProLine where ID=@id)

                        update ProLine set IsUsed=0 where ID=@id

                        update ProLine set ProNow=0 where ID=@id

                        end

                

                 end

               

            end

            else

            begin

                if @dtype=1 and (select [Value] from ProLine where ID=@id)>=5

                    update ProLine set Owned=1,[Value]=10000+[Value] where ID=@id

                else if @dtype=2 and (select [Value] from ProLine where ID=@id)>=8

                    update ProLine set Owned=1,[Value]=10000+[Value] where ID=@id

                else if @dtype=3 and (select [Value] from ProLine where ID=@id)>=16

                    update ProLine set Owned=1,[Value]=10000+[Value] where ID=@id

                else if @dtype=4 and (select [Value] from ProLine where ID=@id)>=24

                    update ProLine set Owned=1,[Value]=10000+[Value] where ID=@id

               

           

            end

    fetch next from cur into @id,@dtype,@isused,@procycle,@owned  

    end

    close cur

    deallocate cur

   

end

go

(二)、窗体实现

1、采用C++Builder实现主要功能,界面结构如下图:

2、采购管理界面的主要功能实现代码:

void __fastcall TFormApply::Button2Click(TObject *Sender)

{

   Table1->Edit(); //按钮修改实现编辑状态

}

//---------------------------------------------------------------------------

void __fastcall TFormApply::Button3Click(TObject *Sender)

{

        if(Table1->FieldByName("Finished")->AsInteger==1)  //如果未完成采购,不能删除

        {

                ShowMessage("已到货,不能删除");

        }else //如果已完成,则提示是否确认删除

        {

                int button;

                button=Application->MessageBox("你确定要删除吗?","删除数据",MB_OKCANCEL);

                if(button==IDOK)

                Table1->Delete();

        }  

}

//---------------------------------------------------------------------------

void __fastcall TFormApply::FormCreate(TObject *Sender)

{

   TQuery* pQuery3 = new TQuery(NULL); //在窗口创建时显示剩余先尽量

   pQuery3->DatabaseName = "dBase1";

   pQuery3->SQL->Add("select cash from Assets");

   pQuery3->Open();

   pQuery3->Last();

   float cash;

   cash = StrToInt(pQuery3->FieldByName("cash")->AsString);

   pQuery3->Close();

   Label4->Caption = cash;  

}

//---------------------------------------------------------------------------

void __fastcall TFormApply::Button6Click(TObject *Sender)

{

         if(Table1->FieldByName("Finished")->AsInteger==1)

        {

        }else//如果采购已经完成,则更新采购状态

        {

           if (Table1->State==dsEdit||Table1->State==dsInsert)

               Table1->Edit();

           Table1->FieldByName("Finished")->AsInteger = 1;

           if(Table1->FieldByName("Finished")->AsInteger==1)

           {

               TADOQuery* pQuery  = new TADOQuery(NULL);

               pQuery->Connection=DataModule1->ADOConnection1;

               pQuery->SQL->Add("update PurchasePlan set Finished = 1");

               pQuery->ExecSQL();

               delete pQuery;

           }

        }

   if (Table1->State==dsEdit||Table1->State==dsInsert) //更新剩余可用现金量

      Table1->Post();

   TQuery* pQuery3 = new TQuery(NULL);

   pQuery3->DatabaseName = "dBase1";

   pQuery3->SQL->Add("select cash from Assets");

   pQuery3->Open();

   pQuery3->Last();

   float cash;

   cash = StrToInt(pQuery3->FieldByName("cash")->AsString);

   pQuery3->Close();

   Label4->Caption = cash; 

}

//---------------------------------------------------------------------------

void __fastcall TFormApply::Table1BeforePost(TDataSet *DataSet)

{

//BDGrid中不允许空值

if(Table1->FieldByName("Quantity")->IsNull || Table1->FieldByName("Quantity")->AsFloat <= 0)

{

        ShowMessage("数量不能为空,且不能小于零");

        Abort();

}

if(Table1->FieldByName("RawID")->IsNull)

{

        ShowMessage("原料ID不能为空");

        Abort();

}

   //判断原料编号是否正确,并将相应的单价显示在单价行

   TADOQuery * pQuery2= new TADOQuery(NULL);

   pQuery2->Connection=DataModule1->ADOConnection1;

   pQuery2->SQL->Clear();

   String data2=Table1->FieldByName("RawID")->AsString;

   pQuery2->SQL->Add("select RawID from Raw where RawID="+data2);

   pQuery2->Open();

   if(pQuery2->IsEmpty())//如果该原料ID不存在,则提示

   {

      ShowMessage("没有这种原料");

      delete pQuery2;

      //Table1->Edit();

      //Table1->FieldByName("ProductID")->AsString="";

      Abort();

   }

   else

   {

      TADOQuery * pQuery= new TADOQuery(NULL);

      pQuery->Connection=DataModule1->ADOConnection1;

      pQuery->SQL->Clear();

      pQuery->SQL->Add("select Cost from Raw where RawID ="+data2);

      pQuery->Open();

      String price = pQuery->FieldByName("Cost")->AsString;

      Table1->FieldByName("PerCost")->AsString = price;

      delete pQuery;

   }

   //更新数量

   TADOQuery * pQuery3= new TADOQuery(NULL);

   pQuery3->Connection=DataModule1->ADOConnection1;

   pQuery3->SQL->Clear();

   float q1 = Table1->FieldByName("Quantity")->AsFloat;

   pQuery3->SQL->Add("select Quantity from Raw where RawID="+data2);

   pQuery3->Open();

   float q2 = pQuery3->FieldByName("Quantity")->AsFloat;

   String quantity = FloatToStr(q1 + q2);

   delete pQuery3;

   TADOQuery * pQuery4= new TADOQuery(NULL);

   pQuery4->Connection=DataModule1->ADOConnection1;

   pQuery4->SQL->Clear();

   pQuery4->SQL->Add("update Raw set Quantity =" + quantity + "where RawID =" + data2);

   pQuery4->ExecSQL();

   delete pQuery4;

   //更新可用现金

   TADOQuery * pQuery5= new TADOQuery(NULL);

   pQuery5->Connection=DataModule1->ADOConnection1;

   pQuery5->SQL->Clear();

   float cash = Table1->FieldByName("Quantity")->AsFloat * Table1->FieldByName("PerCost")->AsFloat;

   pQuery5->SQL->Add("select cash from Assets");

   pQuery5->Open();

   pQuery5->Last();

   TADOQuery * pQuery6= new TADOQuery(NULL);

   pQuery6->Connection=DataModule1->ADOConnection1;

   pQuery6->SQL->Clear();

   pQuery6->SQL->Add("select fee from Assets");

   pQuery6->Open();

   pQuery6->Last();

   float fee = pQuery6->FieldByName("fee")->AsFloat + cash;

   cash = pQuery5->FieldByName("cash")->AsFloat - cash;

   TADOQuery* pQuery7  = new TADOQuery(NULL);

   pQuery7->Connection=DataModule1->ADOConnection1;

   String c = FloatToStr(cash);

   pQuery7->SQL->Add("update Assets set cash = " + c);

   pQuery7->ExecSQL();

   //更新费用

   TADOQuery* pQuery8  = new TADOQuery(NULL);

   pQuery8->Connection=DataModule1->ADOConnection1;

   String f = FloatToStr(fee);

   pQuery8->SQL->Add("update Assets set fee = " + f);

   //pQuery4->Open();

   pQuery8->ExecSQL();

  

   delete pQuery5;

   delete pQuery6;

   delete pQuery7;

   delete pQuery8;

}

//---------------------------------------------------------------------------

void __fastcall TFormApply::FormClose(TObject *Sender,

      TCloseAction &Action)

{

   Action = caFree;     //窗口关闭时释放内存

}

//---------------------------------------------------------------------------

void __fastcall TFormApply::Button1Click(TObject *Sender)

{

   Table1->Append();      //增加一条记录

}

//---------------------------------------------------------------------------

五、结论

         通过对该制造业企业的需求分析,可用发现该企业的手工式处理存在着很多的弊端,通过系统性的优化,各部门的业务流程变得很清晰,将信息化管理引入该企业,可以使可用信息的收集、加工等处理得都比较快速、高效,利于企业的市场竞争,减少了数据处理差错的可能性。除原始凭证,其他所有信息都能存放在计算机的磁性介质(硬盘、软盘)中,同时,随时可以根据需要,将信息打印到纸介质上。磁盘可以进行拷贝,使会计数据的保存更加安全。除此之外,可以设定查询的条件,很快地查到所需要的数据;另外,在查阅时,还可以归类,打印查询结果。系统的设计过程采用了由底层数据库到可视化界面的顺序,能够了解到软件设计的整个过程,设计的数据库为典型的关系数据库,采用了图形化的数据库模型设计,使得数据库各个表之间的关系一目了然。最后实现的界面只有几个主要的部门功能,由于本次实习的时间有限,所以还有很多问题没有解决,希望在今后的学习中找到答案。

【参考文献】:

[1] 管理信息系统(第二版)  作者:张月玲,范丽亚;出版社:清华大学出版社;出版时间:20##-5-1

[2] 系统分析与设计(第3版)   作者:(美)丹尼斯,(美)威克瑟姆,(美)罗思 著;出版社:人民邮电出版社;出版时间:20##-1-1

[3] UML面向对象建模与设计(第2版)  作者:(美)巴拉赫,(美)兰宝 著,车皓阳;出版社:人民邮电出版社;出版时间:20##-1-1

[4] 面向对象分析与设计    作者:(美)布奇 等著;出版社:人民邮电出版社;出版时间:20##-8-1

相关推荐