1、X X X X 大 学数据库应用技术课 程 设 计 说 明 书题目: 企业销售合同管理系统 学院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: xxxx大学课程设计(论文)任务书院(系): 教研室: 学 号 学生姓名 专业班级 设计题目企业销售合同管理系统设计技术参数1 题目要达到目标:完成系统登陆、数据插入删除修改统计等基本操作。2 数据库:SQLSERVER2000。3 所使用语言、工具:VB6.0+ SQLSERVER2000+WINDOWSXP。4 所采用技术、系统结构:ADO数据库联接技术,系统结构为C/S结构。设计要求1 教师布置实习任务和要求时,不
2、得缺席,并做好记录。2 上机前预先把所有源程序编写好。3 上机时不得迟到,不得缺席,爱护设备,认真调试程序。4 仔细查阅相关资料,认真完成思考题。5 按要求书写设计任务书,并按要求按版打印,不得雷同。工作量二周工作计划周一听取教师布置设计任务及要求。周二学生查阅相关资料,进行数据库设计。周三至周五:详细设计与界面设计。周一至周四程序设计与上机,调试源程序。周五书写课程设计任务书。参考资料数据库应用技术数据库应用技术实验指导书自编数据库应用技术课程设计大纲自编等指导教师评语 教师: 学生:说明:此表一式四份,学生、指导教师、教研室、系部各一份。可加附页。2011年 12 月 31日 目录第一章
3、概述4第二章 问题定义5第三章 需求分析6第四章 数据库设计9第五章 界面设计14第六章 代码与注释17参考文献24第一章 概述在现代企业管理中,销售合同管理处于十分重要地位,已成为与生产进度管理、质量管理、资产管理、其它信息管理等同等重要职能管理,企业生产一切产品交换过程都是通过缔结和履行销售合同方式来进行,销售合同管理好坏直接影响和关系到企业经营活动顺利运行。企业销售合同确定了产品销售价格、交易日期和质量等项目,规定着合同双方责任权利关系,它贯穿于企业从产品研究、设计到质量检验及交付货品各个阶段,涉及到企业生产各个部门,渗透到企业生产进度、质量管理和成本管理之中,形成一个纵横交错庞大合同信
4、息链。 随着经济市场化和全球化,企业所面临环境更加错综复杂,经济交易活动不稳定性随之增大,销售合同管理难度也随着客户增加而加大,由此产生风险也愈来愈多。目前,部分企业管理者或决策者存在民法典律意识差,不熟悉民法典一般规定,基本上没有把销售合同管理纳入经营管理视野,合同管理制度形同虚设,无机构、无人员、无销售合同台账和档案,一些销售合同资料不全,甚至出现文本原件丢失时现象,各业务部门协调不够,没有对合同履行进行深入监控,往往致使销售合同履行不到位,出了问题不能及时得到解决情况,这样一定会干扰正常企业生产经营活动,给企业决策造成不利影响,导致企业形象和利益受损。企业销售合同管理采用无制度管理或手工
5、管理方式甚至孤立由某个管理层管理方式,已远远不能满足市场竞争要求。 根据企业销售合同管理实际需要,设计一个省时省力地、轻松地管理众多复杂销售合同管理平台,构建出信息高度集成企业销售合同管理信息系统具有十分重要现实意义。 第二章 问题定义企业销售合同管理系统主要任务是实现对企业销售合同过程管理和成本控制。本课程设计所描述企业销售合同管理系统主要功能包括:1.产品信息管理功能产品信息录入:包括产品编号、产品名称、商标品牌、规格型号、计量单位等信息;主要实现功能:产品信息修改;产品信息删除;产品信息查询。2.合同费用管理功能合同费用录入,包括凭单号、费用类别、合同编号、费用明细、金额、收款人、经办人
6、、发生日期和备注等信息;主要实现功能:合同费用修改; 合同费用查询。3.合同收账管理功能合同收账录入,包括发票编号、发票类别、合同编号、金额、日期、经办人、备注等信息;主要实现功能: 合同收账修改;合同收账查询。4.合同信息管理功能合同信息录入,包括合同编码、签订日期、客户名称、合同状态等信息;主要实现功能:合同信息修改;合同信息查询。5.合同统计管理功能主要实现功能:合同成本利润统计月报表 合同成本利润统计年报表6.系统用户管理功能系统用户信息录入,包括用户名、密码等信息;主要实现功能:系统用户信息修改; 系统用户信息删除;系统用户信息查询第三章 需求分析一、数据库需求分析销售合同时企业经营
7、重要组成部分,它可以体现一个企业经营情况和效益。企业销售合同管理系统可以有效地提高企业宏观控制和经营管理质量,使企业现代化管理重要组成部分。本课程设计是在企业经营和管理领域中应用非常广泛数据库应用系统之一。它既可以作为独立系统使用,也可以作为企业综合业务管理系统一个重要组成部分。本课程设计包括产品管理、合同基本信息管理、合同产品管理、合同费用管理、合同收账管理、合同统计管理等主要功能模块,比较全面地实现了企业销售合同管理系统功能。本课程设计重点体现了企业经营和管理类系统实现方法。其中通过合同费用管理和合同收由管理,对企业经营活动进行记录和控制,动态地反映企业经营状况。合同统计模块则对企业经营状
8、况进行分析,演示了数据库管理系统中统计报表实现。二、数据库概念结构设计将需求分析得到用户需求抽象为信息结构即概念模型过程就是概念结构设计,概念数据模型,主要在系统开发数据库设计阶段使用,是按照用户观点来对数据和信息进行建模,利用实体关系图来实现.它描述系统中各个实体以及相关实体之间关系,是系统特性和静态描述.概念结构设计是整个数据库结构设计关键。我所定义实体是:产品,合同产品,费用,合同信息。三、数据库逻辑结构设计:数据库逻辑结构设计就是把概念结构设计阶段设计好基本 E -R 图转换为与选用 DBMS产品所支持数据模型相符合逻辑结构。将概念转化为SQL Sever2000数据库系统。产品信息表
9、包含数据项有产品编号,产品名称,产品商标,产品型号,产品单位。合同费用信息表包含数据项有凭单号,合同编号,费用类别,费用金额,收款人姓名,经办人姓名,发生日期,备注。合同收账信息表包含数据项有发票编号,合同编号,发票类型,收账金额,经办人姓名,发生日期,备注。合同产品信息表包含数据项有合同编号,产品编号,产品单价,产品数量,订购单位,交货日期,备注信息。合同信息表包含数据项有合同编号,客户单位名称,合同签订日期,合同状态,负责人姓名,交货方式,交货日期,结算方式,有效期限,合同内容,附加信息。四、数据字典(DD):产品信息表=产品编号+产品名称+产品商标+产品型号+产品单位合同费用信息表=凭单
10、号+合同编号+费用类别+费用金额+收款人姓名+经办人姓名+发生日期+备注合同收账信息表=发票编号+合同编号+发票类型+收账金额+经办人姓名+发生日期+备注合同产品信息表=合同编号+产品编号+产品单价+产品数量+订购单位+交货日期+备注信息合同信息表=合同编号+客户单位名称+合同签订日期+合同状态+负责人姓名+交货方式+交货日期+结算方式+有效期限+合同内容+附加信息五、程序流程图:D2事物登录信息密码用户名用户P1.1接受事务D1P1.2处理事务P1.3退出登录系统界面登录信息用户管理图3.1 登陆模块数据流图D3产品信息用户查询产品管理信息P2.1查询费用管理信息P2.2接受事务P2.3处理
11、事务P2.4产品基本信息Cost信息表D3产品图3.2 产品信息模块流程图六、功能结构图:企业销售合同管理系统产品信息管理合同费用管理合同收账管理合同信息管理合同统计管理系统用户管理修改产品信息删除产品信息添加合同费用修改合同费用添加合同收账修改合同收账添加销售合同修改合同信息合同成本利润月统计合同成本利润年统计添加用户信息删除用户信息添加产品信息修改用户信息图 3.3 销售合同管理系统功能模块示意图第四章 数据库设计一、概念设计: 1. 实体与实体之间关系E-R图,如图所示。图 4.1各实体关系总E-R图2. 单个实体E-R图在开发企业销售合同管理系统时,得先进行E-R图分析。根据对数据项与
12、数据结构分析以及设计规划得出实体有:产品实体、合同产品实体、合同费用实体、合同信息实体、合同收账实体。E-R图,如图所示。产品信息产品商标产品编号计量单位产品型号产品名称图 4.2 产品信息实体属性图合同费用信息费用类别凭单号费用金额合同编号图4.3 合同费用信息实体属性图合同收账信息发票类型发票编号收账金额合同编号图 4.4 合同收账信息实体属性图合同产品信息产品单价合同编号产品数量产品编号图 4.5 合同产品信息实体属性图合同信息合同状态合同编号交货方式交货日期图 4.6 合同信息实体属性图二、逻辑设计:1.产品信息表:产品信息表Product用来保存产品信息,它结构如表4.1所示。表4.
13、1Produce结构表编号字段名称数据结构说明1ProldVarchar50产品编号2ProNameVarchar50产品名称3ProMarkVarchar50产品商标4ProStyleVarchar50产品型号5ProUnitVarchar50 计量单位2.合同费用信息表Cost合同费用信息表Cost用来保存合同费用信息,表Cost结构如图4.2所示。表4.2 Cost结构表编号字段名称数据结构说明1CostldVarchar50凭单号2ContractldVarchar50合同编号3CostTypeVarchar20费用类别(采购成本、服务费、其他)4DdtailVarchar50当费用类
14、别选择“其他”时,使用Detail字段来描述。可以是火车票、飞机票、出租车费、住宿费、差旅费等,也可以手动录入5AmountDecimal 15,2费用金额6ReceiverVarchar30收款人姓名7CashierVarchar30经办人姓名8CostDateVarchar10发生日期9MemoVarchar200备注3.合同收账信息表Income合同收账信息表Income用来保存合同收账信息。表Income结构如图4.3所示。表4.3 Income结构表编号字段名称数据结构说明1ReceiptldVarchar50发票编号2ContractldVarchar50合同编号3ReceiptT
15、ypeVarchar20发票类型(增值税、服务费)4AmountDecimal 15,2收账金额5CashierVarchar30经办人姓名6IncomeDateVarchar10发生日期7MemoVarchar200备注4.合同产品信息表ConProduct合同产品信息表ConProduct用来保存销售合同中涉及产品信息。结构如表4.4所示。表4.4 ConProduct结构表编号字段名称数据结构说明1ContractldVarchar50合同编号2proldVarchar50产品编号3UnitPriceDecimal 15,2产品单价4QuantityInt产品数量5OrderOrgVar
16、char100订购单位6DeliveryDateVarchar10交货日期7MemoVarchar200备注信息5.合同信息表Conteact合同信息表Conteact用来保存销售合同基本信息。结构如表4.5所示。表4.5 Conteact结构表编号字段名称数据结构说明1ContractldVarchar50合同编号2ClientVarchar100客户单位名称3SignDateVarchar10合同签订日期4StatusTinyInt合同状态(1-签订合同,2-实施合同,3-完成合同)5EmpNameVarchar50负责人姓名6DeliveryWayVarchar50交货方式7Delive
17、ryDateVarchar10交货日期8SettleWayTinyInt结算方式(1-支票,2-现金,3-签单,4-汇款)9LadtDayVarchar10有效期限10ContentsVarchar500合同内容11AdditionalVarchar500附加信息三、物理设计1.创建索引1)为Produce表创建一个以Prold为索引关键字惟一聚簇索引。2)为Cost表创建一个以Costld为索引关键字惟一聚簇索引。3)为Income表创建一个以Receiptld为索引关键字惟一聚簇索引。4)为ConProduct表创建一个以Contractld为索引关键字惟一聚簇索引。5)为Conteact
18、表创建一个以Contractld为索引关键字惟一聚簇索引。2.物理位置学生信息管理系统数据库数据文件安排如下:数据文件储存位置:e:officeMSSQLdata ContractSys_Data.MDF,将数据文件初始大小设为20MB,文件增长方式设为自动增长,文件增长增量设为5MB,文件增长上限设为500MB。事务日志存储位置:e:officeMSSQLdata ContractSys _Log.LDF,将日志文件初始大小设为20MB,文件增长量设为1MB,文件增长限制设为100MB。Microsoft SQL Server 2000提供了多种API,它使得其他应用程序访问数据库资源,这些
19、API被称为数据库访问API.数据库访问API允许应用程序执行一段T-SQL语句来访问一个关系数据库数据。这些API有:ADO,OLE,DB,ODBC,嵌入式SQL和DB-Libray等。本程序主要运用ADO数据访问接口,此接口使得程序设计者只要简单创建几个对象便可以连接数据来源,获取所需数据和进行数据访问后保存操作。ADO对象模型定义了一个可编程分层对象集合,主要由三个成员:Connection对象,Command对象和Recordest对象以及其它集合对象。ADO提供以执行以下操作方式:(1)接到数据源。(2)指定访问数据远命令,同时可带变量参数或优化执行。(3)执行命令,例如一个SELE
20、CT脚本。(4)如果这个命令使数据按表中行形式返回,则将这些行存储在易于检查,操作或更改缓存中。(5)适当情况下,可以把缓存更改内容写回数据库中,更新数据源。(6)提供常规方法检测错误,设计ADOError对象。第五章 界面设计1.登陆模块设计用户要使用本系统,首先要通过系统身份认证,也就是登陆。登陆过程需要完成一下任务:(1)根据用户名和密码来判断是否可能进入系统;(2)根据用户类型决定用户拥有权限。登陆模块如图5.1所示:图 5.1 登陆模块图登陆后首页如图5.2所示:图 5.2 企业销售合同管理首页图2.合同管理模块设计合同管理模块是本系统核心部分,可以实现一下功能:(1)创建合同;(2
21、)修改合同;(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 = Then MsgBox 请输入用户名 txtUser.SetFocus Exit Sub End If If txtPwd = Then MsgB
22、ox 请输入密码 txtPwd.SetFocus Exit Sub End If NameKey = MakeStr(txtUser) PasswordKey = MakeStr(txtPwd)判断用户是否存在 If MyUser.In_DB(NameKey) = False Then MsgBox 用户名不存在 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Sub End If End If判断密码是否正确 If MyU
23、ser.GetPwd(NameKey) PasswordKey Then MsgBox 密码错误 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Sub End If End If CurUser.UserName = MyUser.UserName关闭自己 Unload MeEnd Sub二、主界面代码Private Sub Cmd_Save_Click() Dim TmpId As String If Trim(txtI
24、d) = Then MsgBox 请输入合同编号 Exit Sub End If If Trim(txtClient) = Then MsgBox 请输入客户单位 Exit Sub End If If ComboSignDate.Text = Then MsgBox 请输入签约日期 Exit Sub End If TmpId = MakeStr(txtId) 判断产品编号是否已经存在 If Modify = False Or OriId Trim(txtId) Then If MyContract.In_DB(TmpId) = True Then MsgBox 合同编号“ + Trim(txt
25、Id) + ”已经存在,请重新输入 txtId.SetFocus txtId.SelStart = 0 txtId.SelLength = Len(txtId) Exit Sub End If End If With MyContract .ContractId = TmpId .Client = MakeStr(txtClient) 规范日期格式 .SignDate = Format(ComboSignDate.Text, yyyy-mm-dd) .EmpName = MakeStr(txtEmpName) .DeliveryWay = MakeStr(txtDeliveryWay) .De
26、liveryDate = 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 .Insert Modify = True OriId = .ContractId Else .Upd
27、ate (OriId) End If End With MsgBox 合同保存完成End SubPrivate Sub ComboDeliveryDate_GotFocus() 将焦点设置为下一个控件,否则将反复执行此过程 txtDeliveryWay.SetFocus 如果ComboDeliveryDate中包含日期,则将它赋值到FrmDateSel中 If ComboDeliveryDate.Text Then FrmDateSel.OriDate = ComboDeliveryDate.Text End If 设置FrmDateSel窗体位置 FrmDateSel.Left = Me.L
28、eft + ComboDeliveryDate.Left + 350 FrmDateSel.Top = Me.Top + ComboDeliveryDate.Top + ComboDeliveryDate.Height + 450 FrmDateSel.Show 1 将选择日期显示到ComboDeliveryDate控件中 ComboDeliveryDate.Text = FrmDateSel.OriDateEnd SubPrivate Sub ComboLastDay_GotFocus() 将焦点设置为下一个控件,否则将反复执行此过程 ComboSettle.SetFocus 如果Combo
29、LastDay中包含日期,则将它赋值到FrmDateSel中 If ComboLastDay.Text Then FrmDateSel.OriDate = ComboLastDay.Text End If 设置FrmDateSel窗体位置 FrmDateSel.Left = Me.Left + ComboLastDay.Left + 350 - FrmDateSel.Width FrmDateSel.Top = Me.Top + ComboLastDay.Top + ComboLastDay.Height + 450 FrmDateSel.Show 1 将选择日期显示到ComboLastDay
30、控件中 ComboLastDay.Text = FrmDateSel.OriDateEnd SubPrivate Sub ComboSignDate_GotFocus() 将焦点设置为下一个控件,否则将反复执行此过程 ComboSettle.SetFocus 如果ComboSignDate中包含日期,则将它赋值到FrmDateSel中 If ComboSignDate.Text Then FrmDateSel.OriDate = ComboSignDate.Text End If 设置FrmDateSel窗体位置 FrmDateSel.Left = Me.Left + ComboSignDat
31、e.Left + 350 FrmDateSel.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 String If Trim(txtCostId) = Then MsgBox 请输入凭单号 txtCostId.SetFocus Exit Su
32、b End If If Val(txtAmount) 0 Then MsgBox 费用应大于0 txtAmount.SetFocus Exit Sub End If If Trim(txtReceive) = Then MsgBox 请输入收款人 txtReceive.SetFocus Exit Sub End If If Trim(txtCashier) = Then MsgBox 请输入经办人 txtCashier.SetFocus Exit Sub End If If ComboDate.Text = Then MsgBox 请输入发生日期 ComboDate.SetFocus Exit
33、 Sub End If TmpId = TrimStr(txtCostId.Text) 判断凭单号是否已经存在 If Modify = False Or OriId TmpId Then If MyCost.In_DB(TmpId) = True Then MsgBox 凭单号 - + TmpId + - 已经存在,请重新输入 txtCostId.SetFocus Exit Sub End If End If With MyCost .ContractId = MyContract.ContractId .CostId = MakeStr(txtCostId) .CostType = Comb
34、oType.Text If 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 .Insert Else Call .Update(OriId)
35、End If End With Unload MeEnd S四、设计总结通过对这次课程设计亲手操作,我收获很多。本次我设计课程设计题目是企业销售合同管理系统。本题目实现是要由SQL Server 2000和Visual Basic共同设计完成,通过Visual Basic软件主要是实现本系统得前台设计,而SQL Server 2000是实现后台设计,来设计本系统数据库。通过参考相关书籍,使我知道我学知识仅仅是一些皮毛而已,使我知道我要学东西还很多,由此,我又联想到自己其他方面学习,都还有许多不足之处。同时我对所学SQL Server 数据库知识也有了更深一步了解,而且也扩展了自己知识面。由此,
36、我又联想到自己其他方面学习,都还有许多不足之处。在具体操作中,我动手能力也得到了很大地提高,把自己在书本上学到东西应用到具体实践中,使我体会到原来动手做时候一切并不向自己想象那么简单。在当今社会中就急需擅长动手、实践能力强真正人才。所以我以后要加强自己动手能力,把学到知识运用到现实生活当中去,化知识为力量,积极进取,做一个对社会有所建树人。参考文献1 周珂伟.Visual Basic 6.0数据库开发学习教程M.北京大学出版社,20012 陈松乔.现代软件工程M.北方交通大学出版社,20003 Wayne Freeze.Visual Basic数据库编程宝典M.电子工业出版社,20014 钱雪忠.新编Visual Basic教程M.机械工业出版社,20075 高春艳.Visual Basic 程序开发范例M宝典.人民邮电出版社,20066 王珊数据库系统原理教程M.清华大学出版社.2003,87 齐中英学用Visual Basic编程M.原子能出版社.1992,68 罗骏SQL实用简明教程M.清华大学出版社.1995,5 9 杨舒等.操作系统教程M.北京:华中科技大学出版社,200410 袁世鹰.管理系统设计与实现P.北京:开明出版社,2004