1、摘 要多年来,计算机技术日趋成熟,数据库技术不停发展,管理信息系统应用已延伸到社会各个领域。结合管理信息系统开发方法及步骤,以此为理论基础,开发出一个小型信息管理系统化妆品销售系统。 销售管理系统是经典信息管理系统(MIS),其开发关键包含后台数据库建立和维护和前端应用程序开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好库。而对于后者则要求应用程序功效完备,易使用等特点。 经过分析,决定使用 MICROSOFT企业 VISUAL BASIC开发工具,利用其提供多种面向对象开发工具,尤其是数据窗口这一能方便而简练操纵数据库智能化对象,首先在短时间内建立系统应用原型,然后,对初始
2、原型系统进行需求迭代,不停修正和改善,直到形成用户满意可行系统。关键词:数据库;Visual Basic6.0;化妆品销售管理 目 录第一章、绪论1第二章、系统分析和设计12.1对本系统功效分析12.2对本系统数据结构设计22.3 数据库设计3第三章、系统实现43.1登录窗口43.2化妆品销售系统界面6查询窗口8结论18参考文件19第一章、绪论现代科学发展,使计算机进入了几乎一切领域。从科学研究到工农业生产,从企业生产管理到家庭生活,各行各业全部广泛地使用着计算机。当今社会数据信息管理离不开计算机技术支持。怎样实现对数据信息快捷、有效、实用管理,是软件开发业追求目标。 伴随改革开放给中国经济带
3、来高速发展同时,大批中小企业碰到了前所未有挑战跟机遇。为了利润最大化,为提升工作效率,为降低劳动冗余,大家将业务和计算机结合,有了信息管理系统诞生。伴随计算机信息处理加紧,大家越来越认同这种管理系统所带来便捷和高效。小型化妆品销售企业及店铺全部在主动尝试信息化带来丰硕结果,不停更新观念,摈弃传统观念束缚,尝试着采取更方便快捷信息管理系统。化妆品销售管理系统和传统手工统计方法相比,消除了反复劳动带来冗余工作量,效率愈加高效,灵活工作方法给从业着提供了更多选择空间,规范考评绩效,评定方法等实施规范。同时,避免了手工操作带来烦琐,效率低下缺点。我前台采取visul basic软件,后台数据库采取ac
4、cess关系型数据库管理系统,对所需数据进行保留和处理。本系统要实现功效有基础数据设置,入库管理,出库管理,库存管理,营业统计,数据管理等功效模块。其中基础数据设置负责对化妆品基础信息录入;入库管理负责对采购化妆品登记和查询,采购退货登记和查询;出库管理负责销售化妆品登记和查询,销售退货登记和查询;库存管理负责库存查询,库存预警,库存损益;营业统计负责营业统计,销售化妆品排行榜,每日结帐,历史帐单查询;数据管理负责数据库备份和恢复,用户管理和口令修改,界面设置。经过对上述功效实现,满足化妆品市场需求。第二章、系统分析和设计2.1对本系统功效分析在对化妆品销售行业组织结构及职能充足调查了解后,依
5、据对化妆品销售行业数据流动特点分析,现在能够进行系统功效分析,依据软件工程原理,需求分析任务是确定系统必需完成工作。经过具体调研分析以后,能够得出化妆品销售系统必需含有功效下:1、库存管理功效:应该包含商品入库、库存退回、入库明细查询;2、销售管理功效:应该包含商品售出、售出商品退回;3、销售查询功效:应该包含销售情况查询、赠予情况查询;2.2对本系统数据结构设计本系统中,用户先登录到系统中,输入用户名判定密码表中是否有此用户,这是个验证过程,经过验证才能确定登录。使用本系统能够方便地管理商品名称、商品代码、产地、功效、保质期、生产日期和价格等基础信息,立即调整资料最新信息,提升汽车租赁管理管
6、理水平,从而使化妆品管理真正实现无纸化。本系统实现功效关键包含:用户管理,系统用户登录后,进入管理界面,能够对库存管理、销售管理、销售查询进行增、删、改操作。系统操作步骤图以下:化妆品管理系统库存管理销售管理销售查询退 出商品入库商品售出库存退回入库明细查询售出商品退出销售情况查询赠予情况查询2.3 数据库设计商品库存:表商品名称商品数量商品售价12346110425大象100120欧莱雅40380 入库明细:表商品名称入库时间数量备注大象121810012346121811111234612185退回欧莱雅0商品销售:表商品名称销售日期商品售价商品数量123461218251第三章、系统实现
7、3.1登录窗口登录窗口关键应用于用户登录、输入密码等功效。登陆界面关键程序:Private Sub Command1_Click() Dim MPassword As String Adodc1.RecordSource = select * from 密码表 where username = & Text1.Text & Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then MPassword = Adodc1.Recordset.Fields(password) If Text2.Text = MPassword Then 判定数据密码
8、是否正确 Name1 = Text1.Text main.Show frm_Main.Show Unload Me Else MsgBox 密码不正确,请您确定后重新输入, , 提醒信息 Text2.Text = Text2.SetFocus End IfElse MsgBox 对不起 没有此用户信息, , 提醒信息 Text1.Text = Text2.Text = End IfEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load() Adodc1.RecordSource = select * from 密码表
9、 Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then ListView1.Enabled = True ListView1.ListItems.Clear i = 1 Adodc1.Recordset.MoveFirst Do While Adodc1.Recordset.EOF = False Key = Adodc1.Recordset.Fields(username) Set itmX = ListView1.ListItems.Add(, , Key, i) i = i + 1 Adodc1.Recordset.MoveNext
10、Loop Else ListView1.Enabled = False End IfEnd SubPrivate Sub ListView1_Click() Text1.Text = ListView1.SelectedItem Adodc1.Refresh Text2.SetFocusEnd Sub3.2化妆品销售系统界面用户在登录后首页后会看到化妆品销售系统界面,分为五大部分,分别是:库存管理、销售管理、销售查询、帮助、退出。关键代码: Private Sub Form_Load()End SubPrivate Sub 相关_Click(Index As Integer)gy.Show 1
11、End SubPrivate Sub 库存查询_Click(Index As Integer)kccx.Show 1End SubPrivate Sub 库存退回_Click(Index As Integer)spth.Show 1End SubPrivate Sub 日查询_Click(Index As Integer)Dim db As DatabaseDim rs As Recordsetsl = 0zj = 0yl = 0Set db = OpenDatabase(App.Path & db1.mdb)Set rs = db.OpenRecordset(select * from 商品
12、销售 where 销售日期 like & Date & ) If rs.EOF Or rs.BOF Then MsgBox (当日没商品售出) Else rcx.Show 1 End IfEnd SubPrivate Sub 入库明细查询_Click()rkmx.Show 1End SubPrivate Sub 商品入库_Click(Index As Integer)sprk.Show 1End SubPrivate Sub 商品售出_Click(Index As Integer)spcs.Show 1End SubPrivate Sub 商品退回_Click(Index As Integer
13、)spth.Show 1End SubPrivate Sub 售出商品退回_Click()scspth.Show 1End SubPrivate Sub 退出_Click(Index As Integer)Unload MeEnd SubPrivate Sub 销售情况查询_Click(Index As Integer)rcx.Show 1End SubPrivate Sub 赠予情况查询_Click()zscx.Show 1End Sub3.3查询窗口查询窗口是根据分类来查询,经过在TextBox里输入想要查询方法,再点击下边对应按钮,就能显示想要查询信息。Private Sub Comma
14、nd1_Click()Unload MeEnd SubPrivate Sub Command2_Click()If Combo4.Text = Then cb4 = *Else cb4 = Combo4.TextEnd IfIf Combo1.Text = Then cb1 = *Else cb1 = Combo1.TextEnd IfIf Combo2.Text = Then cb2 = *Else cb2 = Combo2.TextEnd IfIf Combo3.Text = Then cb3 = *Else cb3 = Combo3.TextEnd If Dim db As Databa
15、seDim rs As Recordsetsl = 0zj = 0Set db = OpenDatabase(App.Path & db1.mdb)Set rs = db.OpenRecordset(select * from 商品销售 where 商品名称 like & cb4 & and year(销售日期) like & cb1 & and Month(销售日期) like & cb2 & and day(销售日期) like & cb3 & ) If rs.EOF Or rs.BOF Then MsgBox (没有符合条件统计!) Else With MSFlexGrid1 .Form
16、atString = |商品名称|商品售价|商品售出数量|售出时间|累计 .ColWidth(0) = 0 .ColWidth(1) = .ColWidth(2) = 1300 .ColWidth(3) = 1300 .ColWidth(4) = .ColWidth(5) = 1300 .Rows = 1Wi: hj = 0 hj = rs(商品售价) * rs(商品数量) .AddItem vbTab & rs(商品名称) & vbTab & rs(商品售价) & vbTab & rs(商品数量) & vbTab & rs(销售日期) & vbTab & hj sl = sl + rs(商品
17、数量) zj = zj + hj rs.MoveNext If Not (rs.EOF Or rs.BOF) Then GoTo Wi End If .AddItem vbTab & 累计 & vbTab & zj & vbTab & sl & vbTab & & vbTab & zj End WithEnd IfEnd SubPrivate Sub Form_Load() Dim ra As Recordset Dim db As Database Set db = OpenDatabase(App.Path & db1.mdb) Set ra = db.OpenRecordset(sele
18、ct * from 商品库存 ) If ra.BOF Or ra.EOF Then GoTo en End If With Combo4Wi1: .AddItem ra(商品名称) ra.MoveNext If Not (ra.EOF Or ra.BOF) Then GoTo Wi1 End If End Withen:With MSFlexGrid1 .FormatString = |商品名称|商品售价|商品售出数量|售出时间|累计 .ColWidth(0) = 0 .ColWidth(1) = .ColWidth(2) = 1300 .ColWidth(3) = 1300 .ColWidt
19、h(4) = .ColWidth(5) = 1300 .Rows = 1End WithEnd SubPublic lj As BooleanPrivate Sub Check1_Click() lj = Not lj Combo2.Visible = ljEnd SubPrivate Sub Combo1_Click(Index As Integer) Dim ra As Recordset Set db = OpenDatabase(App.Path & db1.mdb) Set ra = db.OpenRecordset(select * from 商品库存 where 商品名称 lik
20、e & Combo1(0).Text & ) Text2(1).Text = ra(商品售价)End SubPrivate Sub Command1_Click(Index As Integer)If Combo1(0) = Then MsgBox (请选择商品名称) GoTo enEnd IfIf Not IsNumeric(Trim(Text2(1) Then MsgBox (请输入正确商品单价) Text2(1).Text = Text2(1).SetFocus GoTo en1End IfDim db As DatabaseDim ra As RecordsetDim rs As Re
21、cordsetDim rs1 As RecordsetDim sql As StringSet db = OpenDatabase(App.Path & db1.mdb)Set ra = db.OpenRecordset(select * from 商品库存 where 商品名称 like & Combo1(0).Text & ) If ra(商品数量) = 0 Then MsgBox (商品已全部售出!) GoTo en End Ifra.Editra(商品数量) = ra(商品数量) - 1ra.UpdateSet rs = db.OpenRecordset(select * from 商
22、品销售 where 商品名称 like & Combo1(0).Text & and 销售日期 like & Date & )If rs.EOF Or rs.BOF Then rs.AddNew rs(商品名称) = Combo1(0).Text rs(商品售价) = Text2(1).Text rs(商品数量) = 1 rs(销售日期) = DateElse rs.Edit rs(商品数量) = rs(商品数量) + 1End Ifrs.UpdateMsgBox (商品出售成功!)If lj Then Set ra = db.OpenRecordset(select * from 商品库存
23、where 商品名称 like & Combo2.Text & ) ra.Edit ra(商品数量) = ra(商品数量) - 1 ra.Update aaa = 0 aaa = ra(商品售价) Set rs = db.OpenRecordset(select * from 赠予情况 where 商品名称 like & Combo2.Text & and 赠予日期 like & Date & ) If rs.EOF Or rs.BOF Then rs.AddNew rs(商品名称) = Combo2.Text rs(赠予数量) = 1 rs(赠予日期) = Date rs(商品售价) = a
24、aa Else rs.Edit rs(赠予数量) = rs(赠予数量) + 1 End If rs.UpdateElseEnd If en:Combo1(0).Text = en1:Text2(1).Text = End SubPrivate Sub Command2_Click(Index As Integer)Unload MeEnd SubPrivate Sub Text1_Change(Index As Integer)End SubPrivate Sub Form_Load()lj = False Dim ra As Recordset Dim db As Database Set
25、db = OpenDatabase(App.Path & db1.mdb) Set ra = db.OpenRecordset(select * from 商品库存 ) If ra.BOF Or ra.EOF Then MsgBox (请先入库) GoTo en End If With Combo1(0)Wi1: .AddItem ra(商品名称) ra.MoveNext If Not (ra.EOF Or ra.BOF) Then GoTo Wi1 End If End With Set db = OpenDatabase(App.Path & db1.mdb) Set ra = db.Op
26、enRecordset(select * from 商品库存 ) With Combo2Wi2: .AddItem ra(商品名称) ra.MoveNext If Not (ra.EOF Or ra.BOF) Then GoTo Wi2 End If End Withen:End Sub Private Sub Command1_Click()Unload MeEnd SubPrivate Sub Command2_Click()If Combo4.Text = Then cb4 = *Else cb4 = Combo4.TextEnd IfIf Combo1.Text = Then cb1
27、= *Else cb1 = Combo1.TextEnd IfIf Combo2.Text = Then cb2 = *Else cb2 = Combo2.TextEnd IfIf Combo3.Text = Then cb3 = *Else cb3 = Combo3.TextEnd If Dim db As DatabaseDim rs As Recordsetsl = 0zj = 0Set db = OpenDatabase(App.Path & db1.mdb)Set rs = db.OpenRecordset(select * from 赠予情况 where 商品名称 like & c
28、b4 & and year(赠予日期) like & cb1 & and Month(赠予日期) like & cb2 & and day(赠予日期) like & cb3 & ) If rs.EOF Or rs.BOF Then MsgBox (没有符合条件统计!) Else With MSFlexGrid1 .FormatString = |商品名称|商品售价|商品赠予数量|赠予时间|累计 .ColWidth(0) = 0 .ColWidth(1) = .ColWidth(2) = 1300 .ColWidth(3) = 1300 .ColWidth(4) = .ColWidth(5) =
29、 1300 .Rows = 1Wi: hj = 0 hj = 0 - rs(商品售价) * rs(赠予数量) .AddItem vbTab & rs(商品名称) & vbTab & rs(商品售价) & vbTab & rs(赠予数量) & vbTab & rs(赠予日期) & vbTab & hj sl = sl + rs(赠予数量) zj = zj + hj rs.MoveNext If Not (rs.EOF Or rs.BOF) Then GoTo Wi End If .AddItem vbTab & 累计 & vbTab & zj & vbTab & sl & vbTab & & v
30、bTab & zj End WithEnd IfEnd SubPrivate Sub Form_Load() Dim ra As Recordset Dim db As Database Set db = OpenDatabase(App.Path & db1.mdb) Set ra = db.OpenRecordset(select * from 商品库存 ) If ra.BOF Or ra.EOF Then GoTo en End If With Combo4Wi1: .AddItem ra(商品名称) ra.MoveNext If Not (ra.EOF Or ra.BOF) Then
31、GoTo Wi1 End If End Withen:With MSFlexGrid1 .FormatString = |商品名称|商品售价|商品售出数量|售出时间|累计 .ColWidth(0) = 0 .ColWidth(1) = .ColWidth(2) = 1300 .ColWidth(3) = 1300 .ColWidth(4) = .ColWidth(5) = 1300 .Rows = 1End WithEnd Sub结论经过这几周学习和探索。我最终完成了这个“化妆品销售系统”。经过开发过程,我比较深入掌握了visual Basic6.0使用方法,对数据库了解也愈加深刻了。由始至终
32、开发过程,让我深刻体会到软件工程这门学科对于程序开发关键性。一个工程开发,编程过程并不最关键,对于那些书里掌握编程语言软件开发者来说,一个工程代码实现,并不难做到。真正关键反而是那些在编程之前所需做工作。从软件需求分析到系统设计,每一步全部很关键,一个高质量软件,从一开始就在扎扎实实做好需求分析,为后续系统设计和实现打下良好基础。本系统界面美观,设计合理,能够实现估计功效,但系统容错性还不是很完善。这也暴露出我编程能力还有待提升。以后我会继续努力学习,不停充实自己,提升自己。 总来说,本系统设计是符适用户要求,能够为用户使用。参考文件1张莉 SQL Server数据库原理及应用教程 清华大学出版社 1999年2杨正洪 数据库技术 高等教育出版社 3郎彦主编 数据库原理和应用 高等教育出版社 1999年4陶恂 Visual Basic数据库编程机械工业出版社