图书管理系统.docx

上传人:b****4 文档编号:4418064 上传时间:2022-12-01 格式:DOCX 页数:20 大小:797.07KB
下载 相关 举报
图书管理系统.docx_第1页
第1页 / 共20页
图书管理系统.docx_第2页
第2页 / 共20页
图书管理系统.docx_第3页
第3页 / 共20页
图书管理系统.docx_第4页
第4页 / 共20页
图书管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

图书管理系统.docx

《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(20页珍藏版)》请在冰豆网上搜索。

图书管理系统.docx

图书管理系统

河北理工大学

数据库课程设计说明书

设计题目:

图书销售管理系统

姓名:

李想

专业:

地理信息系统

指导教师:

交通与测绘学院

年月日

目 录

1概述1

1.1系统背景1

2需求分析1

3结构设计1

4行为设计2

5系统开发流程3

5.1数据库结构设计3

5.2创建“图书销售管理”工程4

6系统使用说明及主要代码8

7课程设计体会及心得16

参考文献17

1概述

1.1系统背景

图书销售在我国古时已有,现已成为我国零售业的一种重要形态。

随着图书销售的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售业的发展,这样就迫切的需要引入新的思想技术和管理技术进入到图书销售管理之中。

在目前状态下,图书销售存在零售业、商业、企业所共有的落后的一面,如:

不能有效地管理每一种图书,盘点效率低等,而且在图书销售日常管理中,图书进、销、存、决策以经验为主,缺乏实时分析功能,管理人员及时传递资料的要求始终得不到满足。

随着图书销售的发展,其经营管理也变得越加复杂,日常所需处理的数据量也逐渐增大,原始的人工管理已无法应对复杂的市场。

本图书销售管理系统,依靠现代化的计算机信息处理技术来管理图书销售,从而节省了大量的人力和物力,改善了员工的工作条件,减轻了劳动强度,并能快速反映出图书销售的各种信息,加强图书销售的管理。

2需求分析

由于图书种类繁多,人工管理存在诸多不方便因素。

而使用计算机对图书销售进行管理,具有手工管理所无法比拟的优点。

例如:

查找方便、可靠性高、存储量大、保密性好、成本低等。

本系统主要面向系统管理员,能满足用户的各种操作需求。

其主要功能如下:

系统用户管理:

管理员数据管理和查找;

图书信息管理:

图书信息数据管理和查找;

图书订单管理:

图书订单管理和查找。

3结构设计

按照软件开发的流程,进行完需求分析,就应该进行结构设计,主要解决实现本系统需求的程序的模块问题。

本系统需要完成的功能有管理员信息管理、图书信息管理、订购信息管理三个部分,其E-R图如下:

图书销售管理系统E-R图

4行为设计

根据需求分析和结构设计,得到如下图所示的图书销售管理系统功能模块结构图。

5系统开发流程

5.1数据库结构设计

按照前面分析的图书销售管理系统数据字典,设计出图书销售管理系统数据库中各个数据表,包括图书信息表、管理员数据表、图书订购数据表共3个数据表。

本图书销售管理系统数据库命名为“图书销售”,数据库中的各个数据表名称和结构分别如下:

管理员

列名

数据类型

长度

允许空

说明

admin_name

varchar

20

保存用户命令

admin_pwd

varchar

10

保存口令

其中,admin_name定义为主键。

图书信息

列名

数据类型

长度

允许空

说明

book_id

int

4

保存图书编号

book_name

varchar

50

保存图书书名

book_writer

varchar

20

保存图书作者姓名

book_press

varchar

50

保存图书出版社名称

book_pdate

smalldatetime

4

保存图书出版日期

book_brief

varchar

1000

保存图书内容简介

book_page

smallint

2

保存图书页数

book_price

smallmoney

4

保存图书单价

其中,book_id定义为主键。

订购记录

列名

数据类型

长度

允许空

说明

rec_id

int

4

保存记录编号

book_id

varchar

10

保存图书编号

book_sum

varchar

18

保存图书订购数量

sale_date

smalldatetime

50

保存图书订购日期

其中,rec_id定义为主键。

使用SQLServer2000创建数据库“图书销售”。

5.2创建“图书销售管理”工程

使用VisualBasic6.0创建“图书销售管理”工程,用于实现图书销售系统的基本数据管理。

在“图书销售管理”工程下依此创建“图书信息管理”窗体(frmBooks)、“订单管理”窗体(frmSubscribe)、“图书信息”窗体(frmBookInfo)、“系统登录”窗体(frmLogon)、“系统用户管理”窗体(frmManagers)和“图书销售管理”窗体(frmMain)。

其具体设计如下图所示:

 

依此设置各窗体及窗体中控件的属性并为各窗体添加代码。

打开工程属性对话框,在“通用”选项卡的“启动对象”下拉列表框中选择frmLogon,将“系统登录”设置为启动窗体。

6系统使用说明及主要代码

图书销售管理系统通过“系统登录”进入“图书销售”主窗体。

点击系统管理子菜单可进入“图书信息管理”窗体、“系统用户管理”窗体和“订单管理”窗体,并执行相应功能。

单击“订单管理”窗体中的“图书信息”按钮即可进入“图书信息”窗体显示当前选中的图书的图书信息。

“系统登录”主窗体的代码如下:

ConstMaxLogTimesAsInteger=3'定义允许尝试登录的最大次数

PrivateSubForm_Load()

'清空用户名和口令文本框

txtName=""

txtPwd=""

EndSub

PrivateSubcmdCancel_Click()

'请求用户确认是否真的退出系统登录

IfMsgBox("你选择了退出系统登录,退出将不能启动管理系统!

"&vbCrLf_

&"是否真的退出?

",vbYesNo+vbQuestion,"登录验证")=vbYesThen

UnloadMe'卸载登录窗体

EndIf

EndSub

PrivateSubcmdOk_Click()

DimobjCnAsConnection,objRsAsRecordset,strSql$

IfTrim(txtName)=""Then'检验是否输入用户名

MsgBox"请输入用户名!

",vbExclamation,"登录验证"

txtName=""

txtName.SetFocus

ExitSub

EndIf

IfTrim(txtPwd)=""Then'检验是否输入登录口令

MsgBox"请输入登录口令!

",vbExclamation,"登录验证"

txtPwd=""

txtPwd.SetFocus

ExitSub

EndIf

'静态常量intLogTimes用于保存用户请求验证的次数

StaticintLogTimesAsInteger

intLogTimes=intLogTimes+1'保存当前登录次数

IfintLogTimes>MaxLogTimesThen

'超过允许的登录次数,显示提示信息

MsgBox"你已经超过允许的登录验证次数!

"&vbCr_

&"将退出登录!

",vbCritical,"登录验证"

End'结束应用程序

EndIf

'输入合法,进一步检验正确性

'创建与数据库的联接

SetobjCn=NewConnection'实例化联接对象

WithobjCn'建立数据库联接

.Provider="SQLOLEDB"

.ConnectionString="IntegratedSecurity=SSPI;DataSource=(local);"&"InitialCatalog=图书销售"

.Open

EndWith

strSql="selectadmin_pwdfrom管理员whereadmin_name='"&Trim(txtName)&"'"

'执行查询获得用户登陆密码

SetobjRs=NewRecordset

WithobjRs

Set.ActiveConnection=objCn

.CursorLocation=adUseClient

.CursorType=adOpenStatic

.OpenstrSql

If.RecordCount<1Then

MsgBox"用户名输入错误!

",vbCritical,"登录验证"

txtName.SetFocus

txtName.SelStart=0

txtName.SelLength=Len(txtName)

Else

If.Fields!

admin_pwd<>Trim(txtPwd)Then

MsgBox"口令错误,请重新输入!

",vbCritical,"登录验证"

txtPwd.SetFocus

txtPwd=""

Else

'显示登录成功信息

MsgBox"欢迎使用图书销售管理系统!

",vbInformation,"登录成功"

UnloadMe'关闭登录窗体

frmMain.Show'显示系统主窗体

EndIf

EndIf

EndWith

objCn.Close'关闭数据库连接

SetobjCn=Nothing'释放数据库连接

SetobjRs=Nothing

EndSub

“图书销售”主窗体的代码如下:

PrivateSubmnuExit_Click()

UnloadMe'关闭系统主窗体

EndSub

PrivateSubMDIForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)

IfMsgBox("你选择了关闭图书销售管理系统,是否继续?

",_

vbYesNo+vbQuestion,"图书销售管理系统")=vbYesThen

'判断在所有子窗体关闭之后才能关闭系统主窗体

IfNotMe.ActiveFormIsNothingThen

MsgBox"请先关闭打开的子窗体!

",vbCritical,"图书销售管理"

Cancel=1

EndIf

Else

Cancel=1

EndIf

EndSub

PrivateSubmnuAdmins_Click()

frmManagers.Show:

frmManagers.SetFocus

EndSub

PrivateSubmnuBooks_Click()

frmBooks.Show:

frmBooks.SetFocus

EndSub

PrivateSubmnuCascade_Click()

Me.ArrangevbCascade'层叠排列子窗体

EndSub

PrivateSubmnuIcons_Click()

Me.ArrangevbArrangeIcons'重新排列最小化的子窗体图标

EndSub

PrivateSubmnuSubscribe_Click()

frmSubscribe.Show:

frmSubscribe.SetFocus

EndSub

PrivateSubmnuTileH_Click()

Me.ArrangevbTileHorizontal'水平平铺子窗体

EndSub

PrivateSubmnuTileV_Click()

Me.ArrangevbTileVertical'垂直平铺子窗体

EndSub

“订单管理”窗体的代码如下:

DimobjCnAsConnection,objRsAsRecordset

PrivateSubForm_Load()

'建立数据库联接

SetobjCn=NewConnection'实例化联接对象

WithobjCn'建立数据库联接

.Provider="SQLOLEDB"

.ConnectionString="IntegratedSecurity=SSPI;DataSource=(local);"&"InitialCatalog=图书销售"

.Open

EndWith

'获取订购记录

SetobjRs=NewRecordset'实例化objRs对象

WithobjRs

Set.ActiveConnection=objCn

.CursorLocation=adUseClient'指定使用客户端游标

.CursorType=adOpenStatic'指定使用静态游标

.LockType=adLockOptimistic

.Open"SELECT*FROM订购记录"

EndWith

SetDataGrid1.DataSource=objRs

IfobjRs.RecordCount=0Then

MsgBox"无图书订购记录!

"

cmdBookInfo.Enabled=False

cmdFilter.Enabled=False

cmdDeleteAll.Enabled=False

cmdDelete.Enabled=False

EndIf

EndSub

PrivateSubForm_Resize()

DataGrid1.Width=Abs(Me.Width-2*DataGrid1.Left-100)

DataGrid1.Height=Abs(Me.Height-DataGrid1.Top-800-cmdExit.Height)

cmdExit.Top=DataGrid1.Top+DataGrid1.Height+200

cmdBookInfo.Top=cmdExit.Top

cmdFilter.Top=cmdExit.Top

cmdDeleteAll.Top=cmdExit.Top

cmdDelete.Top=cmdExit.Top

EndSub

PrivateSubcmdDelete_Click()

IfobjRs.AbsolutePosition>0Then

IfMsgBox("是否删除rec_id="&objRs!

rec_id&"的订购记录?

",vbQuestion+vbYesNo,"删除记录")=vbYesThen

objRs.Delete

objRs.MoveNext

IfobjRs.EOFThenobjRs.MoveLast

IfobjRs.RecordCount=0Then

MsgBox"无图书订购记录!

"

cmdBookInfo.Enabled=False

cmdFilter.Enabled=False

cmdDeleteAll.Enabled=False

cmdDelete.Enabled=False

EndIf

EndIf

EndIf

EndSub

PrivateSubcmdDeleteAll_Click()

IfobjRs.AbsolutePosition>0Then

IfMsgBox("是否删除全部的订购记录?

",vbQuestion+vbYesNo,"删除记录")=vbYesThen

objCn.Execute"truncatetable订购记录"

objRs.Requery

cmdBookInfo.Enabled=False

cmdFilter.Enabled=False

cmdDeleteAll.Enabled=False

cmdDelete.Enabled=False

EndIf

EndIf

EndSub

PrivateSubcmdFilter_Click()

DimstrFilter$

strFilter=InputBox("请输入图书编号(book_id):

","按图书编号筛选")

IfstrFilter=""Then

objRs.Filter=adFilterNone

objRs.Requery

Else

objRs.Filter="book_id="&Val(strFilter)

EndIf

EndSub

PrivateSubcmdBookInfo_Click()

DimstrSql$,objTemAsRecordset,objStmAsStream

SetobjTem=NewRecordset

SetobjStm=NewStream

WithobjTem

IfobjRs.AbsolutePosition>0Then

strSql="select*from图书信息wherebook_id="&objRs.Fields!

book_id

Set.ActiveConnection=objCn

.CursorLocation=adUseClient'指定使用客户端游标

.CursorType=adOpenStatic'指定使用静态游标

.OpenstrSql

EndIf

If.RecordCount>0Then

'显示图书信息

frmBookInfo.txtID=.Fields!

book_id

frmBookInfo.txtName=.Fields!

book_name

frmBookInfo.txtWriter=.Fields!

book_writer

frmBookInfo.txtPublish=.Fields!

book_press

frmBookInfo.txtDate=.Fields!

book_pdate

frmBookInfo.txtPage=.Fields!

book_page

frmBookInfo.txtPrice=.Fields!

book_price

frmBookInfo.txtBrief=.Fields!

book_brief

frmBookInfo.ShowvbModal

Else

MsgBox"图书信息记录已删除,请删除该订购记录!

"

EndIf

EndWith

SetobjTem=Nothing

SetobjStm=Nothing

EndSub

PrivateSubDataGrid1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfButton=vbRightButtonThenfrmSubscribe.PopupMenumnuOperate

EndSub

PrivateSubmnuDelete_Click()

'执行“删除当前”按钮单击事件,删除当前记录

cmdDelete.Value=True

EndSub

PrivateSubmnuDeleteAll_Click()

'执行“删除全部”按钮单击事件,删除全部记录

cmdDeleteAll.Value=True

EndSub

PrivateSubmnuFilter_Click()

'执行“数据筛选”按钮单击事件,设置筛选条件

cmdFilter.Value=True

EndSub

PrivateSubmnuBook_Click()

'执行“图书信息”按钮单击事件,显示当前订单记录图书信息

cmdBookInfo.Value=True

EndSub

PrivateSubcmdExit_Click()

UnloadMe

EndSub

PrivateSubForm_Unload(CancelAsInteger)

SetobjRs=Nothing'释放记录集对象

objCn.Close'关闭数据联接

SetobjCn=Nothing'释放数据库联接

EndSub

“图书信息管理”、“系统用户管理”和“图书数信息”窗体的代码在此不再列举。

“图书销售”和“订单管理”窗体的执行效果如下图所示:

图书销售执行效果图

订单管理执行效果图

7课程设计体会及心得

这次为期两周的数据库课程设计,使我紧张而又忙碌。

两周来,每天忙于创建窗体、添加代码、调试程序,检查错误。

创建窗体、添加代码仅是占用时间,而调试程序,检查错误却使我十分焦虑。

经过一遍又一遍的调试,当程序终于顺利执行时,我终于可以松一口气。

调试程序占据了课程设计的大部分时间。

尽管代码添加前已经过缜密考虑,但真正执行时依然错误不断。

可见,要想做好程序开发的人不但要心思细腻,还要非常有耐心。

本次课程设计结束了,我虽然只做出了一些简单的界面,执行了一些基本的功能,但我依然感觉受益匪浅。

通过本次课程设计,不但温习了以前所学的关于VisualBasic6.0的知识,而且更深入的学习了VB和SQLServer的功能,并加以运用。

同时也让我意识到自己的不足,勉励我在今后的编程过程中努力弥补。

本次课程设计对我们而言是一次很好的锻炼。

我们于实践中发现问题,了解自己的优势和劣势,是对我们的一次小检查。

在这次课程设计中,同学们互相请教,互帮互助,既使得彼此之间的关系更加融洽,也提升了大家解决问题的能力。

通过本次课程设计,我感触颇深,也受益良多。

参考文献

[1]SQLServer数据库开发经典实例精解/夏邦贵,刘凡馨.北京:

机械工业出版社,2006.1

[2]VisualBasic程序设计教程/柴欣,李惠然主编-北京:

海洋出版社,2001.8

[3]数据库原理与应用教程第2版/何玉洁编著.-北京:

机械工业出版社,2007.2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1