诊所信息管理系统设计.docx
《诊所信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《诊所信息管理系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
![诊所信息管理系统设计.docx](https://file1.bdocx.com/fileroot1/2022-11/25/1559b0f0-4260-432c-9654-577d72774be0/1559b0f0-4260-432c-9654-577d72774be01.gif)
诊所信息管理系统设计
#include
#include//输入输出文件流类
#include
usingnamespacestd;
classperson//人类
{
public:
person(){}
~person(){}//析构函数,释放资源
protected:
stringname;
charsex;
intage;
doubleoffice_vist_fee;//诊费
};
classdoctor:
publicperson//医生类
{
private:
charspeicialty[15];//专业说明
public:
doctor(){}
voidinput()//增加医生信息
{
chart;
cout<<"*****主治医生基本信息*****"<//fstreamoutfile()打开文件aa.txt,并建立链接,aa.txt是一个输出文件,接收从内存输出数据
//ios:
:
out以输出的方式打开文件
//ios:
:
app以输出的方式打开文件,写入的数据添加在文件末尾
fstreamoutfile("D:
\\aa.txt",ios:
:
out|ios:
:
app);
if(!
outfile)
cout<<"打开文件失败!
"<else
{
cout<<"姓名";
cin>>name;
outfile<cout<<"性别:
";
cin>>sex;
if(sex=='m'||sex=='M')
outfile<<"男"<<"";
elseif(sex=='f'||sex=='F')
outfile<<"女"<<"";
else
{
cout<<"请重新输入性别:
";
cin>>sex;
if(sex=='m'||sex=='M')
outfile<<"男"<<"";
elseif(sex=='f'||sex=='F')
outfile<<"女"<<"";
}
cout<<"年龄:
";
cin>>age;
outfile<cout<<"诊费:
";
cin>>office_vist_fee;//向磁盘文件aa.txt输入数据
outfile<cout<<"专业说明:
";
cin>>speicialty;
outfile<outfile.close();//关闭文件
}
cout<<"是否继续添加医生信息Y/N......:
"<cin>>t;
if(t=='y')
input();//返回继续添加
else
return;
}
voidzhangdanKind()//按姓名查询医生信息
{
chart;
//定义输入输出文件流,以输入的方式打开磁盘文件aa.txt
fstreaminfile2("D:
\\aa.txt",ios:
:
in);//以读方式打开文件
if(!
infile2)
{
cout<<"打开文件失败!
"<return;
}
intline=0;
stringarr[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++;
}
stringna;
cout<<"请输入要查询的医生姓名:
";
cin>>na;
for(inti=0;i{
if(arr[i][0]==na)
{
cout<<"医生姓名:
"<"<"<"<"<return;
}
}
cout<<"记录中没有此医生信息!
"<cout<<"是否继续查询Y/N.....:
"<cin>>t;
if(t=='y')
zhangdanKind();
else
return;
}
~doctor(){}
};
classHuanZhe:
publicperson//患者类
{
private:
doubledrug_fee;//药费
public:
HuanZhe(){}
voidinput()//增加患者信息
{
chart;
cout<<"*****患者基本信息*****"<fstreamoutfile("D:
\\ee.txt",ios:
:
out|ios:
:
app);//以写方式打开文件
if(!
outfile)
cout<<"打开文件失败!
"<else
{
cout<<"姓名";
cin>>name;
outfile<cout<<"性别:
";
cin>>sex;
if(sex=='m'||sex=='M')
outfile<<"男"<<"";
elseif(sex=='f'||sex=='F')
outfile<<"女"<<"";
else
{
cout<<"请重新输入性别:
";
cin>>sex;
if(sex=='m'||sex=='M')
outfile<<"男"<<"";
elseif(sex=='f'||sex=='F')
outfile<<"女"<<"";
}
cout<<"年龄:
";
cin>>age;
outfile<cout<<"诊费:
";
cin>>office_vist_fee;
outfile<cout<<"药费:
";
cin>>drug_fee;
outfile<outfile.close();
}
cout<<"是否继续添加患者信息Y/N......:
"<cin>>t;
if(t=='y')
input();
else
return;
}
voidzhangdanKind()//按姓名查询患者信息
{
chart;
fstreaminfile2("D:
\\ee.txt",ios:
:
in);//以读方式打开文件
if(!
infile2)
{
cout<<"打开文件失败!
"<return;
}
stringarr[100][100];
intline=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++;
}
stringna;
cout<<"请输入要查询的患者姓名:
";
cin>>na;
for(inti=0;i{
if(arr[i][0]==na)
{
cout<<"患者姓名:
"<"<"<"<"<return;
}
}
cout<<"记录中没有此患者信息!
"<cout<<"是否继续查询Y/N.....:
"<cin>>t;
if(t=='y')
zhangdanKind();
else
return;
}
~HuanZhe(){}
};
classzhangdan//账单类
{
private:
stringname;
doubledrug_fee;
doubleoffice_vist_fee;
doubletotl_fee;
public:
zhangdan(){}
voidtotl_pay()//用于把总费用从“D;\\bb.txt”文件转移到"D:
\\cc.txt"
{
stringa;
fstreaminfile1("D:
\\bb.txt",ios:
:
in);//以读方式打开文件
if(!
infile1)
{
cout<<"打开文件失败!
"<return;
}
stringarr[100][100];
intline=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(inti=0;i{
fstreamoutfile4("D:
\\cc.txt",ios:
:
out|ios:
:
app);//以写的方式打开文件
if(!
outfile4)
cout<<"打开文件失败!
"<else
a=arr[i][4];
outfile4<outfile4.close();
}
infile1.close();
}
voidpay()//实现统计所有患者总费用
{
doublea;
doublez=0.0;
fstreaminfile4("D:
\\cc.txt",ios:
:
in);//以读方式打开文件
if(!
infile4)
{
cout<<"打开文件失败!
"<return;
}
doubles[100];
intline=0;
while(!
infile4.eof())//文件不为空的条件设置
{
infile4>>s[line];//文件流读取数据
line++;
}
for(inti=0;i{
a=s[i];
z=z+a;
}
cout<<"所有患者的总费用为:
"<infile4.close();
}
voidaddzhangdan()//增加账单信息
{
fstreamoutfile3("D:
\\bb.txt",ios:
:
out|ios:
:
app);//以写方式打开文件
if(!
outfile3)
cout<<"打开文件失败!
"<else
{
cout<<"患者姓名:
";
cin>>name;
outfile3<cout<<"主治医生:
";
cin>>name;
outfile3<cout<<"诊费:
";
cin>>office_vist_fee;
outfile3<cout<<"药费:
";
cin>>drug_fee;
outfile3<cout<<"总费用:
";
cin>>totl_fee;
outfile3<outfile3.close();
}
chart;
cout<<"是否继续添加账单信息Y/N.....:
"<cin>>t;
if(t=='y')
addzhangdan();
else
return;
}
voidzhangdanKind()//按姓名查询账单信息
{
chart;
fstreaminfile1("D:
\\bb.txt",ios:
:
in);//以读方式打开文件
if(!
infile1)
{
cout<<"打开文件失败!
"<return;
}
stringarr[100][100];//定义一个string类型的二维数组,用来保存从文本内读取信息
intline=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++;
}
stringna;
cout<<"请输入要查询的患者姓名:
";
cin>>na;
for(inti=0;i{
if(arr[i][0]==na)
{
stringxm;
xm=arr[i][1];
cout<<"患者姓名:
"<"<"<"<"<fstreaminfile2("D:
\\aa.txt",ios:
:
in);//以读方式打开文件
if(!
infile2)
{
cout<<"打开文件失败!
"<return;
}
intl=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(intj=0;j<1;j++)
{
if(arr[j][0]==xm)
{
cout<<"医生姓名:
"<"<"<"<"<}
}
fstreaminfile3("D:
\\ee.txt",ios:
:
in);//以读方式打开文件
if(!
infile3)
{
cout<<"打开文件失败!
"<return;
}
intlin=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(intz=0;z{
if(arr[i][0]==na)
{
cout<<"患者姓名:
"<"<"<"<"<}
}
return;
}
}
cout<<"记录中没有此患者的账单信息!
"<cout<<"是否继续查询Y/N......:
"<cin>>t;
if(t=='y')
zhangdanKind();
else
return;
}
~zhangdan(){}
};
voidadd_zhuce()//实现注册用户
{
stringname,code,code1;
fstreamoutfile5("D:
\\dd.txt",ios:
:
out|ios:
:
app);//以写方式打开文件
if(!
outfile5)
cout<<"打开文件失败!
"<else
{
cout<<"※*********※请注册用户※*********※"<cout<<"请输入您的用户名:
";
cin>>name;
fstreaminfile6("D:
\\dd.txt",ios:
:
in);//以读方式打开文件
if(!
infile6)
{
cout<<"打开文件失败!
"<return;
}
stringa[100][2];//定义一个string类型的二维数组,用来保存从文本内读取的信息
intline=0;
memset(a,0,sizeof(a));//将数组清空
while(!
infile6.eof())//文件不为空的条件设置
{
infile6>>a[line][0]>>a[line][1];//文件流读取数据
line++;
}
for(inti=0;i{
if(a[i][0]==name)
{
cout<<"此用户已存在!
谢谢使用本系统注册用户界面!
欢迎下次使用!
";
exit(0);
}
}
outfile5<cout<<"请输入您的密码:
";
cin>>code;
cout<<"请再次输入您的密码:
";
cin>>code1;
if(code!
=code1)
{
cout<<"您两次输入的密码不一致!
谢谢使用本系统注册用户界面!
欢迎下次使用!
"<exit(0);
}
else
outfile5<}
cout<<"谢谢使用本系统注册用户界面!
您已注册成功!
"<outfile5.close();
}
voidwelcome()//验证用户登陆,登陆成功显示欢迎信息
{
stringname,code;
intmark=0;
fstreaminfile("D:
\\dd.txt",ios:
:
in);
if(!
infile)
{
cerr<<"打开文件错误"<return;
}
intline=0;
stringa[100][100];
memset(a,0,sizeof(a));//将数组清空
while(!
infile.eof())//文件不为空的条件设置
{
infile>>a[line][0]>>a[line][1];//文件流读取数据
line++;
}
cout<<"\t\t※*********※用户名※*********※:
";
cin>>name;
intm=1;
for(inti=0;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(intj=0;j<2;j++)
{
if(a[mark][1]==code)
{
cout<<"成功登入※*********※"<break;
}
else
{
cout<<"密码错误,请重新输入※*********※"<cout<<"\t\t※*********※密码※*********※:
";
cin>>code;
}
}
}
voidaddinfor()//增加信息界面实现
{
inta;
doctord;
HuanZhew;
cout<cout<cout<<"\t\t※*********增加信息界面*********※"<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)
{
case1:
d.input();break;//医生信息
case2:
w.input();break;//患者信息
case0:
break;
defaul