江苏科技大学经济管理学院
2014至20##学年第一学期会计信息系统课程设计报告
模块名称:销售管理系统
1、数据库分析(配合图形作简要说明)
1.1数据流图:
1.2E-R图
1.3数据库表
2、系统设计
2.1 系统功能结构图
2.2系统功能说明
销售管理系统作为一种信息管理软件,既可以帮助快速有效地完成各种信息录入、查询和修改的计算机管理,又可以对信息进行简单地分析。销售管理系统的主要任务是实现订购和销售的管理。主要功能模块包括:
1. 基本信息管理功能:
l 客户信息的录入、修改和删除。
l 仓库信息的录入、修改和删除。
l 用户信息的录入、修改和删除。
2. 产品信息管理功能:
l 产品类目的添加、修改和删除。
l 产品信息的管理。
3. 商品订购管理功能:
l 订购单的添加、修改和删除。
l 订购退货单管理。
4. 商品销售管理功能:
l 销售单的添加、修改和删除。
l 销售退货管理。
5. 库存管理功能:
l 入库管理。
l 出库管理。
l 库存管理。
3 优化分析与设计
3.1数据库方面
数据库的详细设计,其基本表的设计如下:
根据主体流程图,基本表设计情况如下:
表3.1 用户信息表(Users)
表3.2 仓库信息表(Storehouse)
表3.3商品类目表(ProType)
表3.4商品信息表(Product)
表3.5订购信息表(Orders)
表3.6销售信息表(Sales)
表3.7入库操作信息表(StoreIn)
表3.8出库操作信息表(TakeOut)
表3.9库存商品信息表(ProInStore)
表3.10客户信息表(Client)
3.2交互界面方面
产品信息管理模块可以实现以下功能:
(1) 产品类别管理,包括添加、修改、删除和查看产品类别信息等功能。
(2) 产品信息管理,包括添加、修改、删除和查看产品信息等功能。
图5.4产品类目管理窗口
Cmd_Add_Click过程:
当用户单击“添加”按钮时,对应的代码如下:
Private Sub Cmd_Add_Click()
'如果当前选择添加二级产品类目,则判断是否选择了一级类目
If Option1.Value = False And List1.ListIndex < 0 Then
MsgBox "请选择上级类目"
Exit Sub
End If
'选择添加一级产品类目
If Option1.Value = True Then
'上级产品类目编号为0
FrmProTypeEdit.OriUpper = 0
'上级产品类目名称为空
FrmProTypeEdit.lblUpper = ""
'选择添加二级产品类目
Else
'设置上级产品类目编号
FrmProTypeEdit.OriUpper = Id1
'设置上级产品类目名称
FrmProTypeEdit.lblUpper = List1.Text
End If
'设置修改标记
FrmProTypeEdit.Modify = False
'启动产品类目编辑窗体
FrmProTypeEdit.Show 1
'重新装入产品类目信息
Load_Type1
Load_Type2
End Sub
Cmd_Modi_Click过程:
Private Sub Cmd_Modi_Click()
'如果选择要修改一级产品类目,则判断List1列表框中是否有项目被选中
'如果选择要修改二级产品类目,则判断List2列表框中是否有项目被选中
If (Option1.Value = True And List1.ListIndex < 0) _
Or (Option2.Value = True And List2.ListIndex < 0) Then
MsgBox "请选择要修改类目"
Exit Sub
End If
'选择修改一级产品类目
If Option1.Value = True Then
'设置上级产品类目编号为0
FrmProTypeEdit.OriUpper = 0
'设置当前编辑的产品类目编号
FrmProTypeEdit.OriId = Id1
'设置当前编辑的产品类目名称
FrmProTypeEdit.OriName = List1.Text
FrmProTypeEdit.txtTypeName = List1.Text
'设置上级产品类目名称为空
FrmProTypeEdit.lblUpper = ""
'选择修改二级产品类目
Else
'设置上级产品类目编号
FrmProTypeEdit.OriUpper = Id1
'设置当前编辑的产品类目编号
FrmProTypeEdit.OriId = Id2
'设置当前编辑的产品类目名称
FrmProTypeEdit.OriName = List2.Text
FrmProTypeEdit.txtTypeName = List2.Text
'设置上级产品类目名称
FrmProTypeEdit.lblUpper = List1.Text
End If
'设置修改标记
FrmProTypeEdit.Modify = True
'启动产品类目编辑窗体
FrmProTypeEdit.Show 1
'重新装入产品类目信息
Load_Type1
Load_Type2
End Sub
Cmd_Del_Click过程:
Private Sub Cmd_Del_Click()
Dim TmpId As Long
'如果选择要删除一级产品类目,则判断List1列表框中是否有项目被选中
'如果选择要删除二级产品类目,则判断List2列表框中是否有项目被选中
If (Option1.Value = True And List1.ListIndex < 0) _
Or (Option2.Value = True And List2.ListIndex < 0) Then
MsgBox "请选择要修改类目"
Exit Sub
End If
'判断一级类目是否包含子类目
If Option1.Value = True Then
If MyProType.HaveSon(TmpId) = True Then
MsgBox "此类目包含子类目,不能删除"
Exit Sub
End If
End If
'判断类目中是否包含产品
If MyPro.HaveType(TmpId) = True Or _
MyPro.HaveType(TmpId) = True Then
MsgBox "此类目中包含产品,不能删除"
Exit Sub
End If
'确认删除
If MsgBox("是否删除此类目?", vbYesNo, "请确认") = vbYes Then
MyProType.Delete (TmpId)
Load_Type1
Load_Type2
End If
End Sub
销售管理模块可以实现以下功能:
(1) 销售管理。
(2) 销售退货管理。
图5.7商品销售管理窗口
图5.8添加销售单窗口
Cmd_Add_Click过程:
Private Sub Cmd_Add_Click()
Frm_SaleEdit.Modify = False
Frm_SaleEdit.OriCltType = 1
Frm_SaleEdit.OriId = 0
Frm_SaleEdit.lblStatus = "未处理"
Frm_SaleEdit.lblEmpName = CurUser.EmpName
Frm_SaleEdit.lblOptDate = Format(Now, "yyyy-mm-dd")
If Flag = 1 Then
Frm_SaleEdit.OriType = "销售"
Else
Frm_SaleEdit.OriType = "销售退货"
Frm_SaleEdit.Caption = "编辑销售退货单"
End If
Frm_SaleEdit.Show 1
Refresh_Sales
End Sub
Cmd_Edit_Click过程:
Private Sub Cmd_Edit_Click()
If Adodc1.Recordset.EOF = True Then
MsgBox "请选择销售单"
Exit Sub
End If
Frm_SaleEdit.Modify = True
If Flag = 1 Then
Frm_SaleEdit.OriType = "销售"
Else
Frm_SaleEdit.OriType = "销售退货"
Frm_SaleEdit.Caption = "编辑销售退货单"
End If
Frm_SaleEdit.Show 1
Refresh_Sales
End Sub
Cmd_Del_Click过程:
Private Sub Cmd_Del_Click()
If Adodc1.Recordset.EOF = True Then
MsgBox "请选择销售单"
Exit Sub
End If
If MsgBox("是否删除当前行?", vbYesNo, "请确认") = vbYes Then
MySales.Delete (Adodc1.Recordset.Fields(0))
End If
Refresh_Sales
End Sub
具体添加销售单代码实现如下:
Private Sub Fill_Clt()
If ComboClt.Text = "" Then
txtContact = ""
txtAddr = ""
txtCode = ""
txtPhone = ""
txtFax = ""
txtBank = ""
txtAccount = ""
Else
MyClt.GetInfo (MyClt.GetId(ComboClt.Text))
txtContact = MyClt.Contact
txtAddr = MyClt.Address
txtCode = MyClt.Postcode
txtPhone = MyClt.Phone
txtFax = MyClt.Fax
txtBank = MyClt.Bank
txtAccount = MyClt.BankAccount
End If
End Sub
Private Sub Fill_Pro()
If ComboPro.Text = "" Then
txtStyle = ""
txtUnit = ""
txtPrice = ""
txtMin = ""
txtMax = ""
Else
MyPro.GetInfo (MyPro.GetId(ComboPro.Text))
txtStyle = MyPro.ProStyle
txtUnit = MyPro.ProUnit
txtPrice = MyPro.ProPrice
txtMin = MyPro.ProLow
txtMax = MyPro.ProHigh
End If
End Sub
Private Function Check() As Boolean
If Trim(ComboClt.Text) = "" Then
MsgBox "请选择客户单位"
Check = False
Exit Function
End If
If Trim(ComboPro.Text) = "" Then
MsgBox "请选择产品名称"
Check = False
Exit Function
End If
If txtNum = "" Then
MsgBox "请输入产品数量"
txtNum.SetFocus
Check = False
Exit Function
End If
Check = True
End Function
Private Sub Cmd_OK_Click()
Dim TmpId As Long
If Check = False Then
Exit Sub
End If
With MySales
.SaleType = OriType
.ProId = MyPro.GetId(ComboPro.Text)
.ProPrice = Val(txtPrice1)
.ProNum = Val(txtNum)
.ProAmount = Val(txtAmount)
.ClientId = MyClt.GetId(ComboClt.Text)
.EmpName = CurUser.EmpName
.OptDate = Format(Now, "yyyy-mm-dd")
If Modify = False Then
.Insert
Else
.Update (OriId)
End If
End With
Unload Me
End Sub
Private Sub ComboType_Click()
'装入客户数据
MyClt.Load_Client (ComboType.ListIndex + 1)
ComboClt.Clear
i = 0
Do While Arr_Client(i) <> ""
ComboClt.AddItem Arr_Client(i)
i = i + 1
Loop
If ComboClt.ListCount > 0 Then
ComboClt.ListIndex = 0
End If
Fill_Clt
End Sub
Private Sub ComboType1_Click()
'装入二级类目
TmpType = MyProType.GetId(ComboType1.Text)
MyProType.Load_by_Upper (TmpType)
ComboType2.Clear
i = 0
Do While Arr_ProType(i) <> ""
ComboType2.AddItem Arr_ProType(i)
i = i + 1
Loop
If ComboType2.ListCount > 0 Then
ComboType2.ListIndex = 0
End If
'装入产品名称
TmpType = MyProType.GetId(ComboType2.Text)
MyPro.Load_by_Type (TmpType)
ComboPro.Clear
i = 0
Do While Arr_Product(i) <> ""
ComboPro.AddItem Arr_Product(i)
i = i + 1
Loop
If ComboPro.ListCount > 0 Then
ComboPro.ListIndex = 0
End If
Fill_Pro
End Sub
Private Sub ComboType2_Click()
'装入产品名称
TmpType = MyProType.GetId(ComboType2.Text)
MyPro.Load_by_Type (TmpType)
ComboPro.Clear
i = 0
Do While Arr_Product(i) <> ""
ComboPro.AddItem Arr_Product(i)
i = i + 1
Loop
If ComboPro.ListCount > 0 Then
ComboPro.ListIndex = 0
End If
Fill_Pro
End Sub
Private Sub Form_Load()
Dim TmpType As Long
Dim i As Integer
If Modify = True Then
OriId = Frm_SaleMan.Adodc1.Recordset.Fields(0)
lblStatus = Frm_SaleMan.ComboType.Text
'读取产品名称和类目
OriPro = Trim(Frm_SaleMan.Adodc1.Recordset.Fields(1))
MyPro.GetInfo (MyPro.GetId(Trim(Frm_SaleMan.Adodc1.Recordset.Fields(1))))
OriType2 = MyProType.GetName(MyPro.TypeId)
MyProType.GetInfo (MyPro.TypeId)
OriType1 = MyProType.GetName(MyProType.UpperId)
ComboPro.Enabled = False
ComboType1.Enabled = False
ComboType2.Enabled = False
txtPrice1 = Frm_SaleMan.Adodc1.Recordset.Fields(3)
txtNum = Frm_SaleMan.Adodc1.Recordset.Fields(4)
txtAmount = Frm_SaleMan.Adodc1.Recordset.Fields(5)
OriClt = Trim(Frm_SaleMan.Adodc1.Recordset.Fields(6))
MyClt.GetInfo (MyClt.GetId(Trim(Frm_SaleMan.Adodc1.Recordset.Fields(6))))
OriCltType = MyClt.ClientType
ComboClt.Enabled = False
ComboType.Enabled = False
lblEmpName = Trim(Frm_SaleMan.Adodc1.Recordset.Fields(7))
lblOptDate = Trim(Frm_SaleMan.Adodc1.Recordset.Fields(8))
End If
'装入客户数据
ComboType.ListIndex = OriCltType - 1
MyClt.Load_Client (OriCltType)
i = 0
ComboClt.Clear
Do While Arr_Client(i) <> ""
ComboClt.AddItem Arr_Client(i)
i = i + 1
Loop
If Modify = False Then
If ComboClt.ListCount > 0 Then
ComboClt.ListIndex = 0
End If
Else
If InCombo(OriClt, ComboClt) = True Then
ComboClt.Text = OriClt
End If
End If
Fill_Clt
'装入产品信息
'装入一级类目
MyProType.Load_by_Upper (0)
i = 0
ComboType1.Clear
Do While Arr_ProType(i) <> ""
ComboType1.AddItem Arr_ProType(i)
i = i + 1
Loop
If OriType1 = "" Then
If ComboType1.ListCount > 0 Then
ComboType1.ListIndex = 0
End If
Else
If InCombo(OriType1, ComboType1) = True Then
ComboType1.Text = OriType1
End If
End If
'装入二级类目
TmpType = MyProType.GetId(ComboType1.Text)
MyProType.Load_by_Upper (TmpType)
ComboType2.Clear
i = 0
Do While Arr_ProType(i) <> ""
ComboType2.AddItem Arr_ProType(i)
i = i + 1
Else
If InCombo(OriType2, ComboType2) = True Then
ComboType2.Text = OriType2
End If
End If
'装入产品名称
TmpType = MyProType.GetId(ComboType2.Text)
MyPro.Load_by_Type (TmpType)
ComboPro.Clear
Do While Arr_Product(i) <> ""
ComboPro.AddItem Arr_Product(i)
i = i + 1
Loop
If OriPro = "" Then
If ComboPro.ListCount > 0 Then
ComboPro.ListIndex = 0
End If
Else
If InCombo(OriPro, ComboPro) = True Then
ComboPro.Text = OriPro
End If
End If
Fill_Pro
End Sub
4小结
在经历了将两个星期的会计信息系统课程设计过程中,从了解课题、理解课题、查找资料、确定思路到设计实施,销售管理系统初步形成。
通过本次实践,我们综合运用了以前学过的管理信息系统和关系数据库许多知识。在学习vf6.0及面向对象时候,也相应的做一些应用的系统程序的练习,但是这些练习不够系统,随意性大,想到那里做到那里,没有统一的规划,没有形成一个完整的指导文档,一旦系统成型,出现错误时返工修改工作量较大,最终造成系统可靠性不高,难以实用。
通过实践,提高了系统分析的能力,对数据流图、数据字典、系统流程图等系统设计工具的使用有了更加深刻的认识。开始很陌生的程序设计开始逐渐的熟悉起来,为以后的工作、学习的进一步提高打下了坚实的基础。
这次课程设计既是一个学习的过程,也是一个实践的过程,它使我们获得了一些开发大型数据库系统的经验。但是,由于时间和个人的能力有限,这个系统还有很多不完善的地方有待修正。
南华大学会计信息系统课程设计报告一概述根据会计信息系统课程开发设计的要求我们参加了学院组织的为期一周的会计信息系统课程设计实践在这…
会计信息系统课程实验指导书(供会计专业本科和会计双学位学生用)学号:**姓名:**班级:会计10-3班编写单位:河南理工大学经济管…
一、课程设计的目的和意义(1)目的1、通过本次课程设计,加深对会计信息系统的了解。2、通过本次课程设计,正确掌握开发方法,提高程序…
专业班级:学号:姓名:指导教师:指导教师单位:指导教师职称:XXXXXX学院20xx年x月x日一、课程设计的目的与意义(一)课程设…
江苏科技大学经济管理学院20xx至20xx学年第一学期会计信息系统课程设计报告1数据库分析配合图形作简要说明11数据流图12ER图…
一、课程设计的目的和意义(1)目的1、通过本次课程设计,加深对会计信息系统的了解。2、通过本次课程设计,正确掌握开发方法,提高程序…
专业班级:学号:姓名:指导教师:指导教师单位:指导教师职称:XXXXXX学院20xx年x月x日一、课程设计的目的与意义(一)课程设…
江苏科技大学东校区0740407227张勇zhangyong6036126comAIS课程设计专业信息管理与信息系统班级07404…
南华大学会计信息系统课程设计报告一概述根据会计信息系统课程开发设计的要求我们参加了学院组织的为期一周的会计信息系统课程设计实践在这…
会计信息系统实验报告1会计信息系统实验报告一实验目的通过用友ERP软件掌握如何正确建立账套设置用户的权限以及账套数据的输入系统地学…
一、实验目的本实验以模拟企业的实际会计工作为基础,按照企业会计制度和企业会计准则的要求,进行操作训练,有目的地检验和复习学生所学的…