教学设备管理c++程序.docx
《教学设备管理c++程序.docx》由会员分享,可在线阅读,更多相关《教学设备管理c++程序.docx(21页珍藏版)》请在冰豆网上搜索。
教学设备管理c++程序
#include
#include
#include
#include
usingnamespacestd;
classDate
{
private:
intyear;
intmonth;
intday;
public:
Date(inty=0,intm=0,intd=0);
Date&operator=(Date&a);
voidfoutput(ofstream&fout);
voidoutput();
voidalloutput();
};
voidDate:
:
alloutput()
{
cout<"<"<}
voidDate:
:
foutput(ofstream&fout)
{
fout<}
Date:
:
Date(inty,intm,intd)
{
year=y;
month=m;
day=d;
}
Date&Date:
:
operator=(Date&a)
{
year=a.year;
month=a.month;
day=a.day;
return*this;
}
voidDate:
:
output()
{
cout<}
classEquipment
{
private:
intnum;//设备编号
charname[20];//设备名称
charfactory[30];//生产厂家
Datedate;//购置日期
intamount;//台数
doubleprrice;//单价
charnotes[101];//备注
public:
Equipment(intnum_=0,char*name_=NULL,
intamount_=0,doubleprrice_=0);
Equipment&operator=(Equipment&a)
{
num=a.num;
strcpy(name,a.name);
strcpy(factory,a.factory);
date=a.date;
return*this;
}
voidgive(char*factory_,Datedate_,char*notes);
voidoutput();
voidalloutput();
intgetNum();
intgetAmount();
doublegetPrrice();
voidsetNum();
voidsetName();
voidsetFactory();
voidsetDate();
voidsetAmount();
voidsetPrrice();
voidsetNotes();
voidfoutput(ofstream&fout);
};
voidEquipment:
:
alloutput()
{
cout<<<date.alloutput();
cout<<'\t'<<<'\t'<<<'\t'<}
voidEquipment:
:
give(char*factory_,Datedate_,char*notes_)
{
strcpy(factory,factory_);
date=date_;
strcpy(notes,notes_);
}
Equipment:
:
Equipment(intnum_,char*name_,intamount_,doubleprrice_)
{
num=num_;
strcpy(name,name_);
amount=amount_;
prrice=prrice_;
strcpy(factory,"未设置");
strcpy(notes,"无");
}
voidEquipment:
:
output()
{
cout<<"1.设备编号:
"<cout<<"2.设备名称:
"<cout<<"3.生产厂家:
"<cout<<"4.购置日期:
";date.output();
cout<<"5.台数:
"<cout<<"6.单价:
"<cout<<"7.备注:
"<}
intEquipment:
:
getNum()
{
returnnum;
}
intEquipment:
:
getAmount()
{
returnamount;
}
doubleEquipment:
:
getPrrice()
{
returnprrice;
}
voidEquipment:
:
setNum()
{
cout<<"请输入设备编号:
";
cin>>num;
}
voidEquipment:
:
setName()
{
cout<<"请输入设备名称:
";
cin>>name;
}
voidEquipment:
:
setFactory()
{
cout<<"请输入生产厂家的名称:
";
cin>>factory;
}
voidEquipment:
:
setDate()
{
inty,m,d;
cout<<"请输入年、月、日,用空格隔开:
";
cin>>y>>m>>d;
Datea(y,m,d);
date=a;
}
voidEquipment:
:
setAmount()
{
cout<<"请输入设备台数:
";
cin>>amount;
}
voidEquipment:
:
setPrrice()
{
cout<<"请输入设备单价:
";
cin>>prrice;
}
voidEquipment:
:
setNotes()
{
cout<<"请输入备注内容:
";
cin>>notes;
}
voidEquipment:
:
foutput(ofstream&fout)
{
fout<fout<fout<date.foutput(fout);
fout<fout<fout<}
classList
{
private:
intn,capacity;
Equipment**elem;
public:
List();
~List();
booladd();//添加
boolfind();//查询
voidmodify();//修改
boolSave();//设备保存
boolRead();//读取
voidDelete();//删除设备记录
voidRecover();//恢复被删除的记录
voidStatistic();//统计
};
List:
:
List()
{
n=0;
capacity=1000;
elem=newEquipment*[capacity];
for(inti=0;i}
List:
:
~List()
{
for(inti=0;i{
delete[]elem[i];
elem[i]=NULL;
}
if(elem)delete[]elem;
elem=NULL;
}
boolList:
:
add()
{
if(n{
intnum_;
charname_[20];
intamount_;
doubleprrice_;
cout<<"请输入设备编号:
";
cin>>num_;
cout<<"请输入设备名称:
";
cin>>name_;
cout<<"请输入购置台数:
";
cin>>amount_;
cout<<"请输入设备单价:
";
cin>>prrice_;
elem[n]=newEquipment(num_,name_,amount_,prrice_);
n++;
returntrue;
}
returnfalse;
}
boolList:
:
find()
{
intnum_;
cout<<"请输入您需要查找的设备编号:
";
cin>>num_;
for(inti=0;i{
if(num_==elem[i]->getNum())
{
cout<<"查找成功!
设备信息如下:
"<elem[i]->output();
returntrue;
}
}
cout<<"查找失败!
无此设备信息。
"<returnfalse;
}
voidList:
:
modify()
{
system("cls");
if(n>0)
{
inti,num_;
boolok=false;
cout<<"现有的设备编号如下:
"<for(i=0;i{
cout<getNum()<<"";
}
cout<cout<<"请输入您需要修改的设备编号:
";
cin>>num_;
for(i=0;i{
if(elem[i]->getNum()==num_)
{
ok=true;
intchoice=1;
do
{
system("cls");
elem[i]->output();
cout<<"8.退出修改。
"<cout<<"请输入您需要修改的选项:
";
cin>>choice;
if(choice<1||choice>8)
{
cout<<"输入错误,请重新输入!
"<choice=1;
continue;
}
switch(choice)
{
case1:
elem[i]->setNum();
break;
case2:
elem[i]->setName();
break;
case3:
elem[i]->setFactory();
break;
case4:
elem[i]->setDate();
break;
case5:
elem[i]->setAmount();
break;
case6:
elem[i]->setPrrice();
break;
case7:
elem[i]->setNotes();
break;
case8:
break;
}
}while(choice!
=8);
}
}
if(!
ok)cout<<"您的输入有误!
"<}
elsecout<<"现无任何设备!
"<}
boolList:
:
Save()
{
ofstreamfout;
fout.open("save.txt");
fout.put(0);//清楚txt文档的数据
fout.seekp(-1,ios:
:
end);//在txt文档中光标退格
if(fout.fail())
{
cout<<"找不到文件,保存失败!
"<returnfalse;
}
else
{
for(inti=0;i{
elem[i]->foutput(fout);
}
}
cout<<"保存成功!
"<fout.close();
returntrue;
}
boolList:
:
Read()
{
intsize;
ifstreamfin;
fin.open("save.txt");
streampospos=fin.tellg();
fin.seekg(0,ios:
:
end);
size=fin.tellg();
fin.seekg(pos);
if(fin.fail())
{
cout<<"找不到文件,读取失败!
"<returnfalse;
}
else
{
intnum_,amount_,y,m,d;
doubleprrice_;
charname_[20],factory_[30],notes_[101];
n=0;
while(size!
=1)
{
fin>>num_;
fin>>name_;
fin>>factory_;
fin>>y>>m>>d;
if(fin.eof())break;
Datedate_(y,m,d);
fin>>amount_;
fin>>prrice_;
fin>>notes_;
elem[n]=newEquipment(num_,name_,amount_,prrice_);
elem[n]->give(factory_,date_,notes_);
n++;
}
}
cout<<"读取成功!
"<fin.close();
returntrue;
}
voidList:
:
Delete()
{
system("cls");
if(n>0)
{
inti,num_;
boolok=false;
cout<<"现有的设备编号如下:
"<for(i=0;i{
cout<getNum()<<"";
}
cout<cout<<"请选择您要删除的设备编号:
";
cin>>num_;
for(i=0;i{
if(elem[i]->getNum()==num_)
{
ok=true;
system("cls");
elem[i]->output();
cout<<"您确定要删除此设备?
(YorN)"<charstr;
do
{
cin>>str;
if(str!
='Y'&&str!
='N')
{
cout<<"输入错误,请重新输入:
";
}
}while(str!
='Y'&&str!
='N');
if(str=='Y')
{
ofstreamfout;
fout.open("recover.txt");
fout.app;
elem[i]->foutput(fout);
fout.close();
if(i==n-1)
{
delete[]elem[i];
elem[i]=NULL;
}
else
{
Equipment*tem;
tem=elem[i];
elem[i]=elem[n-1];
elem[n-1]=tem;
delete[]elem[n-1];
elem[n-1]=NULL;
}
n--;
cout<<"删除成功!
"<}
elsecout<<"删除失败!
"<}
}
if(!
ok)cout<<"您的输入有误!
"<}
elsecout<<"现无任何设备!
"<}
voidList:
:
Recover()
{
intsize;
ifstreamfin;
fin.open("recover.txt");
streampospos=fin.tellg();
fin.seekg(0,ios:
:
end);
size=fin.tellg();
fin.seekg(pos);
if(fin.fail())
{
cout<<"找不到文件,恢复失败!
"<}
else
{
intnum_,amount_,y,m,d;
doubleprrice_;
charname_[20],factory_[30],notes_[101];
while(!
fin.eof()&&size!
=1)
{
fin>>num_;
fin>>name_;
fin>>factory_;
fin>>y>>m>>d;
if(fin.eof())break;
Datedate_(y,m,d);
fin>>amount_;
fin>>prrice_;
fin>>notes_;
elem[n]=newEquipment(num_,name_,amount_,prrice_);
elem[n]->give(factory_,date_,notes_);
n++;
}
cout<<"恢复成功!
"<fin.close();
ofstreamfout;
fout.open("recover.txt");
fout.put(0);
fout.seekp(-1,ios:
:
end);
fout.close();
}
}
voidList:
:
Statistic()
{
system("cls");
inti,j,n_200=0,n200_800=0,n800_=0;
doublep_200=0,p200_800=0,p800_=0;
Equipment*tem;
for(i=0;i{
for(j=0;j{
if(elem[j]->getPrrice()>elem[j+1]->getPrrice())
{
tem=elem[j];
elem[j]=elem[j+1];
elem[j+1]=tem;
}
}
}
cout<<"编号"<<'\t'
<<"名称"<<'\t'
<<"厂家"<<'\t'
<<"日期"<<"\t\t"
<<"数量"<<'\t'
<<"单价"<<'\t'
<<"备注"<for(i=0;i{
if(elem[i]->getPrrice()<200)
{
n_200+=elem[i]->getAmount();
p_200+=elem[i]->getAmount()*elem[i]->getPrrice();
}
elseif(elem[i]->getPrrice()<=800)
{
n200_800+=elem[i]->getAmount();
p200_800+=elem[i]->getAmount()*elem[i]->getPrrice();
}
else
{
n800_+=elem[i]->getAmount();
p800_+=elem[i]->getAmount()*elem[i]->getPrrice();
}
elem[i]->alloutput();
}
cout<cout<<"单价在:
200元以下的设备总台数及总金额为:
"
<<'\t'<cout<<"单价在:
200~800元的设备总台数及总金额为:
"
<<'\t'<cout<<"单价在:
800元以上的设备总台数及总金额为:
"
<<'\t'<cout<<"累计所有设备的总台数及总金额为:
"
<<"\t\t"<}
intmain()
{
Listlist;
intn=0;
intchoice=1;
system("color1C");
do
{
cout<<"\t\t\t\t教学设备管理系统"<cout<<"\t\t================================================="<cout<<"\t\t#\t\t1.添加设备内容。
\t\t#"<cout<<"\t\t#\t\t2.查找设备内容。
\t\t#"<cout<<"\t\t#\t\t3.修改设备内容。
\t\t#"<cout<<"\t\t#\t\t4.保存设备记录。
\t\t#"<cout<<"\t\t#\t\t5.读取设备记录。
\t\t#"<cout<<"\t\t#\t\t6.删除设备内容。
\t\t#"<cout<<"\t\t#\t\t7.恢复删除记录。
\t\t#"<cout<<"\t\t#\t\t8.统计设备内容。
\t\t#"<cout<<"\t\t#\t\t9.退出管理系统。
\t\t#"<cout<<"\t\t================================================="<cout<<"请输入您的操作:
";
cin>>choice;
if(choi