




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、题目和要求 1二、系统总体设计 1 1、需求分析 12、系统功能模块划分 1三、详细设计 21、数据结构设计 22、函数规划设计 3四、程序运行演示 161、登陆 162、查询信息 173、账单信息 184、增加信息 19五、总结反思 20六、源代码 20一、题目和要求1、题目:“诊所信息管理系统设计”2、问题描述:完成小型诊所的简单信息管理程序,掌握类的设计以及继承和派生的应用。二、系统总体设计1、需求分析1.1 功能要求设计人类(Person类)和医生类(Doctor类),在此基础上,通过增加患者和账单,使它们公用于表示一家诊所的信息管理。(1)在一条医生记录中,包括医生的专业说明(specialty),如内科医生(surgeon)、儿科医生(pediatrician) 、产科医生(obstetrician)及全科医生(general practitioner)。(2)Doctor记录还含有诊费(office_vist_fee)。(3)在一条患者记录中,包括该患者产生的药费(drug_fee) ,患者的诊费(即医生的诊费)。(4)在一条账单记录中,包括一条患者对象、该患者对应得主治医生、该患者产生的诊费和药费。(5)应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息。(6)能够统计出所有患者的总费用。1.2 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;(8)完成系统总结报告。2、系统功能模块划分诊所信息管理系统登陆退出系统查询信息账单信息增加信息增加账单信息查询账单信息统计总费用查询医生信息查询患者信息增加医生信息增加患者信息退出系统返回上一页返回上一页返回上一页三、详细设计1、数据结构设计11 类设计分别定义了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.1 person人类protected:string name;string sex;int age;double office_vist_fee;1.1.2 doctor医生类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:string 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患者类中,包含了成员函数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增加医生信息void doctor:input()cout*主治医生基本信息*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 doctor:zhangdanKind()fstream indoctor(医生.txt,ios:in); /以读方式打开文件if(!indoctor)cout打开文件失败!endl; return; int line=0;string arr1005; /定义一个string类型的二维数组,用来保存从文本内读取的信息 memset(arr,0,sizeof(arr); /将数组清空while(!indoctor.eof() /文件不为空的条件设置cout2arrline0arrline1arrline2arrline3arrline4;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;2.3 增加患者信息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_vist_fee ; coutdrug_fee; outHdrug_feeendl;outH.close();cout是否继续添加患者信息y/n:t;if(t=y)input();elsereturn;2.4 按姓名查询患者信息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)cout患者姓名:arri0 性别:arri1 年龄:arri2 诊费:arri3元 药费:arri4元endl;return;cout记录中没有此患者的信息!endl;cout是否继续查询y/n:t; if(t=y)zhangdanKind();elsereturn;2.5 增加账单信息void zhangdan:addzhangdan()fstream outfile1(账单.txt,ios:out|ios:app); /以写方式打开文件if(!outfile1)cout打开文件失败!endl;elsecoutname;outfile1name ;coutname;outfile1name ;coutoffice_vist_fee;outfile1office_vist_fee ;coutdrug_fee;outfile1drug_fee ;couttotl_fee;outfile1totl_feeendl;outfile1.close();char t;cout是否继续添加账单信息y/n:t;if(t=y)addzhangdan();elsereturn;2.6 查询账单信息void zhangdan:zhangdanKind()fstream infile1(账单.txt,ios:in); /以读方式打开文件if(!infile1)cout打开文件失败!arrline0arrline1arrline2arrline3arrline4; /文件流读取数据line+;string mz;coutmz;for(int i=0;iline;i+)if(arri0=mz)string xm;xm=arri1;cout患者姓名:arri0 医生姓名:arri1 诊费:arri2元 药费:arri3元 总费用:arri4元endl;fstream indoctor(医生.txt,ios:in); /以读方式打开文件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; /文件流读取数据 lin+; for(int z=0;zlin-1;z+)if(arri0=mz)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打开文件失败!arrsline0arrsline1arrline0arrline1arrline2; /文件流读取数据line+;double a;double z=0.0;for(int i=0;iline-1;i+)a=arri2;z=z+a;cout所有患者的总费用为:z元endl;infile1.close();2.8 登陆void landing()string name,code;coutname;if(name!=yangqing)couttt*该管理员不存在*endl;landing();elsecoutcode;if(123456789=code)coutttt*成功登入*endl;elsecouttt*密码错误,请重新输入*endl;coutcode;2.9 增加信息界面void adding()int a;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; couta; switch(a)case 1: d.input(); break; case 2: w.input(); 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.zhangdanKind();break; case 2:w.zhangdanKind();break; case 0:break;default:cout输入数字错误!endl;2.11 账单信息界面void zhangdanxinxi() int c;zhangdan z;coutendl;coutendl;couttt $*账单信息*$endl;coutn;couttt $*$n;couttt $ $n;couttt $ 1.增加账单信息 $n;couttt $ 2.查询账单信息 $n;couttt $ 3.统计总费用 $n;couttt $ 0.返回上一页 $n;couttt $ $n;couttt $*$n; cout请输入您选择的数字:;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.账单信息 $n; couttt$ 3.增加信息 0.退出系统 $n; couttt$ $n; couttt$ $n; couttt$n; zhangdan a;cout请输入您选择的数字:;cinchoice;switch(choice)case 1:search(); break; case 2:zhangdanxinxi(); break; case 3:adding(); break; case 0:couttt欢迎下次使用本系统endl; exit(0); default:cout输入数字错误!endl;2.13 主函数void main()int w;couttt$n;couttt$ $n;couttt$ $n;couttt$ 1.登录 $n;couttt$ 0.退出系统 $n;couttt$ $n;couttt$ $n;couttt$*$n;while(1)cout请输入数字:; cinw;switch(w)case 1:surface();break; case 0:exit(0); default: cout输入数字错误!endl;四、程序运行演示1、登陆2、查询信息2.1查询医生信息2.2 查询患者信息3、账单信息3.1 查询账单信息3.2 统计总费用4、增加信息4.1 增加医生信息4.2 增加患者信息五、总结反思经过几个星期的C+课程设计的训练,我学到了很多,最主要的一点是怎样去运用自己学过的知识,怎样去找到你所需要的资料,并在短时间把它运用到具体的实践中,运用到你所需要的方面。这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。在做这个C+课程设计的时候,我原先也是学的不怎么好,什么是输入输出流,如何对文件进行操作,什么是继承与派生,等等,可以说是忘得差不多了。然而,在这门课程设计中,这些方面却是特别重要的,可以说,掌握了这个,你就完全可以完成自己的任务。这就要求我们要自己去学,自己去探索。当然,看书、问同学是必不可少的,还有,身边有非常丰富的网络资源给我们好好利用,百度就是个很不错的地方。这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力。在本次课程设计中,我发现我对知识的运用不是那么准确,也就是说我对知识掌握的不够熟练。课本上有的知识却不会运用,虽然在本次C+课程设计中,显示出一些我知识上的漏洞,经过这次编写诊所信息管理系统,我发现我熟练掌握了类的定义以及继承与派生,并对文件操作有了初步的掌握,课下还应该继续努力,争取熟练掌握一门编程设计语言,在次基础上,在学习多种编程语言,以便以后可以用到工作中去。当然,期间我也遇到了一些棘手的问题,在“账单.txt”中,我希望能读取它每个患者账单的总费用并把它们求和,但是尝试了多次,检查了多次,读取文件内容的while循环一直是死循环,无法读取,终于,我发现了问题所在,并把代码修改了一下,完美解决了问题。通过这次的课程设计,我的诊所信息管理系统完美告终,让我进一步的了解到C+在我们日常生活中的重要性,而且,也更进一步的激发了我学习这门语言的兴趣。经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。六、源代码#include#include#includeusing namespace std;class person /人类protected:string name;string sex;int age;double office_vist_fee;class doctor:public person /医生类public:void input(); /增加医生信息void zhangdanKind() ; /按姓名查询医生信息private:string speicialty;void doctor:input() /增加医生信息cout*主治医生基本信息*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();void doctor:zhangdanKind() /按姓名查询医生信息fstream indoctor(医生.txt,ios:in); /以读方式打开文件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 /患者类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_vist_fee ; coutdrug_fee; outHdrug_feeendl;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)cout患者姓名:arri0 性别:arri1 年龄:arri2 诊费:arri3元 药费:arri4元endl;return;cout记录中没有此患者的信息!endl;cout是否继续查询y/n:t; if(t=y)zhangdanKind();elsereturn;class zhangdan/帐单类public:void totl_pay();void addzhangdan();/ 增加账单信息void zhangdan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉字的六种结构方式
- 2025-2026年北京市中考英语综合提高练习试卷4
- 高端消费品市场需求研究
- 2025年国际劳动合同范本下载
- 水质标准基本知识培训课件
- 酒店网络安全方案
- 智算中心虚拟化平台部署与管理方案
- 混凝土运输途中振动控制方案
- 输电线路隐患排查与整改方案
- 建筑工程施工中污染控制与治理方案
- 员工应聘登记表(齐全版)
- 手术室停电停水应急预案
- 人教版初中八年级数学上册《第十一章 三角形》大单元整体教学设计
- 《高级统计实务和案例分析》和考试大纲
- 韦莱韬悦-东方明珠新媒体集团一体化职位职级体系方案-2018
- 2024新版(外研版三起孙有中)三年级英语上册单词带音标
- 注塑缺陷的原因分析与解决对策培训教程
- 中欧班列课件
- 2025年九省联考新高考 物理试卷(含答案解析)
- 口腔颌面外科消毒和灭菌-手术区的消毒消毒巾铺置法(口腔科技术)
- 医院标识标牌采购投标方案(技术方案)
评论
0/150
提交评论