数据库原理课程设计报告(交) - 图文

更新时间:2024-05-15 23:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据库原理 课程设计报告

设计题目: 药品产销存系统 专业班级: 信管0802 学 号: 20080501036 姓 名: 戚贵强 指导教师: 王艳芳 张莹

时间:2010.6.14-2010.6.27

一、课题概述

1.任务:目前药品进销存系统在卫生系统的药品管理中起着不可替代的作用,是一个典型的数据库系统。本次的课程设计采用了结构化和面向对象程序设计的方法,使后台数据库具有可扩展性,前台界面简单实用。本系统在Windows XP环境中采用Visual Basic为开发平台,使用SQL SERVER创建数据库,用于对药品信息资料的增加、删除、修改,以及新药入库信息的增加、删除、修改。此系统经过分析、设计、编码、调试等一系列步骤,初步实现了设计目标,并且经过适当完善后,最终作出了一个简洁实用的药品进销存系统。

2.目的:

按照关系型数据库的基本原理,综合运用所学的知识,设计开发一个小型的药品进销存系统,实现对药品存取的管理。本程序设计主要实现药品进销存管理,以便于用户清楚了解药品的基本信息。

3、 设计要求:

本系统是一个医药管理系统,它可以根据不同的用户具有不同的功能,主要是限制了一些用户的权限。管理员可以在系统内对药品的信息进行查询和添加,可以添加新药品入库,可以查询过期药品并使其出库,同时管理员也可以对进货进行查询与添加,可以对库存信息的检索;医生用户可以添加记录,同时可以查询各种药品的介绍;采购员可以对供货商信息进行检索,并且可以对药品进货信息管理,还可以把采购的药品入库;仓库管理员是管仓库的,可以管理过期药品和对库存进行检索;消费者可以检索各类药品,方便自己选择。

二.设计思路及采取的方案(数据库设计部分要重点写)

1、本数据库系统软件所需的系统配置为:

1).软件配置

操作系统:Windows XP中文版或更高; 数据库选择:SQL SERVER; 开发平台:Visual Basic 2).硬件配置

CPU:Pentium II 266或更高; 内存:64MB或以上; 硬盘:2G以上; 显示器:VGA或更高

2、设计思路:

系统以VB为前台界面设计,以SQL Sever为后台数据库进行设计。 1).需求分析

功能需求

需要实现的医院药品进销存系统功能需求:

(1)对药品信息的管理,能够万册很能够药品信息的添加和按一定条件查询药品信息。 (2)对供应商信息的管理,采购员在不同供应商检选取不同货物。

(3)对用户信息的管理,不同用户有不同的权限,管理员可管理药品,但消费者则不行。 (4)仓库管理,能够查询库存药品信息,并对库存进行添加、出库等。 (5)查询功能,要求可以按日期查询,也可按用户选择字段和输入

(6)药品采购登记表功能、使得用户能够方便地管理和登记以及打印。 (7)药品库存检索,采购信息检索,供货商信息检索功能

(8)要求所设计系统界面友好,功能安排合理,操作使用方便,并能进一步考虑新一代安全性、完整性,并发、备份恢复等方面 的功能要求。 性能需求

(1)数据精确度

A.要按照严格的数据格式输入,否则系统不给予响应进行处理。 B.查询保证输入进行,不会出现不相关的多余和错误信息。 (2)时间特性

一般操作的响应时间应在1~2秒内完成,但在数据记录量较大的情况下时间会相应地延长。 (3)适应性

满足小型医院使用的需求 运行需求 (1)用户界面

VB的界面,操作简便,一目了然,视图优美等特点。并且采用菜单界面驱动方式,给操作用户带来了极大的便利,对用户友好。 (2)硬件接口一般微机均可运行此软件。

(3)软件接口:

运行于Windows98及更高版本具有WIN32 API的操作系统之上。

2)基本功能分析

医院药品进销存系统 新药品入库 药品出库管理 供货商信息检索 药品采购记录管理 药品用药说明信息管理 输出相应的数据报表 具有数据备份和数据 药品库存检索

功能结构图

管理员登录 药品进销存系统管理功能结构新药品入库 药品库存检索 信息查询 用户登录 100806040200第一季度第三季度东部西部北部供货商信息检药品销售 药品出库 过期药品处理 信息管理 药品采购记录药品用药说明信息管理 药品采购信息一览表 退出系统 用户登录 数据报表 3) 、数据字典

1.数据项

药品库存信息一览表 药品销售信息一览表 系统设置 数据备份 数据恢复 退 出 ,医院药品进销存管理的主要数据

设计如下的数据项:

药品库存表:药品序号,药品名称,功能,用量/ 次,剂型,生产日期,保质期/月,现存量等信息的录入,修改,删除,查询。

供应商信息表:供应商编号,供应商名,供应商地址,供应药品序号,供应量等信息的录入,修改,删除,查询。

采购信息表:供应商编号,供应量,入库时间,采购单位报价,药品序号等信息的录入,修改,删除,查。

药品分类代码表:药品序号,剂型,功能等信息的录入,修改,删除,查询。 药品销售表的程序设计:药品序号,药品名,销售价格,销售量,销售日期等信息的录入,修改,删除,查询。

4)概念结构设计

1、

数据流图

销售 缺货 用户 供应商 录入 药品 查询 管理员 采购药品 医院 采购信息 供应

2、系统E-R图 药品名称 功能 药品序号 用量 药品信息 现存量 剂型 生产日期 保质期 供应商编号 采购单位报价 医院采购信息 药品序号 供应量 入库时间

4、药品进销存系统E-R图: 功能 用量 剂型 生产日期 药品 n p 供应 m 供应商 编号 供应商名 地址 供应量 通用名 序号 保质期 现存量 供应商编号 采购 1 医院 采购量 入库时间 单价 药品序号 逻辑结构设计

药品(药品序号,药品名称,功能,剂型,用量/次,生产日期,保质期,现存量)

供应商(供应商编号,供应商名,供应商地址,供应药品序号,供应量) 采购(供应商编号,采购量,入库时间,采购单位报价,药品序号) 药品销售(药品序号,药品通用名,药品销售量,药品销售时间,药品销售价格)

物理设计

列名 药品序号 药品通用名 数据类型 char char 长度 20 40 4 4 8 允许空 ? ? ? ? ? 说明 药品销售价int 格 药品销售量 int 药品销售时datetime 间 列名 数据类型 供应商编号 采购量 入库时间 char char datetime 长度 10 10 8 10 10 允许空 说明 主键 采购单位报char 价 char 药品序号 列名 药品序号 药品通用名 数据类型 char char 长度 10 20 允许空 说明 主键

功能 剂型 [用量/次] 入库时间 现存量 char char char datetime char 40 40 10 8 10 列名 供应商编号 供应商名 供应商地址 数据类型 char char char 长度 10 40 40 10 10 允许空 说明 主键 供应药品序char 号 char 供应量 列名 药品序号 剂型 功能 数据类型 char char char 长度 10 40 40 允许空 说明 主键 三.取得的结果 登录界面:

2、新药品入库

3、药品销售

4、药品库存检索

5、供货商信息检索

6、药品采购记录管理

7、药品用药说明信息管理

8、系统备份

关于用户界面:用户只能进行查询操作,不能进行其他操作。

四、心得体会:

在设计的过程中遇到如下问题: 1.VB语言不够熟练

2.不知道怎么将SQL Sever数据库和VB联系起来,程序无法运行,vb中的adodc控件将二者结合

3.在设计管理员与普通用户的不同登陆界面时,出现输入不同名称进入同一个界面的情况。解决办法:建立两个登陆界面,让管理员与普通用户进入不同的界面,然后连接到同一个数据库上

在本次实习中,我通过实际设计数据库的过程训练,掌握数据库设计的步骤与方法。我感受到了需求分析的重要性。整个过程中,较多时间投入到了需求分析阶段,通过深入分析业务流程和用户需求,编写了需求分析阶段的设计报告。 通过这次实验,我获得了对VS2005的更深一层次的了解。这次实验也让我学的了更多的知识,让我对学得到的知识得到了深一层次的巩固。我发现这方面的知识在实际运用中真的很有用,软件工程的相关知识真的提供了很好的优化政策,让我们对程序的理解与感悟上升到一个新的层次,以后的目标是学好编程,提高编程质量

五、主要参考文献

1. 数据库系统概论 (第四版)王珊 萨师煊

2. Visual Basic 程序设计(第二版)吴昌平 主编

六、附录(事件代码)

Private Sub Command1_Click()

If Combo1.Text = \管理员\

Load Form3 Form3.Show

Form1.Enabled = False Else

If Combo1.Text = \用户\ Load Form12 Form12.Show

Form1.Enabled = False Else

MESSAGE = MsgBox(\密码输入错误,请向系统管理员查询!\ End If End If End Sub

Private Sub Timer1_Timer()

If Label4.Left + Label4.Width > 0 Then Label4.Left = Label4.Left - 10 Else: Label4.Left = Form1.Width End If End Sub

Private Sub Command2_Click() End

End Sub

Private Sub ghsxxjs_Click() Load Form5 Form5.Show

Form3.Enabled = True End Sub

Private Sub gqypcl_Click() Load Form2 Form2.Show

Form3.Enabled = True End Sub

Private Sub sjhf_Click() Load Form11 Form11.Show

Form3.Enabled = True End Sub

Private Sub tc_Click()

A = MsgBox(\你真的要退出吗?\If A = vbYes Then End End If End Sub

Private Sub xsyp_Click() Load Form7 Form7.Show

Form3.Enabled = True End Sub

Private Sub xtbf_Click() Load Form10 Form10.Show

Form3.Enabled = True End Sub

Private Sub xyrk_Click() Load Form9 Form9.Show

Form3.Enabled = True End Sub

Private Sub ypcgqkylb_Click()

strConnection = \Security Info=False;Initial Catalog=医院药品进销存系统;Data Source=.\ Dim db As Connection

Set db = New Connection

db.CursorLocation = adUseClient db.Open strConnection

Set adoprimaryrs = New Recordset

adoprimaryrs.Open \采购信息表\

db, adOpenStatic, adLockOptimistic '动态绑定报表到记录集

Set DataReport3.DataSource = adoprimaryrs DataReport3.Show End Sub

Private Sub ypcgxxgl_Click() Load Form8 Form8.Show

Form3.Enabled = True End Sub

Private Sub ypkcjs_Click() Load Form4 Form4.Show

Form3.Enabled = True End Sub

Private Sub ypkcqkylb_Click()

strConnection = \Security Info=False;Initial Catalog=医院药品进销存系统;Data Source=.\ Dim db As Connection Set db = New Connection

db.CursorLocation = adUseClient db.Open strConnection

Set adoprimaryrs = New Recordset

adoprimaryrs.Open \药品库存表\

db, adOpenStatic, adLockOptimistic '动态绑定报表到记录集

Set DataReport2.DataSource = adoprimaryrs DataReport2.Show End Sub

Private Sub ypxsqkylb_Click()

strConnection = \Security Info=False;Initial Catalog=医院药品进销存系统;Data Source=.\ Dim db As Connection

Set db = New Connection

db.CursorLocation = adUseClient db.Open strConnection

Set adoprimaryrs = New Recordset

adoprimaryrs.Open \药品销售表\

db, adOpenStatic, adLockOptimistic '动态绑定报表到记录集

Set DataReport1.DataSource = adoprimaryrs DataReport1.Show End Sub

Private Sub ypyysmxxgl_Click() Load Form6 Form6.Show

Form3.Enabled = True End Sub

Private Sub Comend_Click() Unload Me End Sub

Private Sub ComEsc_Click() '取消操作 Text1.Text = \ Text2.Text = \ Text3.Text = \ Text4.Text = \ Text5.Text = \End Sub

Private Sub Form_Load() With Adodc1

Adodc1.RecordSource = \采购信息表 \Adodc1.Refresh End With End Sub

Private Sub ComSaveM_Click() '保存新增记录 Adodc1.Recordset.AddNew

Adodc1.Recordset.Fields(\供货商编号\ Adodc1.Recordset.Fields(\采购量\ Adodc1.Recordset.Fields(\入库时间\ Adodc1.Recordset.Fields(\采购单位报价\ Adodc1.Recordset.Fields(\采购药品序号\ Adodc1.Recordset.Update Adodc1.Refresh End Sub

Private Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) End Sub

Private Sub Command1_Click()

Adodc1.RecordSource = \药品库存表 where \\Adodc1.Refresh '对查询更新

If Text3.Text < Format(\Text4.Text = \是\

Text6.Text = \药品将销毁\Else

Text4.Text = \否\

Text6.Text = \药品将继续供应\Command3.Enabled = False End If End Sub

Private Sub Command2_Click() Form3.Enabled = True Unload Me End Sub

Private Sub Command3_Click() Adodc1.Recordset.Delete Adodc1.Refresh End Sub

Private Sub Form_Load() Text1 = \

Combo1.Text = \药品序号\With Adodc1

Adodc1.RecordSource = \药品库存表 \Adodc1.Refresh End With End Sub

Private Sub Command1_Click()

Adodc1.RecordSource = \药品销售表 where \\Adodc1.Refresh '对查询更新 End Sub

Private Sub Command2_Click() Form3.Enabled = True Unload Form7 End Sub

Private Sub Form_Load() Text2 = \

Combo1.Text = \With Adodc1

Adodc1.RecordSource = \药品销售表 \Adodc1.Refresh End With End Sub

Private Sub command1_Click()

Adodc1.RecordSource = \药品库存表 where \\Adodc1.Refresh '对查询更新

Adodc2.RecordSource = \药品通用名,供应商编号, 供应商名, 供应商地址, 供应药品序号, 供应量 from 药品库存表,供货商信息表 where \Combo1.Text & \'\& Text5 & \药品库存表.药品序号=供货商信息表.供应药品序号 \

Adodc2.Refresh '对查询更新

Adodc3.RecordSource = \供货商编号,采购量,药品库存表.入库时间,采购单位报价,采购信息表.采购药品序号,药品通用名 from 药品库存表,采购信息表 where \药品库存表.药品序号=采购信息表.采购药品序号 \Adodc3.Refresh '对查询更新 End Sub

Private Sub Command2_Click() Unload Me End Sub

Private Sub Command3_Click() DataGrid1.Visible = True End Sub

Private Sub Command4_Click() DataGrid1.Visible = False End Sub

Private Sub Command5_Click() DataGrid2.Visible = True End Sub

Private Sub Command6_Click()

DataGrid2.Visible = False End Sub

Private Sub Command7_Click(Index As Integer) Select Case Index

Case Is = 0 '移到第一条记录 Command7(3).Enabled = True Command7(2).Enabled = True

If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst Command7(0).Enabled = False Command7(1).Enabled = False Case Is = 1 '移到上一条记录 Command7(3).Enabled = True Command7(2).Enabled = True

If Adodc1.Recordset.BOF = False Then Adodc1.Recordset.MovePrevious Else

Command7(0).Enabled = False Command7(1).Enabled = False End If

Case Is = 2 '移到下一条记录 Command7(0).Enabled = True Command7(1).Enabled = True

If Adodc1.Recordset.EOF = False Then Adodc1.Recordset.MoveNext Else

Command7(3).Enabled = False Command7(2).Enabled = False End If

Case Is = 3 '移到最后一条记录 Command7(0).Enabled = True Command7(1).Enabled = True

If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast Command7(3).Enabled = False Command7(2).Enabled = False End Select End Sub

Private Sub Form_Activate() '向combo1添加查询项目列表

x = Array(\药品序号\药品通用名\功能\用量/次\剂型\时间\现存量\ For i = 0 To 6

Combo1.AddItem (x(i))

入库 Next i

Combo1.Text = \药品序号\'初始化给gys(i)赋值 End Sub

Private Sub Form_Load() Text5 = \

Combo1.Text = \With Adodc1

Adodc1.RecordSource = \药品库存表 \Adodc1.Refresh End With With Adodc2

Adodc2.RecordSource = \供货商信息表 \Adodc2.Refresh End With With Adodc3

Adodc3.RecordSource = \采购信息表 \Adodc3.Refresh End With End Sub

Private Sub command1_Click()

Adodc1.RecordSource = \* from 供货商信息表 where \& Combo1.Text & \Adodc1.Refresh '对查询更新

Adodc2.RecordSource = \供应商编号,采购量,入库时间,采购单位报价,采购信息表.采购药品序号 from 供货商信息表,采购信息表 where \Combo1.Text & \供货商信息表.供应药品序号=采购信息表.采购药品序号 \

Adodc2.Refresh '对查询更新 End Sub

Private Sub Form_Activate() '向combo1添加查询项目列表

x = Array(\供应商编号\\供应商名\\供应商地址\\供应药品序号\\供应量\

For i = 0 To 4

Combo1.AddItem (x(i)) Next i

Combo1.Text = \供应商编号\'初始化给gys(i)赋值 End Sub

Private Sub ComAdd_Click() DataGrid1.Enabled = True DataGrid1.AllowAddNew = True Adodc1.Recordset.MoveLast End Sub

Private Sub ComDelete_Click() DataGrid1.AllowDelete = True DataGrid1.Enabled = True

If Adodc1.Recordset.RecordCount > 0 Then

A = MsgBox(\您确实要删除这条数据吗?\ If A = vbYes Then

Adodc1.Recordset.Delete Adodc1.Refresh End If Else

MsgBox (\没有要删除的数据!\ End If End Sub

Private Sub Command1_Click() DataGrid1.Enabled = False End Sub

Private Sub ComModify_Click() DataGrid1.AllowArrows = True DataGrid1.Enabled = True End Sub

Private Sub Form_Load() With Adodc1

Adodc1.RecordSource = \采购信息表 \Adodc1.Refresh End With End Sub

Private Sub ComSaveA_Click() '保存修改记录 Adodc1.Refresh

Adodc1.Recordset.Update DataGrid1.Enabled = False End Sub

Private Sub Comend_Click() Unload Me End Sub

Private Sub Form_Load() With Adodc1

Adodc1.RecordSource = \药品库存表 \Adodc1.Refresh End With End Sub

Private Sub ypkcqkylb_Click()

strConnection = \Security Info=False;Initial Catalog=医院药品进销存系统;Data Source=.\ Dim db As Connection Set db = New Connection

db.CursorLocation = adUseClient db.Open strConnection

Set adoprimaryrs = New Recordset

adoprimaryrs.Open \药品库存表\

db, adOpenStatic, adLockOptimistic '动态绑定报表到记录集

Set DataReport2.DataSource = adoprimaryrs DataReport2.Show End Sub

Private Sub Form_Activate() '赋值给text1 Text1.Text = \End Sub

Private Sub command1_Click() '确认数据备份 On Error GoTo errprompt Dim ire As ADODB.Recordset

Dim conn As New ADODB.Connection Set ire = New ADODB.Recordset conn.ConnectionString = \Security=SSPI;Persist Security Info=False;Initial Catalog=医院药品进销存系统;Data Source=.\

'cwvip 数据库名 text1.text 备份文件名

SQL = \database 医院药品进销存系统 TO disk = '\& Trim(Text1.Text) & \ conn.Open

conn.Execute (SQL)

MsgBox \备份数据成功!\errprompt:

MsgBox \备份数据失败!\End Sub

Private Sub Command2_Click() Load Form3 Form3.Show

Form3.Enabled = True Unload Me End Sub

Private Sub Form_Unload(Cancel As Integer) Form1.Enabled = True End Sub

Private Sub Form_Activate() '赋值给text1

Text1.Text = \End Sub

Private Sub command1_Click() '确认数据恢复 YesNo = MsgBox(\准备好了吗?\ If YesNo = vbNo Then Exit Sub

Else: MsgBox (\开始数据恢复\ On Error GoTo ERR_line Me.CommonDialog1.ShowOpen

snewname = Me.CommonDialog1.FileName

sdatapath = App.Path & \ If snewname <> \

If MsgBox(\还原后将覆盖原有数据,确定还原吗?\vbYesNo, \提示\

FileCopy snewname, sdatapath

MsgBox \数据已经成功还原!请重新登陆 \提示\ Unload Me

frmLogin.Show Else

Exit Sub End If End If Exit Sub ERR_line:

MsgBox \不能完成数据还原,请进入系统后未做任何操作时进行!\48, \运行错误\

If YesNo = vbNo Then Exit Sub

Else: MsgBox (\数据恢复完毕!\ End If End If End Sub

Private Sub Command2_Click() Load Form3 Form3.Show

Form3.Enabled = True Unload Me End Sub

Private Sub Form_Unload(Cancel As Integer) Form1.Enabled = True End Sub

本文来源:https://www.bwwdw.com/article/n0k7.html

Top