班费管理系统C++.docx
《班费管理系统C++.docx》由会员分享,可在线阅读,更多相关《班费管理系统C++.docx(25页珍藏版)》请在冰豆网上搜索。
班费管理系统C++
#include
#include
#include
#include
#include
//usingnamespacestd;
structdata
{
intnum;//定义编号变量
charzhichu[20];//定义支出类型
floathuafei;//定义花费金额
floatshouru;//定义收入金额
charname[20];//定义字符数组存放姓名变量
chardate[20];//定义字符数组存放日期变量
};
classMoney//建立班费类
{
public:
//公有成员函数
dataget_data(){returnbanfei;}
voidset_data()
{
cout<<"请输入班费信息:
"<cout<";
cin>>banfei.num;
cout<";
cin>>banfei.zhichu;
cout<";
cin>>banfei.huafei;
cout<";
cin>>banfei.shouru;
cout<";
cin>>banfei.name;
cout<";
cin>>banfei.date;
}
private:
databanfei;//私有结构体变量
};
classManage:
publicMoney//以Money为基类,建立派生类Manage
{
public:
voidin();//录入班费信息
voiddisplay();//显示班费信息
voidmodify();//修改班费信息
voidadd();//插入班费信息
voiddele();//删除班费信息
voidfind();//查找班费信息
voidorder();//对班费信息进行排序
voidclear();//清除班费信信息
voidExit();//退出程序
voidtotal();//统计班费信息
private:
databanfei;
};
voidManage:
:
order()
{
cout<<"排序错误!
"<}
/*voidorder_menu()
{
cout<<"========================="<cout<<"*排序方式*"<cout<<"*.按编号排序:
"<cout<<"========================="<}
voidManage:
:
order()//对班费信息进行排序
{
datadat[50];
datadat1;
charq;
cout<<"是否确定进行班费信息排序(Y/N)?
:
";
cin>>q;
while(q=='Y'||q=='y')
{
order_menu();
ifstreamin("manage.txt",ios:
:
binary);
if(!
in)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
for(inti=0;!
in.eof();i++)
in.read((char*)&dat[i],sizeof(data));
in.close();
for(intj=0;j{
for(intk=j+1;k{
if(dat[j].num{
dat1=dat[k];
dat[k]=dat[j];
dat[j]=dat1;
}
}
}
for(j=0;jplay(dat[j]);
ofstreamout("manage.txt",ios:
:
binary|ios:
:
trunc);
if(!
out)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
for(j=0;jout.write((char*)&dat[j],sizeof(dat[j]));
out.close();
cout<<"排序完毕!
"<}
*/
voidManage:
:
in()//录入班费信息
{
chars;
inti=1;
while(i)
{
cout<<"是否要输入信息(Y/N)?
"<cin>>s;
if(s=='Y'||s=='y')
{
set_data();
ofstreamout("manage.txt",ios:
:
binary|ios:
:
app);//二进制文件打开并写入磁盘
if(!
out)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
out.write((char*)&(get_data()),sizeof(get_data()));//把整个结构体信息写入磁盘
out.close();////关闭文件
}
else
{
i=0;
}
}
}
voidplay(dataout)//输出到屏幕
{
cout<cout<:
right)<}
voidManage:
:
display()//显示班费信息
{
dataout[50];
ifstreamin("manage.txt",ios:
:
binary);
if(!
in)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
for(inti=0;!
in.eof();i++)
in.read((char*)&(out[i]),sizeof(data));
in.close();
cout<cout<:
right)<for(intj=0;jplay(out[j]);
cout<}
voidManage:
:
modify()//修改班费信息
{
intj,c,d;
intnum;
charday[12];
ints;
charx;
datadat[50];//定义结构体数组,用于存放从磁盘读出来的结构体信息
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<cout<<"^*1.按编号查找修改^"<cout<<"^^"<cout<<"^*2.按日期查找修改^"<cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<cout<<"是否要修改?
(Y/N)?
:
";
cin>>x;
while(x=='y'||x=='Y')
{
cout<<"请输出修改方式(1/2):
"<cin>>s;
if(s==1)
{
cout<<"请输入编号:
";
cin>>num;
cout<<""<cout<}
if(s==2)
{
cout<<"请输入日期:
";
cin>>day;
cout<<""<cout<}
if(s!
=1&&s!
=2)
{
cout<<"输入错误,请正确输入!
"<break;
}
ifstreamin("manage.txt",ios:
:
binary);
if(!
in)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
for(c=0;!
in.eof();c++)
in.read((char*)&dat[c],sizeof(data));
for(j=0;j{
if((num==dat[j].num)||!
(strcmp(day,dat[j].date)))
{
cout<:
right)<play(dat[j]);
cout<break;
}
}
if(j==c-1)
{
cout<<"文件中无此信息!
"<"<break;
}
in.close();
ofstreamout("manage.txt",ios:
:
binary|ios:
:
trunc);
if(!
out)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
for(d=0;d{
if(d==j)
{
set_data();
out.write((char*)&(get_data()),sizeof(get_data()));
}
else
out.write((char*)&dat[d],sizeof(data));
}
cout<<"修改成功!
"<cout<<"是否继续修改(Y/N)?
:
"<cin>>x;
out.close();
}
}
voidManage:
:
add()//插入班费信息
{
ints;
datadata1[20];
datadat;
ifstreamin("manage.txt",ios:
:
binary);
if(!
in)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
charb;
cout<<"是否要插入(y/n)?
"<cin>>b;
while(b=='y'||b=='Y')
{
for(inti=0;!
in.eof();i++)
in.read((char*)&data1[i],sizeof(data));
in.close();
intp=1,s1;
while(p)
{
cout<<"请输入要插入的位置:
"<cin>>s1;
if(s1>=0&&s1<=i)
{
for(s=i-1;s>=s1;s--)//向后移一个结构体位置
data1[s+1]=data1[s];
p=0;
}
else
cout<<"输入错误"<}
cout<<"请输入插入的班费信息"<cout<<"班费编号:
";
cin>>dat.num;
cout<<"班费名称:
";
cin>>dat.zhichu;
cout<<"花费金额:
";
cin>>dat.huafei;
cout<<"收入金额:
";
cin>>dat.shouru;
cout<<"经手人姓名:
";
cin>>dat.name;
cout<<"收支日期:
";
cin>>dat.date;
data1[s1]=dat;
ofstreamout("manage.txt",ios:
:
binary);
if(!
out)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
cout<cout<:
right)<for(intj=0;j
{
out.write((char*)&data1[j],sizeof(data));
play(data1[j]);
}
cout<out.close();
cout<<"插入完毕"<cout<<"是否继续插入班费信息(y/n)?
"<cin>>b;
}
}
voidfind_menu()//查找菜单函数
{
cout<<""<cout<<"查找班费信息"<cout<<"1.按编号查找班费信息"<cout<<"2.按日期查找班费信息"<cout<<""<}
voidManage:
:
find()//查找班费信息
{
datadata1[20];//定义结构体数组data1[20]
charday[12];//定义字符数组,存放日期
intn;
intnum;
charh;
cout<<"是否确定查找(y/n)?
:
";cin>>h;
cout<<""<while(h=='Y'||h=='y')
{
while(n)
{
find_menu();//调用查找信息菜单
cout<<"请输入查找方式:
"<cin>>n;
if(n==1)//按编号查找班费信息
{
cout<<"请输入查找的班费信息编号:
";
cin>>num;
ifstreamin("manage.txt",ios:
:
binary);
if(!
in)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
cout<cout<:
right)<for(inti=0;!
in.eof();i++)//从磁盘上读信息,直到结束
in.read((char*)&data1[i],sizeof(data));
in.close();
for(ints1=0;s1if(num==data1[s1].num)
{
play(data1[s1]);
cout<continue;
}
system("pause");//调用系统函数
}
elseif(n==2)//按日期查找班费信息
{
cout<<"请输入查找班费信息的日期:
";
cin>>day;
ifstreamin("manage.txt",ios:
:
binary);
if(!
in)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
cout<cout<:
right)<for(inti=0;!
in.eof();i++)//从磁盘上读信息,直到结束
in.read((char*)&data1[i],sizeof(data));
in.close();
for(intj=0;jif(!
strcmp(day,data1[j].date))
{
play(data1[j]);
cout<continue;
}
cout<<"";
system("pause");
}
if(n!
=1||n!
=2)break;
}
cout<<"查找完毕!
"<cout<<"是否继续查找班费信息(Y/N)?
:
";
cin>>h;
}
}
voidManage:
:
total()//统计班费信息
{
floata=0;
ifstreamin("manage.txt",ios:
:
binary);
if(!
in)
{
cerr<<"数据文件打开失败!
"<exit
(1);
}
datadata1;
intd;
in.seekg(0,ios:
:
end);
d=in.tellg();
ints=sizeof(data);
in.seekg(0,ios:
:
beg);
cout<cout<:
right)<for(inti=0;i{
in.read((char*)&data1,sizeof(data));
a=a+data1.shouru-data1.huafei;
play(data1);
}
in.close();
cout<cout<<""<cout<<"统计后余额为:
"<"<}
voidManage:
:
clear()
{
chars;
cout<<"你确定清空(Y/N)?
"<cin>>s;
if(s=='Y'||s=='y')
{
ifstreamin("manage.txt",ios:
:
binary|ios:
:
trunc);
if(!
in)
{
cerr<<"数据文件打开失败!
!
"<exit
(1);
}
in.close();
cout<<"清空完毕!
"<}
}
voiddele_menu()//删除菜单函数
{
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<cout<<"^*1.按编号查找删除^"<cout<<"^^"<