药品仓库管理系统.docx
- 文档编号:30281476
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:34
- 大小:191.10KB
药品仓库管理系统.docx
《药品仓库管理系统.docx》由会员分享,可在线阅读,更多相关《药品仓库管理系统.docx(34页珍藏版)》请在冰豆网上搜索。
药品仓库管理系统
计算机学院计算机科学与技术专业
《程序设计综合课程设计》报告
(20010/2011学年第一学期)
学生姓名:
学生班级:
学生学号:
指导教师:
2011年1月8日
药
品
仓
库
管
理
系
统
第一章前言
1.1药品仓库管理系统的开发背景
在市场经济的激烈竞争中,医药企业必须把业务经营同市场需求联系起来,为此,医药企业纷纷建立起了自己的数据库系统,由计算机管理代替手工操作。
药品管理是一般医药企业生产管理环节中重要的一环,需要对药品基本信息管理、药品调配信息等尽心完整的监控。
药品入库首先需要登记药品的基本信息,包括药品的种类、名称、型号、单位、单价等;然后登记药品入库信息,包括药品基本信息、入库地点、入库人、经办人、数量等;出库药品需要登记出库信息,包括药品基本信息、出库地点、出库人、经办人、数量等;根据药品的入库、出库过程的综合,得到各种药品的余额信息,方便进行后续工作。
设计一个管理信息系统,主要是我们通过在实际中了解了一些医药企业的管理形式,并结合当今世界管理信息系统的蓬勃发展,了解现阶段对管理信息系弘强调的是综合管理功能,多维服务模式,人机协调的、智能化的、集成化的计算机辅助管理功能等。
因此设计这样一个管理信息系统,来解决一些小型医药企业在物理管理上的缺点,能够实现药品信息的系统化、规范化和自动化。
医药企业生产所需要的各种药品。
进货时经检查合同确认为有效托收以后,进行验收入库,填写入库单,进行入库登记。
医药企业各个部门根据所需要的药品总额和部门生产活动需要提出药品需求申请。
计划员根据整个医药企业的需求开出药品出库单,药品仓库管理中根据出库单核对发放药品。
药品使用完毕需要及时归还入库,填写入库单。
根据需要进行统计分析,产生相应报表。
药品仓库管理的特点是信息自理量比较大。
所管理的药品种类繁多,而且由于入库单、出库单、需求单等单据发生量特别大,关联信息多,查询和统计的方工各不相同。
因此在管理上实现起来有一定的困难。
在管理的过程中经常会出现信息的重复传递;单据、报表种类繁多,各个部门管理规格不统一等问题。
在本系统的设计过程中,为了克服这些困难,满足计算机管理的需要。
1.2选题的目的、意义
此次毕业设计选题范围是相当广泛且实用的,含盖了目前大部分计算机软件类开发的课题,给我们很大的自由发展的空间。
可以每个学生挑选出最合适的课题,更适合同学们的兴趣和价值取向。
选择此课题对我来说有着不同的意义,应该来说此课题更接近于实际开发的全过程。
同时对编程、数据库调用、结构化查询语言STRUCTUREDQUERYLANGUAGE等方面是一个比较综合的考验。
让我在此过程中得到很好的锻炼。
第二章药品仓库管理系统的内容
2.1功能要求:
用c/c++设计一系统,实现以下功能:
功能要求:
1.用户及权限管理;
2.药品入库、出库;
3.药品架位管理;
4.药品信息查询、修改;
5.药品过期提示,打印出过期药品架位信息供工作人员将这些药品下架;
6.过期药品下架后将这些药品信息导入到过期药品表或删除。
2.2课程设计的目的
随着现代科学技术的迅猛发展,计算机技术已经渗透到个个领域,成为各行业必不可少的工具,随着超市的规模不断扩大,超市每天进出库的产品数量急剧增加,有关销售的各种信息量也成倍增长。
还要时刻更新产品的销售信息,不断添加,删除商品信息,所以就需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。
本次课程设计使得课堂教学与实验实践之间关系更为密切,让同学们认识到必须重视实践环节,多读程序,多编写程序,多上机实践。
进一步培养结构化程序设计的思想,加深对高级语言要素和控制结构的理解,针对C++语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序风格。
培养学生综合利用C++语言进行程序设计的能力,考察学生的观察能力和总结能力,使学生将所学知识转化为分析和设计简单实际问题的能力。
具体目的如下:
1.巩固和加深对C++语言课程基本知识的理解和掌握。
2.掌握C++语言编程和程序调试的基本技能。
3.提高C++语言编程技巧,培养分析问题和解决问题的能力。
4.利用C++语言进行基本的软件设计。
5.掌握书写程序设计说明文档的能力。
2.3课程设计的要求
在程序设计中,。
要求我们用所学的C++语言知识进行简单的编程,制作出一个简单的程序。
既可以用传统的结构化程序设计的方法,也可以用先进的面向对象程序设计方法。
具体要求如下:
1)用C语言实现系统;
2)函数功能要划分好(结构化程序设计);
3)界面友好(良好的人机交互),加必要的注释;
4)提供程序测试方案。
2.4课程设计的目标
A.使药品销售的信息能及时得到统计、查询
B.方便操作员的操作,达到简单、易用的效果
C.提高操作员的工作效率
D.提高操作的正确率
E.提高系统的可靠性及安全性
2.5主要有三大重要模块:
入库模块:
出库模块:
查询模块:
信息保存模块:
第三章系统详细设计说明
3.1系统的主要功能:
1)产品入库管理,可以填写入库单,确认产品入库;
2)产品出库管理,可以填写出库单,确认出库;
3)初始库存设置,设置库存的初始值,库存的上下警戒限;
4)可以查询产品入库情况、出库情况、当前库存情况,可以按药品的编号或名称;
3.2函数流程图和药品库存管理模块具体实现
1药品的属性
药品属性包括:
药品的编号,药品的有效日期,药品名称,药品数量,药品生产日期价格,药品生产商等等;
2药品仓库管理的主函数的流程图
3-2-1药品仓库管理的主函数流程图
(1)
3-2-2药品仓库管理的主函数流程图
(2)
3-2-3药品仓库管理的主函数流程图(3)
3出库入库连接流程图
3-2-4出库入库连接流程图
(1)
3-2-5出库入库连接流程图
(2)
4药品出库
(1)药品出库流程图
3-2-6药品出库流程图
(1)
3-2-7药品出库流程图
(2)
(2)药品出库代码
dlnode*output(dlnode*L)//出库的函数
{
inty;
dlnode*head=L;
if(ifempty==0)//检测是否有货物输入
{
printf("没有货物输入系统\n");
getchar();getchar();
return(head);
}
while
(1)
{
printf("=============\n");
printf("1.按编号出库\n");
printf("2.按名称出库\n");
printf("0.返回上一层\n");
printf("==============\n");
printf("选择0--2:
");scanf("%d",&y);
switch(y)
{
case1:
outnum(L);break;//调用按编号出库函数
case2:
outname(L);break;//调用按名称出库函数
case0:
return(L);
default:
printf("entererror!
Pleaseinput0--2!
");
getchar();getchar();printf("\n\n");
}
}
}
dlnode*outnum(dlnode*L)//按编号出库函数
{
intnum;
dlnode*head=L;
printf("请输入出库货物的编号:
");
scanf("%d",&num);
while((L=L->next)!
=head)
{//如果找到就删除节点
if(L->number==num)
{
L->prior->next=L->next;
L->next->prior=L->prior;
ifempty--;//ifempty减1
printf("编号为%d的货物成功出库",num);
getchar();getchar();
returnhead;
}
}
printf("没有此编号的货物,请查看是否还有货物。
\n\n");
getchar();getchar();
return(head);
}
dlnode*outname(dlnode*L)//按名称出库函数
{
charna[32];
dlnode*head=L;
printf("请输入出库货物的名称:
");
scanf("%s",&na);
while((L=L->next)!
=head)
{//如果找到就删除节点
if(strcmp(L->name,na)==0)
{
L->prior->next=L->next;
L->next->prior=L->prior;
ifempty--;//ifempty减1
printf("名称为%s的货物成功出库",na);
getchar();getchar();
return(head);
}
}
printf("没有此名称的货物,请查看是否还有货物。
\n\n");
getchar();getchar();
return(head);
}
5.药品入库
输入新进药品的一切信息,新记录将写入,新的零售价格将写入药品库存信息表相应的药品记录中去,方便药品库存的统计。
需要强调的是当要求填写的文本框为空时,系统会有提示信息要求用户输入必须的信息,否则新药品不能入存。
步骤为:
输入药品资料,开始入库,结束入库,提交入库资料。
药品入库代码为:
dlnode*input(dlnode*L)//定义入库函数
{
dlnode*in,*head;
head=in=(dlnode*)malloc(sizeof(dlnode));//分配空间
head=L;
printf("\n请输入货物数据:
\n");
printf("编号:
");scanf("%d",&in->number);
printf("名称:
");scanf("%s",&in->name);
printf("数量:
");scanf("%d",&in->counter);
if(L->next==NULL)//如果只有头节点,
{//把刚输入的in节点
L->next=in;//跟在头节点后面
L->prior=in;//
in->next=L;//
in->prior=L;//
ifempty++;//ifempty加1
}
else
{//如果当前L的下一个节点不是头节点
while((L=L->next)!
=head)
{//如果输入的数大于L->number,则插到L的前面
if(L->number
{
in->next=L;
in->prior=L->prior;
L->prior->next=in;
L->prior=in;
ifempty++;//ifempty加1
return(head);
}
}
//输入的编号比其它编号都小,则插到最后个节点,并首尾相连
head->prior->next=in;
in->prior=head->prior;
head->prior=in;
in->next=head;
ifempty++;//ifempty加1
}
returnhead;
}
6.药品查询
系统查询所需药品,在售药过程中销售人员对药品数据库进行查询。
两种方法,第一种:
按编号查询;第二种:
按名称查询;
7.登录模块
主要是完成用户的登录,根据用户的级别系统赋予不同的权限。
要求用户从列表框中选取出用户名,然后输入密码。
通过验证进入系统。
8.药品信息模块
这个模块是构成本系统的基本元素,所有药品的各种详细信息都必须在本模块中完成录入,在这里要求用户输入组成一条药品信息的基本信息。
并且可以随时对这些信息进行增、删、改。
9药品库存管理模块
有了基本的药品信息以后,就可以对所拥有的产品资料添加进货信息了,用户必须输入一些必要的数据,如进货的价格和数量,模块完成对库存药品的盘点以及药品过期销毁功能。
药库采购药品实现入库登记,对药库中的药品进行有效的管理,根据药品使用情况及时与供应商实现进货与退货。
在药库中过期的药品应及时销毁,这样才能保证客户的健康,对客户负责。
10.用户管理模块
用户分别两种,一种是A级用户,是系统管理员级;另一种是B级用户,是药房销售人员级。
这两种级别的用户的区别就是所拥有的权限不同。
在用户管理模块中,能够对所有用户密码、创建用户的工作以及系统资料的删除,只有A级用户,即系统管理员级用户。
11药品仓库管理模块
3-3-8药品仓库管理模块
3.3测试计划
先通过对模块的测试,模块通过后,在进行整体调试,进而达到程序的顺利完成;
3.4测试的意义
在开发软件系统的过程中,面对错综复杂的问题,人的主观认识不可能完全符合客观现象,因此,每个阶段都不可避免地产生错误,在每个阶段结束之前通过严格的技术审查,尽可能早的发现所有错误,此外,在编码过程中还会不可避免地引入新的错误,测试的目的就是在软件投入生产运行之前,尽可能多地发现软件中发的错误。
3.5本系统的测试结果
1.药品仓库管理系统的登陆界面:
.
3-5-1药品仓库管理系统的登陆界面
2.药品入库
3-5-2药品入库
3药品出库:
3-5-3药品出库
4药品查询:
3-5-4药品查询:
5将药品信息保存在文件中:
3-5-5将药品信息保存在文件中:
第四章软件使用说明
4.1软件使用说明
该程序可以实现对药品的仓库管理,在C语言的运行下进行。
界面显示后,需选择入库出库选项或查询选项,如要如果要入库出库,按1,进入药品入库出库信息页面,则根据要求需依次输入药品编号,药品名称,药品数量,药品价格,药品的生产日期及有效日期(为了方便,我们可以将其都输入1),药品的生产商,输入完成后,则关于药品的信息已存入。
如要查询药品信息,按2,进入查询药品信息页面,它将会出现两种查询方式,第一种,按编号查询,第二种,按名称查询;类似这样步骤进行,按0,即可退出;
4.2软件测试结果
如同系统测试结果;
第五章结束语
5.1程序设计的心得和体会
在这次课程设计中,让我学到了很多在课堂和书本上学不到的知识,我在这次课程设计中最大的收获有以下几个方面:
一、领略到了数据库设计在计算机领域的重要性。
数据库作为一个永久存储形式在应用中发挥着重要的作用。
在数据库设计中,我明白了数据库设计中不是范式越高越好的。
我们要根据我们的应用来决定,一切应该以需求为首要选择。
二、对变成环境、一些控件的使用和界面的美化方面更加熟悉。
因为《药品仓库管理系统》中涉及到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户的面前。
这样更有利于数据库和用户之间的交流。
这里就要涉及一些平时不太常见的控件的使用问题。
为了更好的在系统中利用这些控件,我上网查询了一些关于控件使用的资料,最主要的是MSDN上面、还有借了一些这方面的书籍。
在界面的美化方面,我了解了一些WINDOWS自定义界面的知识,现在的软件其实好多面向用户的时候用户首先看的就是一个软件的界面是否有好,是否漂亮。
其实,界面美化是很重要的。
因为美,是人一直追求的。
主要知识有:
自定义窗口形状,控件的自定义等等。
这些都是通过面向对象编程的一些特性实现的,又得是通过多态,又得是通过类的继承。
三、利用软件工程学开发系统。
虽然这个《药品仓库管理系统》是一个小的系统,但只有从这些小的项目中就利用软件工程学的知识,这样可以开发在系统设计和实现中我们可以总结很多经验和教训。
我们一般按照瀑布开发模型、增量模型、 螺旋模型来做我们的项目。
附录一:
参考文献
[1]、谭浩强,C++语言程序设计,清华大学出版社
[2]、谭浩强,C语言程序设计(第二版),清华大学出版社,1992
[3]《visualc++工程应用与项目实践》机械工业出版社张雨,阮伟良等2005·1
[4]《管理信息系统完整项目实例剖析》人民邮电出版社,明日科技2005·7
附录二:
程序代码;
#include
#include
#include
#include
#definemax32
intifempty=0;//标志,判断链表是无否为空
typedefstructdnode/*定义双向链表结构体*/
{
intnumber;/*药品编号*/
charname[max];/*药品名称*/
intcounter;/*药品数量*/
intdata;/*药品生产日期*/
intprice;/*药品单价*/
intedata;//药品有效日期
intpname;//药品生产商
structdnode*prior,*next;
/*定义两指针,分别指向其前驱和后继*/
}dlnode;
dlnode*create(dlnode*L);
dlnode*input(dlnode*L);
dlnode*output(dlnode*L);
dlnode*outnum(dlnode*L);
dlnode*outname(dlnode*L);
dlnode*current(dlnode*L);
voidsearch(dlnode*L);
voidprint(dlnode*L);
voidsearchnum(dlnode*L);
voidsearchname(dlnode*L);
voiddisplay(dlnode*L);
voidmain()
{
intx;
dlnode*L;
if(!
(L=(dlnode*)malloc(sizeof(dlnode))))//分配空间
{
printf("\n");
exit
(1);
}
create(L);///调用函数,创建头节点
while
(1)
{////////////////////////主菜单///////////////////////////
printf("============================\n");
printf("1.药品出库和入库\n");
printf("2.查找药品表\n");
printf("3.显示仓库药品表\n");
printf("4.输出到文件\n");
printf("0.退出\n");
printf("=============================\n");
printf("选择0--4:
");
scanf("%d",&x);
switch(x)
{
case2:
search(L);break;//调用查找函数
case1:
current(L);break;//调用入库出库函数
case3:
display(L);break;//调用显示输出函数
case4:
print(L);break;//调用打印函数
case0:
printf("\nbye!
seeyou!
\n");
getchar();getchar();exit(0);//退出程序
default:
printf("\nEntererreor!
pleaseinput0--4!
");
getchar();getchar();
}
}
}
dlnode*create(dlnode*L)//创建链表头节点
{
printf("药品仓库管理系统\n");
printf("按enter开始");
getchar();
ifempty=0;
///////初始化头节点的值////////
L->next=NULL;L->prior=NULL;
L->number=L->counter=L->data=L->price=L->edata=L->pname=0;//**
strcpy(L->name,"");
returnL;
}
voidsearch(dlnode*L)///查找的主要菜单
{
inty;
if(ifempty==0)
{
printf("没有输入药品!
\n");
getchar();getchar();
return;
}
else
{
while
(1)
{
printf("=====================\n");
printf("1.按编号查询\n");
printf("2.按药品名称查询\n");
printf("0.返回上一层\n");
printf("====================\n");
printf("选择0--2:
");
scanf("%d",&y);
switch(y)
{
case1:
searchnum(L);break;//调用按编号查找的函数
case2:
searchname(L);break;//调用按名称查找的函数
case0:
return;//返回
default:
printf("entererror!
Pleaseinput0--2!
\n\n");
getchar();getchar();printf("\n\n");
}
}
}
}
voidsearchnum(dlnode*L)///按编号查找的函数
{
intnum,flag=0;//flag为是否找到的标志
dlnode*head=L;
if(ifempty==0)
{
printf("没有药品被输入\n");
getchar();getchar();
return;
}
printf("输入你要查找的药品编号:
\n");
scanf("%d",&num);
while((L=L->next)!
=head)
{
if(L->number==num)
{flag=1;//flag为1时表示找到
printf("找到指定编号药品\n");
printf("\n编号:
%d\n",L->number);
printf("名称:
%s\n",L->name);
printf("数量:
%d\n",L->counter);
printf("生产日期:
%d\n",L->data);
printf("药品单价:
%d\n",L->price);
printf("药品有效日期:
%d\n",L->edata);
printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 药品 仓库 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)