当前位置:文档之家› 企业销售合同管理系统DOC

企业销售合同管理系统DOC

X X X X 大学数据库应用技术课程设计说明书题目:企业销售合同管理系统学院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:xxxx大学课程设计(论文)任务书院(系):教研室:说明:此表一式四份,学生、指导教师、教研室、系部各一份。

可加附页。

2011年 12 月 31日目录第一章概述 4第二章问题定义 5第三章需求分析 6第四章数据库设计 9第五章界面设计 14第六章代码与注释 17参考文献 24第一章概述在现代企业管理中,销售合同的管理处于十分重要的地位,已成为与生产进度管理、质量管理、资产管理、其它信息管理等同等重要的职能管理,企业生产的一切产品的交换过程都是通过缔结和履行销售合同的方式来进行的,销售合同管理的好坏直接影响和关系到企业经营活动顺利运行。

企业销售合同确定了产品销售的价格、交易日期和质量等项目,规定着合同双方责任权利关系,它贯穿于企业从产品的研究、设计到质量检验及交付货品的各个阶段,涉及到企业生产的各个部门,渗透到企业的生产进度、质量管理和成本管理之中,形成一个纵横交错的庞大的合同信息链。

随着经济的市场化和全球化,企业所面临的环境更加错综复杂,经济交易活动的不稳定性随之增大,销售合同的管理难度也随着客户的增加而加大,由此产生的风险也愈来愈多。

目前,部分企业管理者或决策者存在合同法律意识差,不熟悉合同法的一般规定,基本上没有把销售合同管理纳入经营管理视野,合同管理制度形同虚设,无机构、无人员、无销售合同台账和档案,一些销售合同资料不全,甚至出现文本原件丢失时的现象,各业务部门协调不够,没有对合同的履行进行深入监控,往往致使销售合同履行不到位,出了问题不能及时得到解决的情况,这样一定会干扰正常的企业的生产经营活动,给企业决策造成不利影响,导致企业形象和利益受损。

企业的销售合同管理采用无制度管理或手工管理方式甚至孤立的由某个管理层的管理方式,已远远不能满足市场竞争的要求。

根据企业销售合同管理的实际需要,设计一个省时省力地、轻松地管理众多复杂的销售合同管理平台,构建出信息高度集成的企业销售合同管理信息系统具有十分重要的现实意义。

第二章问题定义企业销售合同管理系统的主要任务是实现对企业销售合同的过程管理和成本控制。

本课程设计所描述的企业销售合同管理系统的主要功能包括:1.产品信息管理功能产品信息的录入:包括产品编号、产品名称、商标品牌、规格型号、计量单位等信息;主要实现功能:产品信息的修改;产品信息的删除;产品信息的查询。

2.合同费用管理功能合同费用的录入,包括凭单号、费用类别、合同编号、费用明细、金额、收款人、经办人、发生日期和备注等信息;主要实现功能:合同费用的修改;合同费用的查询。

3.合同收账管理功能合同收账的录入,包括发票编号、发票类别、合同编号、金额、日期、经办人、备注等信息;主要实现功能:合同收账的修改;合同收账的查询。

4.合同信息管理功能合同信息的录入,包括合同编码、签订日期、客户名称、合同状态等信息;主要实现功能:合同信息的修改;合同信息的查询。

5.合同统计管理功能主要实现功能:合同成本利润统计月报表合同成本利润统计年报表6.系统用户管理功能系统用户信息的录入,包括用户名、密码等信息;主要实现功能:系统用户信息的修改;系统用户信息的删除;系统用户信息的查询第三章需求分析一、数据库需求分析销售合同时企业经营的重要组成部分,它可以体现一个企业的经营情况和效益。

企业销售合同管理系统可以有效地提高企业宏观控制和经营管理的质量,使企业现代化管理的重要组成部分。

本课程设计是在企业经营和管理领域中应用非常广泛的数据库应用系统之一。

它既可以作为独立的系统使用,也可以作为企业综合业务管理系统的一个重要组成部分。

本课程设计包括产品管理、合同基本信息管理、合同产品管理、合同费用管理、合同收账管理、合同统计管理等主要功能模块,比较全面地实现了企业销售合同管理系统的功能。

本课程设计重点体现了企业经营和管理类系统的实现方法。

其中通过合同费用管理和合同收由管理,对企业的经营活动进行记录和控制,动态地反映企业的经营状况。

合同统计模块则对企业的经营状况进行分析,演示了数据库管理系统中统计报表的实现。

二、数据库概念的结构设计将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计,概念数据模型,主要在系统开发的数据库设计阶段使用,是按照用户的观点来对数据和信息进行建模,利用实体关系图来实现.它描述系统中的各个实体以及相关实体之间的关系,是系统特性和静态描述.概念结构设计是整个数据库结构设计的关键。

我所定义的实体是:产品,合同产品,费用,合同信息。

三、数据库的逻辑结构设计:数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本 E -R 图转换为与选用的 DBMS产品所支持的数据模型相符合的逻辑结构。

将概念转化为SQL Sever2000数据库系统。

产品信息表包含的数据项有产品编号,产品名称,产品商标,产品型号,产品单位。

合同费用信息表包含的数据项有凭单号,合同编号,费用类别,费用金额,收款人姓名,经办人姓名,发生日期,备注。

合同收账信息表包含的数据项有发票编号,合同编号,发票类型,收账金额,经办人姓名,发生日期,备注。

合同产品信息表包含的数据项有合同编号,产品编号,产品单价,产品数量,订购单位,交货日期,备注信息。

合同信息表包含的数据项有合同编号,客户单位名称,合同签订日期,合同状态,负责人姓名,交货方式,交货日期,结算方式,有效期限,合同内容,附加信息。

四、数据字典(DD):产品信息表=产品编号+产品名称+产品商标+产品型号+产品单位合同费用信息表=凭单号+合同编号+费用类别+费用金额+收款人姓名+经办人姓名+发生日期+备注合同收账信息表=发票编号+合同编号+发票类型+收账金额+经办人姓名+发生日期+备注合同产品信息表=合同编号+产品编号+产品单价+产品数量+订购单位+交货日期+备注信息合同信息表=合同编号+客户单位名称+合同签订日期+合同状态+负责人姓名+交货方式+交货日期+结算方式+有效期限+合同内容+附加信息五、程序流程图:图3.1 登陆模块数据流图图3.2 产品信息模块流程图六、功能结构图:图 3.3 销售合同管理系统功能模块示意图第四章数据库设计一、概念设计:1. 实体与实体之间关系E-R图,如图所示。

图 4.1各实体关系总E-R图2. 单个实体E-R图在开发企业销售合同管理系统时,得先进行E-R图分析。

根据对数据项与数据结构的分析以及设计规划得出的实体有:产品实体、合同产品实体、合同费用实体、合同信息实体、合同收账实体。

E-R图,如图所示。

图 4.2 产品信息实体属性图图4.3 合同费用信息实体属性图图 4.4 合同收账信息实体属性图图 4.5 合同产品信息实体属性图图 4.6 合同信息实体属性图二、逻辑设计:1.产品信息表:产品信息表Product用来保存产品信息,它的结构如表4.1所示。

表4.1Produce的结构表2.合同费用信息表Cost合同费用信息表Cost用来保存合同费用信息,表Cost的结构如图4.2所示。

表4.2 Cost的结构表3.合同收账信息表Income合同收账信息表Income用来保存合同收账信息。

表Income的结构如图4.3所示。

表4.3 Income的结构表4.合同产品信息表ConProduct合同产品信息表ConProduct用来保存销售合同中涉及产品信息。

结构如表4.4所示。

表4.4 ConProduct的结构表5.合同信息表Conteact合同信息表Conteact用来保存销售合同的基本信息。

结构如表4.5所示。

表4.5 Conteact的结构表三、物理设计1.创建索引1)为Produce表创建一个以Prold为索引关键字的惟一聚簇索引。

2)为Cost表创建一个以Costld为索引关键字的惟一聚簇索引。

3)为Income表创建一个以Receiptld为索引关键字的惟一聚簇索引。

4)为ConProduct表创建一个以Contractld为索引关键字的惟一聚簇索引。

5)为Conteact表创建一个以Contractld为索引关键字的惟一聚簇索引。

2.物理位置学生信息管理系统数据库的数据文件安排如下:数据文件储存的位置:e:\office\MSSQL\data\ ContractSys_Data.MDF,将数据文件的初始大小设为20MB,文件增长方式设为自动增长,文件增长增量设为5MB,文件的增长上限设为500MB。

事务日志存储的位置:e:\office\MSSQL\data\ ContractSys _Log.LDF,将日志文件的初始大小设为20MB,文件增长量设为1MB,文件增长限制设为100MB。

Microsoft SQL Server 2000提供了多种API,它使得其他应用程序访问数据库资源,这些API被称为数据库访问API.数据库访问API允许应用程序执行一段T-SQL语句来访问一个关系数据库的数据。

这些API有:ADO,OLE,DB,ODBC,嵌入式SQL和DB-Libray等。

本程序主要运用ADO数据访问接口,此接口使得程序设计者只要简单的创建几个对象便可以连接数据来源,获取所需的数据和进行数据访问后的保存操作。

ADO对象模型定义了一个可编程的分层对象集合,主要由三个成员:Connection对象,Command对象和Recordest对象以及其它的集合对象。

ADO提供以执行以下的操作方式:(1)接到数据源。

(2)指定访问数据远的命令,同时可带变量参数或优化执行。

(3)执行命令,例如一个SELECT脚本。

(4)如果这个命令使数据按表中行的形式返回,则将这些行存储在易于检查,操作或更改的缓存中。

(5)适当情况下,可以把缓存的更改内容写回数据库中,更新数据源。

(6)提供常规方法检测错误,设计ADO的Error对象。

第五章界面设计1.登陆模块设计用户要使用本系统,首先要通过系统的身份认证,也就是登陆。

登陆过程需要完成一下任务:(1)根据用户名和密码来判断是否可能进入系统;(2)根据用户类型决定用户拥有的权限。

登陆模块如图5.1所示:图 5.1 登陆模块图登陆后首页如图5.2所示:图 5.2 企业销售合同管理首页图2.合同管理模块设计合同管理模块是本系统的核心部分,可以实现一下功能:(1)创建合同;(2)修改合同;(3)改变合同状态;(4)查看合同内容。

合同管理模块如图5.3所示:图 5.3 合同管理模块图3.合同收账管理模块设计合同收账管理模块可以实现一下功能:(1)添加合同收账信息;(2)修改合同收账信息;(3)查看合同收账信息。

合同收账管理模块如图5.4所示:图 5.4 合同收账管理模块图第六章代码与注释一、登录代码Private Sub Cmd_OK_Click()Dim j As Single'数据有效性检查If txtUser = "" ThenMsgBox "请输入用户名"txtUser.SetFocusExit SubEnd IfIf txtPwd = "" ThenMsgBox "请输入密码" txtPwd.SetFocusExit SubEnd IfNameKey = MakeStr(txtUser) PasswordKey = MakeStr(txtPwd) '判断用户是否存在If MyUser.In_DB(NameKey) = False ThenMsgBox "用户名不存在"Try_times = Try_times + 1If Try_times >= 3 ThenMsgBox "您已经三次尝试进入本系统,均不成功,系统将关闭" DBapi_DisconnectEndElseExit SubEnd IfEnd If'判断密码是否正确If MyUser.GetPwd(NameKey) <> PasswordKey ThenMsgBox "密码错误"Try_times = Try_times + 1If Try_times >= 3 ThenMsgBox "您已经三次尝试进入本系统,均不成功,系统将关闭" DBapi_DisconnectEndElseExit SubEnd IfEnd IferName = erName '关闭自己Unload MeEnd Sub二、主界面代码Private Sub Cmd_Save_Click()Dim TmpId As StringIf Trim(txtId) = "" ThenMsgBox "请输入合同编号"Exit SubEnd IfIf Trim(txtClient) = "" Then MsgBox "请输入客户单位" Exit SubEnd IfIf ComboSignDate.Text = "" Then MsgBox "请输入签约日期" Exit SubEnd IfTmpId = MakeStr(txtId)'判断产品编号是否已经存在If Modify = False Or OriId <> Trim(txtId) ThenIf MyContract.In_DB(TmpId) = True ThenMsgBox "合同编号“" + Trim(txtId) + "”已经存在,请重新输入" txtId.SetFocustxtId.SelStart = 0txtId.SelLength = Len(txtId)Exit SubEnd IfEnd IfWith MyContract.ContractId = TmpId.Client = MakeStr(txtClient)'规范日期格式.SignDate = Format(ComboSignDate.Text, "yyyy-mm-dd").EmpName = MakeStr(txtEmpName).DeliveryWay = MakeStr(txtDeliveryWay).DeliveryDate = Format(ComboDeliveryDate.Text, "yyyy-mm-dd") .SettleWay = ComboSettle.ListIndex + 1.LastDay = Format(ComboLastDay.Text, "yyyy-mm-dd").Contents = MakeStr(txtContents).Additional = MakeStr(txtAdditional)If Modify = False Then.Status = 1.InsertModify = TrueOriId = .ContractIdElse.Update (OriId)End IfEnd WithMsgBox "合同保存完成"End SubPrivate Sub ComboDeliveryDate_GotFocus()'将焦点设置为下一个控件,否则将反复执行此过程txtDeliveryWay.SetFocus'如果ComboDeliveryDate中包含日期,则将它赋值到FrmDateSel中If ComboDeliveryDate.Text <> "" ThenFrmDateSel.OriDate = ComboDeliveryDate.TextEnd If'设置FrmDateSel窗体的位置FrmDateSel.Left = Me.Left + ComboDeliveryDate.Left + 350FrmDateSel.Top = Me.Top + ComboDeliveryDate.Top + ComboDeliveryDate.Height + 450 FrmDateSel.Show 1'将选择的日期显示到ComboDeliveryDate控件中ComboDeliveryDate.Text = FrmDateSel.OriDateEnd SubPrivate Sub ComboLastDay_GotFocus()'将焦点设置为下一个控件,否则将反复执行此过程ComboSettle.SetFocus'如果ComboLastDay中包含日期,则将它赋值到FrmDateSel中If ComboLastDay.Text <> "" ThenFrmDateSel.OriDate = ComboLastDay.TextEnd If'设置FrmDateSel窗体的位置FrmDateSel.Left = Me.Left + ComboLastDay.Left + 350 - FrmDateSel.WidthFrmDateSel.Top = Me.Top + ComboLastDay.Top + ComboLastDay.Height + 450 FrmDateSel.Show 1'将选择的日期显示到ComboLastDay控件中ComboLastDay.Text = FrmDateSel.OriDateEnd SubPrivate Sub ComboSignDate_GotFocus()'将焦点设置为下一个控件,否则将反复执行此过程ComboSettle.SetFocus'如果ComboSignDate中包含日期,则将它赋值到FrmDateSel中If ComboSignDate.Text <> "" ThenFrmDateSel.OriDate = ComboSignDate.TextEnd If'设置FrmDateSel窗体的位置FrmDateSel.Left = Me.Left + ComboSignDate.Left + 350FrmDateSel.Top = Me.Top + ComboSignDate.Top + ComboSignDate.Height + 450 FrmDateSel.Show 1'将选择的日期显示到ComboSignDate控件中ComboSignDate.Text = FrmDateSel.OriDateEnd Sub三、合同收账管理模块代码Private Sub Cmd_OK_Click()Dim TmpId As StringIf Trim(txtCostId) = "" Then MsgBox "请输入凭单号" txtCostId.SetFocusExit SubEnd IfIf Val(txtAmount) < 0 Then MsgBox "费用应大于0" txtAmount.SetFocusExit SubEnd IfIf Trim(txtReceive) = "" ThenMsgBox "请输入收款人" txtReceive.SetFocusExit SubEnd IfIf Trim(txtCashier) = "" Then MsgBox "请输入经办人" txtCashier.SetFocusExit SubEnd IfIf ComboDate.Text = "" Then MsgBox "请输入发生日期"ComboDate.SetFocusExit SubEnd IfTmpId = TrimStr(txtCostId.Text)'判断凭单号是否已经存在If Modify = False Or OriId <> TmpId ThenIf MyCost.In_DB(TmpId) = True ThenMsgBox "凭单号 - " + TmpId + " - 已经存在,请重新输入" txtCostId.SetFocusExit SubEnd IfEnd IfWith MyCost.ContractId = MyContract.ContractId .CostId = MakeStr(txtCostId).CostType = ComboType.TextIf ComboDetail.Visible = True Then .Detail = MakeStr(ComboDetail.Text) Else.Detail = ""End If.Amount = Val(txtAmount).Receiver = MakeStr(txtReceive) .Cashier = MakeStr(txtCashier) .CostDate = ComboDate.Text.Memo = MakeStr(txtMemo)If Modify = False Then.InsertElseCall .Update(OriId)End IfEnd WithUnload MeEnd S四、设计总结通过对这次课程设计的亲手操作,我收获很多。

相关主题