源程序医院药房药品管理系统C++.docx
- 文档编号:15501738
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:19
- 大小:18.62KB
源程序医院药房药品管理系统C++.docx
《源程序医院药房药品管理系统C++.docx》由会员分享,可在线阅读,更多相关《源程序医院药房药品管理系统C++.docx(19页珍藏版)》请在冰点文库上搜索。
源程序医院药房药品管理系统C++
源程序:
#include
#include
#include
#include
#defineMAX60//下列字符数组的大小
structDate{//日期
charyear[MAX];//年
charmonth[MAX];//月
charday[MAX];//日
};
structGoods{//药品信息
charname[MAX];//药品名称
charprice[MAX];//药品价格
charnumber[MAX];//药品数量
charcost[MAX];//药品总价
charkind[MAX];//药品的种类
Dateindate;//入库日期
Datexiaoqi;//到期时间
Goods*next;//下一个结点
};
classCangkuguanli{//类定义与实现
private:
intlength;//客户数量
Goods*head;//列表的头结点
Goods*current;//当前结点
public:
Cangkuguanli()//构造函数
{
head=newGoods;//创建头结点
current=head;
current->next=NULL;
length=0;//长度为0
}
voidCreatlist()//创建新的列表
{
charg='Y';
ints=0;
length=0;//初始长度为0;
current=head;
do{
Goods*temp=newGoods;//构建新结点信息
length++;//每加一个结点链表长度增1
temp->next=NULL;
cout<<"请输入药品名称:
";
cin>>temp->name;
cout<<"请输入单价:
";
cin>>temp->price;
cout<<"请输入药品数量:
";
cin>>temp->number;
cout<<"请输入总费用:
";
cin>>temp->cost;
cout<<"请输入日期(********):
";
cin>>temp->indate.year>>temp->indate.month>>temp->indate.day;
cout<<"请输入药品有效期(********):
";
cin>>temp->xiaoqi.year>>temp->xiaoqi.month>>temp->xiaoqi.day;
cout<<"请输入药品种类:
";
cin>>temp->kind;
if(head==NULL){head=temp;current=temp;}//head头指针,current尾指针
else{current->next=temp,current=temp;}
do{
cout<<"next?
(YN)";//是否继续存入新产品
cin>>g;
if(g!
='Y'&&g!
='N')
{
cout<<"\nerror!
!
!
!
\n";
}
}while(g!
='Y'&&g!
='N');
}while(g=='Y');//判断是否继续插入新结点
}
voidOpen()//打开一个数据文件,并建立链表关联和文件中的记录对应
{
charfname[20];//文件名称
cout<<"inputthenameofthefile\n";
cin>>fname;//输入要打开的文件名
ifstreaminfile(fname);//创建输入文件流
infile>>length;
cout<<"\nlengthis:
"< //if(length==0)cout<<"数据为空\n"; for(inti=0;i { Goods*t=newGoods; t->next=NULL; infile>>t->name>>t->price>>t->number>>t->cost>>t->kind>> t->indate.year>>t->indate.month>>t->indate.day; if(head==NULL){head=t;current=t;}//跟上面的链表创建相似 else{current->next=t,current=t;} } infile.close();//关闭文件流 }//open voidSave()//保存链表信息到文件 { if(length==0) { cout<<"列表为空不需存盘\n"; return; } charfname[20];//文件名称 cout<<"inputthenameofthefileyouwanttoputdatain\n"; cin>>fname; ofstreamoutfile(fname);//创建输出文件流 Goods*temp=head->next; outfile< while(temp! =NULL)//把所有结点写入到文件fname { outfile< <<""< temp=temp->next; } outfile.close();//关闭文件流 } voidprintinfor(Goods*current)//输出一个结点的信息到字符界面 { if(current==NULL) { cout<<"\n元素为空! ! ! \n"; return; } cout.fill(''); cout< cout.width(8); cout.width(8); cout< cout.width(8); cout< cout.width(8); cout< cout.width(10); cout< cout.width(10); cout< cout.width(10); cout< cout< }//printinfor voidShow()//输出所有结点信息到字符界面 { current=head->next; if(current==NULL) { cout<<"列表为空\n"; return; } cout.fill(''); cout.width (2); cout<<"名称"; cout.width(8); cout<<"价格"; cout.width(8); cout<<"数量"; cout.width(8); cout<<"总费用"; cout.width(10); cout<<"药品的种类"; cout.width(15); cout<<"购进时间"; cout.width(15); cout<<"有效期"; cout< while(current! =NULL) {//循环输出所有结点 printinfor(current); current=current->next; } }//show Goods*Searchindate(Datet){//按购入日期搜索返回结点指针temp //结构体t含有t.yeart.montht.day三个信息块 Dated; boolf=false; Goods*temp; current=head->next; while(current! =NULL) { d=current->indate; if(! strcmp(d.year,t.year)&&! strcmp(d.month,t.month)&&! strcmp(d.day,t.day)) { temp=current; f=true; break; } current=current->next; } if(f==false) { cout<<"\n没有满足要求的信息\n"; returnNULL; } returntemp; } voidQueryindate()//按入库日期查询 { Datet; cout<<"inputthedate(********): "; cin>>t.year>>t.month>>t.day; printinfor(Searchindate(t)); }//Queryindate() Goods*Searchname(charr[])//搜索药品名返回结点指针temp {Goods*temp; current=head->next; boolf=false; while(current! =NULL) { if(strcmp(current->name,r)==0) { temp=current; f=true; break; } current=current->next; } if(f==false) { cout<<"\n商品名为: "< returnNULL; } returntemp; } voidQueryname()//按药品名查询 { charr[MAX]; cout<<"inputthename: "; cin>>r; printinfor(Searchname(r)); } voidQuery()//查询函数一个次级菜单 { charm; do{ cout<<"**********************************************************"< cout<<"*******按入库的时间查询***********"< cout<<"*******按药品的名称查询***********"< cout<<"******* cout<<"**********************************************************"< cin>>m; switch(m){//分别调用按不同查询方式下的函数 case'a': Queryindate();break; case'b': Queryname();break; case'c': return; default: cout<<"error! ! "; } }while(m! ='h'); }//Query voidRemovebynumber()//按总量删除某个结点 { chart[MAX];//需要删除的总量值 boolf=false;//表示是否找到满足要求的结点 Goods*temp;//指向找到的结点,并删除 cout<<"请输入药品的数量: "; cin>>t; current=head; while(current->next! =NULL) { if(strcmp(current->next->number,t)==0)//判断是否满足条件 { temp=current->next; current->next=temp->next; length--;//没删除一个结点,链表长度减1 f=true; deletetemp;//释放结点 cout<<"已删除此药品\n"; //break;此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除 } else{ current=current->next; } } if(f==false)//false没有改动,表示没有满足条件的结点 { cout<<"此药品不存在,无须删除\n"; } }//Removebynumber voidRemovebyname()//按名称删除某个结点 { chart[20]; boolf=false;; Goods*temp; cout<<"请输入药品的名称: "; cin>>t; current=head; while(current->next! =NULL) { if(strcmp(current->next->name,t)==0) { temp=current->next; current->next=temp->next; length--; f=true; deletetemp;cout<<"已删除此药品\n"; //break;此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除 } else{ current=current->next; } } if(f==false) { cout<<"此药品不存在,无须删除\n"; } }//Removebyname voidRemovebyindate()//按购进时间删除某个结点 { Datet,d; boolf=false; Goods*temp; cout<<"请输入查找药品的日期: "; cin>>t.year>>t.month>>t.day; current=head; while(current->next! =NULL) { d=current->next->indate; if(d.year==t.year&&d.month==t.month&&d.day==t.day) { temp=current->next; current->next=temp->next; length--; f=true; deletetemp; cout<<"已删除此药品\n"; } else{ current=current->next; } } if(f==false) { cout<<"此元素不存在,无须删除\n"; } }//Removebyindate voidRemove()//删除函数 { charg='Y'; do{ cout<<"**********************************************************"< cout<<"*******按药品总数量删除***********"< cout<<"*******按药品名称删除***********"< cout<<"******* cout<<"******* cout<<"**********************************************************"< cin>>g; switch(g){ case'a': Removebynumber();break; case'b': Removebyname();break; case'c': Removebyindate();break; case'd': return; default: cout<<"error! ! "; } }while(g! ='d'); } voidAdd() { Goods*temp; current=head; while(current->next! =NULL)//找到尾指针 { current=current->next; } temp=newGoods; temp->next=NULL; length++;//链表长加1 cout<<"请输入药品名称: "; cin>>temp->name; cout<<"请输入单价: "; cin>>temp->price; cout<<"请输入药品数量: "; cin>>temp->number; cout<<"请输入总费用: "; cin>>temp->cost; cout<<"请输入入购日期(********)"; cin>>temp->indate.year>>temp->indate.month>>temp->indate.day; cout<<"请输入有效期(********)"; cin>>temp->xiaoqi.year>>temp->xiaoqi.month>>temp->xiaoqi.day; cout<<"请输入药品的种类: "< cin>>temp->kind; current->next=temp;//这时current指向尾指针,将要插入的结点接到current后面 current=temp; }//add voidModify(){//通过药品名找到要修改的数据项 charn[MAX]; cout<<"请输入您要修改的药品名: "< cin>>n; Goods*temp=Searchname(n);//按商品名查找 cout<<"请输入单价: "; cin>>temp->price; cout<<"请输入药品的总费用: \n"; cin>>temp->cost; cout<<"请输入日期(********): \n"; cin>>temp->indate.year>>temp->indate.month>>temp->indate.day; cout<<"请输入药品的数量: \n"; cin>>temp->number; cout<<"请输入药品的种类: \n"; cin>>temp->kind; } voidoperation() { charg='Y'; do{ cout<<"\t"; cout.fill('*'); cout.width(21); cout<<'*'; cout<<"医院药房管理系统"; cout.fill('*'); cout.width(19); cout<<'*'; cout<<"\n"; cout<<"\t********************************************************\n"; cout<<"\tMWDICINESTOREMANAGEMENTSYSTERM\n"; cout<<"\t********************************************************\n"; cout<<"\t&&&& cout<<"\t&&&& cout<<"\t&&&& cout<<"\t&&&&新药品入库&&&\n"; cout<<"\t&&&& cout<<"\t&&&& cout<<"\t&&& cout<<"\t&&& cout<<"\t&&& cout<<"\t&&& cout<<"\t********************************************************\n"; cout<<"\t********************************************************\n"; cout<<"\t"; cout.fill('*'); cout.width(18); cout<<'*'; cout<<"医院药房管理系统"; cout.fill('*'); cout.width(22); cout<<'*'; cout< cin>>g; switch(g) { case'C': Creatlist();break; case'A保存文件&&&&&&&&&&&&&&&\n";药品查询&&&\n";
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 源程序 医院 药房 药品 管理 系统 C+