江苏科技大学会计信息系统课程设计报告模板

江苏科技大学经济管理学院

2014至20##学年第一学期会计信息系统课程设计报告

模块名称:销售管理系统

1、数据库分析(配合图形作简要说明)

1.1数据流图:

1.2E-R图

 


1.3数据库表

2、系统设计

2.1 系统功能结构图

rsx111.jpg

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)    产品信息管理,包括添加、修改、删除和查看产品信息等功能。

11.jpg

图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)    销售退货管理。

4.jpg

图5.7商品销售管理窗口

9.jpg

图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及面向对象时候,也相应的做一些应用的系统程序的练习,但是这些练习不够系统,随意性大,想到那里做到那里,没有统一的规划,没有形成一个完整的指导文档,一旦系统成型,出现错误时返工修改工作量较大,最终造成系统可靠性不高,难以实用。

通过实践,提高了系统分析的能力,对数据流图、数据字典、系统流程图等系统设计工具的使用有了更加深刻的认识。开始很陌生的程序设计开始逐渐的熟悉起来,为以后的工作、学习的进一步提高打下了坚实的基础。

这次课程设计既是一个学习的过程,也是一个实践的过程,它使我们获得了一些开发大型数据库系统的经验。但是,由于时间和个人的能力有限,这个系统还有很多不完善的地方有待修正。

相关推荐