C诊所信息管理系统设计课设报告.docx

上传人:b****0 文档编号:12532073 上传时间:2023-04-20 格式:DOCX 页数:46 大小:159.53KB
下载 相关 举报
C诊所信息管理系统设计课设报告.docx_第1页
第1页 / 共46页
C诊所信息管理系统设计课设报告.docx_第2页
第2页 / 共46页
C诊所信息管理系统设计课设报告.docx_第3页
第3页 / 共46页
C诊所信息管理系统设计课设报告.docx_第4页
第4页 / 共46页
C诊所信息管理系统设计课设报告.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

C诊所信息管理系统设计课设报告.docx

《C诊所信息管理系统设计课设报告.docx》由会员分享,可在线阅读,更多相关《C诊所信息管理系统设计课设报告.docx(46页珍藏版)》请在冰豆网上搜索。

C诊所信息管理系统设计课设报告.docx

C诊所信息管理系统设计课设报告

一、题目和要求………………………………………………………1

二、系统总体设计……………………………………………………1

1、需求分析……………………………………………………………………1

2、系统功能模块划分…………………………………………………………1

三、详细设计…………………………………………………………2

1、数据结构设计………………………………………………………………2

2、函数规划设计………………………………………………………………3

四、程序运行演示……………………………………………………16

1、登陆………………………………………………………………………16

2、查询信息…………………………………………………………………17

3、账单信息…………………………………………………………………18

4、增加信息…………………………………………………………………19

五、总结反思…………………………………………………………20

六、源代码……………………………………………………………20

一、题目和要求

1、题目:

“诊所信息管理系统设计”

2、问题描述:

完成小型诊所的简单信息管理程序,掌握类的设计以及继承和派生的应用。

二、系统总体设计

1、需求分析

1.1功能要求

设计人类(Person类)和医生类(Doctor类),在此基础上,通过增加患者和账单,使它们公用于表示一家诊所的信息管理。

(1)在一条医生记录中,包括医生的专业说明(specialty),如内科医生(surgeon)、儿科医生(pediatrician)、产科医生(obstetrician)及全科医生(generalpractitioner)。

(2)Doctor记录还含有诊费(office_vist_fee)。

(3)在一条患者记录中,包括该患者产生的药费(drug_fee),患者的诊费(即医生的诊费)。

(4)在一条账单记录中,包括一条患者对象、该患者对应得主治医生、该患者产生的诊费和药费。

(5)应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息。

(6)能够统计出所有患者的总费用。

1.2问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

2、系统功能模块划分

三、详细设计

1、数据结构设计

1.1类设计

分别定义了person人类、doctor医生类、HuanZhe患者类以及zhangdan帐单类;在person人类中,包含了数据成员姓名(name)、性别(sex)、年龄(age)以及诊费(office_vist_fee);在doctor医生类中,增加了数据成员医生的专业说明(drug_fee),包含了成员函数input()增加医生信息,zhangdanKind()按姓名查询医生信息;在HuanZhe患者类中,增加了数据成员患者的药费(drug_fee),包含了成员函数input()增加患者信息,zhangdanKind()按姓名查询患者信息;在zhangdan帐单类中,包含了数据成员姓名(name)、诊费(office_vist_fee)、药费(drug_fee)、总费用(totl_fee),包含了成员函数totl_pay()用于统计该系统中所有患者的总费用,addzhangdan()增加账单信息,zhangdanKind()按姓名查询账单信息。

1.1.1person人类

{protected:

stringname;

stringsex;

intage;

doubleoffice_vist_fee;

};

1.1.2doctor医生类

{public:

voidinput();//增加医生信息

voidzhangdanKind();//按姓名查询医生信息

private:

stringspeicialty;

};

1.1.3HuanZhe患者类

{public:

voidzhangdanKind();//按姓名查询患者信息

voidinput();//增加患者信息

private:

doubledrug_fee;

};

1.1.4zhangdan账单类

{public:

voidtotl_pay();

voidaddzhangdan();//增加账单信息

voidzhangdanKind();//按姓名查询账单信息

private:

stringname;

doubledrug_fee;

doubleoffice_vist_fee;

doubletotl_fee;

};

1.2类之间的关系

在该系统中医生与患者都有数据成员姓名(name)、性别(sex)、年龄(age)以及诊费(office_vist_fee);所以把这些数据成员定义在基类person人类中,doctor医生类与HuanZhe患者类公有继承于基类person人类。

2、函数规划设计

在doctor医生类中,包含了成员函数input()增加医生信息,zhangdanKind()按姓名查询医生信息;在HuanZhe患者类中,包含了成员函数input()增加患者信息,zhangdanKind()按姓名查询患者信息;在zhangdan帐单类中,包含了成员函数totl_pay()用于统计该系统中所有患者的总费用,addzhangdan()增加账单信息,zhangdanKind()按姓名查询账单信息。

在该系统中,还包含了普通函数adding()实现增加信息界面,search()实现查询信息界面,zhangdanxinxi()实现账单信息界面,landing()验证用户登陆,登陆成功显示欢迎信息,surface()实现诊所信息管理系统主界面。

其中adding()增加信息界面包括了1、增加医生信息2、增加患者信息0、返回上一页;select()查询信息界面包括了1、查询医生信息2、查询患者信息0、返回上一页;zhangdanxinxi()账单信息界面包括了1、增加账单信息2、查询账单信息3、统计总费用0、返回上一页;surface()诊所信息管理系统主界面包括了1、查询信息2、账单信息3、增加信息4、统计总费用0、退出系统;main()主函数界面包括了1、用户登录0、退出系统。

在这些界面的实现中用switch()语句做选择。

2.1增加医生信息

voiddoctor:

:

input()

{

cout<<"*****主治医生基本信息*****"<

fstreamoutdoctor("医生.txt",ios:

:

out|ios:

:

app);//以写方式打开文件

if(!

outdoctor)

cout<<"打开文件失败!

"<

else

{

cout<<"姓名:

";

cin>>name;outdoctor<

cout<<"性别:

";

cin>>sex;outdoctor<

cout<<"年龄:

";

cin>>age;outdoctor<

cout<<"诊费:

";

cin>>office_vist_fee;outdoctor<

cout<<"专业说明:

";

cin>>speicialty;outdoctor<

outdoctor.close();

}

}

2.2按姓名查询医生信息

voiddoctor:

:

zhangdanKind()

{

fstreamindoctor("医生.txt",ios:

:

in);//以读方式打开文件

if(!

indoctor)

{

cout<<"打开文件失败!

"<

return;

}

intline=0;

stringarr[100][5];//定义一个string类型的二维数组,用来保存从文本内读取的信息

memset(arr,0,sizeof(arr));//将数组清空

while(!

indoctor.eof())//文件不为空的条件设置

{

cout<<"2"<

indoctor>>arr[line][0]>>arr[line][1]>>arr[line][2]>>arr[line][3]>>arr[line][4];

line++;

}

stringmz;

cout<<"请输入要查询的医生姓名:

";

cin>>mz;

for(inti=0;i

{

if(arr[i][0]==mz)

{

cout<<"医生姓名:

"<

"<

"<

"<

"<

return;

}

}

cout<<"记录中没有此医生信息!

"<

cout<<"是否继续查询y/n:

"<

chart;

cin>>t;

if(t=='y')

zhangdanKind();

else

return;

}

2.3增加患者信息

voidHuanZhe:

:

input()

{

cout<<"*****患者基本信息*****"<

fstreamoutH("患者.txt",ios:

:

out|ios:

:

app);//以写方式打开文件

if(!

outH)

cout<<"打开文件失败!

"<

else

{

cout<<"姓名:

";

cin>>name;outH<

cout<<"性别:

";

cin>>sex;outH<

}

cout<<"年龄:

";

cin>>age;outH<

cout<<"诊费:

";

cin>>office_vist_fee;outH<

cout<<"药费:

";

cin>>drug_fee;outH<

outH.close();

cout<<"是否继续添加患者信息y/n:

"<

chart;

cin>>t;

if(t=='y')

input();

else

return;

}

2.4按姓名查询患者信息

voidHuanZhe:

:

zhangdanKind()

{

fstreaminH("患者.txt",ios:

:

in);//以读方式打开文件

if(!

inH)

{

cout<<"打开文件失败!

"<

return;

}

stringarr[100][5];//定义一个string类型的二维数组,用来保存从文本内读取的信息

intline=0;

memset(arr,0,sizeof(arr));////将数组清空

while(!

inH.eof())//文件不为空的条件设置

{inH>>arr[line][0]>>arr[line][1]>>arr[line][2]>>arr[line][3]>>arr[line][4];//文件流读取数据

line++;

}

stringmz;

cout<<"请输入要查询的患者姓名:

";

cin>>mz;

for(inti=0;i

{

if(arr[i][0]==mz)

{

cout<<"患者姓名:

"<

"<

"<

"<

"<

return;

}

}

cout<<"记录中没有此患者的信息!

"<

cout<<"是否继续查询y/n:

"<

chart;

cin>>t;

if(t=='y')

zhangdanKind();

else

return;

}

2.5增加账单信息

voidzhangdan:

:

addzhangdan()

{

fstreamoutfile1("账单.txt",ios:

:

out|ios:

:

app);//以写方式打开文件

if(!

outfile1)

cout<<"打开文件失败!

"<

else

{

cout<<"患者姓名:

";

cin>>name;

outfile1<

cout<<"主治医生:

";

cin>>name;

outfile1<

cout<<"诊费:

";

cin>>office_vist_fee;

outfile1<

cout<<"药费:

";

cin>>drug_fee;

outfile1<

cout<<"总费用:

";

cin>>totl_fee;

outfile1<

out();

}

chart;

cout<<"是否继续添加账单信息y/n:

"<

cin>>t;

if(t=='y')

addzhangdan();

else

return;

}

2.6查询账单信息

voidzhangdan:

:

zhangdanKind()

{

fstreaminfile1("账单.txt",ios:

:

in);//以读方式打开文件

if(!

infile1)

{

cout<<"打开文件失败!

"<

return;

}

stringarr[100][5];//定义一个string类型的二维数组,用来保存从文本内读取的信息

intline=0;

memset(arr,0,sizeof(arr));//将数组清空

while(!

in())//文件不为空的条件设置

{

infile1>>arr[line][0]>>arr[line][1]>>arr[line][2]>>arr[line][3]>>arr[line][4];//文件流读取数据

line++;

}

stringmz;

cout<<"请输入要查询的患者姓名:

";

cin>>mz;

for(inti=0;i

{

if(arr[i][0]==mz)

{

stringxm;

xm=arr[i][1];

cout<<"患者姓名:

"<

"<

"<

"<

"<

fstreamindoctor("医生.txt",ios:

:

in);//以读方式打开文件

if(!

indoctor)

{

cout<<"打开文件失败!

"<

return;

}

intl=0;

memset(arr,0,sizeof(arr));//将数组清空

while(!

indoctor.eof())//文件不为空的条件设置

{

indoctor>>arr[l][0]>>arr[l][1]>>arr[l][2]>>arr[l][3]>>arr[l][4];//文件流读取数据

l++;

}

for(intj=0;j

{

if(arr[j][0]==xm)

{

cout<<"医生姓名:

"<

"<

"<

"<

"<

}

}

fstreaminH("患者.txt",ios:

:

in);//以读方式打开文件

if(!

inH)

{

cout<<"打开文件失败!

"<

return;

}

intlin=0;

memset(arr,0,sizeof(arr));//将数组清空

while(!

inH.eof())//文件不为空的条件设置

{

inH>>arr[lin][0]>>arr[lin][1]>>arr[lin][2]>>arr[lin][3]>>arr[lin][4];//文件流读取数据

lin++;

}

for(intz=0;z

{

if(arr[i][0]==mz)

{

cout<<"患者姓名:

"<

"<

"<

"<

"<

}

}

return;

}

}

cout<<"记录中没有此患者的帐单信息!

"<

cout<<"是否继续查询y/n:

"<

chart;

cin>>t;

if(t=='y')

zhangdanKind();

else

return;

}

2.7统计总费用

voidzhangdan:

:

totl_pay()

{

fstreaminfile1("账单.txt",ios:

:

in);//以读方式打开文件

if(!

infile1)

{

cout<<"打开文件失败!

"<

return;

}

doublearr[100][3];//定义一个double类型的二维数组,用来保存从文本内读取的信息

stringarrs[100][2];//定义一个string类型的二维数组,用来保存从文本内读取的信息

memset(arr,0,sizeof(arr));//将数组清空

intline=0;

while(!

in())//文件不为空的条件设置

{

infile1>>arrs[line][0]>>arrs[line][1]>>arr[line][0]>>arr[line][1]>>arr[line][2];//文件流读取数据

line++;

}

doublea;

doublez=0.0;

for(inti=0;i

{

a=arr[i][2];;

z=z+a;

}

cout<<"所有患者的总费用为:

"<

in();

}

2.8登陆

voidlanding()

{

stringname,code;

cout<<"\t\t用户名:

";

cin>>name;

if(name!

="yangqing")

{

cout<<"\t\t☆********★该管理员不存在☆********★"<

landing();

}

else

{

cout<<"\t\t密码:

";

cin>>code;

if("123456789"==code)

{

cout<<"\t\t\t☆********★成功登入☆********★"<

}

else

{

cout<<"\t\t☆********★密码错误,请重新输入☆********★"<

cout<<"\t\t☆********★密码☆********★:

";

cin>>code;

}

}

}

2.9增加信息界面

voidadding()

{

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;

default:

cout<<"输入数字错误!

"<

}

}

2.10查询信息界面

voidsearch()

{

intb;

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1