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

上传人:牧羊曲112 文档编号:3950040 上传时间:2023-03-28 格式:DOCX 页数:32 大小:661.92KB
返回 下载 相关 举报
诊所信息管理系统C课程设计报告.docx_第1页
第1页 / 共32页
诊所信息管理系统C课程设计报告.docx_第2页
第2页 / 共32页
诊所信息管理系统C课程设计报告.docx_第3页
第3页 / 共32页
诊所信息管理系统C课程设计报告.docx_第4页
第4页 / 共32页
诊所信息管理系统C课程设计报告.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

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

1、课程设计成果学院 : 计算机工程学院班 级:学生姓名 :学 号 :设计地点(单位) B5-101 ERP 实验室 设计题目 :诊所信息管理系统设计完成日期: 2016 年 6 月 25 日指导教师评语 :成绩( 五级记分制 ):教师签名:目录1 需求分析 . 31.1 问题描述 31.2 主体功能 31.3 问题的解决方案 31.4 开发环境 . 32 概要设计 42.1 数据设计 42.2 结构设计 43 详细设计 53.1 类实现 53.2 主函数实现 63.3 模块设计 64 系统测试 114.1 测试数据 114.2 测试结果 . 124.3 课程设计过程中遇到的问题 165 总结 1

2、7参考文献 18附录 源程序代码 191 需求分析 随着经济的迅速发展,人们的生活水平得到显著提高。医疗服务行业也在人们生活中 占据了最重要的一环,随着医改的实施,看病难,看病贵的问题得到了解决,所以为了存 储患者信息以及医生信息,为了小型诊所管理的正规化,方便化,诊所信息管理系统在此 背景下诞生。面对发展的需要通过专门的管理系统来系统化、 规范化以及高效地实现小型诊所管理。 并且随着计算机技术的快速发展,计算机的应用逐渐普及和深入,同时计算机软件的需求 特日益增长, C+语言是当前最流行的和实用的计算机程序语言。模拟诊所信息管理系统就是对存储患者信息以及医生信息在个人PC上的编程实现。本系统

3、采用了用户身份的注册、登陆、增加信息、查询信息、帐单信息以及统计所有患者的 总费用等功能。并分析在现实生活中遇到的问题并得到解决。1.1 问题描述 完成小型诊所的简单信息管理程序,掌握类的设计以及继承和派生的应用。1.2 主体功能设计人类( Person 类)和医生类( Doctor 类),在此基础上,通过增加患者和账单, 使它们公用于表示一家诊所的信息管理。(1)在一条医生记录中, 包括医生的专业说明 (specialty ),如内科医生( surgeon )、 儿科医生( pediatrician ) 、产科医生( obstetrician )及全科医生( general practiti

4、oner )。(2)Doctor 记录还含有诊费( office_vist_fee )。(3)在一条患者记录中,包括该患者产生的药费 (drug_fee) ,患者的诊费(即医生 的诊费)。(4)在一条账单记录中,包括一条患者对象、 该患者对应得主治医生、 该患者产生的 诊费和药费。(5)应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息。(6)能够统计出所有患者的总费用。1.3 问题的解决方案 根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;

5、(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。1.4 开发环境开发系统: Windows 系统,处理器要求最低奔腾处理器, 内存 32m,建议在 i5 处理器, 128m内存配置下调试。编译集成软件: Microsoft Visual C+ 6.0编译器。Microsoft Visual C+ 6.0编译器。是一个强大的 C/C+软件开发工具,操作简单,使用非常广泛,为很多程序员的首选开发工具。2 概要设计2.1 数据设计2.1.1 类设计分别定义了 person 人类、 doctor 医生类、 HuanZh

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

7、office_vist_fee )、药费( drug_fee )、总费用(totl_fee ),包含了成员函数 totl_pay() 用于把总费用从 D:bb.txt 文件移到 D:cc.txt ,pay() 统计该系统中所有患者的总费 用, addzhangdan() 增加账单信息, zhangdanKind() 按姓名查询账单信息。2.1.2 类之间的关系在该系统中医生与患者都有数据成员姓名( name)、性别( sex)、年龄( age)以及诊 费( office_vist_fee );所以把这些数据成员定义在基类 person 人类中, doctor 医生类 与 HuanZhe患者类公

8、有继承于基类 person 人类。2.1.3 函数设计在 doctor 医生类中,包含了成员函数 input() 增加医生信息, zhangdanKind() 按姓名 查询医生信息;在 HuanZhe患者类中,包含了成员函数 input() 增加患者信息, zhangdanKind() 按姓名查询患者信息; 在 zhangdan 帐单类中,包含了成员函数 totl_pay() 用于把总费用从 D:bb.txt 文件移到 D:cc.txt ,pay() 统计该系统中所有患者的总费 用,addzhangdan() 增加账单信息, zhangdanKind() 按姓名查询账单信息。 在该系统中, 还

9、 包含了普通函数 addinfor() 增加信息界面实现, select() 查询信息界面实现, zhangdanxinxi() 账单信息界面实现, add_zhuce() 实现注册用户, welcome() 验证用户登 陆, 登陆成功显示欢迎信息, Please() 诊所信息管理系统主界面的实现。2.2 结构设计2.2.1 系统流程图查询医生信息添加医生信息查询信息查询患者信息图 2.1 系统流程图2.2.2 界面设计addinfor() 增加信息界面包括了 1. 增加医生信息 2. 增加患者信息 0. 退出; select() 查询信息界面包括了 1. 查询医生信息 2. 查询患者信息 0

10、. 退出; zhangdanxinxi() 账单信息界面包括了 1. 增加账单信息 2. 查询账单信息 0. 退出; Please() 诊所信息管理系统主界面包括了 1. 查询信息 2. 账单信息 3. 增加信息 4. 统计 总费用 0. 退出系统;main() 主函数界面包括了 1.用户登录 2.用户注册 0. 退出系统。在这些界面的实现中 用 switch() 语句做选择。3 详细设计3.1 类实现class person / 人类protected:string name;char sex;int age;double office_vist_fee;public:person() pe

11、rson() ;class doctor : public person /医生类private:char speicialty15;public:doctor() void input() ; / 增加医生信息void zhangdanKind() ; / 按姓名查询医生信息doctor() ;class HuanZhe : public person /患者类private:double drug_fee;public:HuanZhe()void input() ; / 增加患者信息void zhangdanKind() ; / 按姓名查询患者信息HuanZhe() ;class zhan

12、gdan / 帐单类string name;double drug_fee;double office_vist_fee;文件移到 D:cc.txtdouble totl_fee; public: zhangdan() void totl_pay() ; void pay() ; / void zhangdanKind() zhangdan() ;3.2 主函数实现/ 用于把总费用从 D:bb.txt 实现统计所有患者总费用 ;/ 按姓名查询账单信息void main()/ 主函数/system(color 3F);int w;couttt* * * n;coutttn;coutttn;cou

13、ttt1.用户登录n;couttt2.用户注册n;couttt0.退出系统n;coutttn;coutttn;couttt* * n;while(1)cout 请输入数字 :;cinw;switch(w)case 1:Please(); break;case 2:add_zhuce(); break;case 0:exit(0);default: cout输入数字错误 !endl;3.3 模块设计增加医生信息如图 3.1 所示;开始aa.txt,ios:out|ios:app); outfile 女sline;line+;结束图 3.4 统计所有患者总费用函数增加账单信息如图 3.5 所示图

14、3.5 增加账单信息函数 实现注册用户如图 3.6 所示按姓名查询账单如图 3.7 所示开始char t; fstream infile1打开文件失败!infile1!infile1.eof()string arr100100; int line=0;infile1arrline0arrline1ar rline2arrline3arrline4;line+;cinna;int i=0;cint;输出arrl0arrl1arrl2arrl3arrl4; l+;! infile3arrj0=xm打开文件失败!输出int lin=0;nfile3.eof()infile3arrlin0arrlin

15、1arrlin2arrlin3arrlin4;lin+;int z=0;zlin-1;rri0=na输出图 3.7 按姓名查询账单函数验证用户登陆 , 登陆成功显示欢迎信息如图 3.8 所示图 3.8 登录成功显示欢迎函数4 系统测试4.1 测试数据序号输入内容说明截图12,zhangsan,123456输 2 注册 , 输入姓名及密码 , 显示成功图 4.121输 1 进入登录界面图 4.231登录后显示诊所信息管理系统主界面图 4.343在总界面输 3 进增加信息界面图 4.451,lisi,f,32,4.5,erkeyisheng输入要增加医生的相关信息图 4.562,wangfang,

16、m,12,4.5,10输入要增加患者的相关信息图 4.671在总界面输 1 进入查询界面图 4.781,lisi输 1 查询医生信息界面 , 输入姓名得相 关信息图 4.892,wangfang输 2 查询患者信息界面,输入姓名得相 关信息图 4.9102主界面输 2 进入帐单信息界面图 4.10111,wangfang,lisi,4.5,10,14.5输 1 进入增加账单界面,输入相关信息图 4.11122,wangfang输 2 进入查询账单界面,输患者姓名得 到查询结果图 4.12134在主界面输 4 进入统计总费用界面图 4.13140在主界面输 0 退出系统图 4.144.2 测试结

17、果1.用户注册与登陆(1) 用户注册界面如图 4.1 所示图 4.1(2) 用户登陆界面如图 4.2 所示。图 4.22诊所信息管理系统主界面如图 4.3 所示。图 4.33增加信息界面如图 4.4 所示。图 4.4(1) 增加医生信息如图 4.5 所示。图 4.5(2) 增加患者信息如图 4.6 所示。图 4.64查询信息界面如图 4.7 所示。图 4.7(1) 查询医生信息如图 4.8 所示。图 4.8 (2) 查询患者信息如图 4.9 所示。图 4.9图 4.10图 4.11(2) 查询帐单信息如图 4.12 所示。5帐单信息界面如图 4.10 所示。(1) 增加帐单信息如图 4.11

18、所示图 4.126统计功能实现如图 4.13 所示图 4.13(7) 退出系统界面如图 4.14 所示。图 4.144.3 课程设计过程中遇到的问题(1) 在 switch 语句中注意 break 和 return 的使用 , 用 return 会出现 Press any key to coninue 导致没有执行完的程序结束。(2) 数据类型在类中设的与后来添加的类型不一致,导致错误。(3) 写入文件与输出时出现错误。5 总结经过一个多星期的 C+课程设计的训练 , 我学到了很多,最主要的一点是怎样去运用自 己学过的知识, 怎样去找到你所需要的资料, 并在短时间把它运用到具体的实践中 ,运用

19、到 你所需要的方面。这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后, 自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。在做这个 C+课程设计的时候,我原先也是学的不怎么好,什么是结构体数据 , 什么是 定义类型,怎样在一个 main 函数中调用别的定义函数,等等, 可以说是忘得差不多了。 然 而,在这门课程设计中 , 这些方面却是特别重要的,可以说,掌握了这个 ,你就完全可以完 成自己的任务。 这就要求我们要自己去学, 自己去探索。当然,看书、问同学是必不可少的, 还有, 身边有非常丰富的网络资源给我们好好利用 ,百度就是个很不错的地方。这样就从另 一方

20、面锻炼了我们检索知识获取信息的能力, 在这个过程中 , 可以学到的是一种提升自我的 能力。当然, 由于个人能力所限, 这份课程设计有一些别的方面还是要参考人家的的资料, 在 读懂别人材料的同时,自己取人所长,补己之短,经过多次的调试 , 总结,最后交出一份自 己比较满意的答卷。在本次课程设计中,我发现我对知识的运用不是那么准确,也就是说我对知识掌握的 不够熟练。课本上有的知识却不会运用,虽然在本次 C+课程设计中,显示出一些我知识 上的漏洞,经过这次编写诊所信息管理系统,我发现我熟练掌握了类的定义以及继承与派 生,并对文件操作有了初步的掌握,课下还应该继续努力,争取熟练掌握一门编程设计语 言,

21、在次基础上,在学习多种编程语言,以便以后可以用到工作中去。通过这次的课程设计, 终于我的诊所信息管理系统完美告终, 让我进一步的了解到 C+ 在我们日常生活中的重要性, 而且,也更进一步的激发了我学习这门语言的兴趣 . 经过这次 的训练,我相信自己以后会用更多的时间来把这门语言学好, 掌握好这门必修的基础语言。参考文献1 李素若,杜华兵编, C+面向对象程序设计 . 中国水利水电出版社 .2013 年.2 谭浩强编, C+面向对象程序设计 . 北京:清华大学出版社, 2006 年.3 安志远,贾振华主编, C+程序设计基础 . 北京:高等教育出版社, 2009.64 王超, C+程序设计 .

22、北京:地质出版社, 2006.825 王继明, C+程序设计与应用开发 M. 北京:清华出版社, 2008.附录 源程序代码#include #include #include #include #include using namespace std;class person / 人类protected:string name;char sex;int age;double office_vist_fee;public:person() person() ;class doctor : public person / 医生类private:char speicialty15;public:d

23、octor() void input() / 增加医生信息char t;以写方式打开文件cout* 主治医生基本信息 *endl; fstream outfile(D:aa.txt,ios:out|ios:app); / if(! outfile)cout 打开文件失败! endl;elsecoutname; outfilename ; coutsex; if(sex=m|sex=M) outfile 男 ;else if(sex=f|sex=F) outfile 女 ;elsecoutsex;if(sex=m|sex=M) outfile 男 ;else if(sex=f|sex=F) ou

24、tfile 女 ;coutage; outfileage ;coutoffice_vist_fee; outfileoffice_vist_fee coutspeicialty; outfilespeicialtyendl;out();cout 是否继续添加医生信息 Y/N:t;if(t=y)input();elsereturn;void zhangdanKind() / 按姓名查询医生信息 char t;fstream infile2(D:aa.txt,ios:in); / 以读方式打开文件cout 打开文件失败! return ;int line=0;string arr100100; /

25、memset(arr,0,sizeof(arr); /arrline0arrline1arrline2arrline3arrline4;line+;string na;coutna;for(int i=0;iline;i+)if(arri0=na)cout 医生姓名 :arri0 龄 :arri2 诊费 :arri3元 return;cout 记录中没有此医生信息 !endl;cout 是否继续查询 Y/N:t;if(t=y)zhangdanKind();elsereturn;doctor() ;class HuanZhe : public person /患者类private:double

26、drug_fee;public:HuanZhe()void input() / 增加患者信息char t;cout* 患者基本信息 *endl;fstream outfile(D:ee.txt,ios:out|ios:app); / if(! outfile)cout 打开文件失败! endl;else性别 :arri1 专业 :arri4endl;以写方式打开文件coutname; outfilename coutsex;if(sex=m|sex=M) outfile 男 ;else if(sex=f|sex=F) outfile 女 elsecoutsex;if(sex=m|sex=M)

27、outfile 男 ;else if(sex=f|sex=F) outfile 女 ;coutage; outfileage ;coutoffice_vist_fee; outfileoffice_vist_fee coutdrug_fee; outfiledrug_feeendl;out();cout 是否继续添加患者信息 Y/N:t;if(t=y)input();elsereturn;void zhangdanKind() / 按姓名查询患者信息 char t;fstream infile2(D:ee.txt,ios:in); / 以读方式打开文件if(! infile2)cout 打开文

28、件失败! arrline0arrline1arrline2arrline3arrline4;/ 文件流读取数据line+;string na;coutna;for(int i=0;iline;i+)if(arri0=na)cout 患者姓名 :arri0 性别 :arri1 年 龄 :arri2 诊费 :arri3元 药费 :arri4元endl;return;cout 记录中没有此患者的信息 !endl;cout 是否继续查询 Y/N:t;if(t=y)zhangdanKind();elsereturn;HuanZhe() ;class zhangdan / 帐单类string name;d

29、ouble drug_fee;double office_vist_fee;double totl_fee;public:zhangdan() void totl_pay() / 用于把总费用从 D:bb.txt 文件移到 D:cc.txtstring a;fstream infile1(D:bb.txt,ios:in); / 以读方式打开文件if(! infile1)return ;string arr100100; /cout 打开文件失败! arrline0arrline1arrline2arrline3arrline4;/ 文件流读取数据line+;for(int i=0;iline;

30、i+)fstream outfile4(D:cc.txt,ios:out|ios:app); / 以写方式打开文件 if(! outfile4)cout 打开文件失败! endl;elsea=arri4;outfile4aendl;out();in();void pay() / 实现统计所有患者总费用double a;double z=0.0;fstream infile4(D:cc.txt,ios:in); /以读方式打开文件if(! infile4)cout 打开文件失败! sline; / 文件流读取数据line+;for(int i=0;iline-1;i+)a=si;z=z+a;co

31、ut 所有患者的总费用为 :z 元 endl;in();void addzhangdan() / 增加账单信息fstream outfile3(D:bb.txt,ios:out|ios:app); / 以写方式打开文件 if(! outfile3)cout 打开文件失败! endl;elsecoutname; outfile3name ;coutname; outfile3name ;coutoffice_vist_fee; outfile3office_vist_fee coutdrug_fee; outfile3drug_fee ;couttotl_fee; outfile3totl_fe

32、eendl;out();char t;cout 是否继续添加账单信息 Y/N:t;if(t=y)addzhangdan();elsereturn;按姓名查询账单信息void zhangdanKind() /char t;cout 打开文件失败!return ;string arr100100; /int line=0;memset(arr,0,sizeof(arr); /fstream infile1(D:bb.txt,ios:in); / 以读方式打开文件 if(! infile1)arrline0arrline1arrline2arrline3arrline4;/ 文件流读取数据line+

33、; string na;coutna;for(int i=0;iline;i+)if(arri0=na) string xm;xm=arri1;cout 患者姓名 :arri0 医生姓名 :arri1 诊 费 :arri2元 药费:arri3 元 总费用 :arri4元endl;fstream infile2(D:aa.txt,ios:in); / 以读方式打开文件 if(! infile2)cout 打开文件失败! arrl0arrl1arrl2arrl3arrl4; / 文 件流读取数据l+;for(int j=0;jl;j+)if(arrj0=xm)cout 医生姓名 :arrj0 性别 :arrj1 年龄 :arrj2 诊费:arrj3 专业 :arrj4endl; fstreaminfile3(D:ee.txt,ios:in); /以读方式打开文件if(! infile3)cout 打开文件失败! arrlin0arrlin1arrlin2arrlin3arrli

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号