数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
数据库课程设计
附件1:
《数据库系统原理》
课程设计
题目医院药品进销存系统
班级网络1003
学号311009040303
姓名李赛
指导老师彭维平
2012年12月15日
目录
一、概述7
1.1课程设计的目的7
1.2课程设计的内容7
1.3课程设计的要求7
二、需求分析7
2.1系统需求7
2.2数据字典7
三、系统总体设计7
3.1系统总体设计思路7
3.2概念模型设计7
3.2.1局部E-R图7
3.2.2全局E-R图7
3.3逻辑结构设计7
3.4数据库建立实施7
3.4.1建立数据库7
3.4.2建立关系表8
四、系统实现8
五、系统评价8
六、课程设计心得、总结8
参考文献:
8
一、概述
1.1课程设计的目的
学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。
1.2课程设计的内容
(1)主要的数据表
药品分类代码表,药品库存表,供货商信息表,采购信息表等等。
(2)主要功能模块
1)新药品的入库。
2)过期药品的出库登记、处理记录。
3)药品库存检索。
4)供货商信息检索。
5)药品采购记录管理。
6)药品用药说明信息管理。
7)输出相应的数据报表。
8)具有数据备份和数据恢复功能。
1.3课程设计的要求
具体项目内容去医院进行调研,药品编码也应参考国家统一编码方法。
二、需求分析
2.1系统需求
企业经营如逆水行舟不进则退。
每一个努力发展的企业都明白,先进管理的重要作用,引进先进管理系统使企业经营变得规范、合理。
进销存管理系统无论是在功能设计还是业务流程上都尽可能做到满足经营管理运作流程的需求,并且操作方便、功能强大,即使操作者对计算机知识一窍不通也能一用就会。
它强化库存管理,规范业务流程,提高资金管理的透明度,加快商品资金周转,是企业经营管理中数据分析中必不可少的管理工具。
根据市场的需求,要求系统具有以下功能:
1)新药品的入库。
2)过期药品的出库登记、处理记录。
3)药品库存检索。
4)供货商信息检索。
5)药品采购记录管理。
6)药品用药说明信息管理。
7)输出相应的数据报表。
8)具有数据备份和数据恢复功能。
系统主要为登陆,登陆后可以浏览,查询,添加,删除药品信息外还可以对销售记录进行浏览,删除,添加,修改。
本系统是根据中小企业的实际需求而开发的,完全能够实现药品入库、销售管理,通过本系统可以达到以下目标:
❑系统运行稳定,安全可靠。
❑界面设计美观,人机交互界面友好。
❑信息查询灵活、方便、快捷、准确,数据存储安全可靠。
❑强大的报表预览、打印功能。
❑信息安全保密。
开发及运行环境
硬件要求
CPU:
300MHz以上的处理器
内存:
128MB,推荐256MB
硬盘:
150MB以上剩余空间
显示像素:
最低800*600,最佳效果1024*768
软件要求
操作系统:
Windows2000/NT/XP/Vista。
数据库:
SQLServer2000。
2.2数据字典
基本表
表2.1药品分类代码表
字段中文名
字段名
类型
长度
类别
leibie
char
10
药品代码
yaodaima
char
10
药品名称
yaoming
char
30
表2.2供货商信息表:
字段中文名
字段名
类型
长度
供货商代码
shangdaima
char
10
供货商名称
shangming
char
40
供货商地址
address
char
50
供货商电话
phone
char
20
表2.3药品库存表:
字段中文名
字段名
类型
长度
药品名称
yaoming
char
30
药品代码
yaodaima
char
10
库存数量
kucunliang
float
8
药品信息
yaoxinxi
varchar
50
生产日期
shengchanriqi
datetime
8
有效期至
youxiaoqizhi
datetime
8
表2.4采购信息表:
字段中文名
字段名
类型
长度
药品代码
yaodaima
char
10
供货商代码
shangdaima
char
10
采购数量
caigouliang
float
8
采购总价
czong
float
8
表2.5过期药品处理表
字段中文名
字段名
类型
长度
药品代码
yaodaima
char
10
处理数量
chuliliang
float
8
处理日期
chuliriqi
datetime
8
处理方法
chulifa
varchar
50
生产日期
shenchanriqi
datetime
8
表2.6用户密码表
字段中文名
字段名
类型
长度
用户
yonghu
char
30
密码
mima
char
10
三、系统总体设计
3.1系统总体设计思路
根据需求分析,设计系统框架。
进销存系统由7部分组成。
设计各部分具体功能如下:
1)药品信息模块。
包括药品代码,名称,分类等。
2)供货商信息模块。
包括供货商代码,供货商名,地址,联系电话。
3)库存模块。
包括药品名称,药品代码,库存量,处理日期。
4)采购信息模块。
包括药品代码,采购量,采购日期,采购总价,主治症状。
5)过期药品处理模块。
包括药品代码,处理量,过期时间。
6)用户密码模块。
包括用户名,密码。
3.2概念模型设计
3.2.1局部E-R图
供应商实体图的属性包括供应商编号,供应商名称,供应商品数量,供应商地址,联系方式。
如图3—1所示
图3—1供应商实体图
管理员实体图的属性包括管理员编号,管理员姓名,性别,地址,联系方式,
部门。
如图3-2所示
图3-2管理员实体图
客户实体图的属性包括编号,姓名,性别,年龄,联系方式,地址。
如图3-3所示
3.2.2全局E-R图
3.3逻辑结构设计
3.4数据库建立实施
3.4.1建立数据库
3.4.2建立关系表
四、系统实现
4.1登陆框设计
图3.1登陆界面
登录按钮的代码:
UpdateData(true);
mimasetset;
set.m_strFilter.Format("id='%s'",m_id);
set.m_mima.TrimRight();
set.Open();
if(m_id.IsEmpty())
{
MessageBox("用户名不能为空!
","提示",MB_ICONSTOP);
return;
}
if(m_mima.IsEmpty())
{
MessageBox("密码不能为空!
","提示",MB_ICONSTOP);
return;
}
if(!
set.IsEOF())
{
set.m_id.TrimRight();
set.m_mima.TrimRight();
if(set.m_mima==m_mima)
{
menuDlg;
Dlg.DoModal();
}
else
MessageBox("密码错误!
","提示",MB_ICONSTOP);
}
else
MessageBox("用户名不正确!
","提示",MB_ICONSTOP);
4.2主菜单模块设计
图3.2功能选择窗口
子菜单选择按钮代码:
shuruDlg;
Dlg.DoModal();
其余按钮代码相同
4.3新药入库模块设计
图3.3供货商信息查询窗口
新药注册按钮的代码:
UpdateData(TRUE);
if(m_id.IsEmpty())
MessageBox("药品代码不能为空!
","提示",MB_ICONSTOP);
shurusetset;
set.m_strFilter.Format("id='%s'",m_id);
set.Open();
if(set.IsEOF())
{
set.AddNew();
set.m_id=m_id;
set.m_name=m_name;
set.m_zongjia=m_zongjia;
set.m_shuliang=m_shuliang;
set.m_zhengzhuang=m_zhengzhuang;
set.m_chulishijian=m_time;
set.Update();
m_list.InsertItem(0,set.m_id);
m_list.SetItemText(0,1,set.m_name);
m_list.SetItemText(0,2,set.m_zongjia);
m_list.SetItemText(0,3,set.m_shuliang);
m_list.SetItemText(0,4,set.m_zhengzhuang);
CStringstrTmp;
strTmp.Format("%d-%d-%d",set.m_chulishijian.GetYear(),set.m_chulishijian.GetMonth(),set.m_chulishijian.GetDay());
m_list.SetItemText(0,5,strTmp);
}
else
MessageBox("此药品已存在!
","提示",MB_ICONSTOP);
set.Close();
}
新药录入复选框的代码:
UpdateData(true);
GetDlgItem(IDC_EDIT2)->EnableWindow(m_bEnabled);
GetDlgItem(IDC_EDIT4)->EnableWindow(m_bEnabled);
GetDlgItem(IDC_EDIT5)->EnableWindow(m_bEnabled);
新药入库按钮代码:
UpdateData(TRUE);
if(m_id.IsEmpty())
MessageBox("药品代码不能为空!
","提示",MB_ICONSTOP);
shurusetset;
set.m_strFilter.Format("id='%s'",m_id);
set.Open();
if(!
set.IsEOF())
{
set.Edit();
set.m_shuliang=m_shuliang;
set.Update();
m_list.InsertItem(0,set.m_id);
m_list.SetItemText(0,1,set.m_name);
m_list.SetItemText(0,2,set.m_zongjia);
m_list.SetItemText(0,3,set.m_shuliang);
m_list.SetItemText(0,4,set.m_zhengzhuang);
CStringstrTmp;
strTmp.Format("%d-%d-%d",set.m_chulishijian.GetYear(),set.m_chulishijian.GetMonth(),set.m_chulishijian.GetDay());
m_list.SetItemText(0,5,strTmp);
}
else
MessageBox("仓库内没有该药品,请先进行新药注册!
","提示",MB_ICONSTOP);
取消按钮的代码:
OnCancel();
4.4过期药品出库模块设计
3.3过期药品出库页面
录入按钮的代码:
UpdateData(true);
m_list.DeleteAllItems();
chukusetset;
shurusetset1;
intflag=1;
if(m_id.IsEmpty()||m_name.IsEmpty()||m_riqi.IsEmpty()||m_shuliang.IsEmpty())
flag=0;
for(inti=0;i{
charc;
c=m_id.GetAt(i);
if(c<'0'||c>'9')
flag=0;
}
if(flag==0)
{
MessageBox("有选项未填写或填写有误!
","提示",MB_ICONSTOP);
return;
}
else
{
set1.m_strFilter.Format("id='%s'",m_id);
set1.Open();
if(set1.IsEOF())
{
MessageBox("仓库内没有此药品!
","提示",MB_ICONSTOP);
return;
}
else
{
set1.Delete();
set1.Requery();
}
}
set1.Close();
set.Open();
set.AddNew();
set.m_id=m_id;
set.m_name=m_name;
set.m_shuliang=m_shuliang;
set.m_riqi=m_riqi;
set.Update();
set.MoveLast();
m_list.InsertItem(0,set.m_id);
m_list.SetItemText(0,1,set.m_name);
m_list.SetItemText(0,2,set.m_shuliang);
m_list.SetItemText(0,3,set.m_riqi);
set.Close();
UpdateData(false);
MessageBox("添加成功!
","提示",MB_OK);
删除出库按钮:
UpdateData(true);
m_list.DeleteAllItems();
chukusetset;
intn=1;
set.Open();
set.MoveFirst();
while(!
set.IsEOF())
{
set.m_id.TrimRight();
if(set.m_id==m_id)
{
set.Delete();
set.Requery();
n=0;
}
set.MoveNext();
}
if(n==1)
MessageBox("没有此药品!
","警告",MB_ICONSTOP);
else
MessageBox("删除成功","警告",MB_OK);
set.Close();
4.5库存药品查询模块设计
图3.5库存药品查询窗口
查询按钮的代码同上。
UpdateData();
jiansuo1set;
m_list.DeleteAllItems();
if(m_choose==0)
{
if(m_cha.IsEmpty())
{
MessageBox("请输入查询内容!
","提示",MB_ICONSTOP);
return;
}
else
{
set.m_strFilter.Format("id='%s'",m_cha);
set.Open();
if(set.IsEOF())
{
MessageBox("没有该药品!
","提示",MB_ICONSTOP);
return;
}
else
{
intn=m_list.GetItemCount();//获取总行数
m_list.InsertItem(n,set.m_id);//重新添加一行,参数n:
插入项的索引值,后面为插入的字符串
m_list.SetItemText(n,1,set.m_name);//n:
行索引,1:
列索引,最后为:
文本字符串
m_list.SetItemText(n,2,set.m_zongjia);
m_list.SetItemText(n,3,set.m_shuliang);
m_list.SetItemText(n,4,set.m_zhengzhuang);
CStringstrTmp;
strTmp.Format("%d-%d-%d",set.m_chulishijian.GetYear(),set.m_chulishijian.GetMonth(),set.m_chulishijian.GetDay());
m_list.SetItemText(n,5,strTmp);
set.Close();
}
}
}
elseif(m_choose==1)
{
if(m_cha.IsEmpty())
{
MessageBox("请输入查询内容!
","提示",MB_ICONSTOP);
return;
}
else
{
intn=0;
set.Open();
set.MoveFirst();
while(!
set.IsEOF())
{
set.m_name.TrimRight("");
if(set.m_name==m_cha)
{
m_list.InsertItem(n,set.m_id);//重新添加一行,参数n:
插入项的索引值,后面为插入的字符串
m_list.SetItemText(n,1,set.m_name);//n:
行索引,1:
列索引,最后为:
文本字符串
m_list.SetItemText(n,2,set.m_zongjia);
m_list.SetItemText(n,3,set.m_shuliang);
m_list.SetItemText(n,4,set.m_zhengzhuang);
CStringstrTmp;
strTmp.Format("%d-%d-%d",set.m_chulishijian.GetYear(),set.m_chulishijian.GetMonth(),set.m_chulishijian.GetDay());
m_list.SetItemText(n,5,strTmp);
n++;
}
set.MoveNext();
}
set.Close();
if(n==0)
MessageBox("没有该药品!
","提示",MB_ICONSTOP);
}
}
else
MessageBox("请选择查找类型!
","提示",MB_ICONSTOP);
4.6采购商信息管理模块设计
3.6采购商信息管理模块界面
修改按钮代码:
UpdateData(true);
shangsetset;
intn=0;
set.Open();
set.MoveFirst();
while(!
set.IsEOF())
{
set.m_id.TrimRight();
if(set.m_id==m_chaid)
{
MessageBox("已找到采购商信息,确定修改吗?
","提示",MB_OKCANCEL);
set.Edit();
if(m_chechname.GetState()==1)
set.m_name=m_name;
if(m_chechadd.GetState()==1)
set.m_address=m_add;
if(m_chechphone.GetState()==1)
set.m_phone=m_phone;
set.Update();
MessageBox("修改成功!
","提示",MB_OK);
n=1;
}set.MoveNext();
}
set.Close();
if(n==0)
MessageBox("未找到采购商信息,请确认信息正确性!
","提示",MB_ICONSTOP);
删除按钮代码:
UpdateData(true);
m_list.DeleteAllItems();
shangsetset;
intn=1;
set.Open();
set.MoveFirst();
while(!
set.IsEOF())
{
set.m_id.TrimRight();
if(set.m_id==m_chaid)
{
set.Delete();
set.Requery();
n=0;
}
set.MoveNext();
}
if(n==1)
MessageBox("没有此供货商!
","警告",MB_ICONSTOP);
else
MessageBox("删除成功!
","警告",MB_OK);
set.Close();
4.7药品采购信息查询模块设计
3.7药品采购信息查询界面
查询按钮代码:
m_list.DeleteAllItems();
UpdateData(TRUE);
if(m_chaid.IsEmpty())
{
MessageBox("搜索信息不能为空!
","提示",MB_ICONSTOP);
return;
}
caigousetset;
intn=0;
set.m_strFilter.Format("id='%s'",m_chaid);
set.Open();
if(set.IsEOF())
{
MessageBox("此药品不存在!
","提示",MB_ICONSTOP);
return;
}
else
{
m_list.InsertItem(0,set.m_id);//重新添加一行,参数n:
插入项的索引值,后面为插入的字符串
m_list.SetItemText(0,1,set.m_name);//n:
行索引,1:
列索