资源描述
手机销售信息管理系统 一、 设计目的 销售管理信息系统作为信息管理系统的一个分支,已逐渐成为企业信息化建设的重要组成部分,为企业管理分布在全国网点提供了一个功能强大,安装部署方便,使用成本低廉,操作简捷的实时销售管理系统,不仅能够促进销售业务的拓展,提高销售运作的效益,也为最终实现有效的“供应链管理”和更加广泛的“电子商务”奠定了基础。无论是一个销售公司还是一个销售商店,都有很多的销售数据需要管理,手工管理这些缤纷复杂的数据的方式已经不适应时代的潮流,实现数据规范化、自动化的电脑管理,是一个管理规范、运作高效的企事业单位的必然要求。所以为了实现各销售单位高效管理而设计这个手机销售信息管理系统。手机销售信息管理系统的设计与开发,从根本上解决整个商品销售流程中数据处理效率低,处理能力差等操作过程中表现出来的不足之处。方便对商品资料、销售业绩等进行高效的管理。使用该程序,管理层可以及时查询、管理商品,还可以对当前销售业绩进行一些统计,给出统计表格,以便全面掌握商品的销售情况。二、设计任务本系统主要考虑了最为普遍的销售管理需求 进货时入库登记,以便日后查看和统计进货情况。 销售时把相应数量的商品从现存商品库中减去,并记录于另一个销售库中,以便日后产看和统计销售信息。 是销售就难免会有顾客退货情况发生,因此还需建立一个相应的退货管理,把退回的货加入现存商品库,在从销售库中减去,进行退货登记。 还要能够随时查看各种信息表格,如员工信息、进货信息、销售信息、退货信息。 除了以上一些基本的需求外,实际公司用来进行决策和管理分析的数据才是用得最多的数据,因此还需要有一些相应的关于以上数据统计信息,如希望查看各个信息段(如果近日,本月,本年度)的进货和销售情况,以便以后的运作进行一个准确的预测和正确的决断。 为了调动员工的积极性,员工的薪水应该和他的销售情况挂上钩,因此还要能够准确查看各员工的销售情况,以便对他们的业绩进行考核和评比。这个系统是针对一般的销售公司都有的以上需求而设计的,可以有效的管理数据,主要功能有: 交易管理:进货登记管理、销售登记管理、退货登记管理; 进货统计管理:近日进货统计,本月进货统计、本季度进货统计、本年度进货统计; 销售统计管理:今日销售统计、本月销售统计、本季度销售统计、本年度销售统计; 员工的销售业绩的考核;三 、设计内容系统需求在系统开发上,我们选取的工具是Microsoft Visual Basic,数据库采用Microsoft SQL Server 2005 。本系统总体的功能是实现手机销售公司管理的系统化、规范化和自动化。主要功能有: 系统登陆:用户登陆、添加用户、修改密码、退出系统; 交易管理:进货登记、销售登记、退货登记进货登记包括进货厂商登记,如果是新的进货厂商,可以在此登记入库。进货和销售的主要交易都是在此进行,每次交易(包括进货,销售和退货)都需要对商品名、生产厂商、商品型号、单价、数量、总金额、交易日期、经手业务员编号等各项进行记录。 进货统计:今日进货统计、本月进货统计、本季度进货统计、本年度进货统计。其中每次进货统计都是统计都是按照进货厂商和进货金额顺序排列的。使用一个表格显示所选时间段的全部进货数据,包括进货编号、商品名、生产厂商、产品型号、单价、数量、总金额、进货日期、业务员编号等;再使用另一个表格显示分别从各个厂商进货的金额,还有一个文本框用于显示此时间段的总进货金额。 销售统计:今日销售统计、本月销售统计、本季度销售统计、本年度销售统计等。其次每次销售统计都是按产品厂商和销售金额顺序排列的,用户可以一目了然的看出各种型号的产品的销售额。使用一个表格显示所选时间段的全部销售数据,包括销售编号,商品名、生产厂商、产品型号、单价、数量、总金额、销售日期、业务员编号等;再使用一个表分别显示各个厂商产品的销售金额,还有一个文本框用于显示此时间段的总销售金额。 业绩查看:实现个员工销售情况的统计,可以一次性显示所有员工的销售情况,也可以根据员工的编号查看各个员工的销售情况。 查看数据表:实现各种数据表的浏览,包括进货表,销售表,退货表,员工表,进货厂商表。浏览时此数据表的所有信息全部显示。如果是员工信息或进货商信息有变化,还可以对员工表和进货商表进行修改,其他的表格则不能进行修改,防止有人制造假数据。系统功能设计模块对上述功能经行集中,分块,按照结构化程序的要求,进行分析,得到一下图: 员工表中包括商品编号,员工姓名,员工电话,员工地址等字段,具体员工表(如表1):employee(员工表)字段名数据类型说明员工编号varchar表示,自动标号,主键员工姓名varchar字段大小为8员工电话varchar字段大小为12员工地址varchar字段大小为50表1 现存货物表中包括商品编号,生产厂商,商品名,型号,价格,数量,总金额,进货年,进货月,进货日,业务员编号,商品配件等字段,具体现存货物表(如表2):Good(现存表)字段名数据类型说明商品编号varchar表示,自动标号,主键产品厂商varchar字段大小为20,外键商品名varchar字段大小为20型号varchar字段大小为20单价 Money货币型数量Numeric数值型 总金额Money货币型进货年Smallint短整型进货月Smallint短整型进货日Smallint短整型业务员编号Int整型表2 已售商品表中包括有商品编号,生产厂商,商品名,型号,单价,数量,总金额,销售年,销售月,销售日,业务员编号字段,顾客姓名,顾客x ,商品配件具体表格(如表3):Sell(已售商品表)字段名数据类型说明商品编号varchar表示,自动标号,主键产品厂商varchar字段大小为20,外键商品名varchar字段大小为20型号varchar字段大小为20单价 Money货币型数量Numeric数值型总金额Money货币型销售年Smallint短整型销售月Smallint短整型销售月Smallint短整型业务员编号Int整型表3 退货表中包括有商品编号,生产厂商,商品名,型号,单价,数量,总金额,退货年,退货月,退货日,业务员编号,顾客姓名,顾客x ,商品配件等字段,具体表格(如表4):Retreat(退货表)字段名数据类型说明商品编号varchar表示,自动标号,主键产品厂商varchar字段大小为20,外键商品名varchar字段大小为20型号varchar字段大小为20单价 Money货币型数量Numeric数值型总金额Money货币型退货年Smallint短整型退货月Smallint短整型退货日Smallint短整型业务员编号Int整型表4 进货表中包括有厂商编号,厂商名称,法人代表,电话,厂商地址,商品名,商品配件,型号,单价,数量,总金额等字段,具体表格(如表5):Manufacturer(厂商)字段名数据类型说明厂商编号varchar标识,自动编号,主键厂商名称Nvarchar唯一约束,字段大小为20法人代表Nvarchar字段大小为10厂商地址Nvarchar字段大小为100商品名Nvarchar字段大小为20型号Nvarchar字段大小为20单价 Money货币型数量Numeric数值型总金额Money货币型进货年Smallint短整型进货月Smallint短整型进货日Smallint短整型表5 用户表中包括编号,用户名,密码等字段,具体表格(如表6):User(用户表)字段名数据类型说明用户编号varchar标识用户名Nvarchar字段大小为10密码Nvarchar字段大小为10表6数据库设计的主要任务是在DBMS(database management system)的支持下,按照应用的要求,数据结构的好坏将直接影响到系统的效率以及实现的效果。好的数据库结构会减少数据库的存储量、冗余度,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于数据库的应用程序的实现方法等。实体具体的描述如下:sell生产厂商商品名型号商品编号数量总金额销售日期单价业务员编号生产厂商goods总金额业务员编号数量进货日期单价商品编号型号商品名Manufacturer商表厂商编号厂商名称法人代表电话厂商地址employeeyee员工姓名员工编号员工地址员工电话卖退货退货进货NMMNRetreat业务员编号退货时间总金额厂商商品名单价型号 退货编号数量MNMNE-R图对应的关系图如下:四、 测试与评价 整个系统测试的时候出现了很多的问题其中最关键的是连接数据的问题,前期数据基本准备妥当,在连接过程中却出现找不到数据源等类似的错误,经过反复测试,原来是忘记配置数据源。连接数据库窗口:连接数据库窗口使用windows身份登陆在做连接数据窗口的时候里面的代码做出了很大的努力,提供了两种连接数据库的方式,在此采用的是用windows身份登陆可以免去输入用户名与密码的麻烦。销售登记实现窗口:在此功能基本实现了一个手机销售登记的模块,主要对库存手机实现一个销售登记的作用,实现对已售货物表的一个修改。此功能的实现,可以对客户的售后服务起到一个保障作用。查看业绩实现窗口:此功能实现的是员工的销售额统计,员工过多的话可以采用查询单个员工号进行查看。此项功能主要实现对员工销售额的统计,也是整个公司的业绩财务报表,通过此表可以更完善的发放员工的工资待遇。五、 结论通过对手机销售信息管理系统的设计与开发,从根本上解决整个商品销售流程中数据处理效率低,处理能力差等操作过程中表现出来的不足之处。整个手机销售信息管理系统方便了对商品资料、销售业绩等进行高效的管理。通过对手机销售信息管理系统的分析,设计,到最后的实现,基本上实现了系统预定的功能及需求。在系统分析阶段,预定系统的主要功能有登录系统,进货统计,销售统计,交易管理,业绩查看及查看数据表等六大主要模块。其中最难解决的是交易管理模块,包括进货登记,销售登记及退货登记管理。在实现这些功能中,遇到了许多的关系模块之间的联系问题,通过大量的翻阅书籍最终得以实现整个手机管理信息系统。这次课程设计做的是手机销售信息管理系统,这是第一次接触到如此系统的设计,也是第一次接触到这么难的设计。由于第一次接触,在开发过程中可谓是困难重重,不知如何入手,不得不重回书本,通过翻阅大量的资料,和同学们一起讨论,慢慢的有了一点点头绪,仔细的分析题目,分析材料,在原由的基础上进行了改正,我最后还是运行成功了,虽然还是经过了一翻努力,当然汗水还是留的很值,这次课程设计,不仅让我对软件工程这门课程有了更深入的研究、对很多重要的概念有了巩固和掌握,还给了我今后做事的启示。做事要塌实,不能想着一步登天,要有计划,有目的的进行做事。盲目真的不应该再在我们新一代的大学生身上出现了,我们应该认真找到自己的缺点并且及时改正。 六、 致谢在这次的开发当中,可谓是困难重重,由于在此之前都从未接触过此类系统开发,所以很多的细节都未曾注意,导致后期出现了许多的不可预见性的错误。最后在同学们和老师的帮助下,将问题一个一个解决,特别是在彭老师的帮助下,将那些细节问题一一解决。在此我要特别感谢帮助过我的同学以及彭老师的帮助,谢谢。附录 源代码清单:连接数据库窗口代码:Private Sub cmdCancel_Click() Unload MeEnd SubPrivate Sub cmdConnect_Click() If OptionWindows.Value = True Then windows身份验证方式 connStr = Provider=SQLOLEDB.1;Integrated Security=SSPI; _ + Persist Security Info=False;Initial Catalog= + Trim(cmbDatabase.Text) _ + ;Data Source= + Trim(cmbServer.Text) Else SQL Server身份验证方式 connStr = Provider=SQLOLEDB.1;Persist Security Info=False;User ID= _ + Trim(txtUser.Text) + ;Password= + Trim(txtPassword.Text) _ + ;Initial Catalog= + Trim(cmbDatabase.Text) + ;Data Source= _ + Trim(cmbServer.Text) End If On Error GoTo errConnect If conn.State = adStateOpen Then End If connStr MsgBox 连接数据库成功!, vbOKOnly + vbExclamation, 提示 显示登录窗体 Unload Me Exit SuberrConnect: MsgBox Err.Description, vbOKOnly + vbExclamation, 提示End SuPrivate Sub Form_Load() 让窗体居中 Call MakeCenter(Me)End SubPrivate Sub OptionSqlServer_Click() If OptionSqlServer.Value = True Then lblUser.Enabled = True lblPassword.Enabled = True txtUser.Enabled = True txtPassword.Enabled = True End IfEnd SubPrivate Sub OptionWindows_Click() If OptionWindows.Value = True Then lblUser.Enabled = Falsed = False txtUser.Enabled = False txtPassword.Enabled = False End IfEnd Sub销售登记代码:Private Sub cmdReset_Click()t = txtFc.Text = txtType.Text = txtPrice.Text = txtQuantity.Text = xt = txtmon.Text = txtday.Text = txtem.Text = txtmoney.Text = End SubPrivate Sub cmdSell_Click() txtGoodsNo.Enabled = False If txtFc.Text = Then MsgBox 请填写厂商名称!, vbOKOnly + vbInformation, 注意ocus Exit Sub ElseIf txtName.Text = Then MsgBox 请填写商品名称!, vbOKOnly + vbInformation, 注意 Exit Sub ElseIf txtType.Text = Then MsgBox 请填写商品型号!, vbOKOnly + vbInformation, 注意 txtTyp Exit Sub ElseIf txtPrice.Text = Then MsgBox 请填写商品价格!, vbOKOnly + vbInformation, 注意 Exit Sub ElseIf txtQuantity.Text = Then MsgBox 请填写商品数量!, vbOKOnly + vbInformation, 注意 Exit Sub ElseIf txtyear.Text = Then MsgBox 请填写销售年份!, vbOKOnly + vbInformation, 注意 txtyear.SetFocus Exit Sub ElseIf txtmon.Text = Then MsgBox 请填写销售月份!, vbOKOnly + vbInformation, 注意 Exit Sub ElseIf txtday.Text = Then MsgBox 请填写销售日!, vbOKOnly + vbInformation, 注意 txtday.SetFocus Exit Sub ElseIf txtem.Text = Then MsgBox 请填写业务员姓名!, vbOKOnly + vbInformation, 注意 Exit Sub ElseIf txtmoney.Text = Then MsgBox 请填写总金额!, vbOKOnly + vbInformation, 注意 txtm Exit Sub End If Dim sqlcheck As String sqlcheck = select * from goods where 商品名= & txtName.Text & _ and 生产厂商= & txtFc.Text & and 型号= & txtType.Text & cation = adUseClient 设定游标类型 rs_check.Open sqlcheck, conn, adOpenKeyset, adLockPessimistic If rs_check.EOF = True Then MsgBox 对不起,此商品型号已无货!请选择其他型!, vbOKOnly + vbInformation, 注意 Exit Sub(5) Val(txtQuantity.Text) Then MsgBox 此型号商品不足!, vbOKOnly + vbInformation, 注意 Exit Sub End If Dim sqlsell As String sqlsell = select * from sell rs_add.Open sqlsell, conn, adOpenKeyset, adLockPessimistic 添加入销售表 rs rs_add.Fields(5) = Val(txtQuantity.Text) rs_add.Fields(6) = Val(txtmoney.Text) rs 从现存商品表中减去 Dim oldquantity As Long 用于存放goods表中原来的此商品数量 Dim oldmoney As Long 用于存放goods表中原来的此商品进货总额 oldquantity = rs_check.Fields(5) oldmoney = rs_check.Fields(6) rs_check.Fields(5) = oldquantity - Val(txtQuantity.Text) rs_check.Fields(6) = oldmoney - (rs_check.Fields(4) * Val(txtQuantity.Text) MsgBox 销售成功!, vbOKOnly + vbExclamation, 注意End SubPrivate Sub Form_Load() 让窗体居中 Call MakeCenter(Me)End Sub业绩查询代码:Private Sub cmdallem_Click() allem = True Call ShowGradeEnd SubPrivate Sub cmdCancel_Click() Unload MeEnd SubPrivate Sub cmdquery_Click() allem = False Call ShowGradeEnd SubPrivate Sub Form_Load() 让窗体居中 Call MakeCenter(Me) Adodc1.ConnectionString = connStr allem = True Call ShowGradeEnd SubPrivate Sub ShowGrade() If allem = False Then Dim strsql As String 下面的sql语句从sell表和employee表中显示特定员工号的员工号,员工姓名 并以员工号和员工姓名分组合计销售总额并显示之。 strsql = select 业务员编号,员工姓名,sum(总金额) as 销售总金额 _ & from sell,employee where sell.业务员编号=employee.员工编号 _ & and employee.员工编号 = & frmShowGrade.txtNo.Text _ & group by 业务员编号,员工姓名 rs_check.Open strsql, conn, adOpenKeyset, adLockPessimistic Adodc1xmandType = adCmdText Adodc1.RecordSource = strsql If rs_check.EOF = True Then MsgBox 此员工号不存在!, vbOKOnly + vbInformation, 注意 Unload Me Exit Sub End If Else strsql = select 业务员编号,员工姓名,sum(总金额) _ & as 销售总金额 from sell,employee where sell.业务员编号 _ & =employee.员工编号 group by 业务员编号,员工姓名 rs_check.CursorLocation = adUseClient rs_check.Open strsql, conn, adOpenKeyset, adLockPessimistic Adodc1xmandType = adCmdText Adodc1.RecordSource = strsql End If DataGrid1.AllowAddNew = False 不可增加 DataGrid1.AllowDelete = False 不可删除 DataGrid1.AllowUpdate = FalseEnd Sub4.26.202208:4908:49:1922.4.268时49分8时49分19秒4月. 26, 2226 四月 20228:49:19 上午08:49:192022年4月26日星期二08:49:19
展开阅读全文