医院药品管理系统.docx
《医院药品管理系统.docx》由会员分享,可在线阅读,更多相关《医院药品管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
医院药品管理系统
医院药品管理系统
摘要
医院药品管理系统是一所医院不可缺少的部分,它是医院的运行效率、服务质量的体现,医院药品管理系统可以让相关工作人员更方便的掌握库存药品的相关信息,提高运行效率,让患者及其家属更方便的购药,咨询。
本系统使用C语言作为程序开发的语言,开发医院药品管理系统,为药品管理过程中的库管人员提供一个方便快捷的管理系统。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:
药品管理,入库出库,清点
1.绪论
医院药品管理系统是一所医院不可缺少的部分,它是医院的运行效率、服务质量的体现,医院药品管理系统可以让相关工作人员更方便的掌握库存药品的相关信息,提高运行效率,让患者及其家属更方便的购药,咨询。
主要内容如下
1.药品入库。
完成药品入库过程中的管理功能,主要填写,修改和删除药品入库单以及将药品入库等功能。
2.药品出库。
完成药品出库过程中的管理功能,主要填写,修改和撤销药品出库。
3.库存清点功能。
完成库存药品的清点功能,主要进行统计查询。
2.系统分析
2.1功能需求
本系统主要是某医院库存人员的药品管理系统。
本系统需要有输入,列表,查询,分类,插入等功能
2.2数据需求
需要向系统输入药品编号,名称,重量,单价,总价。
2.3性能需求
在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。
3.总体设计
3.1功能模块设计
根据分析整个系统主要划分为5个功能模块,分别执行要求中的功能。
该系统需要有输入,列表,查询,分类,插入等功能,
医院药品管理系统
输
入
列
表
查
询
分
类
插
入
图1功能模块图
(1)输入模块
输入新药品的相关信息;
(2)列表模块
对已有相关药品信息进行一一列表
(3)查询模块
对相关药品信息进行分类查询
(4)分类模块
对药品新旧情况进行相关分类;
(5)插入模块
插入新药品以及相关信息
3.2系统设计方案
设计一个总菜单,1输入,2列表,3查询,4分类,5插入。
基本功能的实现都将体现在这几个菜单选项中。
建立结构体如下:
structmedicine
{charnum[8];编号
charname[8];名称
intkgs;重量
floatprice;价格
floatgross;总价
}med[N],s,temp;
/*界面*/
voidinit()
{printf("\n\n");
printf("\t\t\t*******************************************\n\n");
printf("\t\t\t医院药品管理系统\n\n");
printf("\t\t\t********************************************\n");
printf("\t\t\t1-->输入********************************\n");
printf("\t\t\t2-->列表********************************\n");
printf("\t\t\t3-->查询********************************\n");
printf("\t\t\t4-->分类********************************\n");
printf("\t\t\t5-->插入********************************\n");
printf("\t\t\t0-->退出********************************\n");
printf("\t\t\t********************************************\n");
printf("\t\t\t--Madeby通信工程何哲名--\n");
printf("\t\t\t********************************************\n");
}
{
4.详细设计
4.1输入模块
输入模块是输入相关药品信息,包括药品的种类,编号,名称,重量,单价,总价。
输入
图2输入流程图
4.2列表模块
对药品库存相关信息进行一一列表。
方便管理员进行查看。
图3列表流程图
4.3查询模块
输入要查询的药品编号,查询药品的名称,重量等相关信息。
图3查询流程图
4.4分类模块
该模块把药品信息进行分类。
分为旧药品和新药品。
使药品信息更加直观。
图4分类流程图
4.5插入模块
图5插入流程图
5.调试与测试
5.1调试
调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。
调试的任务是及时改正测试过程中发现的软件错误。
具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。
然后仔细研究推断代码以确定问题的原因,并设法改正。
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。
本系统调试过程中遇到问题、原因和解决方法如下面介绍。
(1)运行完程序一次有错误提醒
原因是上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示,解决方法:
将上一次运行时的操作界面关闭。
(2)程序不能运行
程序运行到添加新会员时自动提示错误需要调试,其原因是指针指向的位置出现错误导致程序传参错乱无法运行,解决办法:
使程序进入调试状态在传参出现错误的位置一句一句查找传递的参数是否是你所希望的,如若不是就加以修正。
5.2测试
软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。
或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价。
当医院药品管理系统已经具备对药品进行输入,查询,分类,插入等功能后进行相关的输入进行查询。
6.结论
课程设计顺利完成,任务书中所提出的要求全部实现。
不过这个程序还有些不够完善,例如不能对信息数据进行保存。
结束语
为期一个礼拜的计算机综合训练终于顺利完成,在这期间真正的学到了一些经验,能够熟练的掌握一些C语言的编程思路,能够熟练的运用学到的函数,学会了在曾经编写过的函数上加以修改实现了我期望实现的功能,知道学习编程必须亲手将每一个字符敲入电脑中这样才能真正的学到课本或一些理论中学不到的知识,这才达到了实践的目的,当程序编写完成而且能够正常运行心里一种说不出的自豪感,虽然这对于一名程序员来说可能什么也不是,但这是我编程的开始,如果希望在编程这方面能够有所发展我所要走过的路还很长,还需要不断的学习!
参考文献
[1]谭浩强.C语言程序设计(第三版).北京:
清华大学出版社,2005
附录1-用户手册
点击运行,首先出现的是菜单界面,选择菜单选项进行操作,可进行如图8所示
图8菜单界面
输入界面如下。
图9输入界面
列表界面如下
附录2-源程序
#include
#include
#include
#defineN50
#definePRprintf("\n\t%8s%-8s%8d%10.2f%10.2f",med[i].num,med[i].name,med[i].kgs,med[i].price,med[i].gross)
structmedicine
{charnum[8];
charname[8];
intkgs;
floatprice;
floatgross;
}med[N],s,temp;
/*界面*/
voidinit()
{printf("\n\n");
printf("\t\t\t*******************************************\n\n");
printf("\t\t\t医院药品管理系统\n\n");
printf("\t\t\t********************************************\n");
printf("\t\t\t1-->输入********************************\n");
printf("\t\t\t2-->列表********************************\n");
printf("\t\t\t3-->查询********************************\n");
printf("\t\t\t4-->分类********************************\n");
printf("\t\t\t5-->插入********************************\n");
printf("\t\t\t0-->退出********************************\n");
printf("\t\t\t********************************************\n");
printf("\t\t\t--Madeby通信工程何哲名--\n");
printf("\t\t\t********************************************\n");
}
/*输入功能*/
voids_input()
{inti,n;
FILE*fp;
printf("有多少种药品:
");
scanf("%d",&n);
for(i=0;i{
printf("\n输入药品信息%d:
\n",i+1);
printf("编号.:
");
scanf("%s",med[i].num);
printf("名称:
");
scanf("%s",med[i].name);
printf("重量:
");
scanf("%d",&med[i].kgs);
printf("价格:
");
scanf("%f",&med[i].price);
med[i].gross=med[i].kgs*med[i].price;
}
fp=fopen("information","w");
for(i=0;iif(fwrite(&med[i],sizeof(structmedicine),1,fp)!
=1)printf("filewriteerror\n");
fclose(fp);
printf("\n\n按任意键继续...");
}
/*显示功能*/
voids_list()
{inti;
FILE*fp;
if((fp=fopen("information","r"))==NULL)
{printf("不能打开.");
return;
}
printf("\n\n\n");
printf("\n\t编号.名称重量价格总价\n");
printf("\t-------------------------------------------------");
for(i=0;fread(&med[i],sizeof(structmedicine),1,fp)!
=0;i++)PR;
fclose(fp);
printf("\n\n\n按任意键继续...");
}
/*查找功能*/
voids_find()
{inti,n;
charfind_name[8];
FILE*fp;
if((fp=fopen("information","r"))==NULL)
{printf("不能打开.");
return;
}
for(i=0;fread(&med[i],sizeof(structmedicine),1,fp)!
=0;i++);
printf("输入名称:
\n");
scanf("%s",find_name);
printf("\n药品日期是:
");
printf("\n\n\n");
printf("\n\t编号.名称重量价格总价\n");
printf("\t-------------------------------------------------");
n=i;
for(i=0;i<=n;i++)
if(strcmp(find_name,med[i].name)==0)PR;
fclose(fp);
printf("\n\n按任意键继续...");
}
/*排序功能*/
voids_sort()
{FILE*fp;
inti,j,n;
if((fp=fopen("information","r"))==NULL)
{printf("不能打开.");
return;
}
printf("\n\t编号.名称重量价格总价\n");
printf("Old\t-------------------------------------------------");
for(i=0;fread(&med[i],sizeof(structmedicine),1,fp)!
=0;i++)PR;
n=i;
for(i=0;ifor(j=i+1;jif(strcmp(med[i].name,med[j].name)>0)
{temp=med[i];
med[i]=med[j];
med[j]=temp;
}
fclose(fp);
printf("\nNow\t-------------------------------------------------");
fp=fopen("information","w");
for(i=0;i{fwrite(&med[i],sizeof(structmedicine),1,fp);
PR;
}
printf("\n");
fclose(fp);
printf("\n\nputanykeytocontinue...");
}
/*插入功能*/
voids_insert()
{FILE*fp;
inti,t,n;
printf("\n输入新药品信息:
\n");
printf("编号.:
");
scanf("%s",s.num);
printf("名称:
");
scanf("%s",s.name);
printf("重量:
");
scanf("%d",&s.kgs);
printf("价格:
");
scanf("%f",&s.price);
s.gross=s.price*s.kgs;
if((fp=fopen("information","r"))==NULL)
{printf("不能打开目录.");
return;
}
printf("\n\t编号.名称重量价格总价\n");
printf("Old\t-------------------------------------------------");
for(i=0;fread(&med[i],sizeof(structmedicine),1,fp)!
=0;i++)PR;
fclose(fp);
printf("\nNow\t-------------------------------------------------");
n=i;
for(t=0;strcmp(med[t].name,s.name)>0&&tif((fp=fopen("information","w"))==NULL)
{printf("cannotopenfile.");
return;
}
for(i=0;i{fwrite(&med[i],sizeof(structmedicine),1,fp);
PR;
}
fwrite(&s,sizeof(structmedicine),1,fp);
printf("\n->\t%8s%-8s%8d%10.2f%10.2f",s.num,s.name,s.kgs,s.price,s.gross);
for(i=t;i{fwrite(&med[i],sizeof(structmedicine),1,fp);
PR;
}
fclose(fp);
printf("\n");
printf("\n\nputanykeytocontinue...");
}
/*主函数*/
voidmain()
{inta,b=0;
do
{
init();
printf("\n\t\t\t请选择:
");
scanf("%d",&a);
switch(a)
{case1:
s_input();break;
case2:
s_list();break;
case3:
s_find();break;
case4:
{s_sort(),b=1;};break;
case5:
if(b==1)s_insert();else{printf("Pleasechoose4first!
");}break;/*必须先执行排序文件*/
case0:
exit(0);
}
}while(a!
=0);
}
完成日期:
2009年7月7日