资源描述
#include〈iostream〉
#include〈fstream> //输入输出文件流类
#include〈string〉
using namespace std;
class person //人类
{
public:
person() {}
~person() {} //析构函数,释放资源
protected:
string name;
char sex;
int age;
double office_vist_fee; //诊费
};
class doctor:public person //医生类
{
private:
char speicialty[15]; //专业说明
public:
doctor() {}
void input() //增加医生信息
{
char t;
cout〈<"*****主治医生基本信息*****"<〈endl;
//fstream outfile() 打开文件aa.txt,并建立链接,aa.txt是一个输出文件,接收从内存输出数据
//ios::out 以输出的方式打开文件
//ios::app 以输出的方式打开文件,写入的数据添加在文件末尾
fstream outfile("D:\\aa。txt”,ios::out|ios::app);
if(!outfile)
cout<<”打开文件失败!"〈<endl;
else
{
cout〈〈”姓名”;
cin〉〉name;
outfile<<name<<” ";
cout<〈”性别:";
cin〉>sex;
if(sex=='m'||sex=='M')
outfile<〈"男"<〈” ";
else if(sex==’f’||sex==’F')
outfile〈<”女”<<” ";
else
{
cout<<"请重新输入性别:”;
cin〉>sex;
if(sex==’m’||sex=='M’)
outfile〈<”男”<〈” ”;
else if(sex=='f’||sex==’F')
outfile〈<"女”<<" ";
}
cout〈<”年龄:”;
cin>〉age;
outfile<<age<<" ";
cout<<"诊费:”;
cin〉〉office_vist_fee; //向磁盘文件aa。txt输入数据
outfile〈<office_vist_fee<〈" ";
cout<<"专业说明:";
cin〉〉speicialty;
outfile<〈speicialty〈<endl;
outfile。close(); //关闭文件
}
cout<<”是否继续添加医生信息 Y/N。。。。。。:"<〈endl;
cin〉〉t;
if(t==’y’)
input(); //返回继续添加
else
return ;
}
void zhangdanKind() //按姓名查询医生信息
{
char t;
//定义输入输出文件流,以输入的方式打开磁盘文件aa.txt
fstream infile2(”D:\\aa.txt",ios::in); //以读方式打开文件
if(!infile2)
{
cout<<”打开文件失败!"<〈endl;
return;
}
int line=0;
string arr[100][100]; //定义一个string类型的二维数组,用来保存文本内读取的信息
//char型初始化函数
memset(arr,0,sizeof(arr)); //将数组清空
//eof()函数到文件结尾可以返回true,而之前返回的均为false,while(true)-〉while(false),循环结束
while(!infile2。eof()) //文件不为空的条件设置
{
infile2>>arr[line][0]〉>arr[line][1]>>arr[line][2]〉>arr[line][3]〉>arr[line][4];
line++;
}
string na;
cout〈〈”请输入要查询的医生姓名:”;
cin>〉na;
for(int i=0;i〈line;i++)
{
if(arr[i][0]==na)
{
cout<〈"医生姓名:”〈〈arr[i][0]〈〈" ”〈〈"性别:"〈〈arr[i][1]〈<” ”<<"年龄:”<〈arr[i][2]〈〈" "<<"诊费:”<<arr[i][3]<<”元"〈<" "〈<”专业:”〈<arr[i][4]<〈endl;
return;
}
}
cout〈〈"记录中没有此医生信息!”<<endl;
cout〈<”是否继续查询 Y/N。.。.。:"<〈endl;
cin〉>t;
if(t=='y')
zhangdanKind();
else
return;
}
~doctor() {}
};
class HuanZhe:public person //患者类
{
private:
double drug_fee; //药费
public:
HuanZhe() {}
void input() //增加患者信息
{
char t;
cout〈<”*****患者基本信息*****”〈〈endl;
fstream outfile(”D:\\ee.txt”,ios::out|ios::app); //以写方式打开文件
if(!outfile)
cout〈<"打开文件失败!"〈<endl;
else
{
cout〈<”姓名";
cin〉〉name;
outfile〈<name<〈” ";
cout<〈"性别:”;
cin〉〉sex;
if(sex==’m’||sex==’M’)
outfile〈〈”男”〈〈" ";
else if(sex==’f'||sex=='F')
outfile〈〈"女"<<" ";
else
{
cout<〈"请重新输入性别:";
cin>>sex;
if(sex==’m'||sex==’M')
outfile<<”男”<〈" ";
else if(sex==’f'||sex==’F')
outfile<<”女”〈〈” ";
}
cout<<"年龄:”;
cin>〉age;
outfile〈〈age<<" ";
cout<〈”诊费:";
cin〉〉office_vist_fee;
outfile<〈office_vist_fee<<" ";
cout〈<"药费:";
cin>〉drug_fee;
outfile<〈drug_fee〈〈endl;
outfile。close();
}
cout〈<"是否继续添加患者信息 Y/N.。..。。:"〈<endl;
cin>>t;
if(t==’y’)
input();
else
return ;
}
void zhangdanKind() //按姓名查询患者信息
{
char t;
fstream infile2(”D:\\ee。txt",ios::in); //以读方式打开文件
if(!infile2)
{
cout〈〈"打开文件失败!"<<endl;
return;
}
string arr[100][100];
int line=0;
memset(arr,0,sizeof(arr)); //将数组清空
while(!infile2.eof()) //文件不为空的条件设置
{ //文件流读取数据
infile2>〉arr[line][0]〉〉arr[line][1]〉>arr[line][2]〉>arr[line][3]>>arr[line][4];//文件流读取数据
line++;
}
string na;
cout〈<"请输入要查询的患者姓名:";
cin>〉na;
for(int i=0;i〈line;i++)
{
if(arr[i][0]==na)
{
cout〈〈"患者姓名:"〈〈arr[i][0]〈<” "〈<"性别:”<〈arr[i][1]<〈" "〈〈”年龄:"〈〈arr[i][2]<〈” "<〈"诊费:”<<arr[i][3]<〈"元"〈<” "〈<"药费:"〈〈arr[i][4]<〈"元"<〈endl;
return;
}
}
cout〈<"记录中没有此患者信息!”〈〈endl;
cout〈<”是否继续查询 Y/N....。:”<<endl;
cin〉〉t;
if(t==’y’)
zhangdanKind();
else
return;
}
~HuanZhe() {}
};
class zhangdan //账单类
{
private:
string name;
double drug_fee;
double office_vist_fee;
double totl_fee;
public:
zhangdan() {}
void totl_pay() //用于把总费用从“D;\\bb.txt”文件转移到"D:\\cc.txt”
{
string a;
fstream infile1(”D:\\bb。txt”,ios::in); //以读方式打开文件
if(!infile1)
{
cout<<"打开文件失败!”<〈endl;
return;
}
string arr[100][100];
int line=0;
memset(arr,0,sizeof(arr)); //将数组清空
while(!infile1.eof()) //文件不为空的条件设置
{
infile1>〉arr[line][0]〉>arr[line][1]〉〉arr[line][2]〉〉arr[line][3]>>arr[line][4];//文件流读取数据
line++;
}
for(int i=0;i<line;i++)
{
fstream outfile4("D:\\cc.txt”,ios::out|ios::app); //以写的方式打开文件
if(! outfile4)
cout<〈”打开文件失败!"<〈endl;
else
a=arr[i][4];
outfile4<<a〈〈endl;
outfile4。close();
}
infile1。close();
}
void pay() //实现统计所有患者总费用
{
double a;
double z=0.0;
fstream infile4("D:\\cc。txt”,ios::in); //以读方式打开文件
if(! infile4)
{
cout〈<”打开文件失败!"<<endl;
return;
}
double s[100];
int line=0;
while(!infile4.eof()) //文件不为空的条件设置
{
infile4〉〉s[line]; //文件流读取数据
line++;
}
for(int i=0;i〈line—1;i++)
{
a=s[i];
z=z+a;
}
cout〈〈”所有患者的总费用为:"〈〈z<<”元”〈〈endl;
infile4。close();
}
void addzhangdan() //增加账单信息
{
fstream outfile3(”D:\\bb。txt",ios::out|ios::app); //以写方式打开文件
if(!outfile3)
cout〈〈”打开文件失败!”<〈endl;
else
{
cout<<"患者姓名:";
cin>>name;
outfile3<〈name<<" ”;
cout〈〈"主治医生:";
cin〉>name;
outfile3〈<name〈〈" ”;
cout〈〈"诊费:";
cin〉〉office_vist_fee;
outfile3<〈office_vist_fee〈<" ";
cout〈〈”药费:”;
cin〉〉drug_fee;
outfile3〈<drug_fee<〈” ”;
cout<〈”总费用:";
cin〉>totl_fee;
outfile3〈<totl_fee〈〈endl;
outfile3。close();
}
char t;
cout<〈”是否继续添加账单信息 Y/N...。.:”<〈endl;
cin〉〉t;
if(t=='y')
addzhangdan();
else
return;
}
void zhangdanKind() //按姓名查询账单信息
{
char t;
fstream infile1(”D:\\bb.txt”,ios::in); //以读方式打开文件
if(!infile1)
{
cout〈〈"打开文件失败!"<〈endl;
return;
}
string arr[100][100]; //定义一个string类型的二维数组,用来保存从文本内读取信息
int line=0;
memset(arr,0,sizeof(arr)); //将数组清空
while(!infile1.eof()) //文件不为空的条件设置
{
infile1〉〉arr[line][0]〉>arr[line][1]>〉arr[line][2]>〉arr[line][3]〉〉arr[line][4];//文件流读取数据
line++;
}
string na;
cout<〈”请输入要查询的患者姓名:”;
cin〉〉na;
for(int i=0;i〈line;i++)
{
if(arr[i][0]==na)
{
string xm;
xm=arr[i][1];
cout<<"患者姓名:"<<arr[i][0]<<" "〈<”医生姓名:"<〈arr[i][1]〈〈” ”〈<”诊费:"〈〈arr[i][2]〈〈"元”<〈" ”〈〈"药费:”〈<arr[i][3]<〈"元"〈〈" ”<〈”总费用:”〈<arr[i][4]〈〈"元"〈〈endl;
fstream infile2(”D:\\aa.txt”,ios::in); //以读方式打开文件
if(!infile2)
{
cout〈<”打开文件失败!"<〈endl;
return;
}
int l=0;
memset(arr,0,sizeof(arr)); //将数组清空
while(!infile2。eof()) //文件不为空的条件设置
{
infile2〉>arr[l][0]〉〉arr[l][1]〉〉arr[l][2]〉>arr[l][3]〉〉arr[l][4];//文件流读取数据
l++;
}
for(int j=0;j〈1;j++)
{
if(arr[j][0]==xm)
{
cout<<"医生姓名:"<〈arr[i][0]<〈" ”<<”性别:”<〈arr[i][1]〈<” ”〈<"年龄:”〈<arr[i][2]<<” ”<〈"诊费:”〈<arr[i][3]〈<"元”〈〈” ”〈<”专业:”〈〈arr[i][4]<〈endl;
}
}
fstream infile3("D:\\ee.txt”,ios::in); //以读方式打开文件
if(!infile3)
{
cout<<"打开文件失败!"〈〈endl;
return;
}
int lin=0;
memset(arr,0,sizeof(arr)); //将数组清空
while(!infile3。eof()) //文件不为空的条件设置
{
infile3>〉arr[lin][0]〉>arr[lin][1]>〉arr[lin][2]〉〉arr[lin][3]〉>arr[lin][4];//文件流读取数据
lin++;
}
for(int z=0;z<lin-1;z++)
{
if(arr[i][0]==na)
{
cout〈<”患者姓名:”<〈arr[z][0]〈<” ”<<”性别:"〈〈arr[z][1]〈<” "〈〈"年龄:”〈<arr[z][2]〈〈” "〈<"诊费:”〈<arr[z][3]<<"元”<<” ”〈<”药费:"〈<arr[z][4]〈<"元”〈〈endl;
}
}
return;
}
}
cout<〈”记录中没有此患者的账单信息!"〈<endl;
cout〈〈"是否继续查询 Y/N.。。。。.:"〈〈endl;
cin>〉t;
if(t=='y’)
zhangdanKind();
else
return;
}
~zhangdan() {}
};
void add_zhuce() //实现注册用户
{
string name,code,code1;
fstream outfile5("D:\\dd.txt",ios::out|ios::app); //以写方式打开文件
if(!outfile5)
cout〈〈”打开文件失败!”<<endl;
else
{
cout<〈”※*********※请注册用户※*********※"<〈endl;
cout<〈"请输入您的用户名:";
cin〉〉name;
fstream infile6(”D:\\dd.txt”,ios::in); //以读方式打开文件
if(!infile6)
{
cout〈〈”打开文件失败!”<〈endl;
return;
}
string a[100][2]; //定义一个string类型的二维数组,用来保存从文本内读取的信息
int line=0;
memset(a,0,sizeof(a)); //将数组清空
while(!infile6。eof()) //文件不为空的条件设置
{
infile6〉>a[line][0]>>a[line][1]; //文件流读取数据
line++;
}
for(int i=0;i<line;i++)
{
if(a[i][0]==name)
{
cout〈〈”此用户已存在!谢谢使用本系统注册用户界面!欢迎下次使用!";
exit(0);
}
}
outfile5〈<name〈<" ”;
cout〈<”请输入您的密码:”;
cin〉>code;
cout<〈"请再次输入您的密码:”;
cin>>code1;
if(code!=code1)
{
cout〈<"您两次输入的密码不一致!谢谢使用本系统注册用户界面!欢迎下次使用!"〈<endl;
exit(0);
}
else
outfile5〈<code1〈<endl;
}
cout<<”谢谢使用本系统注册用户界面!您已注册成功!”<<endl;
outfile5。close();
}
void welcome() //验证用户登陆,登陆成功显示欢迎信息
{
string name,code;
int mark=0;
fstream infile(”D:\\dd.txt",ios::in);
if(!infile)
{
cerr<〈"打开文件错误”<〈endl;
return;
}
int line=0;
string a[100][100];
memset(a,0,sizeof(a)); //将数组清空
while(!infile。eof()) //文件不为空的条件设置
{
infile>>a[line][0]>>a[line][1]; //文件流读取数据
line++;
}
cout<<”\t\t※*********※用户名※*********※:”;
cin〉〉name;
int m=1;
for(int i=0;i〈line;i++)
{
if(a[i][0]==name)
{
m=i;
mark=i;
break;
}
}
if(m==0)
{
cout〈〈"\t\t※*********※该用户不存在,请注册用户※*********※:";
add_zhuce();
}
cout〈<”\t\t※*********※密码※*********※:”;
cin〉〉code;
for(int j=0;j<2;j++)
{
if(a[mark][1]==code)
{
cout<<"成功登入※*********※”<〈endl;
break;
}
else
{
cout〈<”密码错误,请重新输入※*********※”<〈endl;
cout〈<"\t\t※*********※密码※*********※:";
cin〉〉code;
}
}
}
void addinfor() //增加信息界面实现
{
int a;
doctor d;
HuanZhe w;
cout〈<endl;
cout〈〈endl;
cout<<”\t\t ※*********增加信息界面*********※"〈〈endl;
cout<<"\n";
cout<<"\t\t ※********※********※**********※\n”;
cout〈<"\t\t ※ ※\n”;
cout<〈"\t\t ※ 1.增加医生信息 ※\n";
cout<〈"\t\t ※ 2.增加患者信息 ※\n";
cout〈〈”\t\t ※ 0。退出 ※\n";
cout〈<"\t\t ※ ※\n”;
cout〈<"\t\t ※********※********※**********※\n”;
cout<〈"请输入您选择的数字<0-2〉:";
cin>〉a;
switch(a)
{
case 1:d。input();break; //医生信息
case 2:w。input();break; //患者信息
case 0:break;
default:cout<<”输入数字错误!"〈〈endl;
}
}
void select() //查询信息界面实现
{
int b;
doctor d;
HuanZhe w;
cout〈<endl;
cout<<endl;
cout<〈"\t\t ※*********查询信息界面*********※"〈<endl;
cout〈<"\n”;
cout<〈”\t\t ※********※********※**********※\n”;
cout〈〈"\t\t ※ ※\n”;
cout〈〈"\t\t ※ 1。查询医生信息 ※\n";
cout〈〈”\t\t ※ 2.查询患者信息 ※\n";
cout〈<"\t\t ※ 0。退出 ※\n";
cout<<”\t\t ※ ※\n";
cout<〈”\t\t ※********※********※**********※\n";
cout<<”请输入您选择的数字〈0-2>:”;
cin〉>b;
switch(b)
{
case 1:d.zhangdanKind();break;
case 2:w。zhangdanKind();break;
case 0:break;
default:cout〈〈”输入数字错误!"<〈endl;
}
}
void zhangdanxinxi() //账单信息界面实现
{
int c;
zhangdan z;
cout<〈endl;
cout〈〈endl;
cout<<”\t\t ※*********账单信息*********※"〈〈endl;
cout〈<"\n”;
cout<〈"\t\t ※********※********※**********※\n";
cout〈〈"\t\t ※ ※\n”;
cout〈〈"\t\t ※ 1。增加账单信息 ※\n”;
cout〈〈”\t\t ※ 2。查询账单信息 ※\n";
cout<<”\t\t ※ 0.退出 ※\n”;
cout〈<”\t\t ※ ※\n”;
cout〈〈”\t\t ※********※********※**********※\n";
cout<<"请输入您选择的数字〈0-2>:”;
cin>〉c;
switch(c)
{
case 1:z。addzhangdan();break;
case 2:z.zhangdanKind();break;
case 0:break;
default:cout<〈”输入数字错误!”〈〈endl;
}
}
void Please() //诊所信息管理系统主界面的实现
{
welcome(); //验证用户登陆,登陆成功显示欢迎信息
int chiose;
cout<<”\n\n”;
while(1)
{
cout<<"\t\t ※**※**※欢迎使用诊所信息管理系统※**※**※"〈〈endl;
cout〈<”\n";
cout〈〈"\t\t※********※*********※*********※*********※\n";
cout〈<”\t\t※ ※\n";
cout<〈”\t\t※ ※\n”;
cout<<”\t\t※ 1.查询信息 2.账单信息 ※\n";
cout<〈”\t\t※ 3.增加信息 4.统计总费用 ※\n”;
cout〈<"\t\t※ 0。退出系统 ※\n”;
cout<〈”\t\t※ ※\n”;
cout〈〈”\t\t※ ※\n";
cout<<”\t\t※********※*********※*********※*********※\n”;
zhangdan a;
cout<<”请输入您选择的数字〈0-4>:";
cin〉>chiose;
switch(chiose)
{
case 1:select();break;
case 2:zhangdanxinxi();break;
case 3:addinfor();break;
case 4:a。totl_pay();a。pay();break;
case 0:cout〈〈”\t\t ※※※※※※※欢迎下次使用本系统※※※※※※※”〈〈endl;exit(0);
default:cout<〈"输入数字错误!"〈<endl;
}
}
}
void main() //主函数
{
int w;
cout〈<"\t\t※********※*********※*********※*********※\n”;
cout<<”\t\t※ ※\n";
cout〈〈"\t\t※ ※\n";
cout〈〈"\t\t※ 1。用户登录 ※\n”;
cout<〈”\t\t※ 2。用户注册 ※\n”;
cout<〈”\t\t※ 0。退出系统 ※\n";
cout〈<"\t\t※ ※\n”;
cout<<"\t\t※ ※\n";
cout〈<”\t\t※********※*********※*********※*********※\n";
while(1)
{
cout〈<”请输入数字<0-2〉:”;
cin〉>w;
switch(w)
{
case 1:Please();break;
case 2:add_zhuce();break;
case 0:exit(0);
default:cout〈〈”输入数字错误!”〈<endl;
}
}
}
展开阅读全文