2019年下半年软件设计师上午真题+下午真题+答案完整版(打印版) 下载本文

4.打印发票(Print invoices)。 发票(Invoice) 由办公人员打印。发票分为两种:给医保机构的发票(InsuranceInvoice) 和给病人的发票(PatientInvoice)。 两种发票内容相同,只是支付的费用不同。当收到治疗费用后,办公人员在系统中更新支付状态(Enterpayment)。

5.记录医护人员信息(Maintain dental staff info)。办公人员将医护人员信息录入系统。医护人员信息包括姓名、职位、身份证号、家庭住址和联系电话等。

6.医护人员可以查询并打印其参与的治疗项目相关信息(Search and print procedureinfo)。

现采用面向对象方法开发该系统,得到如图3-1所示的用例图和3-2所示的初始类图。

问题内容:

【问题1】(6分)

根据说明中的描述,给出图3-1中A1~A3所对应的参与者名称和U1~U3所对应的用例名称。

【问题2】 (5分)

根据说明中的描述,给出图3-2中C1~C5所对应的类名。

【问题3】 (4分)

根据说明中的描述,给出图3-2中类C4、C5、Patient 和DentalStaff的必要属性。

4、阅读下列说明和C代码,回答问题1至问题3。

【说明】

0-1背包问题定义为:给定i个物品的价值v[1…i]、小重量w[1...i]和背包容量T,每个物品装到背包里或者不装到背包里。求最优的装包方案,使得所得到的价值最大。

0-1背包问题具有最优子结构性质。定义c[i][T]为最优装包方案所获得的最大价值,则可得到如下所示的递归式。

【c代码】

下面是算法的C语言实现。

(1)常量和变量说明

T: 背包容量

v[]:价值数组

w[]:重量数组

c[][]:c[i][j]表示前i个物品在背包容量为j的情况下最优装包方案所能获得的最大价值

(2) C程序

问题内容:

【问题1】 (8分)