医院药品库存管理系统6Word下载.docx
《医院药品库存管理系统6Word下载.docx》由会员分享,可在线阅读,更多相关《医院药品库存管理系统6Word下载.docx(39页珍藏版)》请在冰点文库上搜索。
MicrosoftVisualStudio2008,Drugs’Informational,
Theinventorymanagement
1、前言
1.1问题的提出
随着经济的发展,越来越多的人注意健康,同时老龄化也在不断的增加,生病的越来越多,相应的药品的种类也在增加,且价格也随着经济的波动时常发生变化,大量的进出药品,使得药品的管理越来越麻烦,同时全手工的管理花费了大量的人力和时间,如果利用计算机管理药品,可以方便的查找药物,及时的补齐药物,提醒药物的保质期,销售数量,单价等等。
1.2项目开发背景
某医院是我省规模较大的集医疗、教学、科研、预防、保健、康复、急救为一体的大型综合性三级甲等医院。
近十年,医院内涵和整体实力得到显著提升。
药品数量众多,管理困难,先需开发系统,用于方便药品的管理。
1.3信息系统目标
系统及时的为管理人员提供药物信息,避免不必要的损失。
2、可行性分析
2.1经济可行性
2.1.1支出
根据系统的规模及项目的开发周期(4个月),公司决定投入5个人,为此将支出8万元人民币的工资及各种福利待遇。
在项目安装及调试阶段,用户培训、员工出差等费用的支出需要1.5万元人民币。
在项目维护阶段需要投入2万元人民币。
项目累计投入11.5万元人民币。
2.1.2收益
用户提供项目资金25万元人民币。
对于项目运行前后的改动,采取协商的原则根据改动规模额外提供资金,因此从投入与收益的效益比上,公司可以获得13.5万元人民币的利润。
2.2社会可行性
符合法律规定,满足各大医院的需求,加强管理。
2.3技术可行性
成熟的技术水平
2.4操作可行性
简单易懂友好的人机界面,方便查询,管理。
2.5所选的开发方法
采用快速原型法设计开发
2.6工具平台及运行环境
2.6.1网站开发环境
开发环境:
MicrosofVisualStudio2008集成开发环境
开发语言:
ASP.NET+C#
后台数据库:
SQLServer2000
开发环境运行平台:
WindowsXP(SP2)/Windows2000(SP4)
2.6.2服务器端
操作系统:
WindowsXP
Web服务器:
IIS5.0
数据库服务器:
游览器:
IE6.0
网站服务器运行环境:
Microsoft.NETFrameworkSDKv2.0
2.6.3客服端
分辨率:
最佳效果1024*768像素
3、需求分析
3.1需求概述
通过对用户关于药品库存管理系统的需求调查,确定系统的目标和功能,并对软件的性能进行规定。
3.2功能需求
3.2.1外部功能
药品的存取功能:
包括添加、删除、修改、查询药品信息;
权限管理功能:
设置用户权限,用密码登录;
报警功能:
若某一药物数量不在药物事先设定的数量的上下线中;
某药物不合法;
某药物有效期将到达货已过期;
智能化功能:
若某一药物长期滞销或缺货,则系统产生销售统计表建议调整生产量;
备份功能:
每天产生一个备份文件存储到定制的非系统盘内,以便系统或者软件被坏时可以恢复。
3.2.2内部功能
集命令、编程、编辑、管理于一体,完成过了、定位显示。
3.3性能需求
3.3.1灵活性
操作方式:
软件是实用、流行的操作系统;
有效时限的设置:
根据实际需要用户可自行设置;
3.3.2安全性
设置三种用户,权限管理员、管理员、游客,对每种用户设置不同的权限;
权限管理员:
负责授予管理员管理系统对系统进行除授权以外的任何操作;
管理员:
管理系统对系统进行除授权以外的任何操作;
游客:
信息浏览,以自己权限操作系统。
3.4其它需求
界面设计友好、美观,数据存储安全、可靠;
基本信息设置保证药品信息分类;
支持多条件查询和模糊查询;
信息显示格式清晰,达到一目了然的效果。
3.5业务流程图:
图1-1医院药品管理系统业务流程图
3.6数据字典
文件名:
用户基本信息表
存储方式:
随机存储
定义:
用户基本信息表=用户名+用户密码+权限
药品表
药品表=药品名称+出入库记录+编号+厂商+生产日期+保质期
处理名:
药品添加
处理逻辑:
用户添加药品信息
入库
用户添加入库单
出库
用户添加出库单
3.7数据流图
3.7.1顶层层数据流
图1-2医院药品管理系统顶层数据流图
3.7.2一层数据流图
图1-3医院药品管理系统一层数据流图
(1)
图1-4医院药品管理系统一层数据流图
(2)
3.7.3二层数据流图
图1-5医院药品管理系统二层数据流图
(1)
图1-6医院药品管理系统二层数据流图
(2)
4、总体设计
4.1系统设计原则和目标
对于典型的数据库管理系统,特别是库存管理这样的多数据所要求的管理系统,必须要满足使用方便、操作灵活等设计需求。
本系统在设计时应该满足以下几个目标:
✧
界面设计友好,操作简便;
✧各个模块之间相互独立,高耦合,低内聚;
✧显示药品的所有信息,方便管理员和用户了解药品信息;
✧系统对用户输入的信息,进行严格的数据检验,尽可能排除人为错误;
✧系统最大限度的实现易维护性和易操作性;
✧系统运行稳定、安全可靠。
4.2公共与局部设计
✧登录界面:
用户登录密码,设置密码,修改密码;
✧系统消息:
提醒即将到期药品及药品信息;
4.3数据模块结构设计
4.3.1功能结构图:
图2-1医院药品管理系统功能模块图
4.3.2层次图
图2-2医院药品管理系统层次图
4.4软件结构设计
图2-3医院药品管理系统软件结构设计图
4.5数据逻辑结构设计与物理设计
登录模块E-R图:
图2-4医院药品管理系统登录E-R图
库存模块:
图2-5医院药品管理系统库存模块E-R图
总体E-R图:
图2-6医院药品管理系统总体E-R图
4.6数据库设计
4.6.1关系模型
药品(药品编号,药品生产日期,限用日期,药品分类编号,药品信息);
药品分类(药品分类编号,药品分类名称);
管理员(管理员编号,管理员名称,管理权限);
供应(药品号,供应商号,供应量);
供应商(供应商号,姓名,联系电话);
库存(药品号,库存量,入库时间)
4.6.2数据库表
manager
图2-7医院药品管理系统manager表
Stock
图2-8医院药品管理系统Stock表
supply
图2-9医院药品管理系统supply表
Supplyer
图2-10医院药品管理系统Supplyer表
图2-11医院药品管理系统Drugs表
Ypkinds
图2-12医院药品管理系统DrugKinds表
4.6.3数据库关系表
图2-13医院药品管理系统数据库关系图
5、详细设计与实现
5.1数据库代码:
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Security.Cryptography;
usingSystem.Data.SqlClient;
///<
summary>
///DB的摘要说明
/summary>
publicclassDB
{
publicDB()
{
//
//TODO:
在此处添加构造函数逻辑
}
///<
///连接数据库
returns>
返回SqlConnection对象<
/returns>
privateSqlConnectioncon;
publicSqlConnectionGetCon()
returnnewSqlConnection(ConfigurationManager.AppSettings["
ConnectionString"
].ToString());
///执行SQL语句
paramname="
cmdstr"
>
SQL语句<
/param>
返回值为int型:
成功返回1,失败返回0<
publicintsqlEx(stringcmdstr)
SqlConnectioncon=GetCon();
con.Open();
SqlCommandcmd=newSqlCommand(cmdstr,con);
try
cmd.ExecuteNonQuery();
return1;
catch(Exceptione)
return0;
finally
con.Dispose();
///执行SQL查询语句
查询语句<
返回DataTable数据表<
publicDataTablereDt(stringcmdstr)
SqlDataAdapterda=newSqlDataAdapter(cmdstr,con);
DataSetds=newDataSet();
da.Fill(ds);
return(ds.Tables[0]);
str"
返回SqlDataReader对象dr<
publicSqlDataReaderreDr(stringstr)
SqlConnectionconn=GetCon();
conn.Open();
SqlCommandcom=newSqlCommand(str,conn);
SqlDataReaderdr=com.ExecuteReader(CommandBehavior.CloseConnection);
returndr;
}
///MD5加密
strpwd"
被加密的字符串<
返回加密后的字符串<
publicstringGetMD5(stringstrPwd)
MD5md5=newMD5CryptoServiceProvider();
byte[]data=System.Text.Encoding.Default.GetBytes(strPwd);
byte[]md5data=md5.ComputeHash(data);
md5.Clear();
stringstr="
"
;
for(inti=0;
i<
md5data.Length-1;
i++)
str+=md5data[i].ToString("
x"
).PadLeft(2,'
0'
);
returnstr;
5.2母版模块:
图3-1医院药品管理系统母版页界面图
母版页共设计六个botton控件,当分别点击这六个控件可以调转到相应的页面。
5.3登录模块:
图3-2医院药品管理系统登陆页界面图
5.3.1界面设计:
该页共设计了三个textBox控件、两个Botton和一个Image控件,它们的ID属性分别为:
TxtUserName、txtPwd、txtValidateNum、btnLogin、btnRegister、Inage1.
5.3.2登录功能的实现:
用户单击【登录】按钮,将触发按钮的btnLogin_Click事件。
该事件在处理代码事件中,首先对密码加密,然后判断用户输入的验证码是否正确,如果不正确,则给出验证码错误信息,并刷新页面;
如果输入正确,则通过数据库验证用户输入的密码和用户名是否正确。
验证用户名和密码时,调用DB类得reDr方法获取用户的信息。
验证成功,则使用Session对象保存用户的登录信息,然后调转到UserManagerment.aspx用户管理页;
验证失败将给出登录失败的信息并刷新页面。
代码如下:
usingSystem;
usingSystem.Collections;
usingSystem.Configuration;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Xml.Linq;
publicpartialclass_Default:
System.Web.UI.Page
protectedvoidbtnLogin_Click(objectsender,EventArgse)
DBdb=newDB();
stringuserName=this.txtUserName.Text.Trim();
stringpassWord=db.GetMD5(this.txtPwd.Text.Trim());
stringnum=this.txtValidateNum.Text.Trim();
if(Session["
ValidateNum"
].ToString()==num.ToUpper())
SqlDataReaderdr=db.reDr("
select*fromtb_UserwhereUserName='
+userName+"
'
andPassWord='
+passWord+"
dr.Read();
if(dr.HasRows)
Session["
UserID"
]=dr.GetValue(0);
Role"
]=dr.GetValue(4);
Response.Redirect("
~/UserManagement.aspx"
else
Response.Write("
<
script>
alert('
登录失败!
请返回查找原因'
location='
Login.aspx'
/script>
dr.Close();
alter('
验证码输入错误!
5.3.3注册新用户:
单击【注册】按钮,将跳转到Register.aspx用户注册页,未注册的用户即可进行用户注册。
protectedvoidbtnRegister_Click(objectsender,EventArgse)
~/Register.aspx"
5.4注册模块:
注册页主要实现添加用户的功能。
用户添加成功后,系统默认设置用户的权限为普通用户。
页面运行结果如下:
图3-3医院药品管理系统注册页界面图
5.4.1界面设计:
该页面添加了4个TextBox控件、2个Botton控件、1个LinkButton控件、4个RequiredFieldValidator控件、1个CompareValidator控件和1个RegularExpressionValidator控件。
5.4.2检测用户名是否存在:
在注册新用户时提供了一个对用户希望的注册的用户名进行检测的功能,以帮助检测哪些注册的用户名还未被使用。
protectedvoidlnkbtnCheck_Click(objectsender,EventArgse)
reValue=CheckName();
if(reValue==-1)
Response.Write("
用户名存在!
this.txtUserName.Focus();
elseif(reVlaue==2)
恭喜你!
该用户名尚未注册!
publicintChec