#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class user//构造一个学生类
{
public:
user();//构造函数
~user();//析构函数
friend void display();//显示所有用户信息
friend void Pay();//缴费
friend void in();//友元函数
friend void add();//添加用户信息
friend void UsersDataSearch();//用户信息查询
friend void UserPaySearch();//用户水电量查询
friend void PaySearch();//用户缴费查询
friend void SearchNoPay();//未交费用户查询
friend double s(int i);//费用计算
friend void delet();//用户删除
friend void m_fee();
friend void m_user();
private:
int Flag;
int age;
string num;
string name;
string sex;
double electricity;
double water;
};
user u[15];//对象数组
user::user(){};//调用构造函数
user::~user(){};//调用析构函数
double s(int i)
{
double e,w,s;
if(u[i].electricity>0&&u[i].electricity<=180)
e=u[i].electricity*0.573;
else if(u[i].electricity>180&&u[i].electricity<=400)
e=180*0.573+(u[i].electricity-180)*0.623;
else
e=180*0.573+220*0.623+(u[i].electricity-400)*0.873;
if(u[i].water>0&&u[i].water<=25)
w=u[i].water*2.32;
else if(u[i].water>25&&u[i].water<=30)
w=25*2.32+(u[i].water-25)*3.08;
else
w=25*2.32+5*3.08+(u[i].water-30)*3.84;
s=e;
return s;
}/*计算水电费*/
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
for(i=0;i<15;i++)
{
if(u[i].water!=0)
cout<<"学号:"<<u[i].num<<" "<<"姓名:"<<u[i].name<<"年龄:"<<u[i].age<<" "<<"性别:"<<u[i].sex<<" "<<"用电量:"<<u[i].electricity<<" "<<"用水量:"<<u[i].water<<" "<<endl;
}
}/*显示用户信息*/
void UsersDataSearch()
{int i,flag=0;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"输入所查用户的编号"<<endl;
string num;
cin>>num;
for(i=0;i<15;i++)
{
if(num==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
cout<<"学号:"<<u[i].num<<" "<<"姓名:"<<u[i].name<<"年龄:"<<u[i].age<<" "<<"性别:"<<u[i].sex<<" "<<"用电量:"<<u[i].electricity<<" "<<"用水量:"<<u[i].water<<" "<<endl;
}/*用户信息查询*/
//*****************************************************************************
void UserPaySearch()
{int i,flag=0;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
string number;
cout<<"输入所查人的编号"<<endl;
cin>>number;
for(i=0;i<15;i++)
{
if(number==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
cout<<"该学生本月的用水量为:"<<u[i].water<<"该学生本月用电量为:"<<u[i].electricity;
}/*用户水电费查询*/
//*****************************************************************************
void Pay() //查询位缴费用户信息
{ int i,flag=0;
double money;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"输入需缴费用户的编号"<<endl;
string number;
cin>>number;
for(i=0;i<15;i++)
{
if(number==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
{
cout<<u[i].name<<"应缴费:"<<s(i)<<endl;
cout<<"缴费金额:"<<endl;
cin>>money;
if((money-s(i))==0)
{
u[i].Flag=1;
cout<<"缴费成功!"<<endl;
}
else if((money-s(i))<0)
{
u[i].Flag=0;
cout<<"缴费失败!"<<endl;
}
else if((money-s(i))>0)
cout<<"找零:"<<money-s(i)<<endl;
}
}/*用户缴费管理*/
//*****************************************************************************
void PaySearch()
{ int i,flag=0;
double money;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"输入所查人的编号"<<endl;
string num;
cin>>num;
for(i=0;i<15;i++)
{
if(num==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
cout<<"本月应缴费用总金额为:"<<s(i)<<endl;
}/*用户缴费查询*/
//*****************************************************************************
void SearchNoPay()
{int i;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"以下用户未缴纳费用\n"<<endl;
for(i=0;i<15;i++)
{
if(u[i].Flag==0)
cout<<u[i].name<<endl;
}
}/*未缴费用户查询*/
//**************************************************************************
void add()
{user *p1=new user[1];
cout<<"输入要增加用户的ID"<<" ";
cin>>p1[0].num;
cout<<"输入要增加用户的姓名"<<" ";
cin>>p1[0].name;
cout<<"输入要增加用户的年龄"<<" ";
cin>>p1[0].age;
cout<<"输入要增加用户的性别"<<" ";
cin>>p1[0].sex;
cout<<"输入要增加用户的用电量"<<" ";
cin>>p1[0].electricity;
cout<<"输入要增加用户的用水量"<<" ";
cin>>p1[0].water;
ofstream outfile("data.txt",ios::app|ios::out);
outfile<<p1[0].num<<" "<<p1[0].name<<" "<<p1[0].age<<" "<<p1[0].sex<<" "<<p1[0].electricity<<" "<<p1[0].water<<endl;
outfile.close();
delete []p1;
}/*添加用户*/
//*************************************************************************
void delet()
{
int i;
int flag=0,t;
user *u=new user[15];
string number;
cout<<"\t输入所删除用户的编号:";
cin>>number;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
for(i=0;i<15;i++)
if(u[i].num==number)
{flag=1;t=i;break;}
if(flag==0)
cout<<"\t该用户信息不存在或已删除";
if(flag==1)
{ofstream ma("data.txt",ios::trunc);
ma.close();
for(i=t;i<14;i++)
u[i]=u[i+1];
ofstream m("data.txt");
for(i=0;i<14;i++)
m<<u[i].num<<" "<<u[i].name<<" "<<u[i].age<<" "<<u[i].sex<<" "<<u[i].electricity<<" "<<u[i].water<<endl;
cout<<"\t删除成功";
m.close();
}
}/*删除用户*/
void m_user(){
int choice=0;
GOTO1:system("cls");
printf("\t\t\t ** **\n");
printf("\t\t\t * * * *\n");
printf("\t\t\t* * *\n");
printf("\t\t\t* 用户管理^_^ *\n");
printf("\t\t\t* *\n");
printf("\t\t\t * *\n");
printf("\t\t\t * *\n");
printf("\n\t\t\t1.输出所有用户信息\n\t\t\t2.输入用户\n\t\t\t3.查询用户信息\n\t\t\t4.删除用户信息\n\t\t\t5.查询未缴费用户名单\n\t\t\t6.退出");
printf("\n\t\t\t请输入您的选择:");
GOTO2:scanf("%d",&choice);
switch(choice)
{
case 1:
display();
system("pause");
goto GOTO1;
case 2:
add();
system("pause");
goto GOTO1;
case 3:
UsersDataSearch();
system("pause");
goto GOTO1;
case 4:
delet();
system("pause");;
goto GOTO1;
case 5:
SearchNoPay();
system("pause");;
goto GOTO1;
case 6:
break;
default:
printf("\t\t\t输入有误,请重新输入:");
goto GOTO2;
}
}/*用户管理界面*/
void m_fee(){
int i,choice=0,flag=0;
GOTO3:system("cls");
printf("\t\t\t---------------------\n");
printf("\t\t\t| 收费管理^_^ |\n");
printf("\t\t\t---------------------\n\n\n");
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
printf("\n\t\t\t1.用户水电量查询\n\t\t\t2.缴费管理\n\t\t\t3.总费用\n\t\t\t4.退出\n");
printf("\n\t\t\t请输入您的选择:");
GOTO4:scanf("%d",&choice);
switch(choice)
{
case 1:
UserPaySearch();
system("pause");
goto GOTO3;
case 2:
Pay();
system("pause");
goto GOTO3;
case 3:
PaySearch();
system("pause");
goto GOTO3;
case 4:
printf("管理完毕!\n");
break;
default:
printf("\n\t\t\t输入错误,请重新输入:");
goto GOTO4;
}
}/*费用管理界面*/
void main(){
int choice=0;
GOTO5:system("cls");
printf("\t\t\t-----------------------------------\n");
printf("\t\t\t| 欢迎进入水电费管理系统^_^ |\n");
printf("\t\t\t-----------------------------------\n\n\n");
printf("\n\t\t\t1.用户管理\n\t\t\t2.收费管理\n\t\t\t3.退出\n");
printf("\n\t\t\t请输入您的选择:");
GOTO6:scanf("%d",&choice);
switch(choice)
{case 1:
m_user();
system("pause");
goto GOTO5;
case 2:
m_fee();
system("pause");
goto GOTO5;
default:
printf("\n您的输入有误,请重新输入:");
goto GOTO6;
}
}/*水电费管理系统界面*/
#include <fstream>
#include <string>
using namespace std;
class user//构造一个学生类
{
public:
user();//构造函数
~user();//析构函数
friend void display();//显示所有用户信息
friend void Pay();//缴费
friend void in();//友元函数
friend void add();//添加用户信息
friend void UsersDataSearch();//用户信息查询
friend void UserPaySearch();//用户水电量查询
friend void PaySearch();//用户缴费查询
friend void SearchNoPay();//未交费用户查询
friend double s(int i);//费用计算
friend void delet();//用户删除
friend void m_fee();
friend void m_user();
private:
int Flag;
int age;
string num;
string name;
string sex;
double electricity;
double water;
};
user u[15];//对象数组
user::user(){};//调用构造函数
user::~user(){};//调用析构函数
double s(int i)
{
double e,w,s;
if(u[i].electricity>0&&u[i].electricity<=180)
e=u[i].electricity*0.573;
else if(u[i].electricity>180&&u[i].electricity<=400)
e=180*0.573+(u[i].electricity-180)*0.623;
else
e=180*0.573+220*0.623+(u[i].electricity-400)*0.873;
if(u[i].water>0&&u[i].water<=25)
w=u[i].water*2.32;
else if(u[i].water>25&&u[i].water<=30)
w=25*2.32+(u[i].water-25)*3.08;
else
w=25*2.32+5*3.08+(u[i].water-30)*3.84;
s=e;
return s;
}/*计算水电费*/
void display(){
int i,n=0;
ifstream f("data.txt",ios::binary);for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
for(i=0;i<15;i++)
{
if(u[i].water!=0)
cout<<"学号:"<<u[i].num<<" "<<"姓名:"<<u[i].name<<"年龄:"<<u[i].age<<" "<<"性别:"<<u[i].sex<<" "<<"用电量:"<<u[i].electricity<<" "<<"用水量:"<<u[i].water<<" "<<endl;
}
}/*显示用户信息*/
void UsersDataSearch()
{int i,flag=0;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"输入所查用户的编号"<<endl;
string num;
cin>>num;
for(i=0;i<15;i++)
{
if(num==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
cout<<"学号:"<<u[i].num<<" "<<"姓名:"<<u[i].name<<"年龄:"<<u[i].age<<" "<<"性别:"<<u[i].sex<<" "<<"用电量:"<<u[i].electricity<<" "<<"用水量:"<<u[i].water<<" "<<endl;
}/*用户信息查询*/
//*****************************************************************************
void UserPaySearch()
{int i,flag=0;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
string number;
cout<<"输入所查人的编号"<<endl;
cin>>number;
for(i=0;i<15;i++)
{
if(number==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
cout<<"该学生本月的用水量为:"<<u[i].water<<"该学生本月用电量为:"<<u[i].electricity;
}/*用户水电费查询*/
//*****************************************************************************
void Pay() //查询位缴费用户信息
{ int i,flag=0;
double money;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"输入需缴费用户的编号"<<endl;
string number;
cin>>number;
for(i=0;i<15;i++)
{
if(number==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
{
cout<<u[i].name<<"应缴费:"<<s(i)<<endl;
cout<<"缴费金额:"<<endl;
cin>>money;
if((money-s(i))==0)
{
u[i].Flag=1;
cout<<"缴费成功!"<<endl;
}
else if((money-s(i))<0)
{
u[i].Flag=0;
cout<<"缴费失败!"<<endl;
}
else if((money-s(i))>0)
cout<<"找零:"<<money-s(i)<<endl;
}
}/*用户缴费管理*/
//*****************************************************************************
void PaySearch()
{ int i,flag=0;
double money;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"输入所查人的编号"<<endl;
string num;
cin>>num;
for(i=0;i<15;i++)
{
if(num==u[i].num)
{
flag=1;break;
}
}
if(flag==0)
cout<<"查无此人"<<endl;
if(flag==1)
cout<<"本月应缴费用总金额为:"<<s(i)<<endl;
}/*用户缴费查询*/
//*****************************************************************************
void SearchNoPay()
{int i;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
f.close();
cout<<"以下用户未缴纳费用\n"<<endl;
for(i=0;i<15;i++)
{
if(u[i].Flag==0)
cout<<u[i].name<<endl;
}
}/*未缴费用户查询*/
//**************************************************************************
void add()
{user *p1=new user[1];
cout<<"输入要增加用户的ID"<<" ";
cin>>p1[0].num;
cout<<"输入要增加用户的姓名"<<" ";
cin>>p1[0].name;
cout<<"输入要增加用户的年龄"<<" ";
cin>>p1[0].age;
cout<<"输入要增加用户的性别"<<" ";
cin>>p1[0].sex;
cout<<"输入要增加用户的用电量"<<" ";
cin>>p1[0].electricity;
cout<<"输入要增加用户的用水量"<<" ";
cin>>p1[0].water;
ofstream outfile("data.txt",ios::app|ios::out);
outfile<<p1[0].num<<" "<<p1[0].name<<" "<<p1[0].age<<" "<<p1[0].sex<<" "<<p1[0].electricity<<" "<<p1[0].water<<endl;
outfile.close();
delete []p1;
}/*添加用户*/
//*************************************************************************
void delet()
{
int i;
int flag=0,t;
user *u=new user[15];
string number;
cout<<"\t输入所删除用户的编号:";
cin>>number;
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
for(i=0;i<15;i++)
if(u[i].num==number)
{flag=1;t=i;break;}
if(flag==0)
cout<<"\t该用户信息不存在或已删除";
if(flag==1)
{ofstream ma("data.txt",ios::trunc);
ma.close();
for(i=t;i<14;i++)
u[i]=u[i+1];
ofstream m("data.txt");
for(i=0;i<14;i++)
m<<u[i].num<<" "<<u[i].name<<" "<<u[i].age<<" "<<u[i].sex<<" "<<u[i].electricity<<" "<<u[i].water<<endl;
cout<<"\t删除成功";
m.close();
}
}/*删除用户*/
void m_user(){
int choice=0;
GOTO1:system("cls");
printf("\t\t\t ** **\n");
printf("\t\t\t * * * *\n");
printf("\t\t\t* * *\n");
printf("\t\t\t* 用户管理^_^ *\n");
printf("\t\t\t* *\n");
printf("\t\t\t * *\n");
printf("\t\t\t * *\n");
printf("\n\t\t\t1.输出所有用户信息\n\t\t\t2.输入用户\n\t\t\t3.查询用户信息\n\t\t\t4.删除用户信息\n\t\t\t5.查询未缴费用户名单\n\t\t\t6.退出");
printf("\n\t\t\t请输入您的选择:");
GOTO2:scanf("%d",&choice);
switch(choice)
{
case 1:
display();
system("pause");
goto GOTO1;
case 2:
add();
system("pause");
goto GOTO1;
case 3:
UsersDataSearch();
system("pause");
goto GOTO1;
case 4:
delet();
system("pause");;
goto GOTO1;
case 5:
SearchNoPay();
system("pause");;
goto GOTO1;
case 6:
break;
default:
printf("\t\t\t输入有误,请重新输入:");
goto GOTO2;
}
}/*用户管理界面*/
void m_fee(){
int i,choice=0,flag=0;
GOTO3:system("cls");
printf("\t\t\t---------------------\n");
printf("\t\t\t| 收费管理^_^ |\n");
printf("\t\t\t---------------------\n\n\n");
ifstream f("data.txt",ios::binary);
for(i=0;i<15;i++)
f>>u[i].num>>u[i].name>>u[i].age>>u[i].sex>>u[i].electricity>>u[i].water;
printf("\n\t\t\t1.用户水电量查询\n\t\t\t2.缴费管理\n\t\t\t3.总费用\n\t\t\t4.退出\n");
printf("\n\t\t\t请输入您的选择:");
GOTO4:scanf("%d",&choice);
switch(choice)
{
case 1:
UserPaySearch();
system("pause");
goto GOTO3;
case 2:
Pay();
system("pause");
goto GOTO3;
case 3:
PaySearch();
system("pause");
goto GOTO3;
case 4:
printf("管理完毕!\n");
break;
default:
printf("\n\t\t\t输入错误,请重新输入:");
goto GOTO4;
}
}/*费用管理界面*/
void main(){
int choice=0;
GOTO5:system("cls");
printf("\t\t\t-----------------------------------\n");
printf("\t\t\t| 欢迎进入水电费管理系统^_^ |\n");
printf("\t\t\t-----------------------------------\n\n\n");
printf("\n\t\t\t1.用户管理\n\t\t\t2.收费管理\n\t\t\t3.退出\n");
printf("\n\t\t\t请输入您的选择:");
GOTO6:scanf("%d",&choice);
switch(choice)
{case 1:
m_user();
system("pause");
goto GOTO5;
case 2:
m_fee();
system("pause");
goto GOTO5;
default:
printf("\n您的输入有误,请重新输入:");
goto GOTO6;
}
}/*水电费管理系统界面*/