已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计(C+)课程大作业 报告题目: 学生成绩管理系统设计 系 部: 计算机科学与信息工程 专 业: 计算机科学与技术 班 级: 信息与技术15-1 姓名学号: 李兰兰蒋嫚指导老师: 李源 2016 年 12月 目录摘 要1第1章 绪论21.1 课程设计的目的与要求21.2 课程设计的背景和意义21.2.1课程设计的背景21.2.2 课程设计的意义21.3 课程设计环境3第2章 需求分析32.1 问题描述32.2 功能要求32.3 问题的解决方案4第3章 系统设计43.1 数据设计43.1.1 类设计43.1.2 类之间的关系53.2 结构设计53.2.1 系统流程图53.2.2 界面设计5第4章 系统实现64.1 类实现104.2 函数实现16第5章 系统测试185.1 模块测试195.2 课程设计过程中遇到的问题22总 结23 源代码.24致谢24参考文献36 摘 要随着经济的迅速发展,人们的生活水平得到显著提高。医疗服务行业也在人们生活中占据了最重要的一环,随着医改的实施,看病难,看病贵的问题得到了解决,所以为了存储患者信息以及医生信息,为了小型诊所管理的正规化,方便化,诊所信息管理系统在此背景下诞生。面对发展的需要通过专门的管理系统来系统化、规范化以及高效地实现小型诊所管理。并且随着计算机技术的快速发展,计算机的应用逐渐普及和深入,同时计算机软件的需求特日益增长,C+语言是当前最流行的和实用的计算机程序语言。模拟诊所信息管理系统就是对存储患者信息以及医生信息在个人PC上的编程实现。本系统采用了用户身份的注册、登陆、增加信息、查询信息、帐单信息以及统计所有患者的总费用等功能。并分析在现实生活中遇到的问题并得到解决。关键词:系统设计 诊所 模拟系统 存储信息第 1 页第1章 绪论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硬盘。第2章 需求分析21 问题描述完成小型诊所的简单信息管理程序,掌握类的设计以及继承和派生的应用。22 功能要求设计人类(Person类)和医生类(Doctor类),在此基础上,通过增加患者和账单,使它们公用于表示一家诊所的信息管理。(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)完成系统总结报告。第3章 系统设计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 结构设计321 系统流程图添加医生信息诊所信息管理系统登录添加账单信息查询账单信息注册添加信息查询信息账单信息退出系统添加患者信息查询医生信息查询患者信息 图3-2-1 系统流程图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章 系统实现41 类实现class person/人类 protected:string name;string sex;int age;double office_vist_fee;class doctor/医生类public:void input(); /增加医生信息void zhangdanKind() ; /按姓名查询医生信息private:string speicialty;class HuanZhe/患者类 public:void zhangdanKind(); /按姓名查询患者信息void input(); /增加患者信息private:double drug_fee; ;Class zhangdan/账单类 public:void totl_pay();void addzhangdan();/ 增加账单信息void zhangdanKind();/按姓名查询账单信息private:string name;double drug_fee;double office_vist_fee;double totl_fee;class person /人类public:string name;string sex;int age;double office_vist_fee;class doctor:public person /医生类public:void input(); /增加医生信息void zhangdanKind() ; /按姓名查询医生信息public:string speicialty; 42 函数实现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() /按姓名查询医生信息char t;fstream infile2(医生.txt,ios:in); /以读方式打开文件if(! infile2)cout打开文件失败!di.sexdi.age di.office_vist_feedi.speicialty;i+;string na; coutna;int j;for(j=0;ji;j+)if(=na)cout 医生姓名: 性别:dj.sex 年龄:dj.age 诊费:dj.office_vist_fee元 专业:dj.speicialtyendl;return;cout记录中没有此医生信息!endl;cout是否继续查询Y/N.:t; if(t=y|t=Y)zhangdanKind();elsereturn;class HuanZhe:public person /患者类 public:void zhangdanKind(); /按姓名查询患者信息void input(); /增加患者信息 public: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|t=Y)input();elsereturn;void HuanZhe:zhangdanKind()ifstream inH(患者.txt,ios:in); /以读方式打开文件if(!inH)cout打开文件失败!hi.sexhi.agehi.office_vist_feehi.drug_fee; /文件流读取数据i+;string mz;coutmz;int j;for(j=0;ji;j+)if(=mz)cout患者姓名: 性别:hj.sex 年 龄:hj.age 诊费:hj.office_vist_fee元 药费:hj.drug_fee元endl;return;cout记录中没有此患者的信息!endl;cout是否继续查询y/n:t; if(t=y|t=Y) zhangdanKind(); else return;class zhangdan/帐单类 public:void totl_pay();void addzhangdan();/ 增加账单信息void zhangdanKind();/按姓名查询账单信息 private:string dname,hname;double drug_fee;double office_vist_fee;double totl_fee;void zhangdan:totl_pay()fstream infile1(账单.txt,ios:in); /以读方式打开文件if(!infile1)cout打开文件失败!arrsline0arrsline1arrline0arrline1arr line2; /文件流读取数据line+;double a;double z=0.0;int i;for(i=0;iline-1;i+)a=arri2;z=z+a;cout所有患者的总费用为:z元endl;infile1.close();void zhangdan:addzhangdan()fstream outfile1(账单.txt,ios:out|ios:app); /以写方式打开文件if(!outfile1)cout打开文件失败!endl;elsecouthname;outfile1hname ;coutdname;outfile1dname ;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|t=Y)addzhangdan();elsereturn;void zhangdan:zhangdanKind()fstream infile1(账单.txt,ios:in); /以读方式打开文件if(!infile1)cout打开文件失败!zi.hnamezi.dnamezi.office_vist_feezi.drug_feezi.totl_fee; /文件流读取数据i+;string mz;coutmz;int j,x,y;for(j=0;ji;j+)if(zj.hname=mz)string xm;xm=zj.dname;coutendl;cout患者姓名:zj.hname 主治医生姓 名:zj.dname 诊费:zj.office_vist_fee元 药费:zj.drug_fee元 总费用:zj.totl_fee元endl;fstream indoctor(医生.txt,ios:in); /以读方式打开文件if(!indoctor) cout打开文件失败!dl.sexdl.age dl.office_vist_feedl.speicialty; l+; for(x=0;xl;j+)if(=xm)coutendl; cout 主治医生姓名: 性别:dx.sex 年龄:dx.age 诊费:dx.office_vist_fee元 专业:dx.speicialtyendl;return;fstream inH(患者.txt,ios:in); /以读方式打开文件if(!inH)cout打开文件失败!hline.sexhline.agehline. office_vist_feehline.drug_fee;/文件流读取数据 line+; for(y=0;yline-1;y+)if(=mz) coutendl; cout患者姓名: 性别:hy.sex 年龄:hy.age 诊费:hy.office_vist_fee元 药费:hy.drug_fee元endl; return;return;cout记录中没有此患者的帐单信息!endl;cout是否继续查询y/n:t;if(t=y|t=Y)zhangdanKind();elsereturn;void landing() /登陆string name,code;coutname;if(name=lilanlan)|(name=jiangman)coutcode;if(codecodecoutttt*成功登入*endl;elsecouttt*密码错误,请重新输入*endl;coutcode;elsecouttt*该管理员不存在*endl;landing();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;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;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;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;43 主函数实现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;第5章 系统测试5.1 模块测试1、登陆2、查询信息2.1 2.2 查询患者信息3、账单信息3.1 增加账单信息3.2 查询账单信息3.2 统计总费用4、增加信息4.1 增加医生信息 4.2 增加患者信息5.2课程设计过程中遇到的问题 在设计查询这一模块时,最开始用的是用string来定义一个数组,保存从文件中所读取的数据:string arr100100;meset(arr,0,sizeof(arr);/清空数组 担当运行的时候,出现错误,然后改用了用类去定义一个对象,然后获取数据。总 结经过几个星期的C+课程设计的训练,我学到了很多,最主要的一点是怎样去运用自己学过的知识,怎样去找到你所需要的资料,并在短时间把它运用到具体的实践中,运用到你所需要的方面。这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。在做这个C+课程设计的时候,我原先也是学的不怎么好,什么是输入输出流,如何对文件进行操作,什么是继承与派生,等等,可以说是忘得差不多了。然而,在这门课程设计中,这些方面却是特别重要的,可以说,掌握了这个,你就完全可以完成自己的任务。这就要求我们要自己去学,自己去探索。当然,看书、问同学是必不可少的,还有,身边有非常丰富的网络资源给我们好好利用,百度就是个很不错的地方。这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力。在本次课程设计中,我发现我对知识的运用不是那么准确,也就是说我对知识掌握的不够熟练。课本上有的知识却不会运用,虽然在本次C+课程设计中,显示出一些我知识上的漏洞,经过这次编写诊所信息管理系统,我发现我熟练掌握了类的定义以及继承与派生,并对文件操作有了初步的掌握,课下还应该继续努力,争取熟练掌握一门编程设计语言,在次基础上,在学习多种编程语言,以便以后可以用到工作中去。当然,期间我也遇到了一些棘手的问题,在“账单.txt”中,我希望能读取它每个患者账单的总费用并把它们求和,但是尝试了多次,检查了多次,读取文件内容的while循环一直是死循环,无法读取,终于,我发现了问题所在,并把代码修改了一下,完美解决了问题。通过这次的课程设计,我的诊所信息管理系统完美告终,让我进一步的了解到C+在我们日常生活中的重要性,而且,也更进一步的激发了我学习这门语言的兴趣。经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。致谢 首先,感谢老师给予我们做课设这样一次机会,能够独立地完成一个C+课程设计,并在这个过程当中,给予我们各种方便,使我们在这学期快要结课的时候,能够将学到的只是应用到实践中,增强了我们实践操作和动手应用能力,提高了独立思考的能力。第二,我要感谢学长在课程设计上给予我的指导和帮助,以及学长对我自己编写的诊所信息管理系统的肯定,也加强了我对这门课程的热爱,并对编程语言产生极大兴趣。第三我要感谢我的同学在课程设计上提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。最后,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢北华航天工业学院为我们提供良好的做课程设计的环境,为我们提供机房让我们使用,终于我的诊所信息管理系统完美告终。再一次感谢所有在设计中曾经帮助过我的良师益友和同学在这次课程设计的撰写过程中,我得到了许多人的帮助。附录 源代码:#include#include#includeusing namespace std;class person /人类 public: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*主治医生基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省江阴市成化高级中学高中地理 3.3以畜牧业为主的农业地域类型教案 新人教版必修2
- OBD培训教程:2024年汽车维修案例分析
- 幼儿园消防知识应知应会考核试题与答案
- 《接触网施工》课件 5.1.1 分段绝缘器安装
- 从基础到高级2024版PCCAD培训教程全解析
- 掌握2024版FSC验厂标准的专业培训教程
- 第二届全国技能大赛汽车维修赛项江苏省选拔赛技术工作文件
- 2022年衢州市职业技能大赛钳工项目技术文件
- 2024年《燃烧与灭火》教案:安全教育的新篇章
- 人教版教学课件探究环境因素对光合作用的影响
- 【语文】宁波市小学四年级上册期中试卷
- 《埃隆·马斯克传》导读
- 环保设施安全风险评估报告
- MOOC创新创业与管理基础(东南大学)
- 【基于活动理论的信息技术课程教学研究8300字(论文)】
- 年产15万吨PET的生产工艺设计-毕业论文
- 车间生产计划完成情况统计表
- 品管圈(QCC)降低ICU护士床头交接班缺陷率课件
- 《左道:中国宗教文化中的神与魔》读书笔记模板
- 施工现场临时用电安全技术规范
- 同仁堂药品目录
评论
0/150
提交评论