C++“诊所信息管理系统设计”课设报告材料_第1页
C++“诊所信息管理系统设计”课设报告材料_第2页
C++“诊所信息管理系统设计”课设报告材料_第3页
C++“诊所信息管理系统设计”课设报告材料_第4页
C++“诊所信息管理系统设计”课设报告材料_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、题目和要求 1二、系统总体设计 11、需求分析 12、系统功能模块划分 1三、详细设计 21、数据结构设计 22、函数规划设计 3四、程序运行演示 161、登陆 162、查询信息 173、账单信息 184、增加信息 19五、总结反思 20六、源代码 20、题目和要求1、题目:“诊所信息管理系统设计”2、问题描述:完成小型诊所的简单信息管理程序,掌握类的设计以及继承和派生的应用。、系统总体设计1、需求分析1.1功能要求设计人类(Pers on类)和医生类(Doctor类),在此基础上,通过增加患者和账单,使它们公用于表示一家诊所的信息管理。(1)在一条医生记录中,包括医生的专业说明(pe

2、diatrician)、产科医生(obstetrician(2)Doctor 记录还含有诊费(office_vist_fee(3)在一条患者记录中,包括该患者产生的药费specialty ),如内科医生(surgeon )、儿科医生 ) 及全科医生( general practitioner)。)。(drug_fee),患者的诊费(即医生的诊费)。(4)在一条账单记录中,包括一条患者对象、该患者对应得主治医生、该患者产生的诊费和药费。(5)应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息。(6 )能够统计出所有患者的总费用。1.2问题的解决方案根据系统功能要求,可以将问题解决分为以下

3、步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2 )分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4 )完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6 )完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。2、系统功能模块划分诊所信息管理系统登陆退出系统查询信息账单信息增加信息退出系统增加账单信息增加医生信息查询账单信息统计总费用增加患者信息返回上一页返回上一页三、详细设计1、数据结构设计1.1类设计分别定义了 person人类、doctor医生类、HuanZhe患者类以及 zhangdan帐单类;在pers

4、on人类中, 包含了数据成员姓名(name)、性别(sex )、年龄(age)以及诊费(office_vist_fee );在doctor医生 类中,增加了数据成员医生的专业说明( drug_fee ),包含了成员函数input()增加医生信息, zhangdanKind()按姓名查询医生信息;在HuanZhe患者类中,增加了数据成员患者的药费(drug_fee ),包含了成员函数input()增加患者信息,zhangdanKind()按姓名查询患者信息;在 zhangdan帐单类中, 包含了数据成员姓名(name)、诊费(office_vist_fee )、药费(drug_fee )、总费用

5、(totl_fee ),包含 了成员函数totl_pay()用于统计该系统中所有患者的总费用,addzhangdan()增加账单信息,zhangdanKind()按姓名查询账单信息。1.1.1 person 人类protected :stri ng n ame;stri ng sex;int age;double office_vist_fee;1.1.2 doctor 医生类public:void in put();/增加医生信息void zha ngda nKin d() ; /按姓名查询医生信息private:stri ng speicialty;;按姓名查询患者信息增加患者信息/增加账

6、单信息/按姓名查询账单信息1.1.3 HuanZhe 患者类 public:void zha ngda nKin d(); /void in put(); / private:double drug_fee;1.1.4 zha ngdan 账单类public:void totl_pay();void addzha ngda n();void zha ngda nKin d();private:stri ng n ame;double drug_fee;double office_vist_fee;double totl_fee;1. 2类之间的关系在该系统中医生与患者都有数据成员姓名(nam、

7、性别(sex)、年龄(age)以及诊费(office_vist_fee );所以把这些数据成员定义在基类person人类中,doctor医生类与HuanZhe患者类公有继承于基类person人类。2、函数规划设计在doctor医生类中,包含了成员函数input()增加医生信息,zhangdanKind()按姓名查询医生信息; 在HuanZhe患者类中,包含了成员函数input()增加患者信息,zhangdanKind()按姓名查询患者信息;在zhangdan帐单类中,包含了成员函数totl_pay() 用于统计该系统中所有患者的总费用,addzhangdan()增加账单信息,zhangdanK

8、ind()按姓名查询账单信息。在该系统中,还包含了普通函数adding()实现增加信息界面,search()实现查询信息界面,zhangdanxinxi() 实现账单信息界面,landing()验证用户登 陆,登陆成功显示欢迎信息,surface()实现诊所信息管理系统主界面。其中adding()增加信息界面包括了1、增加医生信息2、增加患者信息0、返回上一页;select()查询信息界面包括了 1、查询医生信息 2、查询患者信息 0、返回上一页;zha ngda nxin xi()账单信息界面包括了 1、增加账单信息2、查询账单信息3、统计总费用0、返回上一页;surface。诊所信息管理系

9、统主界 面包括了1、查询信息2、账单信息3、增加信息4、统计总费用0、退出系统;ma in ()主函数界面包括了1、用户登录0、退出系统。在这些界面的实现中用switch()语句做选择。2.1增加医生信息void doctor:i nput()cout*主治医生基本信息 *e ndl;fstream outdoctor( 医生.txt,ios:out|ios:app); /以写方式打开文件if(!outdoctor)cout打开文件失败! endl;elsecout姓名:;cinn ame;outdoctor n ame;cout sex;outdoctorsex;cout age;outdo

10、ctorage;cout office_vist_fee;outdoctoroffice_vist_fee;cout speicialty;outdoctorspeicialtye ndl;outdoctor.close();2.2按姓名查询医生信息void doctor:zha ngda nKin d()fstream indoctor( 医生.txt,ios:in); /以读方式打开文件if(!i ndoctor)cout打开文件失败!endl;return;int lin e=0;string arr1005; /定义一个string类型的二维数组,用来保存从文本内读取的信息memset

11、(arr,0,sizeof(arr); /将数组清空while(!i ndoctor.eof() /文件不为空的条件设置cout2e ndl;in doctorarrli ne0arrli ne1arrli ne2arrli ne3arrli ne4;lin e+;string mz;cout mz;for(i nt i=0;ili ne;i+)if(arriO=mz)cout医生姓名:arri0 性别:arri1 年龄:arri2 诊费:arri3 元 专业:arri4endl;return;cout记录中没有此医生信息!endl;cout是否继续查询 y/n:t;if(t=y)zha ng

12、da nKin d();elsereturn;2.3增加患者信息void Hua nZhe:i nput()以写方式打开文件cout*患者基本信息 *endl;fstream outH( 患者.txt,ios:out|ios:app); / if(!outH)cout打开文件失败!endl;elsecout姓名:;cinn ame; outH n ame;cout sex;outHsex;cout age; outHage;cout诊费:;cino ffice_vist_fee; outHoffice_vist_feecout drug_fee; outHdrug_feee ndl; outH

13、.close();cout是否继续添加患者信息y/n:t;if(t=y)in put();elsereturn;2.4按姓名查询患者信息void Huan Zhe:zha ngda nKin d()fstream inH(患者.txt,ios:in); /以读方式打开文件if(!i nH)cout打开文件失败!arrline0arrline1arrline2arrline3arrline4;II 文件流读取数据lin e+;string mz;cout mz;for(i nt i=0;ili ne;i+)if(arriO=mz)cout患者姓名:arriO 性别:arri1 年龄:arri2

14、诊费:arri3 元药费:arri4元endl;return;cout记录中没有此患者的信息!endl;cout是否继续查询 y/n:t;if(t=y)zha ngda nKin d();elsereturn;2.5增加账单信息void zha ngda n:addzha ngda n()以写方式打开文件fstream outfile1( 账单.txt,ios:out|ios:app); / if(!outfile1)cout打开文件失败!endl;elsecout患者姓名:;cinn ame;outfile1 n ame;cout主治医生:;cinn ame;outfile1 n ame;c

15、out office_vist_fee;outfile1office_vist_fee;cout drug_fee;outfile1drug_fee;cout totl_fee;outfile1totl_feee ndl;outfile1.close();char t;cout是否继续添加账单信息y/n:t;if(t=y)addzha ngda n();elsereturn;2.6查询账单信息void zha ngda n:zha ngda nKin d()fstream infile1(账单.txt,ios:in); /以读方式打开文件if(!i nfile1)cout打开文件失败!endl

16、;return ;string arr1005;/定义一个string类型的二维数组,用来保存从文本内读取的信息int lin e=0;memset(arr,0,sizeof(arr); /将数组清空while(!i nfile1.eof() /文件不为空的条件设置文件流读in file1arrli ne0arrli ne1arrli ne2arrli ne3arrli ne4; /取数据lin e+;string mz;cout mz;for(i nt i=0;ili ne;i+)if(arriO=mz)stri ng xm;xm=arri1;cout患者姓名:arriO 费:arri2vv

17、元药费:arri3fstream indoctor( 医生.txt,ios:in); /医生姓名:arri1 诊元总费用:vvarri4v以读方式打开文件元e ndl;if(!i ndoctor)cout打开文件失败! arrl1arrl2arrl3arrl4; / l+;文件流读取数据for(i nt j=O;jl;j+)if(arrj0=xm)coutvv医生姓名:arrj0 性别:arrj1 龄:arrj2 诊费:arrj3 专业:arrj4endl;fstream inH( 患者.txt,ios:i n); /以读方式打开文件if(!i nH)cout打开文件失败! arrli n0a

18、rrli n1arrli n2arrli n3arrli n4; /数据文件流读取lin+;for(i nt z=0;zli n-1;z+)if(arri0=mz)cout患者姓名:arrz0vv 性别:arrz1vv 年 龄:arrz2 诊费:arrz3 药费:arrz4endl;return;cout记录中没有此患者的帐单信息!endl;cout是否继续查询y/n: t;if(t=y)zha ngda nKin d();elsereturn;2.7统计总费用void zha ngda n:totl_pay()fstream infile1( 账单.txt,ios:in); /以读方式打开文

19、件if(!i nfile1) cout打开文件失败!arrsli neOarrsli ne1arrli ne0arrli ne1arrli ne2; /读取数据lin e+;double a;double z=0.0;for(i nt i=0;ili ne-1;i+)a=arri2;z=z+a; cout所有患者的总费用为:z元endl;in file1.close();2.8登陆void landin g() stri ng n ame,code; couttt用户名:;cinn ame;if(n ame!=ya ngqi ng)couttt *该管理员不存在 * e ndl;landin

20、g();elsecout code;if(123456789=code)coutttt * 成功登入 * en dl; elsecouttt *密码错误,请重新输入 * e ndl;cout code; *密码* :.2.9增加信息界面void add in g()int a;doctor d;HuanZhe w;coute ndl;coute ndl;couttt $*增加信息界面 *$endl;coutn;couttt$:*$n;couttt$n;couttt$1.增加医生信息$ncouttt$2.增加患者信息$ncouttt$0.返回上一页$n;couttt$n;cout a;switc

21、h(a)case 1: d.i nput(); break;case 2: w.i nput(); break;case 0: break;default: cout输入数字错误!endl;2.10查询信息界面void search()int b;doctor d;HuanZhe w;coute ndl;coute ndl;Couttt$*查询信息界面*$endl;coutn;couttt$*$、n;couttt$n;couttt $1.查询医生信息$n;couttt$ 2.查询患者信息$n;couttt$ 0.返回上一页$n;couttt$n;couttt$*$n;cout请输入您选择的数字

22、:;cin b;switch(b)case 1:d.zha ngda nKin d();break;case 2:w.zha ngda nKin d();break;case 0:break;default:cout输入数字错误!endl;2.11账单信息界面void zha ngda nxin xi() int c;zha ngda n z; coute ndl; coute ndl;couttt$*账单信息 *$endl;coutn;couttt$*$n;couttt$n;couttt$ 1.增加账单信息$n;couttt$ 2.查询账单信息$n;couttt$3.统计总费用$n;cout

23、tt$ 0.返回上一页$n;couttt$n;couttt$*$n;coutvv请输入您选择的数字:;cin c;switch(c)case 1:z.addzha ngda n( );break;case 2:z.zha ngda nKin d();break;case 3:z.totl_pay();break;case 0:break; default: cout输入数字错误!endl;2.12主界面void surface()landin g(); / 登陆int choice;coutnn;while(1)couttt * * 欢迎使用诊所信息管理系统 * * endl;coutn;co

24、uttt$n;couttt$n;couttt$n;coutvtt$1.查询信息2.账单信息$ncouttt$3.增加信息0.退出系统$ncouttt$n;couttt$n;couttt$n; zha ngda n a;coutvv请输入您选择的数字:;cin choice;switch(choice)case 1:search(); break;case 2:zha ngda nxin xi(); break;case 3:addi ng(); break;endl; exit(0);case O:couttt欢迎下次使用本系统default:cout 输入数字错误!endl;2.13主函数v

25、oid mai n()int w;couttt$n;couttt$n;couttt$n;couttt$1.登录$n;couttt$0.退出系统$n;couttt$n;couttt$n;couttt$* *$nwhile(1)coutvv请输入数字:;cin w;switch(w)case 1:surface();break;case 0:exit(0);default: cout输入数字错误!endl;四、程序运行演示1、登陆x$*欢.迎使ffl诊所倍息管理系统一一q =5jangqinsf 123456789*成功 登入*5$ $ $1登忌0翹系统H:闲人勿动吐+ +课设诊所。鈕対诊所.E炬

26、1 3$ $ $ $自0询加 查増自耒 信系 SM2、查询信息2.1查询医生信息请输入您选择的数字瓷0-4$*三;医$1$|日5躍# -$P 划:男*il$ WMKW科KX旺EX耳杳询信鬥:界面耳算耳科耳科叭52同工一1:18诊费:999元 专业=全科欢迎凑用诊崩彳言息誉理系绕*IBS2.2查询患者信息3、账单信息3.1查询账单信息H:麻)人勿动: + +课设诊所Debug所心巳自aea j - 用页 单单费- 乘总上乂 加询计回 H 一 - 兰 12 3 8 兰喜盂?S“亠一一口bDSIeSt義奮窝性扇备$炉, 的= 择拦 邂 v!= r-3賣f;Mil:W:M;MalOf:M M; : I

27、t MF 耳 疋 K It 肯 $4.2增加患者信息$ 耳X河:M N M M豪冥M冥M还:M M貝図涎:M耳X洌何N M X洌輒拭M M送:9*忠伯 呈苹 男2022*十欢迎使用诊所信息管理系统* *XXlCltK XXXliC力M吕 6. 面:M XXK KK XX:M:$H:闲人勿动* + +喋设诊所Debug诊所.已炬X$12 0$ $ $ $ $.自5自-3生者一 加加冋77百继续添加患者信息五、总结反思经过几个星期的 C+课程设计的训练,我学到了很多,最主要的一点是怎样去运用自己学过的知识, 怎样去找到你所需要的资料,并在短时间把它运用到具体的实践中,运用到你所需要的方面。这个过程

28、是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了 自己想要的东西,这种获得是更深刻的。在做这个C+课程设计的时候,我原先也是学的不怎么好,什么是输入输出流,如何对文件进行操作,什么是继承与派生,等等,可以说是忘得差不多了。 然而,在这门课程设计中,这些方面却是特别重要的, 可以说,掌握了这个,你就完全可以完成自己的任务。这就要求我们要自己去学,自己去探索。当然,看书、问同学是必不可少的,还有 ,身边有非常丰富的网络资源给我们好好利用,百度就是个很不错的地方。这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力

29、。在本次课程设计中,我发现我对知识的运用不是那么准确,也就是说我对知识掌握的不够熟练。课 本上有的知识却不会运用,虽然在本次C+!程设计中,显示出一些我知识上的漏洞,经过这次编写诊所信息管理系统,我发现我熟练掌握了类的定义以及继承与派生,并对文件操作有了初步的掌握,课下还 应该继续努力,争取熟练掌握一门编程设计语言,在次基础上,在学习多种编程语言,以便以后可以用 到工作中去。当然,期间我也遇到了一些棘手的问题,在“账单.txt ”中,我希望能读取它每个患者账单的总费用并把它们求和,但是尝试了多次,检查了多次,读取文件内容的while循环一直是死循环,无法读取,终于,我发现了问题所在,并把代码修

30、改了一下,完美解决了问题。通过这次的课程设计, 我的诊所信息管理系统完美告终,让我进一步的了解到 C+在我们日常生活中的重要性,而且,也更进一步的激发了我学习这门语言的兴趣。经过这次的训练,我相信自己以后会用 更多的时间来把这门语言学好,掌握好这门必修的基础语言。六、源代码#in clude#in clude#in cludeusing n amespace std;class pers on / 人类 protected:stri ng n ame;stri ng sex; int age;double office_vist_fee;class doctor:public pers on

31、/ public:void in put(); /void zha ngda nKin d() ; / private:stri ng speicialty;void doctor:input() /医生类增加医生信息 按姓名查询医生信息增加医生信息以写方式打开文件cout* 主治医生基本信息 *e ndl; fstream outdoctor( 医生.txt,ios:out|ios:app); / if(!outdoctor)cout打开文件失败!endl;elsecout姓名:;cinn ame;outdoctor n ame;cout sex;outdoctorsex;cout age;

32、outdoctorage;cout office_vist_fee;outdoctoroffice_vist_fee cout speicialty;outdoctorspeicialtye ndl;outdoctor.close();void doctor:zha ngda nKin d() /按姓名查询医生信息fstream indoctor(医生.txt,ios:in); /以读方式打开文件if(!i ndoctor)cout打开文件失败!arrli ne0arrli ne1arrli ne2arrli ne3arrli ne4;lin e+;string mz;cout mz;for(

33、i nt i=O;ili ne;i+)if(arriO=mz)cout医生姓名:arriO性另U :arri1年龄:arri2 诊费:arri3 元专业:arri4endl;return;cout记录中没有此医生信息!endl;cout是否继续查询 y/n:t;if(t=y)zha ngda nKin d();elsereturn;class Huan Zhe:public pers on / 患者类public:void zha ngda nKin d(); /按姓名查询患者信息void in put(); /增加患者信息private:double drug_fee;void Hua nZ

34、he:i nput()cout* 患者基本信息 *endl;fstream outH( 患者.txt,ios:out|ios:app); /以写方式打开文件if(!outH)cout打开文件失败!endl;elsecout姓名:;cinn ame; outH n ame;cout sex;outHsex;cout age; outHage;cout诊费:;cino ffice_vist_fee; outHoffice_vist_fee;cout药费:;outH.close();cout是否继续添加患者信息y/n:t;if(t=y)in put();elsereturn;void Huan Zh

35、e:zha ngda nKin d()fstream inH( 患者.txt,ios:in); /以读方式打开文件if(!i nH)cout打开文件失败!arrline0arrline1arrline2arrline3arrline4;/ 文件流读取数据lin e+;string mz;cout mz;for(i nt i=0;ili ne;i+)if(arriO=mz)cout患者姓名:arriO性别:arri1年龄:arri2 诊费:arri3 元 药费:arri4元endl;return;cout记录中没有此患者的信息!endl;cout是否继续查询 y/n:t;if(t=y)zha ngda nKin d();elsereturn;/帐单类/增加账单信息/按姓名查询账单信息class zha ngda n public:void totl_pay();void addzha ngda n(); vo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论