源程序:
# include <fstream.h> //包含文件读写
# include <iostream.h>
# include <string.h> //包含strcmp()字符是否相等
#include <stdlib.h> //包含system("cls")清屏
#define MAX 60 //下列字符数组的大小
struct Date{//日期
char year[MAX];//年
char month[MAX];//月
char day[MAX];//日
};
struct Goods{//药品信息
char name[MAX];//药品名称
char price[MAX];//药品价格
char number[MAX];//药品数量chillout
char cost[MAX];//药品总价
char kind[MAX];//药品的种类
Date indate;//入库日期
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;
current=head;
do {
Goods * temp=new Goods ;//构建新结点信息
length++; //每加一个结点 链表长度增1
temp->next=NULL;
cout<<" 请输入药品名称: ";
cin>>temp->name; chandler
cout<<" 请输入单价 : ";
cin>>temp->price;
cout<<" 请输入药品数量: ";
cin>>temp->number;
cout<<" 请输入总费用 : ";
cin>>temp->cost;
cout<<" 请输入日期 (**** ** **) : ";
cin>>temp-&ar>>temp-&h>>temp->indate.day;
cout<<" 请输入药品有效期 (**** ** **):";
cin>>temp-&ar>>temp-&h>>temp->xiaoqi.day;
cout<<" 请输入药品种类: ";
cin>>temp->kind;
if(head==NULL){head=temp;current=temp;} //head头指针,current尾指针
el {current->next=temp,current=temp;}
do{
cout<<" next ? (Y N) "; //是否继续存入新产品为难英文
cin>>g;
if(g!='Y'&&g!='N')
{
cout<<"\n error \n ";
}
}while(g!='Y'&&g!='N');
}while(g=='Y');//判断是否继续插入新结点
}
void Open ()//打开一个数据文件,并建立链表关联 和文件中的记录对应
{
char fname[20];//文件名称
qiy cout<<" input the name of the file \n";
cin>>fname; //输入要打开的文件名
ifstream infile (fname);//创建输入文件流
infile>>length;
cout<<"\n length is: "<<length<<endl;
//if(length==0)cout<<" 数据为空\n";
for(int i=0;i<length;i++)//创建新的结点保存文件的数据
{
Goods * t=new Goods ;
t->next=NULL;
infile>>t->name>>t->price>>t->number>>t->cost>>t->kind>>
t-&ar>>t-&h>>t->indate.day;
if(head==NULL){head=t;current=t;}//跟上面的链表创建相似
el {current->next=t,current=t;}
}
infile.clo();//关闭文件流
}//open
void Save ()//保存链表信息到文件
{
if(length==0)
{
cout<<" 列表为空 不需存盘 \n";
return ;
}
char fname[20];//文件名称
cout<<" input the name of the file you want to put data in \n";
cin>>fname;
ofstream outfile(fname);//创建输出文件流
Goods * temp=head->next;
outfile<<length<<endl;//先写入文件的长度
while (temp!=NULL)//把所有结点写入到文件fname
{
outfile<<temp->name<<" "<<temp->price<<" "<<temp->number<<" "<<temp->cost<<" "<<temp->kind
cumtube << " "<<temp-&ar<<" "<<temp-&h<<" "<<temp->indate.day<<" "<<temp-&ar<<" "<<temp-&h<<" "<<temp->xiaoqi.day<<endl; //写入每个结点信息
temp=temp->next;
}
outfile.clo();//关闭文件流
}
void printinfor( Goods * current)//输出一个结点的信息到字符界面
{
if(current==NULL)
{
cout<<"\n元素为空 \n ";
return;
}
cout.fill(' ');
cout<<current->name;
cout.width(8);
cout.width(8);
cout<<current->price;
塔塔粉是什么 cout.width(8);
cout<<current->number;
cout.width(8);
cout<<current->cost; //就是给current->cost10个字符输出,不够往前面加‘ ’空格
cout.width(10);
cout<<current->kind;
cout.width(10);
cout<< current-&ar<<"."<<current-&h<<"."<<current->indate.day;
cout.width(10);
cout<<current-&ar<<"."<<current-&h<<"."<<current->xiaoqi.day;
cout<<endl;
}// printinfor
void Show()//输出所有结点信息到字符界面
{
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);
48yr old japaneppcout<<"总费用";
ikumicout.width(10);
cout<<"药品的种类";
cout.width(15);
cout<<"购进时间";
cout.width(15);
cout<<"有效期";
cout<<endl; //输出属性列
while(current!=NULL)
{ //循环输出所有结点
printinfor( current );
current=current->next;
}
}//show
Goods *Searchindate(Date t){ //按购入日期搜索 返回结点指针temp
//结构体t含有t.h t.day三个信息块
Date d;
bool f=fal;
Goods * temp;