商品进销存管理系统模拟实习报告.docx
第 33 页 共 33 页商品进销存管理系统【摘要】商品进销存管理系统是市场上最流行的进销存上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对入库、销售及员工信息等实现全面、动态、及时的管理。【关键词】商品进销存管理系统 软件工程 数据库 目录1概述22.系统需求分析22.1用户工作流程22.2用户业务需求23.概念设计阶段43.1设计思想43.2设计原则43.3业务流程分析54. 逻辑设计阶段74.1E-R模型75.物理设计阶段96. 数据编码与实施106.1系统登录界面106.2 系统主界面116.3 系统子界面一三7. 数据运行与维护317.1模块测试317.2整体测试318.小结32参考文献321.概述随着进销存规模的发展不断扩大,商品数量急剧增加,有关商品的各种库存信息量也成倍增长。进销存时时刻刻都需要对库存各种信息进行统计分析。而市面上的一些大型的进销存管理系统功能过于强大而造成操作繁琐降低了进销存的工作效率。本系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。1.1编写需求规格说明书得目的详细准确和全面定义“商品进销存管理系统”的用户需求,指导软件系统的后续开发工作。本文档所描述的用户需求将作为该项目最终验收的标准和依据。说明:该文档必须经用户和开发方签字确认方可有效。本文档的读者对象包括:1)用户2)系统分析员3)软件设计人员4)软件实现人员5)软件测试人员1.2确定系统边界2.系统需求分析2.1用户工作流程入库或销售商品时,用户要对入库单或销售单进行核对审查,并进行登记;用户要获得入库、销售、库存信息时,要对入库情况、销售情况、库存情况进行查询并打印。2.2用户业务需求(1)该管理系统将对库存商品进行资料管理和统计,对商品的进货单和商品的销售单进行录入管理和统计;(2)该管理系统将根据用户的需要对进货、销售、库存情况进行查询;(3)该管理系统将为用户提供账号管理工具,以便用户对账号进行管理,具体为添加用户、删除用户、修改用户密码;(4)该管理系统可对供货商信息、客户信息、商品信息施行增删改查操作。整个商品进销存管理系统的功能结构如图所示:用户信息增删改商品进销存管理系统用户信息管理销售信息管理库存信息管理进货信息管理商品信息管理客户信息管理供货商信息管理用户信息查询供货商信息增删改商品信息增删改客户信息增删改客户信息查询供货商信息查询商品信息查询进货信息增删改库存信息查询进货信息查询销售信息增删改销售信息查询 系统功能结构图1) 用户信息管理 通过对用户的管理来维护和操作超市进销存系统,根据实际需要可添加用户资料和修改用户密码,确保系统正常运行。2) 供应商管理供应商是超市运营过程中不可缺少的一个环节。它与商品的采购管理及库存管理直接相关。所以在系统中提供供应商的基本信息配置是非常必要且必须的。这有利于对库存商品质量的控制并能够较快的响应采购要求。3) 商品信息管理市运营的过程中,其内部各相关部门都需要随时知道商品库存的最新信息,所以系统应具有面向不同需求的添加用户、删除和查询功能和修改用户密码功能,以满足不同用户的需要。4)客户信息管理客户信息管理模块需要完成以下相关功能:提供销售客户的信息,可增删改查。5)进货管理进货管理模块需要完成以下相关功能:进货分析:即列出当前进货量最多的前几项商品和进货量最少的前几 项商品;库存分析:即列出当前库存量最多的前几项商品和库存量最少的前几 项商品;分类查看:即可以根据商品的属性来查看某种商品的进货情况;采购进货:即按照采购计划采购人员购买商品,并将商品的基本信息登记入库,更新数据库的库存信息。 6)销售管理销售管理模块需要完成以下相关功能:商品销售信息:即录入销售商品的信息包括商品销售数量、单价、统 计日期等;更新库存:即销售信息的变动直接关系到库存的变化;7)库存管理库存管理模块可帮助仓库管理人员对库存商品的入库、出库、调拨盘点、补充订货等操作进行全面的控制和管理。该模块与采购、销售模块有良好的接口。可以从这些模块中获得或向这些模块输送数据,保持数据的一致性。库存管理模块需要实现以下相关功能:库存盘点: 即商品盘存要求能够对系统中所有商品信息进行整理,修正与实际信息有差错的信息,以保证系统中数据的实时性和有效性; 调拨: 即进行一定时间段内的调拨情况的查询、统计; 库存报警: 即当某商品的库存数量低于系统设定的最低库存数量时,系统自动报警并提醒库存管理人员该商品已缺货,以保证商品的及时供应。3.概念设计阶段3.1 设计思想(1)系统分成几个相对独立的模块,但这些模块都进行集中式管理。(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。3.2 设计原则为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:(1)合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品入库、销售等工作。(2)实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。(3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。(5)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。(6)优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承,自定义用户对象,事件,函数,减少不必要的重复性代码,使程序简介明了,也方便了将来的维护。(7)安全性原则:可以为该系统的用户设置用户权限。3.3业务流程分析商品进销存管理系统主要是是以先进的管理理念和科学的计算机技术来取代原始的手工操作。在新系统开发前,我们对这个商品进销存管理系统业务流程进行了系统的调查,得出了下面的业务流程图,如图2所示:验证登录进入系统商品进销存管理系统用户客户供货商验证成功进销存管理系统第1层图人事信息管理销售管理库存管理进货管理库存信息查询库存清单用户信息客户信息查询用户、客户及供货商清单供货商信息进货请求进货清单进货信息查询进货信息进货信息库存信息销售信息查询销售信息进销存管理系统第2层图数据字典:(1) 职工清单(StaffBill)中文字段名英文字段名字段类型长度主键/外键字段值约束职工编号staffIDchar6PNOT NULL姓名namenvarchar8NOT NULL性别sexnchar2NOT NULL籍贯homenvarchar4NULL学历diplomanvarchar4NOT NULL类别kindnvarchar10NULL工资salaryint4NULLxphonevarchar12NULL联系地址addressnvarchar50NULL身份证号idCardvarchar一八NOT NULL聘用日期beginDatedatetime8NULL编制日期enactTimedatetime8NULL备注othersntext50NULL说明:此表存放员工信息。(2) 用户清单(UserBill)中文字段名英文字段名字段类型长度主键/外键字段值约束帐号loginIDchar6P/FNOT NULL密码passWordchar6NOT NULL说明:此表存放系统用户信息。(3) 商品清单(MerchBill)中文字段名英文字段名字段类型长度主键/外键字段值约束商品编号merchIDchar6PNOT NULL供货商号profferIDchar6FNOT NULL名称fullNamenvarchar80NOT NULL条形码barCodechar一五NOT NULL计量单位metricUnitvarchar4NOT NULL类别kindnvarchar8NULL产地birthPlacenvarchar50NULL单价unitCostvarchar4NOT NULL备注othersntext50NULL说明:此表存放商品信息。(4) 供货商清单(ProfferBill)中文字段名英文字段名字段类型长度主键/外键字段值约束供货商号profferIDchar6PNOT NULL名称fullNamenvarchar50NOT NULL联系人contactPersonnvarchar8NOT NULLxphonevarchar12NOT NULL联系地址addressnvarchar50NOT NULL开户行openingBanknvarchar10NULL银行帐号 accountIDvarchar一五NULL备注othersntext50NULL说明:此表存放供货商信息。(5) 进货清单(ImportBill)中文字段名英文字段名字段类型长度主键/外键字段值约束进货单号importBillIDchar6PNOT NULL商品编号merchIDchar6P/FNOT NULL供货商号profferIDchar6FNOT NULL进货价importPricevarchar4NOT NULL数量quantityint4NOT NULL金额totalMoneyvarchar4NOT NULL进货日期importDatedatetime8NOT NULL备注othersntext50NULL说明:此表存放进货信息。(6) 销售清单(SaleBill)中文字段名英文字段名字段类型长度主键/外键字段值约束销售单号saleBillIDchar6PNOT NULL商品编号merchIDchar6P/FNOT NULL销售数量saleNumint4NOT NULL销售日期saleDatedatetime8NOT NULL说明:此表存放销售信息。(7) 库存清单(StoreBill)中文字段名英文字段名字段类型长度主键/外键字段值约束商品编号merchIDchar6P/FNOT NULL库存数量storeIDint4NOT NULL(8)客户清单(ClientBill)中文字段名英文字段名字段类型长度主键/外键字段值约束客户编号bhchar10PNOT NULL姓名xmchar10NOT NULL住址addrchar50NOT NULL身份证号码sfzvarchar20NOT NULL性别sexchar6NOT NULLxtelint4NOT NULL4.逻辑设计阶段4.1. E-R模型商品进销存管理系统数据库E-R模型,如图5-2所示:用户:用户账号权限密码进货:进货进货单号供货商号商品编号金额数量进货日期进货价客户编号客户:姓名客户身份证性别电话住址 销售:销售销售单号销售数量商品编号销售日期 商品商品名称商品编号单价条形码计量单位供货商号供货商名称供货商号联系人联系地址x供货商:商品进销存系统:供货用户供货商进货商品mnmn客户mn销售5.物理设计阶段运行需求(1)用户界面本系统采用C#+sqlserver2000设计,用户交互界面采用的是基于C#的WINDOWS窗口。(2)硬件接口运行本系统的硬件基本要求如下:CPU:Intel P4及以上;内存:512MB及以上;硬盘:80GB及以上。(3)软件接口JSP服务器:Apache Tomcat5.5版本及以上。数据库服务器:Microsoft SQL Server 2000及以上。6.数据库编码与实施6.1.系统登录界面功能:实现登录验证,当账号、密码、验证码三者都正确时才能登录。输入项目:用户名、密码和验证码输出项目:进入到具有各自权限的界面测试要点:各类用户能够正确的登录用户登录界面如下图:登录及取消代码如下:private void button1_Click(object sender, EventArgs e) string loginid = textBox1.Text.Trim (); string password = textBox2.Text.Trim (); if (textBox1.Text != "") DataAccess data = new DataAccess(); if (data.CheckAdmin(loginid, password)&&label5 .Text =textBox3 .Text ) Constants.loginID = loginid; SPJXCGLXT s = new SPJXCGLXT(); s.Show(); this.Hide(); else if (label5.Text != textBox3.Text) MessageBox.Show("验证码错误!", "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); else MessageBox.Show("输入用户名、密码错误!请重新登录!"); textBox1.Text = "" textBox2.Text = "" private void button2_Click(object sender, EventArgs e) Close(); private void button3_Click(object sender, EventArgs e) Random rad = new Random(); int value = rad.Next(1000, 10000); label5.Text = value.ToString(); 6.2.系统主界面功能:实现系统主要功能部分代码如下:public SPJXCGLXT() InitializeComponent(); this.IsMdiContainer = true; UserBillData data=new UserBillData(); data.loginID = Constants.loginID;/获取登录用户的姓名 DataSet ds = new DataSet(); ds = UserBillOperation.getUserBillAll(data); if (ds.Tables0.Rows.Count > 0) Constants.limits = ds.Tables0.Rows0"用户权限".ToString(); if (Constants.limits != "管理员") this.用户添加ToolStripMenuItem.Enabled = false; this.供货商信息添加ToolStripMenuItem.Enabled = false; this.进货清单添加ToolStripMenuItem.Enabled = false; this.客户信息添加ToolStripMenuItem.Enabled = false; this.商品信息添加ToolStripMenuItem.Enabled = false; this.销售清单添加ToolStripMenuItem.Enabled = false; this.用户删除ToolStripMenuItem.Enabled = false; this.用户修改ToolStripMenuItem.Enabled = false; this.供货商信息修改ToolStripMenuItem.Enabled = false; this.供货商信息删除ToolStripMenuItem.Enabled = false; this.进货清单删除ToolStripMenuItem.Enabled = false; this.进货清单修改ToolStripMenuItem.Enabled = false; this.客户信息修改ToolStripMenuItem.Enabled = false; this.客户信息删除ToolStripMenuItem.Enabled = false; this.商品信息删除ToolStripMenuItem.Enabled = false; this.商品信息修改ToolStripMenuItem.Enabled = false; this.销售清单删除ToolStripMenuItem.Enabled = false; this.销售清单修改ToolStripMenuItem.Enabled = false; 6.3.系统子界面1)用户管理界面功能:实现用户增删查改用户清单界面输入项目:用户名或用户权限输出项目:满足查询条件的结果用户信息查询代码如下:private void button2_Click(object sender, EventArgs e) DataSet data = new DataSet(); string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString; SqlConnection connection = new SqlConnection(connString); string sql; if (textBox1.Text.Trim() != "" &&comboBox1.Text.Trim() != "") sql = "select * from UserBill where loginID='" + textBox1.Text.Trim() + "'and limits='" + comboBox1.Text.Trim() + "'" else sql = "select * from UserBill where loginID='" + textBox1.Text.Trim() + "'or limits='" + comboBox1.Text.Trim() + "'" SqlDataAdapter da = new SqlDataAdapter(sql, connString); da.Fill(data ); this.userBillDataGridView.DataSource = data.Tables0; 用户增删改界面输入项目:用户名、密码和用户权限输出项目:进行添加、修改密码、删除操作,输出操作是否成功添加、删除、修改密码代码如下:private void button1_Click(object sender, EventArgs e) string userid = textBox1.Text; string userpwd = textBox2.Text; string qpwd = textBox3.Text; string limit = comboBox1.Text; string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString; SqlConnection connection=new SqlConnection(connString); if (userid = null | userid.Trim().Equals("") MessageBox.Show("请输入用户名!","提示"); if (userpwd != qpwd) MessageBox.Show("密码不一致!", "提示"); else if (comboBox1 .Text .Trim ()="") MessageBox.Show("请输入用户权限!", "提示"); else string sql = String.Format("insert into UserBill values('0','1','2')", userid, userpwd,limit ); try connection.Open(); SqlCommand command = new SqlCommand(sql, connection); int a = (int)command.ExecuteNonQuery(); if (a > 0) MessageBox.Show("添加成功!", "提示"); else MessageBox.Show("添加失败!", "错误"); catch (Exception ex) MessageBox.Show(ex.Message, "保存失败!"); finally connection.Close(); private void button3_Click(object sender, EventArgs e) string userid = textBox1.Text; string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString; SqlConnection connection = new SqlConnection(connString); if (userid = null | userid.Trim().Equals("") MessageBox.Show("请输入用户名!", "提示"); string sql = String.Format("delete from UserBill where loginID=('0')", userid); try connection.Open(); SqlCommand command = new SqlCommand(sql, connection); int a = (int)command.ExecuteNonQuery(); if (a > 0) MessageBox.Show("删除成功!", "提示"); else MessageBox.Show("删除失败!", "错误"); catch (Exception ex) MessageBox.Show(ex.Message, "操作失败!"); finally connection.Close(); private void button4_Click(object sender, EventArgs e) string userid = textBox1.Text; string userpwd = textBox2.Text; string qpwd = textBox3.Text; string limit = comboBox1.Text; string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString; SqlConnection connection = new SqlConnection(connString); if (userid = null | userid.Trim().Equals("") MessageBox.Show("请输入用户名!", "提示"); if (userpwd != qpwd) MessageBox.Show("密码不一致!", "提示"); else string sql = String.Format("update UserBill set passWord=('0') where loginID=('1')", userpwd, userid); try connection.Open(); SqlCommand command = new SqlCommand(sql, connection); int a = (int)command.ExecuteNonQuery(); if (a > 0) MessageBox.Show("修改成功!", "提示"); else MessageBox.Show("修改失败!", "错误"); catch (Exception ex) MessageBox.Show(ex.Me