《源程序(医院药房药品管理系统C++)》由会员分享,可在线阅读,更多相关《源程序(医院药房药品管理系统C++)(12页珍藏版)》请在金锄头文库上搜索。
1、.源程序:# include /包含文件读写# include # include /包含strcmp()字符是否相等#include /包含system(cls)清屏#define MAX 60 /下列字符数组的大小struct Date/日期 char yearMAX;/年 char monthMAX;/月 char dayMAX;/日;struct Goods/药品信息 char nameMAX;/药品名称 char priceMAX;/药品价格 char numberMAX;/药品数量 char costMAX;/药品总价 char kindMAX;/药品的种类 Date indate
2、;/入库日期 Date xiaoqi;/到期时间 Goods * next;/下一个结点 ;class Cangkuguanli /类定义与实现private: int length;/客户数量 Goods * head;/列表的头结点 Goods * current;/当前结点public: Cangkuguanli()/构造函数 head=new Goods;/创建头结点 current=head; current-next=NULL; length=0;/长度为0 void Creatlist()/创建新的列表 char g=Y; int s=0; length=0;/初始长度为0;cu
3、rrent=head;do Goods * temp=new Goods ;/构建新结点信息 length+; /每加一个结点 链表长度增1 temp-next=NULL; couttemp-name; couttemp-price; couttemp-number; couttemp-cost; couttemp-indate.yeartemp-indate.monthtemp-indate.day; couttemp-xiaoqi.yeartemp-xiaoqi.monthtemp-xiaoqi.day; couttemp-kind;if(head=NULL)head=temp;curre
4、nt=temp; /head头指针,current尾指针 else current-next=temp,current=temp; do coutg; if(g!=Y&g!=N) coutn error !n ; while(g!=Y&g!=N); while(g=Y);/判断是否继续插入新结点 void Open ()/打开一个数据文件,并建立链表关联 和文件中的记录对应 char fname20;/文件名称 coutfname; /输入要打开的文件名ifstream infile (fname);/创建输入文件流 infilelength;coutn length is: lengthen
5、dl;/if(length=0)cout 数据为空n; for(int i=0;inext=NULL;infilet-namet-pricet-numbert-costt-kind t-indate.yeart-indate.montht-indate.day; if(head=NULL)head=t;current=t;/跟上面的链表创建相似else current-next=t,current=t;in();/关闭文件流/open void Save ()/保存链表信息到文件 if(length=0) cout 列表为空 不需存盘 n; return ; char fname20;/文件名
6、称 coutfname; ofstream out);/创建输出文件流 Goods * temp=head-next; outfilelengthendl;/先写入文件的长度 while (temp!=NULL)/把所有结点写入到文件fname outfilename price number cost kind indate.year indate.month indate.day xiaoqi.year xiaoqi.month xiaoqi.daynext; out();/关闭文件流 void printinfor( Goods * current)/输出一个结点的信息到字符界面 if(
7、current=NULL) coutn元素为空! n ; return; cout.fill( );coutname;cout.width(8); cout.width(8);coutprice;cout.width(8); coutnumber;cout.width(8);coutcost; /就是给current-cost10个字符输出,不够往前面加 空格 cout.width(10);coutkind; cout.width(10); coutindate.year.indate.month.indate.day; cout.width(10); coutxiaoqi.year.xiao
8、qi.month.xiaoqi.day; coutnext;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有效期;coutnext; /showGoods *Searchindate(Date t) /按购入日期搜索 返回结点指针temp/结构体t含有t.year t.month t.day三个信息块Date d;bool f=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) coutn 没有满足要求的信息