数据库课程设计报告-销售管理信息系统_第1页
数据库课程设计报告-销售管理信息系统_第2页
数据库课程设计报告-销售管理信息系统_第3页
数据库课程设计报告-销售管理信息系统_第4页
数据库课程设计报告-销售管理信息系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南理工大学计算机科学与技术学院课程设计报告201 0 201 1 学年第 一 学期课程名称 数据库系统原理 设计题目 销售管理信息系统 学生姓名 学 号 310809010207 专业班级 计算机0802 指导教师 2010 年 1月 14 日目录一、系统简介11.1、应用背景11.2、题目1二、系统分析与设计12.1、需求分析12.2、系统设计11系统功能设计12系统功能设计模块2三、分析与设计数据库23.1、概念设计23.2、逻辑设计33.3、数据库关系图53.4、数据库结构的实现5四、框架设计84.1、主窗体84.2、主窗体菜单114.3、连接数据库窗体114.4、系统运行后的各个功能

2、模块13五、系统使用说明24六、总结及致谢25七、参考文献25河南理工大学数据库课程设计一、系统简介1.1、应用背景无论是一个销售公司还是一个销售商店,都有很多的销售数据需要管理。手工管理这些纷繁复杂数据的方式已经不适应时代的潮流,实现数据规范化、自动化的电脑管理,是一个管理规范、运作高效的企事业单位的必然要求。本系统销售管理信息系统,就是为了实现各销售单位高效管理而设计的。1.2、题目 销售管理信息系统使用microsoft的sql server 2000作为后台的数据库系统,运用数据库的创建和客户端动态连接数据的方法、利用数据库后台存储过程和触发器、利用数据库缓存技术提供访问效率、利用ad

3、oconnection实现数据库的事务处理,完成一个信息管理系统,能实现系统登录、交易管理、进货统计、销售统计、业绩查看、查看数据表等功能。二、系统分析与设计2.1、需求分析 本系统主要考虑了最为普遍的销售管理需求:1、 进货时入库登记,以便日后查看和统计进货情况;2、 销售时把相应数量的商品从现存商品库中减去,并记录于另外的一个销售库中,以便日后查看和统计销售信息;3、 是销售就难免会有顾客退货情况发生,因此还需建立一个相应的退货管理,把退回来的货加入现存商品库,再从销售库中减去,进行退货登记;4、 还要能够随时查看各种信息表,如员工信息、进货信息、销售信息、退货信息;5、 除了以上一些基本

4、功能外,实际中公司用来进行决策和管理分析的数据才是用得最多的数据。因此还需要有一些相应的关于以上数据的统计信息。如希望查看各个时间段(如今日、本月、本年度等)的进货和销售情况,以便对以后的运作进行一个准确的预测和正确的决断;6、 为了调动员工的积极性,员工薪水应该和他的销售情况挂钩的,因此还需要能够查看各员工的销售情况,以便对他们的业绩进行考核和评比。以上数据如果采用传统的管理方式,则显得繁琐且容易出错,透明度也不高,容易使人有机可乘,造成公司账目混乱。本系统正是针对以上问题而设计,可以有效的管理数据。主要功能有交易管理,包括进货登记管理、销售登记管理、退货登记管理;进货统计管理,其中包括有关

5、进货的各种统计数据表,如今日进货统计、本月进货统计、本季度进货统计、本年度进货统计等;销售统计管理,其中包括有关销售的各种统计数据表,如今日销售统计、本月销售统计、本季度销售统计、本年度销售统计等;员工销售业绩的考核,可以很方便地查看个员工的销售情况,以便对个员工的业绩进行考核比较。2.2、系统设计1系统功能设计本系统总体的功能是实现销售公司销售管理的系统化、规范化和自动化,要完成的功能有:1) 系统登录:包括用户登录、添加用户、修改密码、退出系统等。2) 交易管理:包括进货登记、销售登记、退货等级等。其中进货登记中还包括进货厂商的登记,如果是新的进货厂商,可以在此登记入库。进货和销售的主要交

6、易都是在此进行。每次交易(包括进货、销售和退货)都需要对商品名、生产厂商、商品型号、单价、数量、总金额、交易日期、经受业务员编号等各项进行记录。3) 进货统计:包括今日进货统计、本月进货统计、本季度进货统计、本年度进货统计等。其中每次进货统计都是按进货厂商和进货金额顺序排列的。使用一个表格现实所选时间段的全部进货数据,包括进货编号、商品名、生产厂商、产品型号、单价、数量、总金额、进货日期、业务员编号等;再使用另一表格显示分别从各个厂商进货的金额,还有一个文本框用于显示此时间段的总进货金额。4) 销售统计:包括今日销售统计、本月销售统计、本季度销售统计、本年度销售统计等。其中每次销售统计都是按产

7、品厂商和销售金额顺序排列的,用户可以一目了然地看出各种型号产品的销售额。使用一个表格显示所选时间段的全部销售数据,包括销售编号、商品名、生产厂商、产品型号、单价、数量、总金额、销售日期、业务员编号等;再使用另一表格分别显示各个厂商产品的销售金额,还有一个文本框用于显示此时间段的总销售金额。5) 业绩查看:实现各员工销售情况的统计,可以一次性显示所有员工的销售情况,也可以根据员工编号查看各个员工的销售情况。6) 查看数据表:实现各种数据表的浏览,包括进货表、销售表、退货表、员工表、进货商表。浏览时此数据表的所有信息项全部显示。如果员工信息或进货商信息有变化,还可以对员工表和进货商表进行修改,其他

8、的表则不能修改,防止有人制造数据。2系统功能设计模块 对上述的功能进行集中、分块,按照结构化程序设计的要求,尽心分析,得到如下如所示的系统功能模块图。 图1 程序运行主界面图 图2 系统菜单界面三、分析与设计数据库3.1、概念设计根据以上分析,可得如下为e-r图manufacturerretreatemployeesellgoods退货管理销售销售mnmnmnnmnmmn型号数量销售年销售日业务员编号单价销售月总金额商品编号生产厂商 商品名员工编号 员工姓名 员工电话 员工地址 厂商编号 法人代表 厂商名称 厂商地址 商品编号生产厂商商品名型号单价总金额业务员编号数量退货年退货月退货日业务员编

9、号进货日进货月进货年总金额数量单价型号商品名生产厂商商品编号3.2、逻辑设计根据e-r图设计数据库表表1 employee表(员工表)字段名数据类型说明员工编号int标识,自动编号,主键员工姓名nvarchar字段大小为10员工电话nvarchar字段大小为20员工地址nvarchar字段大小为100表2 goods表(现存货表)字段名数据类型说明商品编号int标识,自动编号,主键生产厂商nvarchar字段大小为20,外键商品名nvarchar字段大小为20型号nvarchar字段大小为20单价money货币型数量numeric数值型总金额money货币型进货年smallint短整型进货月s

10、mallint短整型进货日smallint短整型业务员编号int整型,外键表3 sell表(已售商品表)字段名数据类型说明商品编号int标识,自动编号,主键生产厂商nvarchar字段大小为20,外键商品名nvarchar字段大小为20型号nvarchar字段大小为20单价money货币型数量numeric数值型总金额money货币型销售年smallint短整型销售月smallint短整型销售日smallint短整型业务员编号int整型,外键表4 retreat表(退货表)字段名数据类型说明商品编号int标识,自动编号,主键生产厂商nvarchar字段大小为20,外键商品名nvarchar字段

11、大小为20型号nvarchar字段大小为20单价money货币型数量numeric数值型总金额money货币型退货年smallint短整型退货月smallint短整型退货日smallint短整型业务员编号int整型,外键表5 manufacturer表(进货厂商表)字段名数据类型说明厂商编号int标识,自动编号,主键厂商名称nvarchar唯一约束,字段大小为20法人代表nvarchar字段大小为10厂商地址nvarchar字段大小为100表6 uesrdb表字段名数据类型说明用户编号int标识,自动编号,主键用户名nvarchar字段大小为10密码nvarchar字段大小为103.3、数据库

12、关系图图3 数据库关系图3.4、数据库结构的实现1)创建系统用户表格userdbcreate table userdb(用户编号 int identity(1,1) not null,用户名 nvarchar(10) collate chinese_prc_ci_as null,密码 nvarchar(10) collate chinese_prc_ci_as null,constraint pk_userdb primary key clustered(用户编号) on primary)on primarygo2)创建员工基本信息表格employeecreate table employee

13、(员工编号 int identity(1,1) not null,员工姓名 nvarchar(10) collate chinese_prc_ci_as null,员工电话 nvarchar(20) collate chinese_prc_ci_as null,员工地址 nvarchar(100) collate chinese_prc_ci_as null,constraint pk_employee primary key clustered(员工编号) on primary)on primarygo3)创建进货厂商信息表格manufacturercreate table manufact

14、urer(厂商编号 int identity(1,1) not null,厂商名称 nvarchar(20) collate chinese_prc_ci_as not null,法人代表 nvarchar(10) collate chinese_prc_ci_as null,电话 nvarchar(20) collate chinese_prc_ci_as null,厂商地址 nvarchar(100) collate chinese_prc_ci_as null,constraint pk_manufacturer primary key clustered(厂商编号) on primar

15、y,constraint ix_manufacturer_1 unique nonclustered(厂商名称)on primary)on primarygo4)创建现存货信息表格goodscreate table goods(商品编号 int identity(1,1) not null,生产厂商 nvarchar(20) collate chinese_prc_ci_as null,商品名 nvarchar(20) collate chinese_prc_ci_as null,型号 nvarchar(20) collate chinese_prc_ci_as null,单价 money n

16、ull constraint df_goods_单价 default(0),数量 numeric(10,0) null constraint df_goods_数量 default(0),总金额 money null,进货年 smallint null constraint df_goods_进货年 default(datepart(year,getdate(),进货月 smallint null constraint df_goods_进货月 default(datepart(month,getdate(),进货日 smallint null constraint df_goods_进货日

17、default(datepart(day,getdate(),业务员编号 int null,constraint pk_goods primary key clustered(商品编号) on primary,constraint fk_goods_employee foreign key(业务员编号)references employee(员工编号),constraint fk_goods_manufacturer foreign key(生产厂商)references manufacturer(厂商名称)on primarygo5)创建已售商品信息表格sellcreate table se

18、ll(商品编号 int identity(1,1) not null,生产厂商 nvarchar(20) collate chinese_prc_ci_as not null,商品名 nvarchar(50) collate chinese_prc_ci_as null,型号 nvarchar(50) collate chinese_prc_ci_as null,单价 money null constraint df_sell_单价 default(0),数量 int null constraint df_sell_数量 default(0),总金额 money null constraint

19、 df_sell_总金额 default(0),销售年 smallint null constraint df_sell_销售年 default(datepart(year,getdate(),销售月 smallint null constraint df_sell_销售月 default(datepart(month,getdate(),销售日 smallint null constraint df_sell_销售日 default(datepart(day,getdate(),业务员编号 int null,constraint pk_sell primary key clustered(商

20、品编号) on primary,constraint fk_sell_employee foreign key(业务员编号)references employee(员工编号),constraint fk_sell_manufacturer foreign key(生产厂商)references manufacturer(厂商名称)on primarygo6)创建退货信息表格retreatcreate table retreat(退货编号 int identity(1,1) not null,厂商 nvarchar(20) collate chinese_prc_ci_as null,商品名 n

21、varchar(20) collate chinese_prc_ci_as null,型号 nvarchar(20) collate chinese_prc_ci_as null,单价 money null constraint df_retreat_单价 default(0),数量 int null constraint df_retreat_数量 default(0),总金额 money null constraint df_retreat_总金额 default(0),退货年 smallint null,退货月 smallint null,退货日 smallint null,业务员编号

22、int null,constraint pk_retreat primary key clustered(退货编号) on primary,constraint fk_retreat_employee foreign key(业务员编号)references employee(员工编号),constraint fk_retreat_manufacturer foreign key(厂商)references manufacturer(厂商名称)on primarygo7)在sqlserver 2000上创建数据库use mastergoif exists (select name from m

23、aster.dbo.sysdatabases where name=nsellsystem)drop databasesellsystemgocreate databasesellsystemgouse sellsystemgo四、框架设计4.1、主窗体本系统的主窗体是一个多文档(mdi)窗体,使用mdi窗体可以使程序条理清晰。因为mdi窗体时父窗体,它负责整个程序的启动和关闭,其他的窗体都是它的子窗体,一个应用程序只能有一个mdi窗体,但可以拥有多个子窗体。主窗体的界面显示如图4所示:图4销售管理信息系统主窗体主窗体的实现代码如下:private sub mdiform_load() 在主窗

24、体中打开对数据库的连接 dim strcnn as string 定义一个连接串变量 strcnn = provider=msdasql.1;persist security info=false;data source=sellsystem strcnn = provider=sqloledb.1;password=sa;persist security info=true;user id=sa;initial catalog=sellsystem;data source=(local) conn.open strcnn 没有登录前设置各菜单不可用 mdifrmmain.mnadduser.

25、enabled = false mdifrmmain.mnchpwd.enabled = false mdifrmmain.mntrade.enabled = false mdifrmmain.mnbuy.enabled = false mdifrmmain.mnsell.enabled = false mdifrmmain.mngrade.enabled = false mdifrmmain.mntable.enabled = falseend subprivate sub mdiform_unload(cancel as integer) if conn.state = adstateop

26、en then conn.close end ifend subprivate sub mnadduser_click() frmadduser.show frmadduser.setfocusend subprivate sub mnbuylog_click() frmaddgoods.showend sub private sub mnchpwd_click() frmchpwd.show frmchpwd.setfocusend subprivate sub mnem_click() frmemtable.showend subprivate sub mnemlogin_click()

27、frmlogin.show frmlogin.setfocusend subprivate sub mnexit_click() unload meend subprivate sub mnfc_click() frmfctable.showend subprivate sub mngoodstable_click() frmgoods.showend subprivate sub mngrade_click() frmshowgrade.showend subprivate sub mnretable_click() frmretreattable.showend subprivate su

28、b mnretreat_click() frmretreat.showend subprivate sub mnselllog_click() frmsell.showend subprivate sub mnselltable_click() frmshowsell.showend subprivate sub mntbuy_click() 设置frmbuyst窗体中sstabbuy控件的current tab=0,即进入tab=0的选项卡 frmbuyst.sstabbuy.tab = 0 frmbuyst.showend subprivate sub mnthmbuy_click() f

29、rmbuyst.sstabbuy.tab = 1 frmbuyst.showend subprivate sub mnthsbuy_click() frmbuyst.sstabbuy.tab = 2 frmbuyst.showend subprivate sub mnthybuy_click() frmbuyst.sstabbuy.tab = 3 frmbuyst.showend subprivate sub mntsell_click() frmsellst.sstabsell.tab = 0 frmsellst.showend subprivate sub mnthmsell_click(

30、) frmsellst.sstabsell.tab = 1 frmsellst.showend subprivate sub mnthssell_click() frmsellst.sstabsell.tab = 2 frmsellst.showend subprivate sub mnthysell_click() frmsellst.sstabsell.tab = 3 frmsellst.showend sub4.2、主窗体菜单使用菜单编辑器为本窗体添加多级菜单,完成后如图1 程序运行主界面和图 图2 系统菜单界面所示。4.3、连接数据库窗体连接数据库窗体主要是负责动态地打开对数据库的链接

31、。其截面图如图5所示:图5 连接数据库窗体图连接数据库窗体实现的代码:private sub cmdcancel_click() unload meend subprivate 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

32、 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 errconnec

33、t if conn.state = adstateopen then conn.close end if conn.open connstr msgbox 连接数据库成功!, vbokonly + vbexclamation, 提示 显示登录窗体 frmlogin.show frmlogin.setfocus unload me exit suberrconnect: msgbox err.description, vbokonly + vbexclamation, 提示end subprivate sub form_load() 让窗体居中 call makecenter(me)end su

34、bprivate sub optionsqlserver_click() if optionsqlserver.value = true then lbluser.enabled = true lblpassword.enabled = true txtuser.enabled = true txtpassword.enabled = true end ifend subprivate sub optionwindows_click() if optionwindows.value = true then lbluser.enabled = false lblpassword.enabled

35、= false txtuser.enabled = false txtpassword.enabled = false end ifend sub4.4、系统运行后的各个功能模块 此部分主要包含系统运行后,部分主要功能模块的界面(功能模块相似的不列在内),以及部分实现代码。1、进货登记窗体图6 进货登记窗体进货登记窗体实现的代码:dim rs_addfc as new adodb.recordsetdim rs_add as new adodb.recordsetprivate sub cmdaddfc_click() txtgoodsno.enabled = false if txtmanu

36、facturer.text = then msgbox 请填写厂商名称!, vbokonly + vbinformation, 注意 txtmanufacturer.setfocus exit sub elseif txtcoporatation.text = then msgbox 请填写厂商法人代表!, vbokonly + vbinformation, 注意 txtcoporatation.setfocus exit sub elseif txtphone.text = then msgbox 请填写电话!, vbokonly + vbinformation, 注意 txtphone.s

37、etfocus exit sub elseif txtaddress.text = then msgbox 请填写厂商地址!, vbokonly + vbinformation, 注意 txtaddress.setfocus exit sub end if dim sqlfc as string sqlfc = select * from manufacturer rs_addfc.open sqlfc, conn, adopenkeyset, adlockpessimistic rs_addfc.addnew rs_addfc.fields(1) = txtmanufacturer.text

38、 rs_addfc.fields(2) = txtcoporatation.text rs_addfc.fields(3) = txtphone.text rs_addfc.fields(4) = txtaddress.text rs_addfc.update msgbox 添加厂商成功, vbokonly + vbexclamation, 提示 rs_addfc.closeend subprivate sub cmdadd_click() txtgoodsno.enabled = false if txtfc.text = then msgbox 请填写厂商名称!, vbokonly + v

39、binformation, 注意 txtfc.setfocus 使txtfc获得光标焦点 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 请填写商品价格!, vbo

40、konly + 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 请填写销售月份!

41、, 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

42、 + vbinformation, 注意 txtmoney.setfocus exit sub end if dim sql as string sql = select * from goods rs_add.open sql, 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_ad

43、d.fields(5) = val(txtquantity.text) 使用val函数把textbox.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 msgbox 添加商品入库成功, vbokonly + vbexclamation, 提示 rs_ad

44、d.closeend subprivate sub cmdreset_click() txtname.text = txtfc.text = txttype.text = txtprice.text = txtquantity.text = txtyear.text = txtmon.text = txtday.text = txtem.text = txtmoney.text = end subprivate sub cmdresetfc_click() txtmanufacturer.text = txtcoporatation.text = txtphone.text = txtaddr

45、ess.text = end sub2、进货统计窗体图7 进货统计选项卡图进货统计窗体实现代码:private sub form_activate() 让窗体居中 call makecenter(me) dim inty as integer 当前年份 dim intm as integer 当前月份 dim intd as integer 当前日期 inty = year(date) intm = month(date) intd = day(date) dim sqlbuy as string dim sqlfctotal as string 各厂商进货总金额 dim sqltotal a

46、s string 总进货金额 dim rs_check as new adodb.recordset dim rs_fctotal as new adodb.recordset dim rs_total as new adodb.recordset rs_check.cursorlocation = aduseclient 设置游标方式 rs_fctotal.cursorlocation = aduseclient rs_total.cursorlocation = aduseclient adodc1.connectionstring = connstr set datagrid1.data

47、source = adodc1 adodc2.connectionstring = connstr set datagrid2.datasource = adodc2 adodc3.connectionstring = connstr set datagrid3.datasource = adodc3 adodc4.connectionstring = connstr set datagrid4.datasource = adodc4 adodc5.connectionstring = connstr set datagrid5.datasource = adodc5 adodc6.conne

48、ctionstring = connstr set datagrid6.datasource = adodc6 adodc7.connectionstring = connstr set datagrid7.datasource = adodc7 adodc8.connectionstring = connstr set datagrid8.datasource = adodc8 select case sstabbuy.tab case 0 今日进货选项卡 sstabbuy.tabenabled(0) = true 设为可用 sstabbuy.tabenabled(1) = false 设为不可用 sstabbuy.tabenabled(2) = false sstabbuy.tabenabled

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论