版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+“诊所信息管理系统设计”课设报告作者: 日期:目录一、题目和要求 1二、系统总体设计 11、需求分析 12、系统功能模块划分 1三、详细设计 21、数据结构设计 22、函数规划设计 3四、程序运行演示 161、登陆 162、查询信息173、账单信息184、增加信息19五、总结反思 20六、源代码 20一、题目和要求1、题目:“诊所信息管理系统设计”2、问题描述:完成小型诊所的简单信息管理程序,掌握类的设计以及继承和派生的应用。、系统总体设计1、需求分析1.1 功能要求设计人类( Person 类)和医生类( Doctor 类),在此基础上,通过增加患者和账单,使它们公用于表示一家诊所的信息
2、管理。( 1)在一条医生记录中,包括医生的专业说明( pediatrician ) 、产科医生( obstetrician( 2 ) Doctor 记录还含有诊费( office_vist_fee( 3)在一条患者记录中,包括该患者产生的药费specialty ),如内科医生( surgeon )、儿科医生 )及全科医生( general practitioner)。)。(drug_fee) ,患者的诊费(即医生的诊费) 。(4)在一条账单记录中,包括一条患者对象、该患者对应得主治医生、该患者产生的诊费和药费。(5)应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息。(6 )能够统计出
3、所有患者的总费用。1.2 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;( 8 )完成系统总结报告。2、系统功能模块划分诊所信息管理系统退出系统诊所信息管理系统退出系统查询信息查询信息账单信息账单信息增加信息增加信息退出系统退出系统查询医生信息增加账单信息增加医生信息查询患者信息查询账单信息增加患者信息返回上一页统计总费用返回上
4、一页返回上一页三、详细设计1、数据结构设计11 类设计分别定义了 person 人类、 doctor 医生类、 HuanZhe患者类以及 zhangdan 帐单类; 在 person 人类中, 包含了数据成员姓名( name)、性别( sex )、年龄( age)以及诊费( office_vist_fee );在 doctor 医生 类中,增加了数据成员医生的专业说明( drug_fee ),包含了成员函数 input() 增加医生信息, zhangdanKind() 按姓名查询医生信息;在 HuanZhe 患者类中,增加了数据成员患者的药费(drug_fee ),包含了成员函数 input(
5、) 增加患者信息, zhangdanKind() 按姓名查询患者信息;在 zhangdan 帐单类中, 包含了数据成员姓名( name)、诊费( office_vist_fee )、药费( drug_fee )、总费用( totl_fee ),包含 了成员函数 totl_pay() 用于统计该系统中所有患者的总费用, addzhangdan() 增加账单信息, zhangdanKind() 按姓名查询账单信息。1.1.1 person 人类 protected :string name;string sex;int age;double office_vist_fee;1.1.2 doctor
6、 医生类public:void input(); /增加医生信息void zhangdanKind() ; /按姓名查询医生信息private:string speicialty;1.1.3 HuanZhe 患者类public:void zhangdanKind(); /按姓名查询患者信息void input(); /增加患者信息private:double drug_fee;1.1.4 zhangdan 账单类public:void totl_pay();void addzhangdan();/ 增加账单信息void zhangdanKind();/ 按姓名查询账单信息private:str
7、ing name;double drug_fee;double office_vist_fee;double totl_fee;12 类之间的关系在该系统中医生与患者都有数据成员姓名(name)、性别( sex )、年龄( age)以及诊费( office_vist_fee );所以把这些数据成员定义在基类 person 人类中, doctor 医生类与 HuanZhe 患者类 公有继承于基类 person 人类。2、 函数规划设计在 doctor 医生类中, 包含了成员函数 input() 增加医生信息, zhangdanKind() 按姓名查询医生信息; 在 HuanZhe 患者类中, 包
8、含了成员函数 input() 增加患者信息, zhangdanKind() 按姓名查询患者信息; 在 zhangdan 帐单类中,包含了成员函数 totl_pay() 用于统计该系统中所有患者的总费用, addzhangdan() 增加账单信息, zhangdanKind() 按姓名查询账单信息。在该系统中,还包含了普通函数 adding() 实现增 加信息界面, search() 实现查询信息界面, zhangdanxinxi() 实现账单信息界面, landing() 验证用户登 陆 , 登陆成功显示欢迎信息, surface() 实现诊所信息管理系统主界面。其中 adding() 增加信
9、息界面包括了 1、增加医生信息 2、增加患者信息 0、返回上一页; select() 查询信- 3 -息界面包括了 1、查询医生信息 2、查询患者信息 0、返回上一页; zhangdanxinxi() 账单信息界面包括 了 1 、增加账单信息 2 、查询账单信息 3、统计总费用 0、返回上一页; surface() 诊所信息管理系统主界 面包括了 1、查询信息 2、账单信息 3、增加信息 4、统计总费用 0、退出系统; main() 主函数界面包括了 1、用户登录 0、退出系统。在这些界面的实现中用switch() 语句做选择。2.1 增加医生信息void doctor:input()cout
10、* 主治医生基本信息 *endl;fstream outdoctor( 医生 .txt,ios:out|ios:app); / 以写方式打开文件if(!outdoctor)cout 打开文件失败! endl;elsecoutname;outdoctorname ;coutsex;outdoctorsex ;coutage;outdoctorage ;coutoffice_vist_fee;outdoctoroffice_vist_fee ;coutspeicialty;outdoctorspeicialtyendl;outdoctor.close();2.2 按姓名查询医生信息void doc
11、tor:zhangdanKind()fstream indoctor( 医生 .txt,ios:in); / 以读方式打开文件- 4 -if(!indoctor)cout 打开文件失败! endl;return;int line=0;string arr1005; /定义一个 string 类型的二维数组 , 用来保存从文本内读取的信息memset(arr,0,sizeof(arr); / 将数组清空while(!indoctor.eof() /文件不为空的条件设置cout2arrline0arrline1arrline2arrline3arrline4;line+;string mz;cou
12、tmz;for(int i=0;iline;i+)if(arri0=mz)cout 医生姓名 :arri0 性别:arri1 年龄:arri2 诊费 :arri3元 专业:arri4endl;return;cout 记录中没有此医生信息 !endl;cout 是否继续查询 y/n:t;if(t=y)zhangdanKind();elsereturn;2.3 增加患者信息void HuanZhe:input()cout* 患者基本信息 *endl;以写方式打开文件fstream outH( 患者 .txt,ios:out|ios:app); / if(!outH)cout 打开文件失败! end
13、l;elsecoutname; outHname ;coutsex;outHsex ;coutage; outHage ;coutoffice_vist_fee; outHoffice_vist_fee ;coutdrug_fee; outHdrug_feeendl;outH.close();cout 是否继续添加患者信息 y/n:t;if(t=y)- 6 -input();elsereturn;2.4 按姓名查询患者信息void HuanZhe:zhangdanKind()fstream inH( 患者 .txt,ios:in); / 以读方式打开文件if(!inH)cout 打开文件失败!
14、 arrline0arrline1arrline2arrline3arrline4; / 文件流 读取数据line+;string mz;coutmz;for(int i=0;iline;i+)if(arri0=mz)cout 患者姓名 :arri0 性别 :arri1 年 龄:arri2 诊费 :arri3元 药费:arri4元endl;- 7 -return;cout 记录中没有此患者的信息 !endl;cout 是否继续查询 y/n:t;if(t=y)zhangdanKind();elsereturn;2.5 增加账单信息void zhangdan:addzhangdan()以写方式打开
15、文件fstream outfile1(账单 .txt,ios:out|ios:app); /if(!outfile1)cout 打开文件失败! endl;elsecoutname;outfile1name ;coutname;outfile1name ;coutoffice_vist_fee;outfile1office_vist_fee ;coutdrug_fee;couttotl_fee;outfile1totl_feeendl;outfile1.close();char t;cout 是否继续添加账单信息 y/n:t;if(t=y)addzhangdan();elsereturn;2.6
16、 查询账单信息void zhangdan:zhangdanKind()fstream infile1(账单 .txt,ios:in); /以读方式打开文件if(!infile1)cout 打开文件失败! arrline0arrline1arrline2arrline3arrline4; /取数据line+;string mz;coutmz;for(int i=0;iline;i+)- 9 -if(arri0=mz)string xm;xm=arri1;cout 患者姓名 :arri0 费:arri2元 药费 :arri3fstream indoctor( 医生 .txt,ios:in); /医
17、生姓名 :arri1 诊 元 总费用 :arri4 以读方式打开文件元endl;if(!indoctor)cout 打开文件失败! arrl0arrl1arrl2arrl3arrl4; / l+;文件流读取数据for(int j=0;jl;j+)if(arrj0=xm)cout 医生姓名 :arrj0 性别 :arrj1 龄:arrj2 诊费:arrj3 专业 :arrj4endl;fstream inH( 患者 .txt,ios:in); / 以读方式打开文件if(!inH)cout 打开文件失败! arrlin0arrlin1arrlin2arrlin3arrlin4; / 数据文件流读取
18、lin+;for(int z=0;zlin-1;z+) if(arri0=mz) - 10 -cout 患者姓名 :arrz0 性别 :arrz1 年 龄:arrz2 诊费:arrz3 药费 :arrz4endl;return;cout 记录中没有此患者的帐单信息 !endl;cout 是否继续查询 y/n:t;if(t=y)zhangdanKind();elsereturn;2.7 统计总费用void zhangdan:totl_pay()fstream infile1(账单 .txt,ios:in); /以读方式打开文件if(!infile1)cout 打开文件失败! arrsline0a
19、rrsline1arrline0arrline1arrline2; /读取数据line+;double a;double z=0.0;for(int i=0;iline-1;i+)a=arri2;z=z+a;cout 所有患者的总费用为 :z 元 endl;infile1.close();- 11 -2.8 登陆void landing() string name,code; coutname;if(name!=yangqing)couttt * 该管理员不存在 * endl;landing(); elsecoutcode;couttttif(123456789=code) * 成功登入 *
20、endl;elsecoutttcouttt* 密码错误,请重新输入 * * 密码 * :;code;2.9增加信息界面void adding()int a;doctor d;HuanZhe w;coutendl;coutendl;couttt$*增加信息界面 *$endl;coutn;couttt$*$n;couttt$n;couttt$ 1.增加医生信息 $ncouttt$ 2.增加患者信息 $ncouttt$ 0.返回上一页 $n;couttt$n;couttt$*$n;- 12 -couta;switch(a)case 1: d.input(); break;case 2: w.inpu
21、t(); break;case 0: break;default: cout 输入数字错误 !endl; 2.10 查询信息界面void search()int b;doctor d;HuanZhe w; coutendl; coutendl;couttt$*查询信息界面 *$endl;coutn;couttt$*$n;couttt$n;couttt $1.查询医生信息 $n;couttt$ 2.查询患者信息 $n;couttt$ 0.返回上一页 $n;couttt$n;couttt$*$n;cout 请输入您选择的数字 :; cinb;switch(b)case 1:d.zhangdanKi
22、nd();break;case 2:w.zhangdanKind();break;case 0:break;default:cout 输入数字错误 !endl;2.11 账单信息界面void zhangdanxinxi() int c;zhangdan z;coutendl;coutendl;- 13 -couttt$*账单信息 *$endlcoutn;couttt$*$n;couttt$n;couttt$ 1.增加账单信息$n;couttt$ 2.查询账单信息$n;couttt$ 3.统计总费用$n;couttt$ 0.返回上一页$n;couttt$n;couttt$*$n;cout 请输入
23、您选择的数字 :; cinc;switch(c)case 1:z.addzhangdan();break;case 2:z.zhangdanKind();break; case 3:z.totl_pay();break;case 0:break;default: cout 输入数字错误 !endl;2.12主界面void surface()landing(); / 登陆int choice;coutnn;while(1)couttt * * 欢迎使用诊所信息管理系统 * * endl; coutn; couttt$n;couttt$n;couttt$n;couttt$ 1.查询信息2.账单信息
24、$ncouttt$ 3.增加信息0.退出系统$ncouttt$n;couttt$n;couttt$n; zhangdan a;cout 请输入您选择的数字 :;cinchoice;switch(choice)case 1:search(); break;- 14 -case 2:zhangdanxinxi(); break;case 3:adding(); break;endl; exit(0);case 0:couttt 欢迎下次使用本系统 default:cout 输入数字错误 !endl;2.13 主函数void main()int w;couttt$n;couttt$n;couttt$
25、n;couttt$1.登录$n;couttt$0.退出系统$n;couttt$n;couttt$n;couttt$* *$nwhile(1)cout 请输入数字 :;cinw;switch(w)case 1:surface();break;case 0:exit(0);default: cout 输入数字错误 !endl;- 15 -四、程序运行演示1、登陆- 16 -2、查询信息2.1 查询医生信息2.2 查询患者信息- 17 -3、账单信息3.1 查询账单信息3.2 统计总费用- 18 -4、增加信息4.1 增加医生信息4.2 增加患者信息- 19 -五、总结反思经过几个星期的 C+课程设
26、计的训练,我学到了很多,最主要的一点是怎样去运用自己学过的知识,怎样去找到你所需要的资料,并在短时间把它运用到具体的实践中 , 运用到你所需要的方面。这个过程是 很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了 自己想要的东西,这种获得是更深刻的。在做这个 C+课程设计的时候, 我原先也是学的不怎么好, 什么是输入输出流 , 如何对文件进行操作, 什么是继承与派生, 等等, 可以说是忘得差不多了。 然而, 在这门课程设计中 , 这些方面却是特别重要的, 可以说,掌握了这个 , 你就完全可以完成自己的任务。这就要求我们要自己去学,自己去探索。当然 , 看
27、 书、问同学是必不可少的,还有 , 身边有非常丰富的网络资源给我们好好利用 , 百度就是个很不错的地方。 这样就从另一方面锻炼了我们检索知识获取信息的能力, 在这个过程中 , 可以学到的是一种提升自我的能 力。在本次课程设计中,我发现我对知识的运用不是那么准确,也就是说我对知识掌握的不够熟练。课 本上有的知识却不会运用, 虽然在本次 C+课程设计中, 显示出一些我知识上的漏洞, 经过这次编写诊所 信息管理系统,我发现我熟练掌握了类的定义以及继承与派生,并对文件操作有了初步的掌握,课下还 应该继续努力,争取熟练掌握一门编程设计语言,在次基础上,在学习多种编程语言,以便以后可以用 到工作中去。当然
28、,期间我也遇到了一些棘手的问题,在“账单 .txt ”中,我希望能读取它每个患者账 单的总费用并把它们求和,但是尝试了多次,检查了多次,读取文件内容的 while 循环一直是死循环, 无法读取,终于,我发现了问题所在,并把代码修改了一下,完美解决了问题。通过这次的课程设计, 我的诊所信息管理系统完美告终, 让我进一步的了解到 C+在我们日常生活中 的重要性,而且,也更进一步的激发了我学习这门语言的兴趣。经过这次的训练,我相信自己以后会用 更多的时间来把这门语言学好,掌握好这门必修的基础语言。六、源代码#include#include #include using namespace std;
29、class person / 人类 protected: string name; string sex; int age; double office_vist_fee;- 20 -class doctor:public person /public:void input();/void zhangdanKind() ; / private:string speicialty;void doctor:input() /医生类增加医生信息 按姓名查询医生信息增加医生信息以写方式打开文件cout* 主治医生基本信息 *endl;fstream outdoctor(医生 .txt,ios:out|
30、ios:app); /if(!outdoctor)cout 打开文件失败! endl;else coutname;outdoctorname ; coutsex;outdoctorsex ; coutage;outdoctorage ; coutoffice_vist_fee;outdoctoroffice_vist_fee coutspeicialty;outdoctorspeicialtyendl; outdoctor.close();void doctor:zhangdanKind() / 按姓名查询医生信息fstream indoctor(医生 .txt,ios:in); / 以读方式
31、打开文件if(!indoctor)cout 打开文件失败! arrline0arrline1arrline2arrline3arrline4; line+;string mz;coutmz;for(int i=0;iline;i+)if(arri0=mz)cout 医 生 姓 名 :arri0 性 别 :arri1 年 龄:arri2 诊费 :arri3元 专业:arri4endl;return;cout 记录中没有此医生信息 !endl;cout 是否继续查询 y/n:t;if(t=y)zhangdanKind();elsereturn;class HuanZhe:public person
32、 / 患者类public:void zhangdanKind(); / 按姓名查询患者信息void input(); / 增加患者信息private:double drug_fee;void HuanZhe:input()cout* 患者基本信息 *endl;fstream outH( 患者 .txt,ios:out|ios:app); / 以写方式打开文件if(!outH)cout 打开文件失败! endl;elsecoutname; outHname ;coutsex;outHsex ;coutage; outHage ;coutoffice_vist_fee; outHoffice_vi
33、st_fee ;coutdrug_fee; outHdrug_feeendl;- 22 -outH.close();cout 是否继续添加患者信息 y/n:t;if(t=y)input();elsereturn;void HuanZhe:zhangdanKind()fstream inH( 患者 .txt,ios:in); / 以读方式打开文件if(!inH)cout 打开文件失败! arrline0arrline1arrline2arrline3arrline4; / 文件流读取数据line+;string mz;coutmz;for(int i=0;iline;i+)if(arri0=mz
34、) 性 别 :arri1 年 元 药费 :arri4元endl;cout 患 者 姓 名 :arri0 龄:arri2 诊费 :arri3return;cout 记录中没有此患者的信息 !endl;cout 是否继续查询 y/n:t;if(t=y)zhangdanKind();elsereturn;- 23 -/ 帐单类/ 增加账单信息/ 按姓名查询账单信息class zhangdanpublic:void totl_pay();void addzhangdan();void zhangdanKind(); private:string name; double drug_fee;double office_vist_fee;double totl_fee;void zhangdan:totl_pay()fstream infile1(账单 .txt,ios:in); /以读方式打开文件i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学语文获奖课件
- 《妇产科学》课件-13.3子宫内膜癌
- 人资系统员工应知应会制度培训专项测试卷
- 《MINI幕墙参考资料》课件
- 《甲亢医学医药》课件
- 图解面诊大全雷子
- 书法写字比赛格式纸(10种模板)
- 消防图例大全
- 政府采购工作总结4篇
- 《矿内空气》课件
- 国际航班保障流程
- 英文版肺功能检查课件(PPT 50页)
- 《有机合成》说播课课件(全国高中化学优质课大赛获奖案例)
- 高中地理经纬网PPT通用课件
- 城市景观生态
- 五年级英语上册第六单元(新版pep)完美版(课堂PPT)
- 2022年修理厂改革实施方案范文
- 败血症PPT优质课件
- 铁路建设项目工程质量管理办法
- 架空输电线路检修规范
- 【课件】第六单元第十二节外国影视音乐课件-2021-2022学年高中音乐人音版(2019)必修音乐鉴赏
评论
0/150
提交评论