诊所信息管理系统.docx_第1页
诊所信息管理系统.docx_第2页
诊所信息管理系统.docx_第3页
诊所信息管理系统.docx_第4页
诊所信息管理系统.docx_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

湖南第一师范学院信息科学与工程学院课程设计报告所 属 专 业: 计算机科学与技术 _ _ 课 程 名 称:_ _ C+课程设计_ _ _课程设计名称:_ _诊所信息管理系统_ _ 学 号:姓 名:_ 王晓萍_ _指 导 教 师:_杨恒伏、伍智平_2015年 12 月湖南第一师范学院课程设计任务书2015 -2016 学年第 1学期院(部) 信息科学与工程学院 专业 计算机科学与技术 班级 14计科1班 课程名称: C+课程设计_ 设计题目: 诊所信息管理系统_ _ 完成期限:自 2015 年 12 月 28 日至 2016 年 1 月 8 日共 2 周目的及任务进度安排起止日期2015.12.28选题,系统背景调查与文献资料收集,实验平台构建2015.12.292015.12.31系统需求分析、系统概要设计、类的设计2016.1.12016.1.4系统详细设计与编码实现2016.1.52016.1.8系统测试与完善、文档整理与课程设计报告撰写主要参考资料 2(美)梅因等著, 金名等译. 数据结构与面向对象程序设计(C+版)(第4版). 清华大学出版社, 2012.53梅险, 曲蔚, 孙建业编. C/C+程序设计案例教程实验与实训指导. 高等教育出版社, 2014.3指导教师(签字): 年 月 日教研室主任(签字): 年 月 日目 录第一章 绪论41.1课程设计的目的41.2课程设计的意义和背景41.2.1课程设计的背景41.2.2课程设计的意义41.3课程设计的环境参考文件5第二章 需求与分析52.1 问题的描述52.2 功能的要求52.3 问题的解决方案6第三章 系统设计63.1 数据设计6 3.1.1类的设计7 3.1.2类之间的关系8 3.1.3函数设计93.2系统流程图12第四章系统实现13 4.1类的实现13 4.2函数实现13 4.3主函数实现14第五章系统测试145.1模块测试. 135.2课程设计过程中遇到的问题13总结13附件13第一章绪论 11 课程设计的目的(1)要求学生能够熟练掌握C+语言的基本知识和技能。(2)基本掌握面向对象程序设计的基本思路和方法。 (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。12 课程设计的背景和意义 121 课程设计的背景 1. 理论研究基础 (1)分析系统流程,并会画出流程图; (2)熟练掌握C+程序设计语言。 2. 技术层面的支持 C+面向对象程序设计中的类的声明与对象定义的熟练使用;以及继承、派生的熟练使用。122 课程设计的意义 在经过了一个学期对C+程序设计的学习,课程设计可以很好的检验所学知识,对自身来说,是个查漏补缺的好时机,可以将所学知识进行复习与巩固,将前面所有知识综合起来,很好的联系在一起,有机结合,形成知识网络体系,将知识融会贯通,可以让自己进一步熟练掌握程序设计语言,并能熟练运用。 13 课程设计环境 软件:WindosXP系统,Microsoft Visual C+ 6.0编译器。硬件:联想双核处理器,二G内存,二G独立显卡,80G硬盘。 第二章 需求分析 21 问题描述 完成小型诊所的简单信息管理程序,掌握类的设计以及继承和派生的应用。 22 功能要求(1)在一条医生记录中,包括医生的专业说明(specialty),如内科医生(surgeon)、儿科医生(pediatrician) 、产科医生(obstetrician)及全科医生(general practitioner)。(2)Doctor记录还含有诊费(office_vist_fee)。(3)在一条患者记录中,包括该患者产生的药费(drug_fee) ,患者的诊费(即医生的诊费)。(4)在一条账单记录中,包括一条患者对象、该患者对应得主治医生、该患者产生的诊费和药费。(5)应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息。(6)能够统计出所有患者的总费用。23 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。 第三章 系统设计 31 数据设计 311 类设计 分别定义了person人类、doctor医生类、HuanZhe患者类以及帐单类;在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()用于把总费用从D:bb.txt文件移到D:cc.txt,pay()统计该系统中所有患者的总费用,addzhangdan()增加账单信息,zhangdanKind()按姓名查询账单信息。312 类之间的关系 在该系统中医生与患者都有数据成员姓名(name)、性别(sex)、年龄(age)以及诊费(office_vist_fee);所以把这些数据成员定义在基类person人类中,doctor医生类与HuanZhe患者类公有继承于基类person人类313 函数设计在doctor医生类中,包含了成员函数input()增加医生信息,zhangdanKind()按姓名查询医生信息;在HuanZhe患者类中,包含了成员函数input()增加患者信息,zhangdanKind()按姓名查询患者信息;在zhangdan帐单类中,包含了成员函数totl_pay()用于把总费用从D:bb.txt文件移到D:cc.txt,pay()统计该系统中所有患者的总费用,addzhangdan()增加账单信息,zhangdanKind()按姓名查询账单信息。在该系统中,还包含了普通函数addinfor()增加信息界面实现,select()查询信息界面实现,zhangdanxinxi() 账单信息界面实现,add_zhuce()实现注册用户,welcome()验证用户登陆,登陆成功显示欢迎信息,Please()诊所信息管理系统主界面的实现。32系统流程图诊所信息管理系统PersonDoctor 姓名药费医生信息诊费专业姓名总费用322 界面设计addinfor()增加信息界面包括了1. 增加医生信息2. 增加患者信息0. 退出;select()查询信息界面包括了1. 查询医生信息2. 查询患者信息0. 退出;zhangdanxinxi() 账单信息界面包括了1. 增加账单信息2. 查询账单信息0. 退出;Please()诊所信息管理系统主界面包括了1.查询信息2.账单信息3.增加信息4.统计总费用0.退出系统;main()主函数界面包括了1.用户登录2.用户注册0.退出系统。在这些界面的实现中用switch()语句做选择。第四章 系统实现4.1类的实现1 类实现class person /人类 protected: string name; char sex; int age;double office_vist_fee;public: person() person() ;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() 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)outfile女 ;coutage; outfileage ;coutoffice_vist_fee; outfileoffice_vist_fee ;coutspeicialty; outfilespeicialtyendl;outfile.close();cout是否继续添加医生信息Y/N.:t;if(t=y)input();elsereturn;void zhangdanKind() /按姓名查询医生信息char t;fstream infile2(D:aa.txt,ios:in); /以读方式打开文件if(! infile2)cout打开文件失败!arrline0arrline1arrline2arrline3arrline4; line+;string na;coutna;for(int i=0;iline;i+)if(arri0=na)cout 医生姓名:arri0 性别:arri1 龄:arri2 诊费:arri3元 专业:arri4endl; return;cout记录中没有此医生信息!endl;cout是否继续查询Y/N.:t;if(t=y)zhangdanKind();elsereturn;doctor() ;class HuanZhe : public person /患者类 年12private:double drug_fee; public:HuanZhe()void input() /增加患者信息char t;cout*患者基本信息*endl;fstream outfile(D:ee.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)outfile女 ;coutage; outfileage ;coutoffice_vist_fee; outfileoffice_vist_fee ; coutdrug_fee; outfiledrug_feeendl; outfile.close(); cout是否继续添加患者信息Y/N.:t; if(t=y) void zhangdanKind() /按姓名查询患者信息 char t; fstream infile2(D:ee.txt,ios:in); /以读方式打开文件 if(! infile2) cout打开文件失败!arrline0arrline1arrline2arrline3arrline4; /文件流读取 line+; string na; coutna; for(int i=0;iarrline0arrline1arrline2arrline3arrline4; /文件流读line+;for(int i=0;iline;i+)fstream outfile4(D:cc.txt,ios:out|ios:app); /以写方式打开文件if(! outfile4)cout打开文件失败!endl;elsea=arri4;outfile4aendl;outfile4.close();infile1.close();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;cout所有患者的总费用为:z元endl;infile4.close();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_feeendl;outfile3.close();char t;cout是否继续添加账单信息Y/N.:t;if(t=y)addzhangdan();elsereturn;取数据void zhangdanKind() /按姓名查询账单信息 char t; fstream infile1(D:bb.txt,ios:in); /以读方式打开文件 if(! infile1) cout打开文件失败!arrline0arrline1arrline2arrline3arrline4; /文件流读 line+; 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; /文件流读取数据龄:arrj2数据l+; for(int j=0;jl;j+) if(arrj0=xm) cout 医生姓名:arrj0 性别:arrj1 年 诊费:arrj3 专业:arrj4endl; fstream infile3(D:ee.txt,ios:in); /以读方式打开文件 if(! infile3) cout打开文件失败!arrlin0arrlin1arrlin2arrlin3arrlin4; /文件流读取lin+; for(int z=0;zaline0aline1; /文件流读取数据 line+; for(int i=0;iline;i+) outfile5name ; coutcode; coutcode1; if(code!=code1) cout您两次输入的密码不一致!谢谢使用本系统注册用户界面!欢迎下次使if(ai0=name) cout此用户已存在!谢谢使用本系统注册用户界面!欢迎下次使用!endl; exit(0); 用!endl; exit(0); else outfile5code1endl; cout谢谢使用本系统注册用户界面!您已注册成功!endl; outfile5.close();void welcome() /验证用户登陆,登陆成功显示欢迎信息string name,code;int mark=0;fstream infile(D:dd.txt,ios:in);if(!infile)cerr打开文件错误aline0aline1; /文件流读取数据line+;coutname;int m=-1;for(int i=0;iline;i+)if(ai0=name)m=i;mark=i;break;if(m=-1)couttt*该用户不存在,请注册用户*endl; add_zhuce();coutcode;for(int j=0;j2;j+)if(amark1=code)cout成功登入*endl;break;elsecout密码错误,请重新输入*endl; coutcode;void addinfor() /增加信息界面实现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; cout请输入您选择的数字:;cina;switch(a)case 1: d.input(); break;case 2: w.input(); break;case 0: break;default: cout输入数字错误!endl;void select() /查询信息界面实现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;void zhangdanxinxi() /账单信息界面实现 couttt n; couttt 1.查询信息 2.账单信息 n; couttt 3.增加信息 4.统计总费用 n; couttt 0.退出系统 n; couttt n; couttt n; couttt*n; zhangdan a; cout请输入您选择的数字:; cinchiose; switch(chiose) case 1: select(); break; case 2: zhangdanxinxi(); break; case 3: addinfor(); break; case 4: a.totl_pay(); a.pay(); break; case 0: couttt欢迎下次使用本系统endl; exit(0); default: cout输入数字错误!endl; 43 主函数实现void main()/主函数/system(color 3F); int w; couttt*n; couttt n; couttt n; couttt 1.用户登录 n; couttt 2.用户注册 n; couttt 0.退出系统 n; couttt n;couttt n; couttt*n; while(1)cout请输入数字:;cinw;switch(w)case 1:Please(); break;case 2:add_zhuce(); break;case 0:exit(0);default: cout输入数字错误!endl;第五章系统设置51 模块测试1.用户注册与登陆(1)用户注册界面如图5-01所示。图5-01(2)用户登陆界面如图5-02所示。图5-022诊所信息管理系统主界面如图5-03所示。图5-033增加信息界面如图5-04所示。如图5-044查询信息界面如图5-05所示。图5-05(1)查询医生信息如图5-05-1所示。图5-05-1(2)查询患者信息如图5-05-2所示。图5-05-25帐单信息界面如图5-06所示。图5-06(1)增加帐单信息如图5-06-1所示。图5-06-1(2)查询帐单信息如图5-06-2所示。图5-06-26统计功能实现如图5-07所示。图5-07(7)退出系统界面如图5-08所示。图5-085.2课程设计过程中遇到的问题(1)在switch语句中注意break和return的使用用return会出现Press any key to coninue导致没有执行完的程序结束。(2)数据类型在类中设的与后来添加的类型不一致,导致错误。(3)写入文件与输出时出现错误。总结经过一个多星期的C+课程设计的训练,我学到了很多,最主要的一点是怎样去运用自己学过的知识,怎样去找到你所需要的资料,并在短时间把它运用到具体的实践中,运用到你所需要的方面。这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。在做这个C+课程设计的时候,我原先也是学的不怎么好,什么是结构体数据什么是定义类型,怎样在一个main函数中调用别的定义函数,等等,可以说是忘得差不多了。然而,在这门课程设计中,这些方面却是特别重要的,可以说,掌握了这个你就完全可以完成自己的任务。这就要求我们要自己去学,自己去探索。当然看书、问同学是必不可少的,还有身边有非常丰富的网络资源给我们好好利用百度就是个很不错的地方。这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力。当然由于个人能力所限,这份课程设计有一些别的方面还是要参考人家的的资料,在读懂别人材料的同时,自己取人所长,补己之短,经过多次的调试总结最后交出一份自己比较满意的答卷。在本次课程设计中,我发现我对知识的运用不是那么准确,也就是说我对知识掌握的不够熟练。课本上有的知识却不会运用,虽然在本C+课程设计中,显示出一些我知识上的漏洞,经过这次编写所信息管理系统,我发现我熟练掌握了类的定义以及继承与派生,并对文件操作有了初步的握,课下还应该继续努力,争取熟练掌握一门编程设计语言,在次基础上,在学习多种编程语言,以便以后可以用到工作中去。通过这次的课程设计,终于我的诊所信息管理系统完美告终让我进一步的了解到C+在我们日常生活中的重要性,而且,也更进一步的激发了我学习这门语言的兴趣经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。参考文件1谭浩强,C+面向对象程序设计-北京:清华大学出版社,2006.1 2 谭浩强,C+面向对象程序设计题解与上机指导-北京:清华大学出版社,2006.3 3安志远,贾振华主编,C+程序设计基础-北京:高等教育出版社,

温馨提示

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

评论

0/150

提交评论