
软工1201—金天阳--201226630106
1、纠错性维护
错误:
Mortgage的删除功能出错
添加Mortgage
删除Mortgage
查看List of Mortgage
从结果可以看出,删除未成功
原因:
在以下代码中,缺少红色的字体的语句,导致原有文件删除不成功。
void Mortgage::performDeletion ()
//
// performDeletion performs the actual deletion of a mortgage record from a file
//
{
ifstream inFile; // stream object used for file input
ofstream tmpFile; // stream object used for file copying
Mortgage* mortgage = new Mortgage (); // record to be checked
bool multipleWrite = false;
inFile.open ("mortgage.dat");
if (!inFile)
return;
tmpFile.open ("mortgage.tmp");
while (!inFile.eof ())
{
mortgage->read (inFile);
if (assetNumber.compare (mortgage->getAssetNumber ()) != 0)
{
mortgage->write (tmpFile, multipleWrite);
multipleWrite = true;
}
}
inFile.close ();
tmpFile.close ();
remove("mortgage.dat");//删除文件操作
if(multipleWrite)
rename("mortgage.tmp", "mortgage.dat");
else
remove("mortgage.tmp");
} // performDeletion ()
2、使一对夫妇每周付给MSG基金会的金额不会超过他们周收入的26%(而不是原来的28%),实现中有多少处需要修改?
答:只需修改Mortgage.cpp中的double Mortgage::MAXIMUM_PERC_OF_INCOME = (double) 0.26;
3、MSG基金会决定开始基于月来运行业务,而不是基于周。相应修改实现
答:需要将所有的52改为12
(1)修改Mortgage.cpp中的double Mortgage::WEEKS_IN_YEAR = (double) 12.0;
(2)修改EstimateFundsForWeek.cpp中的void EstimateFundsForWeek::compute()方法,
estimatedFunds = (expectedWeeklyInvestmentReturn-
(op->getAnnualOperatingExpenses () / 12.0) + expectedTotalWeeklyNetPayments);
(3)修改Investment.cpp中的double Investment::totalWeeklyReturnOnInvestment ()方法,
return (totalAnnualReturn / (double) 12.0);
4、程序代码见MSG.rar
5、维护体会。
对代码进行维护,首先要做的是读懂并理解代码,了解程序文件之间的调用关系,这花去我大半的时间。查找错误时,每个功能都要进行检查,工作枯燥、繁琐、效率低。维护工作不好做。
