\where PERSON='\+ \+ m_STime.Format(\+ \
+ m_ETime.Format(\+ \
if(rs_overtime.GetRecordCount()>0) // 有记录 { }
else nOverHour=0; // 无记录 rs_overtime.Close();
// 判断是否已有该月考勤记录 CAttStatSet rs_stat; // 构造统计数据表 // 设置过滤串
rs_stat.m_strFilter=\
+ \// 提取加班时间
rs_overtime.GetFieldValue(\sscanf(strTmp,\
rs_stat.Open(); // 打开数据表
if(rs_stat.GetRecordCount()==0) // 判断是否有该月份考勤记录 {
// 追加统计记录 rs_stat.AddNew();
rs_stat.m_YEAR_MONTH=m_strTime;
}
rs_stat.m_PERSON=rs_person.m_ID; rs_stat.m_WORK_HOUR=nWorkHour; rs_stat.m_OVER_HOUR=nOverHour; rs_stat.m_LEAVE_HDAY=nLeaveHDay; rs_stat.m_ERRAND_HDAY=nErrandHDay; rs_stat.m_LATE_TIMES=nLateTimes; rs_stat.m_EARLY_TIMES=nEarlyTimes; rs_stat.m_ABSENT_TIMES=nAbsentTimes; rs_stat.Update(); // 提交修改
else { }
rs_stat.Close(); // 关闭数据表 i++; // 已统计员工数加1
// 记录已存在修改数据 rs_stat.Edit();
rs_stat.m_WORK_HOUR=nWorkHour; rs_stat.m_OVER_HOUR=nOverHour; rs_stat.m_LEAVE_HDAY=nLeaveHDay; rs_stat.m_ERRAND_HDAY=nErrandHDay; rs_stat.m_LATE_TIMES=nLateTimes; rs_stat.m_EARLY_TIMES=nEarlyTimes; rs_stat.m_ABSENT_TIMES=nAbsentTimes; rs_stat.Update(); // 提交修改
rs_person.MoveNext(); // 跳到下一个员工记录 }
}
rs_person.Close(); // 关闭员工表 CAttStatSet rs_stat; // 构造统计数据表 UpdateList(rs_stat); // 更新列表框
// 将时间串转换为CTime型变量 CTime CAttStatDlg::StrToTime(CString str)
{// 时间串格式 \如\
}
int nYear,nMonth,nDay,nHour,nMinute,nSecond; sscanf(str.Left(4), \得到年 sscanf(str.Mid(5,2), \得到月 sscanf(str.Mid(8,2), \得到日 sscanf(str.Mid(11,2), \得到时 sscanf(str.Mid(14,2), \得到分 sscanf(str.Mid(17,2), \得到分 // 构造CTime变量
CTime result(nYear,nMonth,nDay,nHour,nMinute,nSecond); return result;
帮助窗口的设计
该窗体主要功能是显示本应用程序的名称和版本信息。
其代码如下:
CLoginDlg loginDlg;
if(loginDlg.DoModal()!=IDOK) return FALSE;
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME, RUNTIME_CLASS(CManagerDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CManagerView)); AddDocTemplate(pDocTemplate); CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo);
if (!ProcessShellCommand(cmdInfo)) return FALSE;
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); m_pMainWnd->UpdateWindow();
m_pMainWnd->SetWindowText(\企业人事管理系统\return TRUE;
??????????????????????????????????????????
.
软件测试的重要性
有很多人认为,辛苦搞了需求分析、数据库设计、总体设计、详细设计,最后编码、调试通过,软件的制作就算大公告成,可以开香槟庆祝了。但真的是这样吗?在软件开发期有一种工作的工作量占开发期总工作量的40%,是所有工作中工作量最大的,不是别的,就是软件测试。
五、测试
测试
黑盒测试法是把程序看成一个黑盒子,不考虑程序的内部逻辑结构和处理过程,只
着眼于程序的外部特性。也就是说黑盒测试法是在程序的接口上进行测试,看它是否满足功能要求,输入能否正确接受,并输出正确的结果,以及外部信息的完整性能否保持。所以用黑盒测试来发现程序中的错误,必须用所有可能的输入数据来检查程序能否都产生正确的输出。很显然,用黑盒测试法不可能进行完全的测试。因为企图遍历所有的输入数据是不可能做到的。
下面是各模块的测试过程:
Manager主窗体模块测试
由于在Manager主窗体中,设计了6项菜单,分别为“系统管理”、“基础数据管理”、“人事档案管理”、“考勤管理”、“数据库管理”“帮助”.
第一组 “系统管理”的对话框中的各项运行正常.,单击“退出”按钮 ,可以退出. 第二组“基础数据管理”各项运行正常,数据库与显示模块映射正常. 第三组 “人事档案管理”下的各项运行正常,查询调动信息正常. 第四组 “考勤管理”各项运行正常 ,对数据库的调用正常. 第五组 “数据库管理”,对数据库的备份与恢复运行正常. 第六组 “帮助"关与manager显示正常.
小结
现回首细想,自觉在设计中有诸多不足之处:首先是对软件开发平台不够熟悉,很多组件及其之间的联系掌握不够以至不能灵活运用,造成程序内容不丰富,使用不方便,其次在系统分析上在待加强训练,这次的设计规模较小,但我在软件的定义时期,特别是在需求分析时,一度让我无从下手,所耗时间比开发时期都长。
但收获还是梃大的,在这次毕业论文设计中,使我综合运用所学知识和技能对实际问题的分析概括能力加强,通过检索文献资料、了解、学习、掌握本学科专业领域中新的知识和发展动态,并恰当地将其运用到毕业论文中,同时让我深深体会到(软件)工程开发的艰辛与乐趣,开发者必须态度端正,认真制定设计方案和工作计划,严格按照软件工程的流程完成设计的各个环节。
毫无疑问,这次毕业论文设计是对我所学知识的一次检测同时对我在今后的工作中进行程序设计是有很大的帮助作用的。由对计算机一窍不通到能单独开发工程,这已达到我入校求学的目的。
参考文献
[1].王汝涌 管理信息系统 中国财政经济 [2].张海藩 软件工程 清华大学出版社 [3]. 谭浩强 VC程序设计 清华大学出版社
[4]. 王珊 数据库系统概论 高等教育出版社 [5]. 黄明 梁旭 周绍斌 vc信息系统设计与开发实例 机械工业出版社