前言
超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。商店自动化的产品管理在欧美等国家早已经实现,也是零售业管理的基础。它最主要的特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在超市购物中能基本上都能购得所需的商品,并且还要既保证商品质量还要享受优质,方便的服务。
近几年我国超市经营规模日趋扩大,连锁化程度日益提高,其销售额和门店数量大幅增加,超市业面临数据和业务越来越庞大的现状,那么如何充分利用计算机来实现超市庞大商品人员信息的控制和传输,从而方便销售行业的管理和决策,就成为了一个日益重要的课题。而对中小型超市,则要采用一套行之有效的超市管理系统来管理超市日常的进货、销售和库存管理,开办会员管理,减少手工业务处理,增加超市业务处理效率。
摘要
随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。超市时时刻刻都需要对商品各种信息进行统计分析。而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。
超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、销售、会员及员工信息等实现全面、动态、及时的管理。
本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境:市场需求分析,数据字典,以及可行性分析;其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。
关键词:超市 管理信息系统
第一章 绪论
随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet 技术的推广和信息高速公路的建立,使IT 产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。
作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。
在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术。
超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:不能有效地管理每种商品,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。随着超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,在选题过程中,我选择了超市管理系统设计题目,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。
第二章 系统需求分析
2.1 中小型超市管理系统的需求分析
中小型超市管理系统应该满足以下需求:
1:为保障系统的健壮性,对于可能发生问题的输入要进行检验,同时要给出合理的提示信息。
2:业务上满足中小型超市管理系统的基本需求,能够方便的进行销售管理,员工管理,会员管理和商品管理。
3:为会员管理系统和商品管理系统提供数据支持。
4:与传统的手工管理相比,要添加基础数据的管理,和用户权限的设置。 5:所有界面都要有信息浏览功能,同时要保障数据的安全,可靠。
根据系统的需求分析,为了保障系统的安全性,需对不同的权限分别设置功能,本系统的功能要求如下:
销售人员:销售人员主要进行交易信息的录入和收取相应款项通过销售终端的扫描条形码方式或者手工方式输入每次交易的详细情况,包括必要的商品编号,名称,数量,交易总计金额,自动计算本次交易的总金额。
管理者:可进行下列管理:
进货管理:根据销售情况及库存情况,制定进货计划可以避免盲目进货造成商品积压,按计划单有选择的进货。进入商品入库登记。
销售管理:商品正常销售促销及禁止销售控制,综合查询各种销售明细记录,营业员收银记录,及交帐情况等。
库存管理:综合查询库存明细记录,库存状态自动告警提示。如库存过剩,少货,缺货等。软件预警,避免库存商品积压损失和缺货。
员工管理:员工基本个人信息管理,员工操作权限管理。
会员管理:会员基本个人信息管理,可以进行会员消费统计和人数查询。
2.2 中小型超市管理系统总体结构
系统总体结构
图2-1 系统总体结构
模块子系统结构
图2-2模块子系统结构1
功能描述:商品录入子系统要求能快速录入商品,因此必须支持条形码扫描。
图2-3模块子系统结构2
功能描述:收银业务子系统能计算交易总额,打印交易清单,并根据会员卡打折。
图2-4模块子系统结构3
功能描述:进货管理子系统可以根据库存自动指定进货计划,进货时自动等级,以及提供查询和打印计划进货与入库记录的功能。
图2-5模块子系统结构4
功能描述:销售管理子系统可以控制某商品是否允许销售,查询每种商品的销售
情况并产生年、月、日报表,同时可以生成销售排行榜。
图2-6模块子系统结构5
功能描述:库存管理子系统提供查询库存明细记录的基本功能,并根据库存的状
态报警,以及自动盘点计算。
图2-7模块子系统结构6
功能描述:人员管理子系统提供基本信息登记管理,员工操作权限管理,客户销
售权限管理的功能。
2.3、流程图
前台管理系统
顶层DFD 图
会员信息表
第0层DFD 图
商品信息表
第1层DFD 图
第三章 系统概念结构设计
3.1 设计思想
(1)系统分成几个相对独立的模块,但这些模块都进行集中式管理。 (2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。
(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。
3.2 设计原则
为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:
(1)合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品进货、销售等工作。
(2)实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。
(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等) 。
(3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。
(5)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。
(6)优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承,自定义用户对象,事件,函数,减少不必要的重复性代码,使程序简介明了,也方便了将来的维护。
(7)安全性原则:可以为该系统的用户设置用户权限。
3.3 数据字典
数据流条目
(1)已进货信息=进货单号+供货商号+商品名称+进货价+进货数量+进货日期+备注
(2)销售信息=销售单号+商品编号+销售数量+销售日期 文件条目
(1)文件名:职工清单
组成:{职工编号+姓名+性别+籍贯+学历+类别+工资+联系电话+联系地址+身份证号+聘用日期+编制日期+备注}
(2)文件名:商品清单
组成:{商品编号+供货商号+名称+条形码+计量单位+类别+产地+单价+备注}
(3)文件名:供货商清单
组成:{供货商号+名称+联系人+联系电话+联系地址+开户行+银行帐号+备注}
(3)文件名:进货清单
组成:{进货单号+商品编号+供货商号+进货价+数量+金额+进货日期+备注} (4)文件名:销售清单
组成:{销售单号+商品编号+销售数量+销售日期} (5)文件名:库存清单 组成:{商品编号+库存数量} 加工说明
(1)加工名:1:查询
加工逻辑:根据要查询的库存信息,检索出库存信息明细表 输入流:库存信息查询,发出库存信息请求 输出流:库存信息清单,进货信息请求 (2)加工名:1:更新
根据进货信息或销售信息更新库存信息
输入流:已进货信息,销售信息 输出流:发出库存检索请求 (3)加工名:2:查询
根据要查询的销售信息,检索出销售信息明细表 输入流:销售信息查询 输出流:销售清单,销售单 (4)加工名:2:更新
加工逻辑:根据销售信息更细销售清单 输入流:前台销售信息,库存信息 输出流:更新库存清单 (5)加工名:3:查询
加工逻辑:根据要查询的进货信息,检索出进货信息明细表 输入流:进货信息查询,发出进货/采购清单查询
输出流:库存信息清单,已进货信息,新供货商信息,进货单信息清单,采购单,进货信息请求,进货/采购清单检索结果
(6)加工名:3:更新
加工逻辑:根据进货信息更新进货清单 输入流:进货信息请求,进货单 输出流:发出进货/采购清单查询 (7)加工名:4:查询
加工逻辑:根据输入要查询的职工信息或供货商信息,检索出相应的结果 输入流:职工信息查询,供货商信息查询,发出职工/供货商清单查询 输出流:已有供货商信息,供货商信息清单,职工信息清单,职工/供货商清单检索结果。
3.4 功能需求
本系统采用自定向下方法开发,其功能模块主要有如下几个部分:登录模块、系统管理模块、商品管理模块、会员信息管理模块和销售信息录入模块。具体的功能描述如下:
1) 登录模块
● 输入用户名和密码,如果用户名密码正确,则允许进入主控制平台;
并根据相应的用户权限,显示相应界面,如果输入错误则给出信息提示,重新输入。
2) 系统管理模块
● 用户管理子模块:系统管理员进行用户权限设置和用户的浏览,包
括添加新用户以及对用户姓名和用户权限的更改,同时为保障系统健壮进行输入检验,进行必要的提示信息,一般用户不能使用该项功能。
● 修改密码子模块:任何用户都可以在登陆系统后修改自己的密码。 3) 商品管理模块
● 设备进货管理子模块:根据进货计划,按时按量的完成进货计划,
录入进货信息的同时更新库存信息。
● 设备库存管理子模块:浏览商品库存的情况,根据销售情况随时制
定进货计划。
● 销售管理子模块:负责整个超市新商品的录入,促销打折活动的制
定商品价格的设定。
4) 会员信息管理模块
● 会员信息管理子模块:浏览修改会员信息,包括新会员的加入,会
员信息的修改,删除。
● 会员信息查询和统计子模块:查询会员的消费信息,会员人数。 5) 销售信息录入模块
● 管理交易信息数据,销售人员只能进行此项功能,每次交易信息的
录入,同时更新会员消费记录和商品库存记录。
第四章 系统详细设计
4.1 系统功能结构图
系统总体结构如图5-1所示:
图4-1 超市管理系统功能结构图
4.2 系统功能设计
系统功能设计是使整个系统能基本实现超市的进、销、存等管理功能,能让超市管理者更直观的了解超市的经营状况,以做出相应的经营决策。管理信息系统(MIS)就是要对这些资源建立正确的数据库,并进行信息的收集、传送、存储、编制成各种凭证、报表、台帐、图形等信息,同时对这些信息进行维护,通过实测超市的各种运行情况,并利用过去的历史数据预测未来的发展,从超市全局的角度出发进行决策,利用信息控制超市的行为,附注超市完成其目标。
本系统共包括四大模块,分别是系统管理,商品管理模块,会员管理模块,销售录入模块。每个模块的功能如下:
1. 用户登录模块功能 2. 系统管理模块功能:
(1)实现用户管理的查询、添加、修改、删除; (2)实现修改密码。
3. 商品管理模块功能:
(1)实现进货管理的添加、修改、删除、退出; (2)实现库存管理的查询、添加、退出; (3)实现销售管理的添加、修改、删除、退出; 4. 会员管理模块功能: (1)实现会员信息的查询和统计;
(2)实现会员信息的更新,包括增加、删除、修改功能。
4.3 系统E-R 模型设计
系统E-R 模型的设计如图5-1所示:
图4-2 系统E-R 模型设计总图
4.4 系统中用户表设计
表名:商品信息表 1.标识:Merch 。
数据来源:销售管理模块的录入。
2.表名:用户表 标识:SyUser 。
数据来源:用户管理模块的录入。 3.表名:会员表 标识:MatketMember 。
数据来源:会员管理模块的录入。
4.表名:销售表,如表3-4所示。 标识:Sale 。
数据来源:销售录入模块的录入。
5.表名:进货记录表,如表3-5所示。 标识:Stock 。
数据来源:进货管理模块的录入。
4.5 模块功能设计
1. 系统登录模块
功能:本模块的主要功能是对用户身份进行,,验证只有系统的合法用户才能进入系统。其窗体如图5-3所示:
private string StrSQL = "SELECT * from SyUser";
private System.ComponentModel.Container components = null ;
public Login() { this .myConnection = new SqlConnection (connectionString); this .da = new SqlDataAdapter (this .StrSQL, this .myConnection); this .ds.Clear();
this .da.Fill(ds,"SyUser" );
this .LogTable = ds.Tables[0];
}
this .groupBox1.Name = "groupBox1" ;
this .groupBox1.Size = new System.Drawing.Size (208, 100); this .groupBox1.TabIndex = 10; this .groupBox1.TabStop = false ; this .groupBox1.Text = " 用户信息输入" ;
this .PwdTxt.Location = new System.Drawing.Point (88, 56); this .PwdTxt.Name = "PwdTxt" ; this .PwdTxt.PasswordChar = '*';
this .PwdTxt.Size = new System.Drawing.Size (104, 21); this .PwdTxt.TabIndex = 4;
this .label3.Location = new System.Drawing.Point (8, 64); this .label3.Name = "label3" ;
this .label3.Size = new System.Drawing.Size (72, 16); this .label3.TabIndex = 3;
this .label3.Text = "*用户密码:" ;
this .UserNameTxt.Location = new System.Drawing.Point (88, 32); this .UserNameTxt.Name = "UserNameTxt" ;
2. 超市管理信息系统
在进行系统登录过程中,登录模块将调用数据库里的用户清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。在登录模块中,对系统的尝试登录次数进行了限制,禁止用户无终止的进行系统登录尝试,在本系统中,当用户对系统的三次登录失败后,系统将自动机制登录,突出登录模块。并在输入了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。
输入项、输出项:输入项为账号和密码。账号和密码均为字符串,长度各为6个字符,密码回显字符是“*”。
this .MerchMag.Text = " 商品管理" ;
this .InputMerch.Enabled = false ; this .InputMerch.Index = 0;
this .InputMerch.Text = " 进货管理" ;
this .InputMerch.Click += new System.EventHandler (this .InputMerch_Click); this .QryMerchStore.Enabled = false ;
this .QryMerchStore.Index = 1;
this .QryMerchStore.Text = " 库存管理" ;
this .QryMerchStore.Click += new System.EventHandler (this .QryMerchStore_Click); this .SelSetlMag.Enabled = false ; this .SelSetlMag.Index = 2;
this .SelSetlMag.Text = " 销售管理" ;
this .SelSetlMag.Click += new System.EventHandler (this .SelSetlMag_Click); this .MarketMember.Index = 2;
this .MarketMember.MenuItems.AddRange(new System.Windows.Forms.MenuItem [] this .MarketMember.Text = " 会员管理" ; this .EditMem.Enabled = false ; this .EditMem.Index = 0;
this .EditMem.Text = " 会员信息管理" ;
this .EditMem.Click += new System.EventHandler (this .EditMem_Click); this .QryStatMember.Enabled = false ; this .QryStatMember.Index = 1;
this .QryStatMember.Text = " 会员信息查询统计" ;
this .QryStatMember.Click += new System.EventHandler (this .QryStatMember_Click); this .SellMag.Index = 3;
this .SellMag.Text = " 销售录入" ; this .NewSell.Enabled = false ; this .NewSell.Index = 0;
this .NewSell.Text = " 销售信息录入" ;
this .NewSell.Click += new System.EventHandler (this .NewSell_Click); this .ExitSys.Index = 4;
this .ExitSys.Text = " 退出系统" ;
private void MainFrm_Load(object sender, System.EventArgs e)
{
this .MainstatusBar.Text = " 当前用户: " + Login .strUser+ " 今天是:
" +DateTime .Today;
if ( Login .strUserRole == " 经理" ) {this .UserMag.Enabled = true ;
this .QryMerchStore.Enabled = true ; this .SelSetlMag.Enabled = true ; this .InputMerch.Enabled = true ; this .QryStatMember.Enabled = true ; this .EditMem.Enabled = true ; this .NewSell.Enabled = true ;}
else if (Login .strUserRole == " 销售人员" ) {this .NewSell.Enabled = true ;}
return ;}
3. 库存管理模块
功能:本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。 查询商品信息:主要功能查询商品的明细信息,和它的库存信息。 添加商品信息:主要功能添加新进的商品。
修改商品信息:主要功能是修改商品的信息,包括他的库存数量。 删除商品信息:主要功能是删除不再销售的商品信息。 输入项、输出项:本模块的数据输入项主要是商品编号。
this .EditMerchIdTxt.DataBindings.Add("Text" , Merchdtable, " 商品编号" );
}
this .EditMerchNameTxt.DataBindings.Add("Text" , Merchdtable, " 商品名称" ); this .EditMerchPriceTxt.DataBindings.Add("text" , Merchdtable, " 价格" ); this .EditMerchStockTxt.DataBindings.Add("Text" , Merchdtable, " 库存数量" ); this .EditWaringTxt.DataBindings.Add("Text" , Merchdtable, " 库存报警数量" ); this .EditPlanStockAddsTxt.DataBindings.Add("Text" , Merchdtable, " 计划进货数" ); this .EditCXPriceTxt.DataBindings.Add("Text" , Merchdtable, " 促销价格" ); this .EditStartCXTxt.DataBindings.Add("Text" , Merchdtable, " 促销起日期" ); this .EditEndCXTxt.DataBindings.Add("Text" , Merchdtable, " 促销止日期" ); this .EditGetoffCmb.DataBindings.Add("Text" , Merchdtable, " 允许打折" ); this .EditSaleCmb.DataBindings.Add("Text" , Merchdtable, " 允许销售" ); this .EditFactTxt.DataBindings.Add("Text" , Merchdtable, " 厂商编号" ); StockCurrenAmend = (CurrencyManager ) BindingContext[Stockdtable]; MerchCurrenAmend = (CurrencyManager ) BindingContext[Merchdtable];
private void DataGridStateControl()
{DataGridTableStyle ts = new DataGridTableStyle ();
ts.AlternatingBackColor = Color .LightGray; ts.MappingName = Merchdtable.TableName; ts.AllowSorting = false ;
this .MerchInfodataG.TableStyles.Add(ts);
} this .MerchInfodataG.Select(0); DataGridTableStyle ts2 = new DataGridTableStyle (); ts2.AlternatingBackColor = Color .LightGray; ts2.MappingName = MerchStockdtable.TableName; ts2.AllowSorting = false ; this .QryMerchStockDGrid.TableStyles.Add(ts2); this .QryMerchStockDGrid.Select(0);
4. 商品信息管理模块
在超市引进商品时,首先查询已有的供货商信息,然后按照供货商信息采购商品;或者从新的供货商那里引进新的商品,此时,要把新供货商信息添加到供货商清单中。有时,不再从某一供货商那里采购商品时,此时要把供货商信息删掉。当供货商信息有变化时,就需要对供货商信息进行维护等。
if (e.Button.ToolTipText == " 新记录" )
{MerchCurrenAmend.AddNew(); return ;} if (e.Button.ToolTipText == " 删除记录" ) {if (MessageBox .Show(" 确实要删除这条记录吗?" , " 询问 {try {if (MerchCurrenAmend.Count > 0) MerchCurrenAmend.RemoveAt(MerchCurrenAmend.Position); " , MessageBoxButtons .YesNo) == DialogResult .Yes) else {
MessageBox .Show(" 没有可以删除的数据" , " 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);}
catch (Exception express)
{MessageBox .Show(express.ToString()," 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);}return ;}}
if (e.Button.ToolTipText == " 提交修改" )
if (this .EditFactTxt.Text.Trim()=="" )
{MessageBox .Show(" 厂商编号不能为空!" , " 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);
return ;
}
MerchCurrenAmend.EndCurrentEdit();//结束当前编辑操作并提交修改
if (Merchdtable.GetChanges() != null )
{try
{this .MerchsqlDataAdapter.Update(Merchdtable);}
catch (Exception express)
{MessageBox .Show(express.ToString()," 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);
this .Merchdtable.RejectChanges();}}return ;}
第五章 系统测试运行
完成对流程的编码后最重要的事情就是对系统的测试工作了,测试在系统设计阶段有两个时期,通常在编写每个模块后做单元测试,另一个时期是对系统的综合测试。
5.1 模块测试
在模块测试时我们主要从以下几个方面考虑:
1. 模块接口;
2. 局部数据结构;
3. 重要执行通道;
4. 出错处理通道;
5. 影响上述方面的边界条件。
测试时进行代码审查,从数据类型,变量声明,数据结构进行审查,然后进行功能测试,从输入一些简单的数据开始执行一遍,观测运行期间变量的变化,运行中值的变化范围。改变测试方案来变换另一个角度进行测试,发现错误并记录,修改代码,测试条件使程序通过多层分支,判别运行结果从而完成模块测试。
5.2整体测试
总体测试是组装软件的系统技术,本系统测试采用渐增集成测试,即测试单一模块,将测试完的模块加入系统中,进行一次系统测试,依次类推将所有模块加入系统中,在具体测试时,采用自顶向下的结合方式,从主控模块开始,沿各控制层向下移动,逐渐把所有模块结合了。
在测试过程中使用到调试技术:
1. 采用debug 调试语句,跟踪数据;
2. 嵌入打印语句,输出中间结果;
3. 利用Visual Studio 2003中调试工具,从调试窗口观测变量的变化;
4. 设置断点,观察程序在断点附近的状况。
评估运行的可靠性问题:
1. 结果正确;
2. 运行速度;
3. 空间利用率;
4. 算法的可行性。
第六章 总结
在实习当中认我认识到开发一项好的软件不是某一个人就能完成的任务。一个团队的小组,一个勤奋的小组非常重要,沟通是解决问题的就好办法。俗话也得好:“不怕虎一样的敌人,就怕猪一样的队伍”。所以小组中的每个成员的能力与协作能力也是致关重要的。同时, 不仅是团队内部的交流,更多需要协调好团队之间的交流。
其次呢,在实习中我了解了,在开发一个项目时一定要先做好规划,按照软件的开发过程,详细地写好每一个必要的文档。一般的规则是,写文档需要团队协作,这样就允许开发人员和文档编写者利用彼此的长处,取长补短。例如,如果预期读者是系统设计师,开发人员需要提供技术细节,然后文档编写者按照正确语法组织和编辑内容。软件文档的最主要目标是传达一个系统的技术要素和使用方法。第二个目标是提供软件开发过程中的需求,决策,行为,角色和责任的书面记录。只有实现了这两个目标,软件文档才真正提供了有意义的信息。软件的概念就是:程序+文档,程序就是文档,文档集成在程序中。它要求在选择开发环境时不仅要考虑环境对设计、开发的完美支持,而且要考虑对维护、文档的支持;它要求软件人员在设计、开发过程中要考虑维护问题、文档问题;它要求程序与文档存储在同一位置、同一系统中;它要求使用相同工具进行程序与文档的书写、检索;它要求在编写和维护程序的同时形成文档,在书写文档时编写、维护程序。程序与文档合一的概念不仅存在于系统的设计、开发阶段而且存在于系统的维护阶段,它贯穿软件的生命周期。
第七章 参考文献
[1] 萨师煊、王珊. 数据库系统概论. 北京:高校教育出版社,1985;
[2]王勇领. 计算机数据处理系统分析与设计. 北京:清华大学出版社,1986;
[3]张基温. 信息系统开发案例. 北京; 清华大学出版社,1999;
[4]党建武. 管理信息系统,兰州大学出版社,2001;
[5]毕庶伟. 管理信息系统分析与设计. 北京:机械工业出版社,1992;
[6]黄梯云. 企业管理模型及微型机应用程序, 石家庄:河北人民出版社,1985;.
[7]黄梯云. 管理信息系统导论, 北京:机械工业出版社,1986。
前言
超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。商店自动化的产品管理在欧美等国家早已经实现,也是零售业管理的基础。它最主要的特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在超市购物中能基本上都能购得所需的商品,并且还要既保证商品质量还要享受优质,方便的服务。
近几年我国超市经营规模日趋扩大,连锁化程度日益提高,其销售额和门店数量大幅增加,超市业面临数据和业务越来越庞大的现状,那么如何充分利用计算机来实现超市庞大商品人员信息的控制和传输,从而方便销售行业的管理和决策,就成为了一个日益重要的课题。而对中小型超市,则要采用一套行之有效的超市管理系统来管理超市日常的进货、销售和库存管理,开办会员管理,减少手工业务处理,增加超市业务处理效率。
摘要
随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。超市时时刻刻都需要对商品各种信息进行统计分析。而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。
超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、销售、会员及员工信息等实现全面、动态、及时的管理。
本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境:市场需求分析,数据字典,以及可行性分析;其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。
关键词:超市 管理信息系统
第一章 绪论
随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet 技术的推广和信息高速公路的建立,使IT 产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。
作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。
在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术。
超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:不能有效地管理每种商品,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。随着超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,在选题过程中,我选择了超市管理系统设计题目,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。
第二章 系统需求分析
2.1 中小型超市管理系统的需求分析
中小型超市管理系统应该满足以下需求:
1:为保障系统的健壮性,对于可能发生问题的输入要进行检验,同时要给出合理的提示信息。
2:业务上满足中小型超市管理系统的基本需求,能够方便的进行销售管理,员工管理,会员管理和商品管理。
3:为会员管理系统和商品管理系统提供数据支持。
4:与传统的手工管理相比,要添加基础数据的管理,和用户权限的设置。 5:所有界面都要有信息浏览功能,同时要保障数据的安全,可靠。
根据系统的需求分析,为了保障系统的安全性,需对不同的权限分别设置功能,本系统的功能要求如下:
销售人员:销售人员主要进行交易信息的录入和收取相应款项通过销售终端的扫描条形码方式或者手工方式输入每次交易的详细情况,包括必要的商品编号,名称,数量,交易总计金额,自动计算本次交易的总金额。
管理者:可进行下列管理:
进货管理:根据销售情况及库存情况,制定进货计划可以避免盲目进货造成商品积压,按计划单有选择的进货。进入商品入库登记。
销售管理:商品正常销售促销及禁止销售控制,综合查询各种销售明细记录,营业员收银记录,及交帐情况等。
库存管理:综合查询库存明细记录,库存状态自动告警提示。如库存过剩,少货,缺货等。软件预警,避免库存商品积压损失和缺货。
员工管理:员工基本个人信息管理,员工操作权限管理。
会员管理:会员基本个人信息管理,可以进行会员消费统计和人数查询。
2.2 中小型超市管理系统总体结构
系统总体结构
图2-1 系统总体结构
模块子系统结构
图2-2模块子系统结构1
功能描述:商品录入子系统要求能快速录入商品,因此必须支持条形码扫描。
图2-3模块子系统结构2
功能描述:收银业务子系统能计算交易总额,打印交易清单,并根据会员卡打折。
图2-4模块子系统结构3
功能描述:进货管理子系统可以根据库存自动指定进货计划,进货时自动等级,以及提供查询和打印计划进货与入库记录的功能。
图2-5模块子系统结构4
功能描述:销售管理子系统可以控制某商品是否允许销售,查询每种商品的销售
情况并产生年、月、日报表,同时可以生成销售排行榜。
图2-6模块子系统结构5
功能描述:库存管理子系统提供查询库存明细记录的基本功能,并根据库存的状
态报警,以及自动盘点计算。
图2-7模块子系统结构6
功能描述:人员管理子系统提供基本信息登记管理,员工操作权限管理,客户销
售权限管理的功能。
2.3、流程图
前台管理系统
顶层DFD 图
会员信息表
第0层DFD 图
商品信息表
第1层DFD 图
第三章 系统概念结构设计
3.1 设计思想
(1)系统分成几个相对独立的模块,但这些模块都进行集中式管理。 (2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。
(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。
3.2 设计原则
为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:
(1)合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品进货、销售等工作。
(2)实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。
(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等) 。
(3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。
(5)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。
(6)优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承,自定义用户对象,事件,函数,减少不必要的重复性代码,使程序简介明了,也方便了将来的维护。
(7)安全性原则:可以为该系统的用户设置用户权限。
3.3 数据字典
数据流条目
(1)已进货信息=进货单号+供货商号+商品名称+进货价+进货数量+进货日期+备注
(2)销售信息=销售单号+商品编号+销售数量+销售日期 文件条目
(1)文件名:职工清单
组成:{职工编号+姓名+性别+籍贯+学历+类别+工资+联系电话+联系地址+身份证号+聘用日期+编制日期+备注}
(2)文件名:商品清单
组成:{商品编号+供货商号+名称+条形码+计量单位+类别+产地+单价+备注}
(3)文件名:供货商清单
组成:{供货商号+名称+联系人+联系电话+联系地址+开户行+银行帐号+备注}
(3)文件名:进货清单
组成:{进货单号+商品编号+供货商号+进货价+数量+金额+进货日期+备注} (4)文件名:销售清单
组成:{销售单号+商品编号+销售数量+销售日期} (5)文件名:库存清单 组成:{商品编号+库存数量} 加工说明
(1)加工名:1:查询
加工逻辑:根据要查询的库存信息,检索出库存信息明细表 输入流:库存信息查询,发出库存信息请求 输出流:库存信息清单,进货信息请求 (2)加工名:1:更新
根据进货信息或销售信息更新库存信息
输入流:已进货信息,销售信息 输出流:发出库存检索请求 (3)加工名:2:查询
根据要查询的销售信息,检索出销售信息明细表 输入流:销售信息查询 输出流:销售清单,销售单 (4)加工名:2:更新
加工逻辑:根据销售信息更细销售清单 输入流:前台销售信息,库存信息 输出流:更新库存清单 (5)加工名:3:查询
加工逻辑:根据要查询的进货信息,检索出进货信息明细表 输入流:进货信息查询,发出进货/采购清单查询
输出流:库存信息清单,已进货信息,新供货商信息,进货单信息清单,采购单,进货信息请求,进货/采购清单检索结果
(6)加工名:3:更新
加工逻辑:根据进货信息更新进货清单 输入流:进货信息请求,进货单 输出流:发出进货/采购清单查询 (7)加工名:4:查询
加工逻辑:根据输入要查询的职工信息或供货商信息,检索出相应的结果 输入流:职工信息查询,供货商信息查询,发出职工/供货商清单查询 输出流:已有供货商信息,供货商信息清单,职工信息清单,职工/供货商清单检索结果。
3.4 功能需求
本系统采用自定向下方法开发,其功能模块主要有如下几个部分:登录模块、系统管理模块、商品管理模块、会员信息管理模块和销售信息录入模块。具体的功能描述如下:
1) 登录模块
● 输入用户名和密码,如果用户名密码正确,则允许进入主控制平台;
并根据相应的用户权限,显示相应界面,如果输入错误则给出信息提示,重新输入。
2) 系统管理模块
● 用户管理子模块:系统管理员进行用户权限设置和用户的浏览,包
括添加新用户以及对用户姓名和用户权限的更改,同时为保障系统健壮进行输入检验,进行必要的提示信息,一般用户不能使用该项功能。
● 修改密码子模块:任何用户都可以在登陆系统后修改自己的密码。 3) 商品管理模块
● 设备进货管理子模块:根据进货计划,按时按量的完成进货计划,
录入进货信息的同时更新库存信息。
● 设备库存管理子模块:浏览商品库存的情况,根据销售情况随时制
定进货计划。
● 销售管理子模块:负责整个超市新商品的录入,促销打折活动的制
定商品价格的设定。
4) 会员信息管理模块
● 会员信息管理子模块:浏览修改会员信息,包括新会员的加入,会
员信息的修改,删除。
● 会员信息查询和统计子模块:查询会员的消费信息,会员人数。 5) 销售信息录入模块
● 管理交易信息数据,销售人员只能进行此项功能,每次交易信息的
录入,同时更新会员消费记录和商品库存记录。
第四章 系统详细设计
4.1 系统功能结构图
系统总体结构如图5-1所示:
图4-1 超市管理系统功能结构图
4.2 系统功能设计
系统功能设计是使整个系统能基本实现超市的进、销、存等管理功能,能让超市管理者更直观的了解超市的经营状况,以做出相应的经营决策。管理信息系统(MIS)就是要对这些资源建立正确的数据库,并进行信息的收集、传送、存储、编制成各种凭证、报表、台帐、图形等信息,同时对这些信息进行维护,通过实测超市的各种运行情况,并利用过去的历史数据预测未来的发展,从超市全局的角度出发进行决策,利用信息控制超市的行为,附注超市完成其目标。
本系统共包括四大模块,分别是系统管理,商品管理模块,会员管理模块,销售录入模块。每个模块的功能如下:
1. 用户登录模块功能 2. 系统管理模块功能:
(1)实现用户管理的查询、添加、修改、删除; (2)实现修改密码。
3. 商品管理模块功能:
(1)实现进货管理的添加、修改、删除、退出; (2)实现库存管理的查询、添加、退出; (3)实现销售管理的添加、修改、删除、退出; 4. 会员管理模块功能: (1)实现会员信息的查询和统计;
(2)实现会员信息的更新,包括增加、删除、修改功能。
4.3 系统E-R 模型设计
系统E-R 模型的设计如图5-1所示:
图4-2 系统E-R 模型设计总图
4.4 系统中用户表设计
表名:商品信息表 1.标识:Merch 。
数据来源:销售管理模块的录入。
2.表名:用户表 标识:SyUser 。
数据来源:用户管理模块的录入。 3.表名:会员表 标识:MatketMember 。
数据来源:会员管理模块的录入。
4.表名:销售表,如表3-4所示。 标识:Sale 。
数据来源:销售录入模块的录入。
5.表名:进货记录表,如表3-5所示。 标识:Stock 。
数据来源:进货管理模块的录入。
4.5 模块功能设计
1. 系统登录模块
功能:本模块的主要功能是对用户身份进行,,验证只有系统的合法用户才能进入系统。其窗体如图5-3所示:
private string StrSQL = "SELECT * from SyUser";
private System.ComponentModel.Container components = null ;
public Login() { this .myConnection = new SqlConnection (connectionString); this .da = new SqlDataAdapter (this .StrSQL, this .myConnection); this .ds.Clear();
this .da.Fill(ds,"SyUser" );
this .LogTable = ds.Tables[0];
}
this .groupBox1.Name = "groupBox1" ;
this .groupBox1.Size = new System.Drawing.Size (208, 100); this .groupBox1.TabIndex = 10; this .groupBox1.TabStop = false ; this .groupBox1.Text = " 用户信息输入" ;
this .PwdTxt.Location = new System.Drawing.Point (88, 56); this .PwdTxt.Name = "PwdTxt" ; this .PwdTxt.PasswordChar = '*';
this .PwdTxt.Size = new System.Drawing.Size (104, 21); this .PwdTxt.TabIndex = 4;
this .label3.Location = new System.Drawing.Point (8, 64); this .label3.Name = "label3" ;
this .label3.Size = new System.Drawing.Size (72, 16); this .label3.TabIndex = 3;
this .label3.Text = "*用户密码:" ;
this .UserNameTxt.Location = new System.Drawing.Point (88, 32); this .UserNameTxt.Name = "UserNameTxt" ;
2. 超市管理信息系统
在进行系统登录过程中,登录模块将调用数据库里的用户清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。在登录模块中,对系统的尝试登录次数进行了限制,禁止用户无终止的进行系统登录尝试,在本系统中,当用户对系统的三次登录失败后,系统将自动机制登录,突出登录模块。并在输入了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。
输入项、输出项:输入项为账号和密码。账号和密码均为字符串,长度各为6个字符,密码回显字符是“*”。
this .MerchMag.Text = " 商品管理" ;
this .InputMerch.Enabled = false ; this .InputMerch.Index = 0;
this .InputMerch.Text = " 进货管理" ;
this .InputMerch.Click += new System.EventHandler (this .InputMerch_Click); this .QryMerchStore.Enabled = false ;
this .QryMerchStore.Index = 1;
this .QryMerchStore.Text = " 库存管理" ;
this .QryMerchStore.Click += new System.EventHandler (this .QryMerchStore_Click); this .SelSetlMag.Enabled = false ; this .SelSetlMag.Index = 2;
this .SelSetlMag.Text = " 销售管理" ;
this .SelSetlMag.Click += new System.EventHandler (this .SelSetlMag_Click); this .MarketMember.Index = 2;
this .MarketMember.MenuItems.AddRange(new System.Windows.Forms.MenuItem [] this .MarketMember.Text = " 会员管理" ; this .EditMem.Enabled = false ; this .EditMem.Index = 0;
this .EditMem.Text = " 会员信息管理" ;
this .EditMem.Click += new System.EventHandler (this .EditMem_Click); this .QryStatMember.Enabled = false ; this .QryStatMember.Index = 1;
this .QryStatMember.Text = " 会员信息查询统计" ;
this .QryStatMember.Click += new System.EventHandler (this .QryStatMember_Click); this .SellMag.Index = 3;
this .SellMag.Text = " 销售录入" ; this .NewSell.Enabled = false ; this .NewSell.Index = 0;
this .NewSell.Text = " 销售信息录入" ;
this .NewSell.Click += new System.EventHandler (this .NewSell_Click); this .ExitSys.Index = 4;
this .ExitSys.Text = " 退出系统" ;
private void MainFrm_Load(object sender, System.EventArgs e)
{
this .MainstatusBar.Text = " 当前用户: " + Login .strUser+ " 今天是:
" +DateTime .Today;
if ( Login .strUserRole == " 经理" ) {this .UserMag.Enabled = true ;
this .QryMerchStore.Enabled = true ; this .SelSetlMag.Enabled = true ; this .InputMerch.Enabled = true ; this .QryStatMember.Enabled = true ; this .EditMem.Enabled = true ; this .NewSell.Enabled = true ;}
else if (Login .strUserRole == " 销售人员" ) {this .NewSell.Enabled = true ;}
return ;}
3. 库存管理模块
功能:本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。 查询商品信息:主要功能查询商品的明细信息,和它的库存信息。 添加商品信息:主要功能添加新进的商品。
修改商品信息:主要功能是修改商品的信息,包括他的库存数量。 删除商品信息:主要功能是删除不再销售的商品信息。 输入项、输出项:本模块的数据输入项主要是商品编号。
this .EditMerchIdTxt.DataBindings.Add("Text" , Merchdtable, " 商品编号" );
}
this .EditMerchNameTxt.DataBindings.Add("Text" , Merchdtable, " 商品名称" ); this .EditMerchPriceTxt.DataBindings.Add("text" , Merchdtable, " 价格" ); this .EditMerchStockTxt.DataBindings.Add("Text" , Merchdtable, " 库存数量" ); this .EditWaringTxt.DataBindings.Add("Text" , Merchdtable, " 库存报警数量" ); this .EditPlanStockAddsTxt.DataBindings.Add("Text" , Merchdtable, " 计划进货数" ); this .EditCXPriceTxt.DataBindings.Add("Text" , Merchdtable, " 促销价格" ); this .EditStartCXTxt.DataBindings.Add("Text" , Merchdtable, " 促销起日期" ); this .EditEndCXTxt.DataBindings.Add("Text" , Merchdtable, " 促销止日期" ); this .EditGetoffCmb.DataBindings.Add("Text" , Merchdtable, " 允许打折" ); this .EditSaleCmb.DataBindings.Add("Text" , Merchdtable, " 允许销售" ); this .EditFactTxt.DataBindings.Add("Text" , Merchdtable, " 厂商编号" ); StockCurrenAmend = (CurrencyManager ) BindingContext[Stockdtable]; MerchCurrenAmend = (CurrencyManager ) BindingContext[Merchdtable];
private void DataGridStateControl()
{DataGridTableStyle ts = new DataGridTableStyle ();
ts.AlternatingBackColor = Color .LightGray; ts.MappingName = Merchdtable.TableName; ts.AllowSorting = false ;
this .MerchInfodataG.TableStyles.Add(ts);
} this .MerchInfodataG.Select(0); DataGridTableStyle ts2 = new DataGridTableStyle (); ts2.AlternatingBackColor = Color .LightGray; ts2.MappingName = MerchStockdtable.TableName; ts2.AllowSorting = false ; this .QryMerchStockDGrid.TableStyles.Add(ts2); this .QryMerchStockDGrid.Select(0);
4. 商品信息管理模块
在超市引进商品时,首先查询已有的供货商信息,然后按照供货商信息采购商品;或者从新的供货商那里引进新的商品,此时,要把新供货商信息添加到供货商清单中。有时,不再从某一供货商那里采购商品时,此时要把供货商信息删掉。当供货商信息有变化时,就需要对供货商信息进行维护等。
if (e.Button.ToolTipText == " 新记录" )
{MerchCurrenAmend.AddNew(); return ;} if (e.Button.ToolTipText == " 删除记录" ) {if (MessageBox .Show(" 确实要删除这条记录吗?" , " 询问 {try {if (MerchCurrenAmend.Count > 0) MerchCurrenAmend.RemoveAt(MerchCurrenAmend.Position); " , MessageBoxButtons .YesNo) == DialogResult .Yes) else {
MessageBox .Show(" 没有可以删除的数据" , " 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);}
catch (Exception express)
{MessageBox .Show(express.ToString()," 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);}return ;}}
if (e.Button.ToolTipText == " 提交修改" )
if (this .EditFactTxt.Text.Trim()=="" )
{MessageBox .Show(" 厂商编号不能为空!" , " 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);
return ;
}
MerchCurrenAmend.EndCurrentEdit();//结束当前编辑操作并提交修改
if (Merchdtable.GetChanges() != null )
{try
{this .MerchsqlDataAdapter.Update(Merchdtable);}
catch (Exception express)
{MessageBox .Show(express.ToString()," 提示
" , MessageBoxButtons .OK, MessageBoxIcon .Error);
this .Merchdtable.RejectChanges();}}return ;}
第五章 系统测试运行
完成对流程的编码后最重要的事情就是对系统的测试工作了,测试在系统设计阶段有两个时期,通常在编写每个模块后做单元测试,另一个时期是对系统的综合测试。
5.1 模块测试
在模块测试时我们主要从以下几个方面考虑:
1. 模块接口;
2. 局部数据结构;
3. 重要执行通道;
4. 出错处理通道;
5. 影响上述方面的边界条件。
测试时进行代码审查,从数据类型,变量声明,数据结构进行审查,然后进行功能测试,从输入一些简单的数据开始执行一遍,观测运行期间变量的变化,运行中值的变化范围。改变测试方案来变换另一个角度进行测试,发现错误并记录,修改代码,测试条件使程序通过多层分支,判别运行结果从而完成模块测试。
5.2整体测试
总体测试是组装软件的系统技术,本系统测试采用渐增集成测试,即测试单一模块,将测试完的模块加入系统中,进行一次系统测试,依次类推将所有模块加入系统中,在具体测试时,采用自顶向下的结合方式,从主控模块开始,沿各控制层向下移动,逐渐把所有模块结合了。
在测试过程中使用到调试技术:
1. 采用debug 调试语句,跟踪数据;
2. 嵌入打印语句,输出中间结果;
3. 利用Visual Studio 2003中调试工具,从调试窗口观测变量的变化;
4. 设置断点,观察程序在断点附近的状况。
评估运行的可靠性问题:
1. 结果正确;
2. 运行速度;
3. 空间利用率;
4. 算法的可行性。
第六章 总结
在实习当中认我认识到开发一项好的软件不是某一个人就能完成的任务。一个团队的小组,一个勤奋的小组非常重要,沟通是解决问题的就好办法。俗话也得好:“不怕虎一样的敌人,就怕猪一样的队伍”。所以小组中的每个成员的能力与协作能力也是致关重要的。同时, 不仅是团队内部的交流,更多需要协调好团队之间的交流。
其次呢,在实习中我了解了,在开发一个项目时一定要先做好规划,按照软件的开发过程,详细地写好每一个必要的文档。一般的规则是,写文档需要团队协作,这样就允许开发人员和文档编写者利用彼此的长处,取长补短。例如,如果预期读者是系统设计师,开发人员需要提供技术细节,然后文档编写者按照正确语法组织和编辑内容。软件文档的最主要目标是传达一个系统的技术要素和使用方法。第二个目标是提供软件开发过程中的需求,决策,行为,角色和责任的书面记录。只有实现了这两个目标,软件文档才真正提供了有意义的信息。软件的概念就是:程序+文档,程序就是文档,文档集成在程序中。它要求在选择开发环境时不仅要考虑环境对设计、开发的完美支持,而且要考虑对维护、文档的支持;它要求软件人员在设计、开发过程中要考虑维护问题、文档问题;它要求程序与文档存储在同一位置、同一系统中;它要求使用相同工具进行程序与文档的书写、检索;它要求在编写和维护程序的同时形成文档,在书写文档时编写、维护程序。程序与文档合一的概念不仅存在于系统的设计、开发阶段而且存在于系统的维护阶段,它贯穿软件的生命周期。
第七章 参考文献
[1] 萨师煊、王珊. 数据库系统概论. 北京:高校教育出版社,1985;
[2]王勇领. 计算机数据处理系统分析与设计. 北京:清华大学出版社,1986;
[3]张基温. 信息系统开发案例. 北京; 清华大学出版社,1999;
[4]党建武. 管理信息系统,兰州大学出版社,2001;
[5]毕庶伟. 管理信息系统分析与设计. 北京:机械工业出版社,1992;
[6]黄梯云. 企业管理模型及微型机应用程序, 石家庄:河北人民出版社,1985;.
[7]黄梯云. 管理信息系统导论, 北京:机械工业出版社,1986。