收藏 分销(赏)

C诊所信息标准管理专业系统设计课设报告.doc

上传人:a199****6536 文档编号:2882042 上传时间:2024-06-08 格式:DOC 页数:42 大小:227.04KB 下载积分:12 金币
下载 相关 举报
C诊所信息标准管理专业系统设计课设报告.doc_第1页
第1页 / 共42页
C诊所信息标准管理专业系统设计课设报告.doc_第2页
第2页 / 共42页


点击查看更多>>
资源描述
目录 一、题目和要求 ……………………………………………………… 1 二、系统总体设计 …………………………………………………… 1 1、需求分析 …………………………………………………………………… 1 2、系统功效模块划分 ………………………………………………………… 1 三、具体设计 ………………………………………………………… 2 1、数据结构设计 ……………………………………………………………… 2 2、函数计划设计 ……………………………………………………………… 3 四、程序运行演示 …………………………………………………… 16 1、登陆 ……………………………………………………………………… 16 2、查询信息 ………………………………………………………………… 17 3、账单信息 ………………………………………………………………… 18 4、增加信息 ………………………………………………………………… 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、数据结构设计 1.1 类设计 分别定义了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; }; 1.2 类之间关系 在该系统中医生和患者全部有数据组员姓名(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; else { cout<<"姓名:"; cin>>name;outdoctor<<name<<" "; cout<<"性别:"; cin>>sex;outdoctor<<sex<<" "; cout<<"年纪:"; cin>>age;outdoctor<<age<<" "; cout<<"诊费:"; cin>>office_vist_fee;outdoctor<<office_vist_fee<<" "; cout<<"专业说明:"; cin>>speicialty;outdoctor<<speicialty<<endl; outdoctor.close(); } } 2.2按姓名查询医生信息 void doctor::zhangdanKind() { fstream indoctor("医生.txt",ios::in); //以读方法打开文件 if(!indoctor) { cout<<"打开文件失败!"<<endl; return; } int line=0; string arr[100][5]; //定义一个string类型二维数组,用来保留从文本内读取信息 memset(arr,0,sizeof(arr)); //将数组清空 while(!indoctor.eof()) //文件不为空条件设置 { cout<<"2"<<endl; indoctor>>arr[line][0]>>arr[line][1]>>arr[line][2]>>arr[line][3]>>arr[line][4]; line++; } string mz; cout<<"请输入要查询医生姓名:"; cin>>mz; for(int i=0;i<line;i++) { if(arr[i][0]==mz) { cout<<"医生姓名:"<<arr[i][0] <<" "<<"性别:"<<arr[i][1]<<" " <<"年纪:"<<arr[i][2]<<" "<<"诊费:"<<arr[i][3]<<"元"<<" "<<"专业:"<<arr[i][4]<<endl; return; } } cout<<"统计中没有此医生信息!"<<endl; cout<<"是否继续查询y/n:"<<endl; char t; cin>>t; if(t=='y') zhangdanKind(); else return; } 2.3 增加患者信息 void HuanZhe::input() { cout<<"*****患者基础信息*****"<<endl; fstream outH("患者.txt",ios::out|ios::app); //以写方法打开文件 if(!outH) cout<<"打开文件失败!"<<endl; else { cout<<"姓名:"; cin>>name; outH<<name<<" "; cout<<"性别:"; cin>>sex;outH<<sex<<" "; } cout<<"年纪:"; cin>>age; outH<<age<<" "; cout<<"诊费:"; cin>>office_vist_fee; outH<<office_vist_fee<<" "; cout<<"药费:"; cin>>drug_fee; outH<<drug_fee<<endl; outH.close(); cout<<"是否继续添加患者信息y/n:"<<endl; char t; cin>>t; if(t=='y') input(); else return; } 2.4 按姓名查询患者信息 void HuanZhe::zhangdanKind() { fstream inH("患者.txt",ios::in); //以读方法打开文件 if(!inH) { cout<<"打开文件失败!"<<endl; return; } string arr[100][5]; //定义一个string类型二维数组,用来保留从文本内读取信息 int line=0; memset(arr,0,sizeof(arr)); ////将数组清空 while(!inH.eof()) //文件不为空条件设置 { inH>>arr[line][0]>>arr[line][1]>>arr[line][2]>>arr[line][3]>>arr[line][4]; //文件流读取数据 line++; } string mz; cout<<"请输入要查询患者姓名:"; cin>>mz; for(int i=0;i<line;i++) { if(arr[i][0]==mz) { cout<<"患者姓名:"<<arr[i][0] <<" "<<"性别:"<<arr[i][1]<<" "<<"年纪:"<<arr[i][2]<<" "<<"诊费:"<<arr[i][3]<<"元"<<" "<<"药费:"<<arr[i][4]<<"元"<<endl; return; } } cout<<"统计中没有此患者信息!"<<endl; cout<<"是否继续查询y/n:"<<endl; char t; cin>>t; if(t=='y') zhangdanKind(); else return; } 2.5 增加账单信息 void zhangdan::addzhangdan() { fstream outfile1("账单.txt",ios::out|ios::app); //以写方法打开文件 if(!outfile1) cout<<"打开文件失败!"<<endl; else { cout<<"患者姓名:"; cin>>name; outfile1<<name<<" "; cout<<"主治医生:"; cin>>name; outfile1<<name<<" "; cout<<"诊费:"; cin>>office_vist_fee; outfile1<<office_vist_fee<<" "; cout<<"药费:"; cin>>drug_fee; outfile1<<drug_fee<<" "; cout<<"总费用:"; cin>>totl_fee; outfile1<<totl_fee<<endl; outfile1.close(); } char t; cout<<"是否继续添加账单信息y/n:"<<endl; cin>>t; if(t=='y') addzhangdan(); else return; } 2.6 查询账单信息 void zhangdan::zhangdanKind() { fstream infile1("账单.txt",ios::in); //以读方法打开文件 if(!infile1) { cout<<"打开文件失败!"<<endl; return ; } string arr[100][5]; //定义一个string类型二维数组,用来保留从文本内读取信息 int line=0; memset(arr,0,sizeof(arr)); //将数组清空 while(!infile1.eof()) //文件不为空条件设置 { infile1>>arr[line][0]>>arr[line][1]>>arr[line][2]>>arr[line][3]>>arr[line][4]; //文件流读取数据 line++; } string mz; cout<<"请输入要查询患者姓名:"; cin>>mz; for(int i=0;i<line;i++) { if(arr[i][0]==mz) { string xm; xm=arr[i][1]; cout<<"患者姓名:"<<arr[i][0] <<" "<<"医生姓名:"<<arr[i][1]<<" "<<"诊费:"<<arr[i][2]<<"元"<<" "<<"药费:"<<arr[i][3]<<"元"<<" "<<"总费用:"<<arr[i][4]<<"元"<<endl; fstream indoctor("医生.txt",ios::in); //以读方法打开文件 if(!indoctor) { cout<<"打开文件失败!"<<endl; return ; } int l=0; memset(arr,0,sizeof(arr)); //将数组清空 while(!indoctor.eof()) //文件不为空条件设置 { indoctor>>arr[l][0]>>arr[l][1]>>arr[l][2]>>arr[l][3]>>arr[l][4]; //文件流读取数据 l++; } for(int j=0;j<l;j++) { if(arr[j][0]==xm) { cout<<"医生姓名:"<<arr[j][0]<<" "<<"性别:"<<arr[j][1]<<" "<<"年纪:"<<arr[j][2]<<" "<<"诊费:"<<arr[j][3]<<" "<<"专业:"<<arr[j][4]<<endl; } } fstream inH("患者.txt",ios::in); //以读方法打开文件 if(!inH) { cout<<"打开文件失败!"<<endl; return ; } int lin=0; memset(arr,0,sizeof(arr)); //将数组清空 while(!inH.eof()) //文件不为空条件设置 { inH>>arr[lin][0]>>arr[lin][1]>>arr[lin][2]>>arr[lin][3]>>arr[lin][4]; //文件流读取数据 lin++; } for(int z=0;z<lin-1;z++) { if(arr[i][0]==mz) { cout<<"患者姓名:"<<arr[z][0]<<" "<<"性别:"<<arr[z][1]<<" "<<"年纪:"<<arr[z][2]<<" "<<"诊费:"<<arr[z][3]<<" "<<"药费:"<<arr[z][4]<<endl; } } return; } } cout<<"统计中没有此患者帐单信息!"<<endl; cout<<"是否继续查询y/n:"<<endl; char t; cin>>t; if(t=='y') zhangdanKind(); else return; } 2.7 统计总费用 void zhangdan::totl_pay() { fstream infile1("账单.txt",ios::in); //以读方法打开文件 if(!infile1) { cout<<"打开文件失败!"<<endl; return ; } double arr[100][3]; //定义一个double类型二维数组,用来保留从文本内读取信息 string arrs[100][2];//定义一个string类型二维数组,用来保留从文本内读取信息 memset(arr,0,sizeof(arr)); //将数组清空 int line=0; while(!infile1.eof()) //文件不为空条件设置 { infile1>>arrs[line][0]>>arrs[line][1]>>arr[line][0]>>arr[line][1]>>arr[line][2]; //文件流读取数据 line++; } double a; double z=0.0; for(int i=0;i<line-1;i++) { a=arr[i][2];; z=z+a; } cout<<"全部患者总费用为:"<<z<<"元"<<endl; infile1.close(); } 2.8 登陆 void landing() { string name,code; cout<<"\t\t用户名:"; cin>>name; if(name!="yangqing") { cout<<"\t\t☆********★该管理员不存在☆********★"<<endl; landing(); } else { cout<<"\t\t密码:"; cin>>code; if(""==code) { cout<<"\t\t\t☆********★成功登入☆********★"<<endl; } else { cout<<"\t\t☆********★密码错误,请重新输入☆********★"<<endl; cout<<"\t\t☆********★密码☆********★:"; cin>>code; } } } 2.9 增加信息界面 void adding() { int a; doctor d; HuanZhe w; cout<<endl; cout<<endl; cout<<"\t\t $***********增加信息界面*********$"<<endl; cout<<"\n"; cout<<"\t\t $*********************************$\n"; cout<<"\t\t $ $\n"; cout<<"\t\t $ 1.增加医生信息 $\n"; cout<<"\t\t $ 2.增加患者信息 $\n"; cout<<"\t\t $ 0.返回上一页 $\n"; cout<<"\t\t $ $\n"; cout<<"\t\t $*********************************$\n"; cout<<"请输入您选择数字(0-2):"; cin>>a; 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; cout<<endl; cout<<endl; cout<<"\t\t $***********查询信息界面*********$"<<endl; cout<<"\n"; cout<<"\t\t $*********************************$\n"; cout<<"\t\t $ $\n"; cout<<"\t\t $ 1.查询医生信息 $\n"; cout<<"\t\t $ 2.查询患者信息 $\n"; cout<<"\t\t $ 0.返回上一页 $\n"; cout<<"\t\t $ $\n"; cout<<"\t\t $*********************************$\n"; cout<<"请输入您选择数字<0-2>:"; cin>>b; 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; cout<<endl; cout<<endl; cout<<"\t\t $*********账单信息*********$"<<endl; cout<<"\n"; cout<<"\t\t $**********************************$\n"; cout<<"\t\t $ $\n"; cout<<"\t\t $ 1.增加账单信息 $\n"; cout<<"\t\t $ 2.查询账单信息 $\n"; cout<<"\t\t $ 3.统计总费用 $\n"; cout<<"\t\t $ 0.返回上一页 $\n"; cout<<"\t\t $ $\n"; cout<<"\t\t $**********************************$\n"; cout<<"请输入您选择数字<0-3>:"; cin>>c; 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; cout<<"\n\n"; while(1) { cout<<"\t\t ★***★***☆欢迎使用诊所信息管理系统☆***★***★"<<endl; cout<<"\n"; cout<<"\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$ 1.查询信息 2.账单信息 $\n"; cout<<"\t\t$ 3.增加信息 0.退出系统 $\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"; zhangdan a; cout<<"请输入您选择数字<0-4>:"; cin>>choice; switch(choice) { case 1:search(); break; case 2:zhangdanxinxi(); break; case 3:adding(); break; case 0:cout<<"\t\t☆★☆★☆★☆欢迎下次使用本系统☆★☆★☆★☆"<<endl; exit(0); default:cout<<"输入数字错误!"<<endl; } } } 2.13 主函数 void main() { int w; cout<<"\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$ 1.登录 $\n"; cout<<"\t\t$ 0.退出系统 $\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$ $\n"; cout<<"\t\t$$$$$$$$$$$**********☆***********$$$$$$$$$$\n"; while(1) { cout<<"请输入数字<0/1>:"; cin>>w; 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++课程设计时候,我原先也是学不怎么好,什么是输入输出流,怎样对文件进行操作,什么是继承和派生,等等,能够说是忘得差不多了。然而,在这门课程设计中,这些方面却是尤其关键,能够说,掌握了这个,你就完全能够完成自己任务。这就要求我们要自己去学,自己去探索。当然,看书、问同学是必不可少,还有,身边有很丰富网络资源给我们好好利用,baidu就是个很不错地方。这么就从其次锻炼了我们检索知识获取信息能力,在这个过程中,能够学到是一个提升自我能力。 在此次课程设计中,我发觉我对知识利用不是那么正确,也就是说我对知识掌握不够熟练。书本上有知识却不会利用,即使在此次C++课程设计中,显示出部分我知识上漏洞,经过这次编写诊所信息管理系统,我发觉我熟练掌握了类定义和继承和派生,并对文件操作有了初步掌握,课下还应该继续努力,争取熟练掌握一门编程设计语言,在次基础上,在学习多个编程语言,方便以后能够用到工作中去。当然,期间我也碰到了部分棘手问题,在“账单.txt”中,我期望能读取它每个患者账单总费用并把它们求和,不过尝试了数次,检验了数次,读取文件内容while循环一直是死循环,无法读取,最终,我发觉了问题所在,并把代码修改了一下,完美处理了问题。 经过这次课程设计,我诊所信息管理系统完美告终,让我深入了解到C++在我们日常生活中关键性,而且,也更深入激发了我学习这门语言爱好。经过这次训练,我相信自己以后会用更多时间来把这门语言学好,掌握好这门必修基础语言。 六、源代码 #include<iostream> #include<fstream> #include<string> using 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; else { cout<<"姓名:"; cin>>name;outdoctor<<name<<" "; cout<<"性别:"; cin>>sex;outdoctor<<sex<<" "; cout<<"年纪:"; ci
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服