vb药品管理系统课程设计报告.docx

上传人:b****1 文档编号:23289208 上传时间:2023-05-16 格式:DOCX 页数:55 大小:661.67KB
下载 相关 举报
vb药品管理系统课程设计报告.docx_第1页
第1页 / 共55页
vb药品管理系统课程设计报告.docx_第2页
第2页 / 共55页
vb药品管理系统课程设计报告.docx_第3页
第3页 / 共55页
vb药品管理系统课程设计报告.docx_第4页
第4页 / 共55页
vb药品管理系统课程设计报告.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

vb药品管理系统课程设计报告.docx

《vb药品管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《vb药品管理系统课程设计报告.docx(55页珍藏版)》请在冰豆网上搜索。

vb药品管理系统课程设计报告.docx

vb药品管理系统课程设计报告

1.系统开发背景

随着科技的不断进步,企业都在不断的注重管理的信息化以完善企业管理,增强企业自身的竞争力。

药品销售业也不例外,通过较完善的信息系统实现自身企业对内部管理的方便性、合理性、快捷性、高效性等要求。

以前的手工管理效率低使最明显的缺陷,另外,数据的一致性不好维护,如某个药品信息的记录有所改动(如更改编号),那么该要品的其他记录就与此不一致,造成查询的费时费力。

要把全部数据都更改又相当不方便。

对药品库存的盘点也很不方便,而且需要较多的人来进行管理操作,而且容易出错,造成数据的不一致。

而药品业是关民生的行业,错误信息可能会造成不可收拾的严重后果。

因此,运用高效、准确的信息管理系统来替代手工管理是完善药品销售业管理的有效手段。

2.系统开发意义

利用数据库系统可以很好的对数据进行维护,减少由于数据不一致等错误带来的麻烦。

方便数据的更新和查询,降低错误率,方便药品信息的维护及库存的盘点。

还可以运用较少的人员,高效的完成对药品销售的管理。

由于社会的发展不断趋于信息化,各个行业都要加强自身的信息化程度以适应社会的发展。

而管理信息化正迎合了这个趋势,数据库系统在药品销售业的应用业实现了药品销售业执行工具、业务管理等的信息化,在这个信息化社会为药品销售业的发展增加了新的动力。

相信随着社会的不断发展对该类系统的需求会越来越高。

药品销售管理信息系统,即服务于个人,又服务于企业,并最终服务于社会,这是让科技为人类服务的最好例证,其开发意义显而易见。

.各实例的E-R图

★整体实体E-R图:

★出入库信息实体E-R图:

★货物信息实体E-R图:

★用户信息实体E-R图:

★人员配置E-R图:

3.结构设计

★入库出库模块:

用来实现货物流通的查询。

★货物详况模块:

用来实现货物浏览的查询。

★货物汇总模块:

用来实现货物质料的增加、删除、修改等操作。

★系统管理模块:

用来实现客户的增加、删除以及用户信息和密码的修改等操作。

4.数据库设计

这里的数据库采用access,用ADO作为连接数据对象。

★启动access建立一个数据库如图所示

★货源地表格:

★客户名表格:

★货物详况表:

★入库表:

★系统管理表:

★数据连接。

在vb环境下连接数据:

★在程序设计的公共模块中,先定义ADO连接对象。

语句如下:

PublicconnnewADODBconnection

然后在子程序中,用如下的语句即可打开数据库

Dimconnectionstringasstring

Connectionstring=“provider=microsoft.jet.oledb.4.0;&-datasource=cangku.mdb”

Conn.openconnectionstring

4.界面设计

设计好的界面如图所示:

菜单程序中,有5个菜单选项你,每个菜单选项对应着E-R图的一个子项目。

1.创建主窗体。

首先创建一个工程,命名为药品管理系统,选择工程-添加MDI窗体命令,则在项目中添加了子窗体该窗体属性如下表所示:

创建各菜单项的属性如下表所示:

2.创建各子窗体。

选择工程-添加窗体命令,添加子窗体,其属性如下:

★入库子窗体如下图所示:

各控件属性如下表:

★增加用户子窗体如下图所示:

其各控件属性如下表所示:

★修改密码窗体如下图所示:

★库房管理子窗体如下图所示:

库房管理子窗体控件如下表所示:

★查询子窗体及其控件如下所示:

★货物汇总子窗体及其属性如下:

★关于窗体主要是列出关于系统的版本信息如下图

5.建立公共模块

在菜单中选择工程-添加模块命令,则出现添加模块对话框,选中模块后单击打开,则模块添加到目录中,在模块中定义整个项目的公共变量。

OptionExplicit

PublicconnAsNewADODB.Connection

PublicuserIDAsString

PublicuserpowAsString

PublicfindAsBoolean

PublicsqlfindAsString

Publicrs_data1AsNewADODB.Recordset

PublicfindokAsBoolean

Publicsummary_menuAsString

PublicfrmdataAsBoolean

PublicConstkeyenter=13

6.代码设计

子窗体中都是click事件

1.主窗体代码如下:

PrivateSubabout_Click()

frmabout.Show

EndSub

PrivateSubadd_user_Click()

adduser.Show

EndSub

PrivateSubcheck_find_Click()

chaxun.Show

EndSub

PrivateSubdata_manage_Click()

sqlfind="select*from入出库"

rs_data1.Opensqlfind,conn,adOpenKeyset,adLockPessimistic

kumanage.Show

EndSub

PrivateSubexit_Click()

UnloadMe

EndSub

PrivateSubin_check_Click()

jinku.Caption="入库"

jinku.Show

EndSub

在MIDFORM1中主要代码如下:

PrivateSubMDIForm_Load()

frmdata=False

find=False

EndSub

PrivateSubmodify_pw_Click()

changpwd.Show

EndSub

PrivateSubout_check_Click()

jinku.Caption="出库"

jinku.Show

EndSub

PrivateSubsum_check_date_Click()

summary_menu="check_date"

huizong.Show1

EndSub

PrivateSubsum_date_custom_Click()

summary_menu="date_custom"

huizong.Show1

EndSub

PrivateSubsummary_check_Click()

summary_menu="check"

huizong.Show1

EndSub

PrivateSubsummary_custom_Click()

summary_menu="custom"

huizong.Show1

EndSub

PrivateSubsummary_date_Click()

summary_menu="date"

huizong.Show1

EndSub

PrivateSubTimer1_Timer()

EndSub

2.各子窗体代码:

★入库子窗体代码。

本窗体用来查询货物入库的信息,下面的代码是定义几个变量:

OptionExplicit

Dimrs_checknameAsNewADODB.Recordset

Dimrs_customAsNewADODB.Recordset

Constrow_num=10

Constcol_num=6

确定按钮代码;

PrivateSubCommand1_Click()

Dimrs_saveAsNewADODB.Recordset

DimsqlAsString

DimiAsInteger

DimsAsString

OnErrorGoTosaveerror

IfTrim(Text1.Text)=""Then

MsgBox"货单不能为空!

",vbOKOnly+vbExclamation,""

Text1.SetFocus

ExitSub

EndIf

IfCombo1.Text=""Then

MsgBox"请选择货源地!

",vbOKOnly+vbExclamation,""

Combo1.SetFocus

ExitSub

EndIf

Ifcomboy.Text=""Then

MsgBox"请选择年份!

",vbOKOnly+vbExclamation,""

comboy.SetFocus

ExitSub

EndIf

Ifcombom.Text=""Then

MsgBox"请选择月份!

",vbOKOnly+vbExclamation,""

combom.SetFocus

ExitSub

EndIf

Ifcombod.Text=""Then

MsgBox"请选择日期!

",vbOKOnly+vbExclamation,""

combod.SetFocus

ExitSub

EndIf

IfText2.Text=""Then

MsgBox"请填写凭证号!

",vbOKOnly+vbExclamation,""

Text2.SetFocus

ExitSub

EndIf

IfText3.Text=""Then

MsgBox"请填写经手人!

",vbOKOnly+vbExclamation,""

Text3.SetFocus

ExitSub

EndIf

IfMSFlexGrid1.Col<>0Then

MsgBox"请输入完整的物品信息!

",vbOKOnly+vbExclamation,""

MSFlexGrid1.SetFocus

ExitSub

EndIf

数据库比较代码:

sql="select*from入出库where货单号='"&Text1.Text&"'"

rs_save.Opensql,conn,adOpenKeyset,adLockPessimistic

Ifrs_save.EOFThen

rs_save.AddNew

rs_save.Fields(0)=Trim(Text1.Text)

rs_save.Fields

(1)=CDate(Trim(comboy.Text)&"-"&Trim(combom.Text)&"-"&Trim(combod.Text))

rs_save.Fields

(2)=Trim(Combo1.Text)

rs_save.Fields(3)=Trim(Text2.Text)

rs_save.Fields(4)=Trim(Text3.Text)

rs_save.Fields(5)=Trim(Text4.Text)

Ifjinku.Caption="入库"Then

rs_save.Fields(6)=True

Else

rs_save.Fields(6)=False

EndIf

rs_save.Update

rs_save.Close

Else

MsgBox"货单号重复!

",vbOKOnly+vbExclamation,""

Text1.SetFocus

Text1.Text=""

rs_save.Close

ExitSub

EndIf

sql="select*from货物详况"

rs_save.Opensql,conn,adOpenKeyset,adLockPessimistic

Fori=1ToMSFlexGrid1.Row-1

rs_save.AddNew

rs_save.Fields(0)=Trim(Text1.Text)

rs_save.Fields

(1)=CDate(Trim(comboy.Text)&"-"&Trim(combom.Text)&"-"&Trim(combod.Text))

rs_save.Fields

(2)=Trim(Combo1.Text)

MSFlexGrid1.Row=i

MSFlexGrid1.Col=0

rs_save.Fields(3)=Trim(MSFlexGrid1.Text)

MSFlexGrid1.Col=1

Ifjinku.Caption="出库"Then

s="-"&Trim(MSFlexGrid1.Text)

rs_save.Fields(4)=CDbl(s)

Else

rs_save.Fields(4)=CDbl(Trim(MSFlexGrid1.Text))

EndIf

MSFlexGrid1.Col=2

rs_save.Fields(5)=Trim(MSFlexGrid1.Text)

MSFlexGrid1.Col=3

rs_save.Fields(6)=Trim(MSFlexGrid1.Text)

MSFlexGrid1.Col=4

Ifjinku.Caption="出库"Then

s="-"&Trim(MSFlexGrid1.Text)

rs_save.Fields(7)=CDbl(s)

Else

rs_save.Fields(7)=CDbl(Trim(MSFlexGrid1.Text))

EndIf

MSFlexGrid1.Col=5

rs_save.Fields(8)=Trim(MSFlexGrid1.Text)

Nexti

rs_save.Update

rs_save.Close

MsgBox"添加成功!

",vbOKOnly+vbExclamation,""

UnloadMe

ExitSub

saveerror:

MsgBoxErr.Description

EndSub

PrivateSubCommand2_Click()

UnloadMe

EndSub

PrivateSubForm_Load()

DimsqlAsString

DimiAsInteger

OnErrorGoToloaderror

sql="select*from货源地"

rs_checkname.CursorLocation=adUseClient

rs_checkname.Opensql,conn,adOpenKeyset,adLockPessimistic

sql="select*from客户名"

rs_custom.CursorLocation=adUseClient

rs_custom.Opensql,conn,adOpenKeyset,adLockPessimistic

WhileNotrs_custom.EOF

Combo2.AddItemrs_custom.Fields(0)

rs_custom.MoveNext

Wend

IfNotrs_checkname.EOFThen

rs_checkname.MoveFirst

WhileNotrs_checkname.EOF

Combo1.AddItemrs_checkname.Fields(0)

rs_checkname.MoveNext

Wend

EndIf

comboy.AddItem2002

comboy.AddItem2003

comboy.AddItem2004

comboy.AddItem2005

comboy.AddItem2006

comboy.AddItem2007

comboy.AddItem2008

comboy.AddItem2009

comboy.AddItem2010

comboy.AddItem2011

Fori=1To12

combom.AddItemi

Nexti

Fori=1To31

combod.AddItemi

Nexti

setgrid

setgrid_head

Text5.Visible=False

clear_grid

ExitSub

loaderror:

MsgBoxErr.Description

EndSub

PrivateSubForm_Unload(CancelAsInteger)

'关闭数据对象

rs_checkname.Close

rs_custom.Close

EndSub

PublicSubsetgrid()

DimiAsInteger

OnErrorGoToseterror

MSFlexGrid1.ScrollBars=flexScrollBarBoth

MSFlexGrid1.FixedCols=0

MSFlexGrid1.Rows=row_num

MSFlexGrid1.Cols=col_num

MSFlexGrid1.SelectionMode=flexSelectionByRow

Fori=0Torow_num-1

MSFlexGrid1.RowHeight(i)=315

Next

Fori=0Tocol_num-1

MSFlexGrid1.ColWidth(i)=1300

Nexti

ExitSub

seterror:

MsgBoxErr.Description

EndSub

PublicSubsetgrid_head()

OnErrorGoTosetheaderror

MSFlexGrid1.Row=0

MSFlexGrid1.Col=0

MSFlexGrid1.Text="物品名称"

MSFlexGrid1.Col=1

MSFlexGrid1.Text="单价"

MSFlexGrid1.Col=2

MSFlexGrid1.Text="数量"

MSFlexGrid1.Col=3

MSFlexGrid1.Text="单位"

MSFlexGrid1.Col=4

MSFlexGrid1.Text="金额"

MSFlexGrid1.Col=5

MSFlexGrid1.Text="客户名"

ExitSub

setheaderror:

MsgBoxErr.Description

EndSub

PublicSubclear_grid()

DimiAsInteger,jAsInteger

Fori=1Torow_num-1

MSFlexGrid1.Row=i

Forj=0Tocol_num-1

MSFlexGrid1.Col=j

MSFlexGrid1.Text=""

Nextj

Nexti

EndSub

PublicSubnextposition(ByValrAsInteger,ByValcAsInteger)

OnErrorGoTonexterror

Text5.Width=MSFlexGrid1.CellWidth

Text5.Height=MSFlexGrid1.CellHeight

Text5.Left=MSFlexGrid1.Left+MSFlexGrid1.ColPos(c)

Text5.Top=MSFlexGrid1.Top+MSFlexGrid1.RowPos(r)

Text5.Text=MSFlexGrid1.Text

Text5.Visible=True

Text5.SetFocus

ExitSub

nexterror:

MsgBoxErr.Description

EndSub

PrivateSubMSFlexGrid1_Click()

IfCombo2.Visible=TrueThen

ExitSub

EndIf

nextpositionMSFlexGrid1.Row,MSFlexGrid1.Col

EndSub

PrivateSubText5_KeyPress(KeyAsciiAsInteger)

DimiAsInteger,jAsInteger

DimpriceAsDouble,counAsInteger

OnErrorGoTotexterror

IfKeyAscii=keyenterThen

MSFlexGrid1.Text=Text5.Text

i=MSFlexGrid1.Row

j=MSFlexGrid1.Col

Ifj=0AndTrim(Text5.Text)=""Then

MsgBox"物品名称不能为空",vbOKOnly+vbExclamation,""

Text5.SetFocus

ExitSub

EndIf

Ifj=1AndNotIsNumeric(Text5.Text)Then

MsgBox"单价请输入数字!

",vbOKOnly+vbExclamation,""

Text5.SetFocus

ExitSub

EndIf

Ifj=2AndNotIsNumeric(Text5.Text)Then

MsgBox"数量请输入数字!

",vbOKOnly+vbExclamation,""

Text5.SetFocus

ExitSub

EndIf

Ifj=3AndTrim(Text5.Text)=""Then

MsgBox"单位不能为空!

",vbOKOnly+vbExclamation,""

Text5.SetFocus

ExitSub

EndIf

Ifj=3AndNotIsNull(Text5.Text)Then

MSFlexGrid1.Col=1

price=CDbl(MSFlexGrid1.Text)

MSFlexGrid1.Col=2

coun=CInt(MSFlexGrid1.Text)

MSFlexGrid1.Col=4

MSFlexGrid1.Text=price*coun

MSFlexGrid1.Col=MSFlexGrid1.

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

当前位置:首页 > 人文社科 > 文化宗教

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

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