您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 参考XXXX年硕士研究生OOADP试卷
1二、应用分析题应用面向对象技术分析一在职职工医疗保险管理系统,用来对职工的个人医保帐户进行管理,系统的需求为:1.每个职工有一个唯一的帐号,记录该职工的帐上余额。个人每月交纳的保险金额为工资的2%,单位为个人每月交纳的保险金额为工资的7%。2.每个职工有一个IC卡,有密码,并与职工的个人帐户相关联。每次就医后可凭卡支付医疗费用,IC卡可挂失、重发,如何时候都只有一张卡有效。3.系统要记录每次交纳医疗保险金的往来帐,并能查询打印这些信息。4.系统要记录每次支付医疗保险金的往来帐,并能查询打印这些信息。系统不能透支。5.不考虑对个人工资的管理、个人所属单位的管理。但要考虑入保和退保的处理。系统分析设计与编程要求为:1.分析系统的对象集合,得出系统的类集合。2.完成系统所有类的属性的定义。3.完成系统所有类的服务定义。4.确定系统类之间的结构与连接关系。5.采用半展开方式进行主题划分。6.完成一个用例图的描述,以及一个类的编程实现。1.由问题要求可知系统对象集合包括:职工、IC卡、统计簿,故该系统中应包含的类有:职工类、IC卡类、统计簿类。2.职工类包含的属性有:账号、姓名、工资、医保卡余额、IC卡IC卡类包含的属性有:密码、账号、状态统计簿类包含的属性有:员工数、员工医保花销3.职工类包含的方法有:入保、退保、就医、获取余额、计算结余IC卡类包含的方法有:设置密码、获取卡号、支付、挂失、重发、注销统计簿类包含的方法有:查询、打印4.系统类之间的结构和联系图25.半展开主题图6.用例图描述1.职工信息职工IC卡2.交纳记录IC卡统计簿3.外部接口查询打印37.运行结果:48.程序代码:#includestring#includeiostreamusingnamespacestd;//IC卡类classICcard{private:longnumber;//IC卡卡号charpassword[6];//密码boolstate;//状态,是否加入医保或挂失public:ICcard(){state=true;number++;5}//设置密码voidsetPassword(){coutpleaseinputyourpasswordlengthof6endl;stringstr1,str2;cinstr1;coutpleaseagainendl;cinstr2;if(str1==str2){for(inti=0;i6;i++)password[i]=str1[i];}elsecoutpassworddiffer!endl;}//退出医保voidretreat(){state=false;number--;}//获取IC卡卡号longgetNumber(){returnnumber;}//挂失voiddrop(){state=false;}//重新补发voidredistribute()6{state=true;}//支付医疗费用floatpay(floatexpend){if(state=true)returnexpend;}};//职工类classEmployee{private:stringname;//姓名ICcard*iccard;//IC卡floatsalary;//薪水floatmedicalSaving;//医保金额longid;//账号public:Employee(){}Employee(stringname,floatsalary){this-name=name;this-salary=salary;}//入保voidjoin(){7iccard=newICcard();id=iccard-getNumber()+100000;iccard-setPassword();medicalSaving=salary*0.09;}//退保voidquit(){coutyouhavetodropoutthesystem,wewillcallbacktheICcardendl;iccard-retreat();}//就医voidconsume(floatexpend){medicalSaving-=iccard-pay(expend);}//结余floatgetBalance(){returnmedicalSaving;}stringgetName(){returnname;}//析构函数~Employee(){deleteiccard;}};//统计簿类8classStatistics{private:Employee*person[3];floatexpend[3];public:Statistics(){for(inti=0;i3;i++){stringstr;floatsalary;floatexpends;coutpleaseinputEmployeei'snameandsalaryandconsumeamountendl;cinexpendsstrsalary;expend[i]=expends;person[i]=newEmployee(str,salary);person[i]-join();person[i]-consume(expends);}}//查询并打印信息voidqueryAndPrint(){coutpleaseinputtheperson'snamewhoyouwanttoqueryendl;stringstr;cinstr;for(inti=0;i3;i++){if(str==person[i]-getName()){coutyougotitatperson[i]endl;couthisrelatedinformationisasfollows:endl;couthisconsumethistimeisexpend[i]endl;9coutthebalanceisperson[i]-getBalance()endl;}}}};//测试voidmain(){Statisticss=Statistics();s.queryAndPrint();}PS:请于1月13日中午12时之前交到356856127@qq.com,格式学号-姓名,我收到会回复如有问题,请联系李玮15996314016
本文标题:参考XXXX年硕士研究生OOADP试卷
链接地址:https://www.777doc.com/doc-16563 .html