temp=current; f=true; break; } current=current->next; }
if(f==false) { cout<<\商品名为 : \的商品不存在 \\n \ return NULL; }
return temp; }
void Queryname() //按药品名查询 {
char r[MAX];
cout<<\cin>>r;
printinfor(Searchname (r)); }
void Query ()//查询函数 一个次级菜单 {
char m; do{
cout<<\ ********************************************************** \ cout<<\按入库的时间查询 ***********\ cout<<\按药品的名称查询 ***********\ cout<<\退出 ***********\ cout<<\ ********************************************************** \ cin>>m;
switch (m){ //分别调用按不同查询方式下的函数 case 'a': Queryindate();break; case 'b': Queryname();break; case 'c': return ;
default: cout<<\ }
}while(m!='h'); }//Query
void Removebynumber () //按总量删除某个结点 { char t[MAX]; //需要删除的总量值
bool f=false; //表示是否找到满足要求的结点 Goods * temp; //指向找到的结点,并删除
6
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; delete temp;//释放结点 cout<<\已删除此药品\\n\ //break; 此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除 } else{ current=current->next; } }
if(f==false)//false没有改动,表示没有满足条件的结点 { cout<<\此药品不存在 ,无须删除 \\n\ }
}//Removebynumber
void Removebyname () //按名称删除某个结点 { char t[20]; bool f=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; delete temp;cout<<\已删除此药品\\n\ //break;此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继
7
续删除 } else{ current=current->next; } }
if(f==false) {
cout<<\此药品不存在 ,无须删除 \\n\ }
}//Removebyname
void Removebyindate () //按购进时间删除某个结点 {
Date t,d; bool f=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; delete temp; cout<<\已删除此药品\\n\ } else{ current=current->next; } }
if(f==false) { cout<<\此元素不存在 ,无须删除 \\n\ }
}//Removebyindate
8
void Remove ()//删除函数 { char g='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<<\ }
} while(g!='d'); }
void Add() {
Goods * temp; current=head;
while(current->next!=NULL)//找到尾指针 {
current=current->next; }
temp=new Goods; 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;
9
cout<<\请输入有效期 (**** ** **)\
cin>>temp->xiaoqi.year>>temp->xiaoqi.month>>temp->xiaoqi.day; cout<<\请输入药品的种类:\ cin>>temp->kind;
current->next=temp;//这时current指向尾指针,将要插入的结点接到current后面 current=temp; }//add
void Modify (){//通过药品名找到要修改的数据项 char n[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; }
void operation () {
char g='Y'; do{
cout<<\cout.fill('*'); cout.width(21); cout<<'*';
cout<<\医院药房管理系统\cout.fill('*'); cout.width(19); cout<<'*'; cout<<\
cout<<\ cout<<\ MWDICINE STORE MANAGEMENT SYSTERM\\n\ cout<<\
cout<<\ && &&
10
\\n\\\n\