最新VB图书销售管理系统汇编.docx
《最新VB图书销售管理系统汇编.docx》由会员分享,可在线阅读,更多相关《最新VB图书销售管理系统汇编.docx(30页珍藏版)》请在冰点文库上搜索。
最新VB图书销售管理系统汇编
XXXXX
《VB程序设计》课程设计报告
题目:
图书销售管理系统
所在院系:
信息技术学院
学生:
XX
指导老师:
XX
日期:
二XXXXXXX
摘要:
图书作为一种关系到人们工作、学习及生活等各个方面的特殊商品,在人们的生活水平日益提高的同时,它的地位也越来越重要,然而图书品种繁多,销售模式特殊,随着信息化的快速发展和业务量的不断增大,传统的手工管理手段已经无法适应图书销售业的发展,如今,图书销售业需要实现销售业务的计算机管理,迫切需要开发出相应的销售管理软件,从而加强对图书销售的管理,通过计算机来完成大量本来由工作人员手工完成的工作,真正达到合理和充分利用现有资源,减轻工作压力的效果。
因此,开发一个图书销售管理系统是很有必要的,除此之外,图书销售管理系统也有着广泛的市场前景和实际的应用价值。
经过分析,使用微软公司的VisualBasic6.0开发工具及Access数据库,设计了图书销售管理系统。
关键字:
图书销售管理系统,数据库,VisualBasic6.0
Abstract:
Asaparticularcommodity,booksaffectpeople’swork,studyandlifeandsoon.Atthesametime,people’slivingstandardsarerisingquickly,now,itplaysamoreandmoreimportantrole,however,awidevarietyofbooksandspecialsalesmode,Withtherapiddevelopmentofinformationtechnologyandthegrowingvolumeofbusiness,thetraditionalmanagementtoolshavenotadaptedthedevelopmentofthebooksellingindustry,today,industrysalesofbooksneedtoachievesalesofcomputermanagement.itisurgenttodeveloprelevantsalesmanagementsoftware,sothatpeoplecanstrengthentheBooksalesmanagement,usingcomputerstofinishthelargeamountofworkwhichwasfinishedbyhandbefore,peoplecanreallymakefulluseofexistingresourcesandalleviatethepressureofwork..Asaresult,itisverynecessarytodevelopaBookSellingManagementSystem.,inaddition,thebooksalesmanagementsystemsalsohavebroadmarketprospectsandpracticalapplication.
Afteranalysis,usingMicrosoft'sVisualBasic6.0andAccessdatabasedevelopmenttooltodesignthebooksalesmanagementsystem..
Keywords:
BookSellingManagementSystem,database,VisualBasic6.0
一:
开发环境介绍:
1.1VisualBasic简介
VisualBasic简称VB,是Microsoft公司推出的一种Windows应用程序开发工具。
是当今世界上使用最广泛的编程语言之一,它也被公认为是编程效率最高的一种编程方法。
早在1991年,为了简化Windows应用程序的开发,微软公司推出了VisualBasic1.0,如今的最新版本是VisualBasic6.0。
VisualBasic6.0集成开发环境包含标题栏、菜单栏、工具栏、窗体设计器窗口、工程资源管理器窗口、工程窗口、窗体布局窗口和属性窗口。
VisualBasic6.0的特点有:
可视化的设计平台、面向对象的设计方法、事件驱动的编程机制、结构化的设计语言、充分利用Windows资源、开放的数据库功能与网络支持。
二:
系统需求分析与功能模块
2.1系统需求分析
一般的图书销售管理系统包括,进货管理,销售管理,库存管理,退货管理,销售统计,信息维护等功能。
以下介绍一下销售管理系统的一些必备功能,每个功能由若干相关的子模块构成。
进货管理
包括进书录入及查询
销售管理
主要对销售的情况进行记录及浏览销售情况
库存管理
主要对库存量进行录入与查询。
退货管理
对顾客退回来的书籍进行管理,包括退货录入及查询
销售统计
主要是对销售业绩进行统计,以报表的形式显示销售业绩
信息维护
主要包括图书信息维护,人员信息维护及用户信息维护,其中只有管理员可以对人员信息进行维护,管理员可以更改所有用户的信息,用户只能修改个人信息。
2.2系统的功能可用如图2-1所示框图表示。
图2-1
2.3数据库设计
本系统的数据库采用MicrosoftAccess2003
2.3.1建立Access数据库
启动Access2003,选择文件,新建,空数据库(books_sale.mdb),如图2-2所示
图2-2
2.3.2创建表
在上面的基础上,选择主菜单中的插入->表格,根据要求设计相应的表格,本系统中设计的表格如下所示:
tb_login(用户登录信息表)
tb_buybooks(图书进货录入表)
tb_personnelinfo(人员信息维护表)
tb_sale(图书销售表)
tb_store(图书库存表)
tb_withdraw(图书退货表)
三:
系统具体实现
3.1欢迎界面
.在此界面中引用了一个第三方控件(ccrpprg6),它是一个进度条控件。
首先要加载此控件,具体方法是把压缩包ccrpprg6.zip解压缩,然后在工具箱的空白处单击鼠标右键,从弹出的快捷菜单中启动"部件"窗口,如图3-1所示。
图3-1
点击"浏览"按钮,从存放ccrpProgressBar控件的文件夹中找到ccrpprg.ocx文件。
点击"应用"后ccrpProgressBar控件
就添加到工具箱中了。
.向窗体中添加一个ccrpProgressBar控件和一个Timer控件
Timer控件的Interval值设置为100,与ccrpProgressBar控件的默认值一致。
.在timer1的timer事件中添加如下代码
Ifi=100Then
Frm_before.Hide
Timer1.Enabled=False'定时器停止工作
Frm_login.Show
Else’i不为100则进度条向前进
ccrpProgressBar1.Value=i
i=i+2
EndIf
.使本窗体透明,新建一个模块Module1,添加如下代码
PublicDeclareFunctionSetLayeredWindowAttributesLib"user32"(ByValhwndAsLong,ByValcrKeyAsLong,ByValbAlphaAsByte,ByValdwFlagsAsLong)AsLong
’AnimateWindow是一个窗口打开和关闭时产生动画效果的新函数,因为是一个新的函数,所以在此定义
PublicConstWS_EX_LAYERED=&H80000
PublicConstGWL_EXSTYLE=(-20)
PublicConstLWA_ALPHA=&H2’表示把窗体设置成半透明样式
PublicConstLWA_COLORKEY=&H1’不显示窗体中的透明色
PublicDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhwndAsLong,ByValnIndexAsLong)AsLong
PublicDeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByValhwndAsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong
在form的load事件中加入如下代码
Timer1.Enabled=True
Timer1.Interval=100'定时器开始工作
Frm_before.Visible=True
rtn=GetWindowLong(Me.hwnd,GWL_EXSTYLE)'取窗口的原先样式
rtn=rtnOrWS_EX_LAYERED
'使窗体添加上新的样式WS_EX_LAYERED
SetWindowLongMe.hwnd,GWL_EXSTYLE,rtn'把新的样式赋给窗体
SetLayeredWindowAttributesMe.hwnd,0,150,LWA_ALPHA
'把窗体设置成半透明样式,第二个参数表示透明程度取值范围0--255,为0时就是一个全透明的窗体了
3.2系统登录
.在窗体上加个adodc1控件,登录的主要代码为
DimiAsInteger
Adodc1.Refresh
Adodc1.Recordset.MoveLast
Adodc1.Recordset.MoveFirst
Fori=1ToAdodc1.Recordset.RecordCount
If控件名.Text=""Then’如果控件中的内容为空,则显示提示
MsgBox"请选择用户类型!
",vbOKOnly+vbInformation,"注意"
ElseIf(Combo1.Text=Adodc1.Recordset.Fields("userkind"))And(Trim(Text1.Text)=Adodc1.Recordset.Fields("name"))And(Trim(Text2.Text)=Adodc1.Recordset.Fields("password"))Then’判断用户名与密码是否相符
Frm_main.Show
UnloadMe
ExitSub
Else
MsgBox"无效的密码,请重试!
","登陆"
ExitSub
EndIf
Next
.若当前用户是新用户,则可以单击新用户注册进行注册,主要代码如下:
.在Module1中加入如下代码:
OptionExplicit
PublicconAsADODB.Connection
PublicrstAsADODB.Recordset
PublicSubOpenDataBase()
Setcon=NewADODB.Connection
con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=books_sale.mdb;PersistSecurityInfo=False"
Setrst=NewADODB.Recordset
con.Open
EndSub
.在caption属性为”新用户注册”的按纽的click事件中添加如下形式的代码
CallOpenDataBase
rst.Open"tb_login",con,adOpenStatic,adLockOptimistic,-1
IfText1.Text=""Then
…………提示不能为空
ElseIfText2.Text=""Then
…………提示不能为空
Else
Fori=1Torst.RecordCount
IfText1.Text=rst.Fields("name").ValueThen
MsgBox"该用户已存在,请重新输入用户名!
",vbOKOnly+vbExclamation,"用户"
ExitSub
Else
rst.MoveNext
EndIf
NextI’判断新的用户名是否与已存在的用户重名
rst.AddNew
rst.Fields("字段名")=Text.Text
rst.Update
rst.Requery
rst.Close
MsgBox"新用户添加成功!
",vbOKOnly+vbInformation,"提示"
UnloadMe
EndIf
3.3主界面
.选择VBIDE中的菜单栏中的工具->菜单编辑器,进行如下(图3-2)设置
图3-2
.加Toolbar控件,单击如图3-3中的
添加6个按纽,并分别设置其标题及关键字,对应的
与
中的数值要一致。
图3-3
在toolbar1的buttonclick事件中加入如下形式代码
SelectCaseButton.Key
Case"关键字"
语句
EndSelect
.加ImageList控件,然后右击打开如图3-4的属性页,选择图像,单击
,添加6个图片
图3-4
.在图3-3中选择通用,然后设置其图像列表为ImageList1
即
.添加StatusBar,timer控件
在statusbar的属性页中,选择窗格,然后单击
,插入相应的窗格
在timer1的timer事件中加入语句
StatusBar1.Panels(3).Text=Time’显示当前系统时间
在form的load事件中的主要代码如下
StatusBar1.Panels
(1).Text="欢迎使用图书销售管理系统!
"
StatusBar1.Panels
(2).Text=Format(Date,"dddddd")
’以完整日期表示法显示当前系统中的日期
IfFrm_login.Combo1.Text="0"Then
Me.personnelim.Enabled=False
‘如果登录的用户为一般用户则该用户不能对人员信息进行维护
3.4进货管理
.进书录入
.在确定按纽的click事件中加入如下形式代码
CallOpenDataBase
rst.Open"表名",con,adOpenStatic,adLockOptimistic,-1
rst.AddNew
rst.Fields("表中字段名")=Text1.Text
rst.Update
rst.Requery
rst.Close
MsgBox"新书添加成功!
",vbOKOnly+vbInformation,"提示”
.在form的load事件中加入如下语句
DTPicker1.Value=Date’使Dtpicker1的当前值为系统日期
.进书查询
在“查询“按纽的click事件中添加如下代码
DimsqlAsString
sql="select*fromtb_buybookswhere"
IfCombo1.Text=""Then
MsgBox"请选择图书进货日期!
",vbOKOnly+vbExclamation
Combo1.SetFocus
ExitSub
Else
sql=sql&"ISBN='"&Trim(Combo1.Text)&"'"
EndIf
Adodc1.RecordSource=sql
Adodc1.Refresh
’查询指定日期的进书情况
3.5销售管理
.图书销售录入(代码同进书录入的代码)
.图书销售浏览
.在from的load事件中添加如下代码
CallOpenDataBase
rst.Open"tb_sale",con,adOpenStatic,adLockOptimistic,-1
.在通用代码段中添加如下形式代码
PublicSubviewdatas()
OnErrorResumeNext
Text.Text=rst.Fields("字段名”)Value’把数据库中的字段值赋给相应的控件
EndSub
.在”第一本”按纽的click事件中加入如下代码
rst.MoveFirst’移到表中的第一条记录
Callviewdatas
.在”上一本”按纽的click事件中加入如下代码
Ifrst.BOFThen’判断是否是第一条记录
MsgBox"已经是第一条记录!
",vbOKOnly+vbInformation
Else
rst.MovePrevious’向前移一条记录
Callviewdatas
EndIf
.在”下一本”按纽的click事件中加入如下代码
Ifrst.EOFThen’判断是否是最后一条记录
MsgBox"已经是最后一条记录!
",vbOKOnly+vbInformation
Else
rst.MoveNext’向后移一条记录
Callviewdatas
EndIf
.在”最末本”按纽的click事件中加入如下代码
rst.MoveLast’移到最后一条记录
Callviewdatas
3.6库存管理
.库存录入(代码同进书录入的代码)
.库存查询
.在“查询“按纽的click事件中添加如下代码
DimtxtSQLAsString
txtSQL="select*fromtb_store"
IfText7.Text=""Then
sMeg="请输入图书编号!
"
MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"
Text7.SetFocus
ExitSub
Else
txtSQL=txtSQL&"whereISBN='"&Trim(Text7.Text)&"'"
EndIf
Adodc1.RecordSource=txtSQL’重新给数据源赋值’
Adodc1.Refresh
.Adodc1的记录源设置如图3-5所示:
图3-5
3.7退货管理
.退货录入(代码同进书录入的代码)
.退货查询(同库存查询)
3.8销售统计
.图书销售业绩报表
.选择VBIDE的菜单栏中的工程->添加Datareport,添加一个数据报表,名称使用默认的Datareport1。
.设定Datareport对象的DataSource属性为Environment1。
.设定Datareport对象的DataMember属性为Command1。
.右击设计器,在弹出的快捷菜单中单击“检索结构”选项。
.向相应的节添加相应的控件。
报表Datareport1的设计界面如图3-6所示。
图3-6
在主窗体的菜单栏中选择销售统计->图书销售业绩报表,加入语句DataReport1.Show
3.9信息维护
.图书信息维护(同图书销售浏览)
.人员信息维护
添加一些常用按纽之后,然后在人员信息维护中加一个(CommonDialog)
按纽,
在“浏览图片”的click事件中添加如下代码
WithMe.CommonDialog1
.DialogTitle="选择要导入的图片"
.Filter="选择图片类型|*.jpg|*.bmp|*.bmp|*.gif|*.*|*.jpg"
.ShowOpen
.InitDir=App.Path
Me.Picture1.Picture=LoadPicture(Me.CommonDialog1.FileName)
EndWith
.用户信息维护
在Form的load事件中加入如下代码
IfFrm_login.Combo1.Text="0"Then’判断当前使用者是管理员还是一般用户
Me.Combo1.Text=Frm_login.Text1.Text
’若为一般用户则该用户名赋值给Combo1.Text,否则,则把所有用户名都加到Combo1中
Else
Sets=NewADODB.Connection
DimstrAsString
str="provider=microsoft.jet.oledb.4.0;datasource="&App.Path&"\books_sale.mdb;persistsecurityinfo=false"
s.Openstr
Setc=NewADODB.Recordset
c.Open"select*fromtb_login",str,1,1
c.MoveFirst
WhileNotc.EOF
Combo1.AddItem(c.Fields("name").Value)
c.MoveNext
Wend
EndIf
在“确定”按纽的click事件中加入如下代码
CallOpenDataBase
rst.Open"tb_login",con,adOpenStatic,adLockOptimistic,-1
Adodc1.RecordSource="selectpasswordfromtb_loginwherename=combo1.text"
IfText1.Text<>rst.Fields("password").ValueThen
’判断输入的原密码是否与数据库中的相同
MsgBox"您输入的原密码不正确,请重新输入!
",vbOKOnly+vbInformation,"提示"
Else
rst.Fields("password")=Text2.Text
rst.Update