超市销售信息管理系统分析与设计 【摘要】根据目前超市管理方面的有关超市进货、销售、库存管理等内容,对这一系列的问题提出分析和讨论,有效的管理是信息化项目成功的必要条件。但是中小企业IT项目的实施情况一直很不乐观,面临着大量的困难和问题,主要体现在企业管理者感到毫无经验和把握、需求描述不清、项目满意度差、项目经常延期和超支、忽视培训和维护等方面。本超市管理系统本系统使用可视化编程语言编写,采用自上而的设计方法,以Windows2000为平台采用java和jsp语言编写程序与mysql作为后台数据库,有效的保证了系统兼容性和可扩展性,客户端操作采用图形化操作界面,简单实用。 【关键词】 信息化 系统分析 数据库 管理 系统设计
目 录 1 绪论 1.1 课题研发的目的与意义 1.2 可行性分析 2 系统需求分析 2.1 系统介绍 2.2 业务流程分析 3 系统设计 3.1 系统简介 3.2 系统总体结构设计 3.3 系统数据库设计 3.4 界面设计 4 基本信息查询模块 4.1 建立通用信息查询模块 4.2 建立商品查询、更新窗体界面 4.3 代码编写要点 5 数据录入模块录入窗体 5.1 建立商场日销售数据录入窗体 5.2 调用窗体代码 5.3 系统部分代码的编写 6 权限管理与软件维护 6.1 建立操作员权限管理窗体 6.2 建立数据维护窗体 7 软件的使用方法 8 结 论
一、 绪论 1.1 课题研发的目的与意义 计算机已经成为我们学习和工作的得力助手: 今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面: 首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多资源; 第三,计算机可以大大的提高人们的工作效率; 第四,计算机可以使敏感文档更加安全,等等。 1.2 可行性分析 以前我国的超市销售管理水平没有建立在计算机应用的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。我作为一个计算机应用的专科生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我三年的所学编制出一实用的程序来帮助超市进行更有效的销售管理。归纳起来,好处大约有以下几点: (1) 可以存储过去的商品信息、资料,安全、高效。 (2) 只需要少量的操作人员即可操作系统,节省大量人力。 (3) 可以迅速查到所需信息。
二、系统需求分析 2.1 系统介绍 1. 适用于目前所有远程网络通讯连接方式。 2. 企业总部和各个分支机构操作业务引起库存数据变化的实时反应。 3. 数据在网络上安全的传送。 4. 由于软件集中使用,降低了应用系统总体成本。 5. 由于软件集中使用,降低了系统升级和维护成本。 商品超市管理系统主要包括以下四大功能模块:1、信息查询模块,2、进销存管理模块,3、系统管理模块。其中资料管理模块包括:基础资料。进销存管理模块包括:采购管理 、销售管理 、盘点管理 、库存管理。 2.2 业务流程分析 往来管理的业务发生比较频繁,采购商品、销售商品、收付款和退货时都会发生相应的应收账款或应付账款。采购商品时和销售商品时发生的业务具有很大的相似性,库存部门的商品采购入库单、商品销售出库单、商品采购退货出库单和商品销售退货入库单,采购部门的付款单和销售部门的收款单送给往来部门进行处理,往来部门根据这些单据编制记账凭证,然后对凭证进行严格审核来检查凭证的各项描述和原始单据是否一致,经审核合格后分别登入到应收明细汇总账和应付明细汇总账,同时可以对应收账款和应付账款进行账龄分析,形成账龄分析表。在录入记账凭证时,对凭证进行日记账管理,通过日记账可以对一定会计期间的现金日记账进行查询。商业超市在现金银行管理中进行存取款后直接保存到记账凭证中,进行相关的业务处理。
三、系统设计 3.1 系统简介 根据实际情况,我们使用数据库快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,只要建立几个相互比较独立的表,对系统模型作连接,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。 例如:
3.2 系统总体结构设计 总体设计主要是系统模块结构设计。系统模块结构设计的任务是划分子系统,然后确定子系统的模块结构,并画出模块结构图。在这个过程中必须考虑以下几个问题:如何将一个系统划分成多个子系统;每个子系统如何划分成多个模块;如何确定子系统之间、模块之间传送的数据及其调用关系;如何评价并改进模块结构的质量。
3.3 系统数据库设计 针对一般小型超市后台管理系统的需求,通过对学习过程的内容和数据流程分析,主要完成的功能有:商品基本信息维护、进货管理、销售管理、报损管理等,心及这一系列过程中涉及商品的数据修改与查询统计等多种操作。在这里将系统数据库建立命名为H。商品信息表(商品编号,商品名称,价格,条形码,促销价格,促销起日期,促销止日期,允许打折,库存数量,库存报警数量,计划进货数,允许销售,厂商编号,供货商编号) 用户表(用户编号,用户名称,用户密码,用户类型) 会员表(会员编号,会员卡号,累积消费金额,注册日期) 销售表(销售编号,商品编号,销售数量,销售金额,销售日期) 交易表(交易编号,用户名称,交易金额,会员卡号,交易日期) 进货入库表(入库编号,入库商品编号,入库数量,单额,总额,入库 日期,计划进货日期,入库状态) 供货商表(供货商编号,供货商名称,供货商地址,供货商电话) 厂商表(厂商编号,厂商名称,厂商地址,厂商电话) 四、基本信息查询模块 4.1 建立通用信息查询模块 此模块主要是用来查询商品的信息,如:销售数量、商品剩余数量、进货数量等等;该模块用JAVA语言做操作界面,并用SQL2000用做存储的数据库。然后将其二者连接起来,就可以实现该模块的功能,在对商品的数量和一些其他3的基本信息更确切的了解;从而实现对商品的更好的管理。把该信息查询模块命名为A。 4.2 建立商品查询、更新窗体界面 当商品的数量和信息发生改变时,此时应该改变相应的产品信息,如:数量、价格、是否是促销或是打折产品等等;就应当及时的改变窗体中的内容是销售人员或是其它人员能够及时的了解到产品的当时的信息。这些产品的信息都是存储在数据库中要通过数据库的关联来实现这些功能,让这些产品信息在窗体中及时的显示给有关人员。在跨线程更新窗体的成员方法中应用如下结构:delegate void UpdateControlCallback (int x,int y);public void UpdataControl(int x,int y){ if(this.InvokeRequired) { UpdataControlCallback d=new UpdataControlCallback(UpdataControl); this.Invoke(d,new object[]{x,y}); } else { some code... } }4.3 代码编写要点 在代码编写的过程中要注意到各个方面,如 : 程序设计语言结构化程序设计程序设计风格程序复杂性度量从语言的内在特征来看,高级语言可分为系统实现语言、静态高级语言、块结构高级语言 和动态高级语言。 语言的选择:1.应用领域的不同决定选择的语言2.系统用户的要求决定3.可以使用的编译程序4.程序员的经验和知识5.软件可移植性要求6.当工程规模很大时,而又没有完全合适的语言,可编一个专用的语言。7。算法与计算复杂性、软件的可靠性8.数据结构的复杂性,软件的可维护性9.效率的考虑10.了解语言的发展前景总之,选择语言的原则为:最少的工作量原则最少技巧性原则最少错误原则最少维护原则减少记忆原则二 好程序标准 1.易于测试和调试 2.易于维护 3.易于修改 4.设计简单 5.高效率
五、数据录入模块录入窗体 5.1 建立商场日销售数据录入窗体 在建立录入商场销售数据的窗体过程中,要涉及到商品的一些特有的属性,如:商品名称、商品的价格,及当天的销售日期等等。这样可以保证类似的商品不相混淆,各种商品之间有明显的划分界限;才能使工作人员在录入过程中不容易出错,当商品录的过程中商品的价格也随之而定,一但出错直接会影响商品的销售,或者影响到商家的利益。通过JAVA编写的人机界面把商品信息录入到数据库中去,进而把信息储存在计算机中。 5.2 调用窗体代码 在各个功能模块完成之后,下一步就是在主界面的设计;在界面中添加功能标签也就是各个模块的功能,用JAVA语言来实现该功能是很容易做到的。即把功能模块A、B、C...与主界面连为一个整体。而数据库模块H也与之相对应的模块相连接,一个完整功能软件就基本形成了。 5.3 系统部分代码编写 本系统的登陆界面部分代码设计如下: 初始密码:admin 用户名:admin private void loginbutt_Click(object sender, System.EventArgs e) { for (int i=0;i<LogTable.Rows.Count;i++) { this.LogRow = LogTable.Rows[i]; //只有当输入的用户名和密码同时对应上数据库中记录时,才能通过校验 if (LogRow[1].ToString().Trim()==this.UserNameTxt.Text.ToString().Trim() && LogRow[2].ToString().Trim()==this.PwdTxt.Text.ToString().Trim()) { CanLogin = true; strUser = LogRow[1].ToString().Trim();//保存用户名 strUserRole = LogRow[3].ToString().Trim();//保存用户权限 strUserId=LogRow[0].ToString().Trim();//保存用户ID号 this.Close();//关闭窗体 return; } } MessageBox.Show( "您输入的用户号或密码不正确!"); return; } [STAThread] static void Main() { //整个程序启动时先显示登录框,登录成功再显示主界面 Login log = new Login(); log.ShowDialog(); if (Login.CanLogin==true) { Application.Run(new MainFrm()); } } 密码修改模块界面,密码修改模块主要代码: try { if(this.PwdTxt.Text==this.ConfPwdTxt.Text) { cn.Open(); SqlCommand cmd=cn.CreateCommand(); cmd.CommandText="update Syuser Set UserPW='"+PwdTxt.Text.ToString().Trim()+"'"+"where UserId='"+Login.strUserId+"'";// 更新记录 cmd.ExecuteNonQuery(); MessageBox.Show("修改成功!", "提示", MessageBoxButtons.OK); } else { MessageBox.Show("输入错误请重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } }catch(Exception ex){} 超市进货管理模块界面 超市进货管理模块主要代码: if (e.Button.ToolTipText == "首记录") { this.FinishStockDGrid.UnSelect(FinishStockCurrenAmend.Position); //取消选中指定行 FinishStockCurrenAmend.Position = 0; this.FinishStockDGrid.Select(FinishStockCurrenAmend.Position); //选中指定行 this.FinishStockDGrid.CurrentRowIndex = FinishStockCurrenAmend.Position; //移动表头指示图标 return; } if (e.Button.ToolTipText == "上一记录") { if (FinishStockCurrenAmend.Position > 0) { this.FinishStockDGrid.UnSelect(FinishStockCurrenAmend.Position); FinishStockCurrenAmend.Position--; this.FinishStockDGrid.Select(FinishStockCurrenAmend.Position); this.FinishStockDGrid.CurrentRowIndex = FinishStockCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "下一记录") { if (FinishStockCurrenAmend.Position < FinishStockCurrenAmend.Count-1) { this.FinishStockDGrid.UnSelect(FinishStockCurrenAmend.Position); FinishStockCurrenAmend.Position++; this.FinishStockDGrid.Select(FinishStockCurrenAmend.Position); this.FinishStockDGrid.CurrentRowIndex = FinishStockCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "尾记录") { if(FinishStockCurrenAmend.Count>0) { this.FinishStockDGrid.UnSelect(FinishStockCurrenAmend.Position); FinishStockCurrenAmend.Position = FinishStockCurrenAmend.Count-1; this.FinishStockDGrid.Select(FinishStockCurrenAmend.Position); this.FinishStockDGrid.CurrentRowIndex = FinishStockCurrenAmend.Position; return; } } if (e.Button.ToolTipText == "新记录") { FinishStockCurrenAmend.AddNew(); return; } if (e.Button.ToolTipText == "删除记录") { if (MessageBox.Show(" 确实要删除这条记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes) { try { if (FinishStockCurrenAmend.Count > 0) FinishStockCurrenAmend.RemoveAt(FinishStockCurrenAmend.Position); 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.EditStockNumTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("进货数量不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditStockPriceTxt.Text.Trim()=="") { MessageBox.Show("商品单价不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditStockSumTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("总额不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditStockDateTxt.Text.Trim()=="") { MessageBox.Show("进货日期不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditStockManTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("经手人数量不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.StaticcomboBox.Text.Trim()=="") { MessageBox.Show("是否完成不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } FinishStockCurrenAmend.EndCurrentEdit();//结束当前编辑操作并提交修改 if (FinishStockdtable.GetChanges() != null) { try { this.FinishStocksqlDataAdapter.Update(FinishStockdtable); } catch(Exception express) { MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); this.FinishStockdtable.RejectChanges(); } } 超市销售管理模块界面,商品销售模块主要代码: if (e.Button.ToolTipText == "首记录") { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); //取消选中指定行 SaleCurrenAmend.Position = 0; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); //选中指定行 this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; //移动表头指示图标 return; } if (e.Button.ToolTipText == "上一记录") { if (SaleCurrenAmend.Position > 0) { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); SaleCurrenAmend.Position--; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "下一记录") { if (SaleCurrenAmend.Position < SaleCurrenAmend.Count-1) { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); SaleCurrenAmend.Position++; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "尾记录") { if(SaleCurrenAmend.Count>0) { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); SaleCurrenAmend.Position = SaleCurrenAmend.Count-1; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; return; } } if (e.Button.ToolTipText == "新记录") { SaleCurrenAmend.AddNew(); this.strSqlConnection = "select top 1 * from sale order by saleId desc";// order by SaleId"; this.MerchsqlDataAdapter=new SqlDataAdapter(this.strSqlConnection,this.MerchConnection); this.MerchsqlDataAdapter.Fill(Sale1dtable); if(Sale1dtable.Rows.Count>0) { this.XSDId = Sale1dtable.Rows[0][7].ToString().Trim(); this.XSId= Sale1dtable.Rows[0][0].ToString().Trim(); } else { MessageBox.Show("还没有销售记录!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } this.SaletableIdTxt.Text = (float.Parse(XSDId)+1).ToString(); this.SaleIdTxt.Text = (float.Parse(XSId)+1).ToString(); this.PaywayTxt.SelectedIndex = 0; this.SaleManTxt.Text = Login.strUserId; return; } if (e.Button.ToolTipText == "删除记录") { if (MessageBox.Show(" 确实要删除这条记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes) { try { if (SaleCurrenAmend.Count > 0) SaleCurrenAmend.RemoveAt(SaleCurrenAmend.Position); 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.MerchIdTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("商品编号不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.SaleDateTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("销售日期不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.SaleNumTxt.Text.Trim()=="") { MessageBox.Show("销售数量不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.PaywayTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("支付方式不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } SaleCurrenAmend.EndCurrentEdit();//结束当前编辑操作并提交修改 if (Saledtable.GetChanges() != null) { try { this.SalesqlDataAdapter.Update(Saledtable); } catch(Exception express) { MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); this.Saledtable.RejectChanges(); } } return; } if (e.Button.ToolTipText == "取消修改") { try { SaleCurrenAmend.CancelCurrentEdit(); //取消编辑 } catch(Exception express) { MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); } return; } if (e.Button.ToolTipText == "退出") { this.Close(); } 销售信息录入信息管理界面,销售信息录入管理模块主要代码: if (e.Button.ToolTipText == "首记录") { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); //取消选中指定行 SaleCurrenAmend.Position = 0; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); //选中指定行 this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; //移动表头指示图标 return; } if (e.Button.ToolTipText == "上一记录") { if (SaleCurrenAmend.Position > 0) { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); SaleCurrenAmend.Position--; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "下一记录") { if (SaleCurrenAmend.Position < SaleCurrenAmend.Count-1) { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); SaleCurrenAmend.Position++; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "尾记录") { if(SaleCurrenAmend.Count>0) { this.InputSaledataGrid.UnSelect(SaleCurrenAmend.Position); SaleCurrenAmend.Position = SaleCurrenAmend.Count-1; this.InputSaledataGrid.Select(SaleCurrenAmend.Position); this.InputSaledataGrid.CurrentRowIndex = SaleCurrenAmend.Position; return; } } if (e.Button.ToolTipText == "新记录") { SaleCurrenAmend.AddNew(); this.strSqlConnection = "select top 1 * from sale order by saleId desc";// order by SaleId"; this.MerchsqlDataAdapter=new SqlDataAdapter(this.strSqlConnection,this.MerchConnection); this.MerchsqlDataAdapter.Fill(Sale1dtable); if(Sale1dtable.Rows.Count>0) { this.XSDId = Sale1dtable.Rows[0][7].ToString().Trim(); this.XSId= Sale1dtable.Rows[0][0].ToString().Trim(); } else { MessageBox.Show("还没有销售记录!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } this.SaletableIdTxt.Text = (float.Parse(XSDId)+1).ToString(); this.SaleIdTxt.Text = (float.Parse(XSId)+1).ToString(); this.PaywayTxt.SelectedIndex = 0; this.SaleManTxt.Text = Login.strUserId; return; } if (e.Button.ToolTipText == "删除记录") { if (MessageBox.Show(" 确实要删除这条记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes) { try { if (SaleCurrenAmend.Count > 0) SaleCurrenAmend.RemoveAt(SaleCurrenAmend.Position); 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.MerchIdTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("商品编号不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.SaleDateTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("销售日期不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.SaleNumTxt.Text.Trim()=="") { MessageBox.Show("销售数量不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.PaywayTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("支付方式不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } SaleCurrenAmend.EndCurrentEdit();//结束当前编辑操作并提交修改 if (Saledtable.GetChanges() != null) { try { this.SalesqlDataAdapter.Update(Saledtable); } catch(Exception express) { MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); this.Saledtable.RejectChanges(); } } return; } if (e.Button.ToolTipText == "取消修改") { try { SaleCurrenAmend.CancelCurrentEdit(); //取消编辑 } catch(Exception express) { MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); } return; } if (e.Button.ToolTipText == "退出") { this.Close(); }
库存信息管理界面,库存信息管理模块主要代码: if (e.Button.ToolTipText == "首记录") { this.MerchInfodataG.UnSelect(MerchCurrenAmend.Position); //取消选中指定行 MerchCurrenAmend.Position = 0; this.MerchInfodataG.Select(MerchCurrenAmend.Position); //选中指定行 this.MerchInfodataG.CurrentRowIndex = MerchCurrenAmend.Position; //移动表头指示图标 return; } if (e.Button.ToolTipText == "上一记录") { if (MerchCurrenAmend.Position > 0) { this.MerchInfodataG.UnSelect(MerchCurrenAmend.Position); MerchCurrenAmend.Position--; this.MerchInfodataG.Select(MerchCurrenAmend.Position); this.MerchInfodataG.CurrentRowIndex = MerchCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "下一记录") { if (MerchCurrenAmend.Position < MerchCurrenAmend.Count-1) { this.MerchInfodataG.UnSelect(MerchCurrenAmend.Position); MerchCurrenAmend.Position++; this.MerchInfodataG.Select(MerchCurrenAmend.Position); this.MerchInfodataG.CurrentRowIndex = MerchCurrenAmend.Position; } return; } if (e.Button.ToolTipText == "尾记录") { if(MerchCurrenAmend.Count>0) { this.MerchInfodataG.UnSelect(MerchCurrenAmend.Position); MerchCurrenAmend.Position = MerchCurrenAmend.Count-1; this.MerchInfodataG.Select(MerchCurrenAmend.Position); this.MerchInfodataG.CurrentRowIndex = MerchCurrenAmend.Position; return; } } if (e.Button.ToolTipText == "新记录") { MerchCurrenAmend.AddNew(); return; } if (e.Button.ToolTipText == "删除记录") { if (MessageBox.Show(" 确实要删除这条记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes) { try { if (MerchCurrenAmend.Count > 0) MerchCurrenAmend.RemoveAt(MerchCurrenAmend.Position); 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.EditMerchIdTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("商品编号不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditMerchNameTxt.Text.Trim()=="") { MessageBox.Show("商品名称不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditMerchPriceTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("价格不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditMerchStockTxt.Text.Trim()=="") { MessageBox.Show("库存数量不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditWaringTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("库存报警数量不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditPlanStockAddsTxt.Text.Trim()=="") { MessageBox.Show("计划进货数不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditGetoffCmb.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("允许打折不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.EditSaleCmb.Text.Trim()=="") { MessageBox.Show("允许销售不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } 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) { &n, bsp; MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); this.Merchdtable.RejectChanges(); } } return; } if (e.Button.ToolTipText == "取消修改") { try { MerchCurrenAmend.CancelCurrentEdit(); //取消编辑 } catch(Exception express) { MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); } return; } 用户管理模块管理界面 ,用户管理模块主要代码: private void DataGridStateControl() { DataGridTableStyle ts = new DataGridTableStyle(); ts.AlternatingBackColor = Color.LightGray; ts.MappingName = DGtable.TableName; ts.AllowSorting = false;//不允许进行排序 this.UserdGrid.TableStyles.Add(ts); this.UserdGrid.Select(0);//选定第一列 } private void DelUserbutt_Click(object sender, System.EventArgs e) { if (MessageBox.Show("确实要删除这条记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes) { try { if (UserAmend.Count > 0) UserAmend.RemoveAt(UserAmend.Position); else { MessageBox.Show("没有可以删除的数据","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); } } catch(Exception express) { MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error); } return; } } private void UserdGrid_CurrentCellChanged(object sender, System.EventArgs e) { if(this.DGtable.Rows.Count>0) { int currRow = this.UserdGrid.CurrentCell.RowNumber; if(currRow>=0 && currRow<UserAmend.Count) UserAmend.Position = currRow; } } private void AddUserbutt_Click(object sender, System.EventArgs e) { try { AddUser AUser =new AddUser(); AUser.Show(); } catch(Exception Ex) { MessageBox.Show(Ex.ToString()); } } private void SubEditButt_Click(object sender, System.EventArgs e) { if (this.UserIdTxt.Text.Trim() == "")//检查不能为空的字段 { MessageBox.Show("用户编号不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.UserNameTxt.Text.Trim()=="") { MessageBox.Show("用户姓名不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (this.RoleList.Text.Trim()=="") { MessageBox.Show("用户权限不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } UserAmend.EndCurrentEdit();//结束当前编辑操作并提交修改 if (DGtable.GetChanges() != null) { try { this.UserMagsqlDataAdapter.Update(DGtable); } catch(Exception express) { MessageBox.Show(express.ToString(),"",MessageBoxButtons.OK,MessageBoxIcon.Error); this.DGtable.RejectChanges(); } } return; } private void CancelEdit_Click(object sender, System.EventArgs e) { try { UserAmend.CancelCurrentEdit(); //取消编辑 } catch(Exception express) { MessageBox.Show(express.ToString(),"",MessageBoxButtons.OK,MessageBoxIcon.Error); } return; } private void Refbutt_Click(object sender, System.EventArgs e) { //UserAmend.Refresh(); DGtable.Clear(); this.UserMagsqlDataAdapter.Fill(DGtable); this.UserdGrid.DataSource = DGtable.DefaultView; }
六、权限管理与软件维护 6.1 建立操作员权限管理窗体 为了软件使用安全不被他人盗用以及不同身份的人都产品的了解的信息是不同如收货员只知道商品的价格即可,而老板则需要掌握更多的信息;为了保证软件的这些功能就需要为该软件设置一些不同的使用权限,从而在软件中就要加入一个软件使用安全的模块。 6.2 建立数据维护窗体 在这个窗体中实现一些对存储的数据能够自动处理的一些功能,如:删除一些繁琐的信息、能够处理数据库中的冗余度、有些数据在不同的权限中有的可以修改而有的则不能修改;所以这个窗体主要是为了整个软件的使用安全而设置的。
七、软件的使用方法 本软件分以下几个步骤使用: 第一步:建立基本信息,在《基本信息》菜单中,分别建立商品、往来单位(包括供货商、用户等)等等8类基本信息。这些信息将长期保留在电脑里,供您日后直接选用。您可以对商品库、往来单位库作多级分类,把数据安排得更合理、简明。 第二步:对该软件进行定期的维护,该软件数据库对数据的容纳量是有一定的限度的,当数据过度超过了数据库的最大负荷,有可能导致数据库瘫痪或者遭成运行速度过慢或者死机等现象。 第三步:对电脑进行定期的杀毒以便维护该软件健康的运行。
八、结 论 基于先进的计算机技术开发的商业超市管理信息系统可以帮助商业超市改变落后的经营模式,并且可以使管理层及时、合理地进行管理和决策。因此设计开发的商业超市管理信息系统应顺应社会发展的潮流。本次毕业设计主要负责商业超市管理信息系统中的管理子系统的设计与实现。主要是对应收账款和应付账款进行管理。从而提高企业的经济效益。 本文对商业超市管理信息系统中的管理子系统的设计与开发过程进行详细说明:首先,对管理子系统进行介绍;然后,通过对系统进行分析,描述了系统的业务流程与系统的数据流程;在系统分析的基础上进行系统设计,主要完成了系统模块功能划分、数据库设计、输入输出设计和界面设计。最后经过软硬件环境的准备和各种工具的支持实现了系统的实施。
参 考 文 献 薛华成. 管理信息系统 清华大学出版社 2005年4月第三版 谢希仁 计算机网络 电子工业出版社 2008年1月第一版 刘斌 java web整合开发 电子工业出版社 2007年10月初版