资源描述
手机销售信息管理系统
一、 设计目标
销售管理信息系统作为信息管理系统一个分支,已逐步成为企业信息化建设关键组成部分,为企业管理分布在全国网点提供了一个功效强大,安装布署方便,使用成本低廉,操作简捷实时销售管理系统,不仅能够促进销售业务拓展,提升销售运作效益,也为最终实现有效“供给链管理”和愈加广泛“电子商务”奠定了基础。不管是一个销售企业还是一个销售商店,全部有很多销售数据需要管理,手工管理这些缤纷复杂数据方法已经不适应时代时尚,实现数据规范化、自动化电脑管理,是一个管理规范、运作高效企机关肯定要求。所以为了实现各销售单位高效管理而设计这个手机销售信息管理系统。
手机销售信息管理系统设计和开发,从根本上处理整个商品销售步骤中数据处理效率低,处理能力差等操作过程中表现出来不足之处。方便对商品资料、销售业绩等进行高效管理。使用该程序,管理层能够立即查询、管理商品,还能够对目前销售业绩进行部分统计,给出统计表格,方便全方面掌握商品销售情况。
二、设计任务
本系统关键考虑了最为普遍销售管理需求
Ø 进货时入库登记,方便以后查看和统计进货情况。
Ø 销售时把对应数量商品从现存商品库中减去,并统计于另一个销售库中,方便以后产看和统计销售信息。
Ø 是销售就难免会有用户退货情况发生,所以还需建立一个对应退货管理,把退回货加入现存商品库,在从销售库中减去,进行退货登记。
Ø 还要能够随时查看多种信息表格,如职员信息、进货信息、销售信息、退货信息。
Ø 除了以上部分基础需求外,实际企业用来进行决议和管理分析数据才是用得最多数据,所以还需要有部分对应相关以上数据统计信息,如期望查看各个信息段(假如近日,本月,本年度)进货和销售情况,方便以后运作进行一个正确估计和正确决断。
Ø 为了调动职员主动性,职员薪水应该和她销售情况挂上钩,所以还要能够正确查看各职员销售情况,方便对她们业绩进行考评和评选。
这个系统是针对通常销售企业全部有以上需求而设计,能够有效管理数据,关键功效有:
Ø 交易管理:进货登记管理、销售登记管理、退货登记管理;
Ø 进货统计管理:近日进货统计,本月进货统计、本季度进货统计、本年度进货统计;
Ø 销售统计管理:今日销售统计、本月销售统计、本季度销售统计、本年度销售统计;
Ø 职员销售业绩考评;
三 、设计内容
系统需求在系统开发上,我们选择工具是Microsoft Visual Basic,数据库采取Microsoft SQL Server 。
本系统总体功效是实现手机销售企业管理系统化、规范化和自动化。关键功效有:
Ø 系统登陆:用户登陆、添加用户、修改密码、退出系统;
Ø 交易管理:进货登记、销售登记、退货登记
进货登记包含进货厂商登记,假如是新进货厂商,能够在此登记入库。进货和销售关键交易全部是在此进行,每次交易(包含进货,销售和退货)全部需要对商品名、生产厂商、商品型号、单价、数量、总金额、交易日期、经手员工编号等各项进行统计。
Ø 进货统计:今日进货统计、本月进货统计、本季度进货统计、本年度进货统计。其中每次进货统计全部是统计全部是根据进货厂商和进货金额次序排列。使用一个表格显示所选时间段全部进货数据,包含进货编号、商品名、生产厂商、产品型号、单价、数量、总金额、进货日期、员工编号等;再使用另一个表格显示分别从各个厂商进货金额,还有一个文本框用于显示此时间段总进货金额。
Ø 销售统计:今日销售统计、本月销售统计、本季度销售统计、本年度销售统计等。其次每次销售统计全部是按产品厂商和销售金额次序排列,用户能够一目了然看出多种型号产品销售额。使用一个表格显示所选时间段全部销售数据,包含销售编号,商品名、生产厂商、产品型号、单价、数量、总金额、销售日期、员工编号等;再使用一个表分别显示各个厂商产品销售金额,还有一个文本框用于显示此时间段总销售金额。
Ø 业绩查看:实现个职员销售情况统计,能够一次性显示全部职员销售情况,也能够依据职员编号查看各个职员销售情况。
Ø 查看数据表:实现多种数据表浏览,包含进货表,销售表,退货表,职员表,进货厂商表。浏览时此数据表全部信息全部显示。假如是职员信息或进货商信息有改变,还能够对职员表和进货商表进行修改,其它表格则不能进行修改,预防有些人制造假数据。
系统功效设计模块
对上述功效经行集中,分块,根据结构化程序要求,进行分析,得到一下图:
Ø 职员表中包含商品编号,职员姓名,职员电话,职员地址等字段,具体职员表(如表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
Ø 已售商品表中包含有商品编号,生产厂商,商品名,型号,单价,数量,总金额,销售年,销售月,销售日,员工编号字段,用户姓名,用户联络电话 ,商品配件具体表格(如表3):
Sell(已售商品表)
字段名
数据类型
说明
商品编号
varchar
表示,自动标号,主键
产品厂商
varchar
字段大小为20,外键
商品名
varchar
字段大小为20
型号
varchar
字段大小为20
单价
Money
货币型
数量
Numeric
数值型
总金额
Money
货币型
销售年
Smallint
短整型
销售月
Smallint
短整型
销售月
Smallint
短整型
员工编号
Int
整型
表3
Ø 退货表中包含有商品编号,生产厂商,商品名,型号,单价,数量,总金额,退货年,退货月,退货日,员工编号,用户姓名,用户联络电话 ,商品配件等字段,具体表格(如表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
职员姓名
职员编号
职员地址
职员电话
卖
退货
退货
进货
N
M
M
N
Retreat
员工编号
退货时间
总金额
厂商
商品名
单价
型号
退货编号
数量
M
N
M
N
E-R图对应关系图以下:
四、 测试和评价
整个系统测试时候出现了很多问题其中最关键是连接数据问题,前期数据基础准备妥当,在连接过程中却出现找不到数据源等类似错误,经过反复测试,原来是忘记配置数据源。
连接数据库窗口:连接数据库窗口使用windows身份登陆
在做连接数据窗口时候里面代码做出了很大努力,提供了两种连接数据库方法,在此采取是用windows身份登陆能够免去输入用户名和密码麻烦。
销售登记实现窗口:
在此功效基础实现了一个手机销售登记模块,关键对库存手机实现一个销售登记作用,实现对已售货物表一个修改。此功效实现,能够对用户售后服务起到一个保障作用。
查看业绩实现窗口:
此功效实现是职员销售额统计,职员过多话能够采取查询单个职员号进行查看。此项功效关键实现对职员销售额统计,也是整个企业业绩财务报表,经过此表能够更完善发放职员工资待遇。
五、 结论
经过对手机销售信息管理系统设计和开发,从根本上处理整个商品销售步骤中数据处理效率低,处理能力差等操作过程中表现出来不足之处。整个手机销售信息管理系统方便了对商品资料、销售业绩等进行高效管理。经过对手机销售信息管理系统分析,设计,到最终实现,基础上实现了系统预定功效及需求。在系统分析阶段,预定系统关键功效有登录系统,进货统计,销售统计,交易管理,业绩查看及查看数据表等六大关键模块。其中最难处理是交易管理模块,包含进货登记,销售登记及退货登记管理。在实现这些功效中,碰到了很多关系模块之间联络问题,经过大量翻阅书籍最终得以实现整个手机管理信息系统。
这次课程设计做是手机销售信息管理系统,这是第一次接触到如此系统设计,也是第一次接触到这么难设计。因为第一次接触,在开发过程中可谓是困难重重,不知怎样入手,不得不重回书本,经过翻阅大量资料,和同学们一起讨论,慢慢有了一点点头绪,仔细分析题目,分析材料,在原由基础上进行了更正,我最终还是运行成功了,即使还是经过了一翻努力,当然汗水还是留很值,这次课程设计,不仅让我对软件工程这门课程有了更深入研究、对很多关键概念有了巩固和掌握,还给了我以后做事启示。做事要塌实,不能想着一步登天,要有计划,有目标进行做事。盲目真不应该再在我们新一代大学生身上出现了,我们应该认真找到自己缺点而且立即更正。
六、 致谢
在这次开发当中,可谓是困难重重,因为在此之前全部从未接触过这类系统开发,所以很多细节全部未曾注意,造成后期出现了很多不可预见性错误。最终在同学们和老师帮助下,将问题一个一个处理,尤其是在彭老师帮助下,将那些细节问题一一处理。
在此我要尤其感谢帮助过我同学和彭老师帮助,谢谢。
附录
源代码清单:
连接数据库窗口代码:
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private 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
conn.Close
End If
conn.Open connStr
MsgBox "连接数据库成功!", vbOKOnly + vbExclamation, "提醒"
'显示登录窗体
frmLogin.Show
frmLogin.SetFocus
Unload Me
Exit Sub
errConnect:
MsgBox Err.Description, vbOKOnly + vbExclamation, "提醒"
End Su
Private Sub Form_Load()
'让窗体居中
Call MakeCenter(Me)
End Sub
Private Sub OptionSqlServer_Click()
If OptionSqlServer.Value = True Then
lblUser.Enabled = True
lblPassword.Enabled = True
txtUser.Enabled = True
txtPassword.Enabled = True
End If
End Sub
Private Sub OptionWindows_Click()
If OptionWindows.Value = True Then
lblUser.Enabled = False
lblPassword.Enabled = False
txtUser.Enabled = False
txtPassword.Enabled = False
End If
End Sub
销售登记代码:
Private Sub cmdReset_Click()
txtName.Text = ""
txtFc.Text = ""
txtType.Text = ""
txtPrice.Text = ""
txtQuantity.Text = ""
txtyear.Text = ""
txtmon.Text = ""
txtday.Text = ""
txtem.Text = ""
txtmoney.Text = ""
End Sub
Private Sub cmdSell_Click()
txtGoodsNo.Enabled = False
If txtFc.Text = "" Then
MsgBox "请填写厂商名称!", vbOKOnly + vbInformation, "注意"
txtFc.SetFocus
Exit Sub
ElseIf txtName.Text = "" Then
MsgBox "请填写商品名称!", vbOKOnly + vbInformation, "注意"
txtName.SetFocus
Exit Sub
ElseIf txtType.Text = "" Then
MsgBox "请填写商品型号!", vbOKOnly + vbInformation, "注意"
txtType.SetFocus
Exit Sub
ElseIf txtPrice.Text = "" Then
MsgBox "请填写商品价格!", vbOKOnly + vbInformation, "注意"
txtPrice.SetFocus
Exit Sub
ElseIf txtQuantity.Text = "" Then
MsgBox "请填写商品数量!", vbOKOnly + vbInformation, "注意"
txtQuantity.SetFocus
Exit Sub
ElseIf txtyear.Text = "" Then
MsgBox "请填写销售年份!", vbOKOnly + vbInformation, "注意"
txtyear.SetFocus
Exit Sub
ElseIf txtmon.Text = "" Then
MsgBox "请填写销售月份!", vbOKOnly + vbInformation, "注意"
txtmon.SetFocus
Exit Sub
ElseIf txtday.Text = "" Then
MsgBox "请填写销售日!", vbOKOnly + vbInformation, "注意"
txtday.SetFocus
Exit Sub
ElseIf txtem.Text = "" Then
MsgBox "请填写员工姓名!", vbOKOnly + vbInformation, "注意"
txtem.SetFocus
Exit Sub
ElseIf txtmoney.Text = "" Then
MsgBox "请填写总金额!", vbOKOnly + vbInformation, "注意"
txtmoney.SetFocus
Exit Sub
End If
Dim sqlcheck As String
sqlcheck = "select * from goods where 商品名='" & txtName.Text & _
"'and 生产厂商='" & txtFc.Text & "'and 型号='" & txtType.Text & "'"
rs_check.CursorLocation = adUseClient '设定游标类型
rs_check.Open sqlcheck, conn, adOpenKeyset, adLockPessimistic
If rs_check.EOF = True Then
MsgBox "对不起,此商品型号已无货!请选择其它型!", vbOKOnly + vbInformation, "注意"
rs_check.Close
Exit Sub
ElseIf rs_check.Fields(5) < Val(txtQuantity.Text) Then
MsgBox "此型号商品不足!", vbOKOnly + vbInformation, "注意"
rs_check.Close
Exit Sub
End If
Dim sqlsell As String
sqlsell = "select * from sell"
rs_add.Open sqlsell, conn, adOpenKeyset, adLockPessimistic
'添加入销售表
rs_add.AddNew
rs_add.Fields(1) = txtFc.Text
rs_add.Fields(2) = txtName.Text
rs_add.Fields(3) = txtType.Text
rs_add.Fields(4) = txtPrice.Text
rs_add.Fields(5) = Val(txtQuantity.Text)
rs_add.Fields(6) = Val(txtmoney.Text)
rs_add.Fields(7) = txtyear.Text
rs_add.Fields(8) = txtmon.Text
rs_add.Fields(9) = txtday.Text
rs_add.Fields(10) = txtem.Text
rs_add.Update
'从现存商品表中减去
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)
rs_check.Update
rs_check.Close
rs_add.Close
MsgBox "销售成功!", vbOKOnly + vbExclamation, "注意"
End Sub
Private Sub Form_Load()
'让窗体居中
Call MakeCenter(Me)
End Sub
业绩查询代码:
Dim rs_check As New ADODB.Recordset
Private Sub cmdallem_Click()
allem = True
'frmGrade.Show
Call ShowGrade
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdquery_Click()
allem = False
'frmGrade.Show
Call ShowGrade
End Sub
Private Sub Form_Load()
'让窗体居中
Call MakeCenter(Me)
Adodc1.ConnectionString = connStr
allem = True
Call ShowGrade
End Sub
Private 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
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = strsql
Adodc1.Refresh
DataGrid1.ReBind
If rs_check.EOF = True Then
MsgBox "此职员号不存在!", vbOKOnly + vbInformation, "注意"
rs_check.Close
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
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = strsql
Adodc1.Refresh
DataGrid1.ReBind
End If
DataGrid1.AllowAddNew = False '不可增加
DataGrid1.AllowDelete = False '不可删除
DataGrid1.AllowUpdate = False
rs_check.Close
End Sub
展开阅读全文