个人考勤软件开发实例

2016-01-29 11:50 53 1 收藏

个人考勤软件开发实例,个人考勤软件开发实例

【 tulaoshi.com - C语言心得技巧 】

个人考勤软件开发实例
作者:YangLanGuang

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载本文源代码

这个程序是一个个人考勤软件,它从系统时钟获取时间信息,只要上下班时按时在当日考勤栏内点击相应的栏目标题即可逐日记录下个人每天的工作时间,按月统计汇总,按年形成文件.可以随意查看过去的记录,也可把记录按月打印出来.在年汇总栏内可以选择要查看或打印的月份。 这个小程序是我的一个习作,希望与感兴趣的同好切磋交流。

本程序是一个基于对话框的实用程序,在基于对话框界面的程序中实现打印和打印预览是采用了非常规MFC方法。 基于对话框的程序原本是不含框架类CFrameWnd和视类CView对象的,为了实现打印和打印预览,需要在主对话框对象中创建子框架对象CChildFrame,再在子框架中创建子视类对象CChildView,打印和打印预览就在CChildView中完成。这部分内容基本上直接取自北京希望电子出版社出版的《Vsual C++ 编程高手》一书中的例185,但要把书中的主框架CMainFrm改为子框架CChildFrame而置于主对话框管理之下。

具体做法如下:
1.在创建应用程序实例的InitInstance()函数中创建我们的主对话框对象:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
CAttendanceDlg dlg;
之后立即把这个对象的指针信息存入CWinApp::m_pMainWnd 和附加的m_pMiddle中备用:
m_pMainWnd = &dlg;m_pMiddle = &dlg;
2.在ClassWizard中为主对话框类导入OnCreate()函数,在其中创建子框架对象CChildFrame
CChildFrame* pFrame = new CChildFrame;m_pChildFrame = pFrame;pFrame->LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,//,m_pMainWndNULL);
暂时将其显示状态置为隐藏: m_pChildFrame->ShowWindow(SW_HIDE);

3.在子框架对象CChildFrame的OnCreate()函数中创建子视类对象CChildView
CCreateContext context;context.m_pNewViewClass = RUNTIME_CLASS(CChildView);context.m_pCurrentFrame = this;context.m_pCurrentDoc = NULL;context.m_pLastView = NULL;m_pView = STATIC_DOWNCAST(CChildView, CreateView(&context)); //CreateView(&context);if(m_pView != NULL){m_pView->ShowWindow(SW_HIDE);//暂时将其显示状态也置为隐藏SetActiveView(m_pView);}
4.在主对话框的打印或打印预览处理函数中只要向子框架CChildFrame发送相应的消息即可: 对于打印函数为:
m_pChildFrame->SendMessage(WM_COMMAND, ID_FILE_PRINT);
或对于打印预览函数为:
m_pChildFrame->ShowWindow(SW_SHOW);//将子框架CChildFrame显示状态置为显示m_pChildFrame->SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);//打印预览
5.在子框架CChildFrame的打印预览处理函数中需要将CWinApp::m_pMainWnd暂时替换为子框架CChildFrame的指针,并把子视类对象的显示状态激活后调用子视类对象的打印预览处理函数
CAttendanceApp* app=(CAttendanceApp*)AfxGetApp();app->m_pMainWnd = this;//应用程序主窗口临时替换为子框架窗口m_pView->ShowWindow(SW_SHOW);SetActiveView(m_pView);m_pView->OnFilePrintPreview(this);
6.打印预览结束退出之前必须恢复原有的显示状态,并将CWinApp::m_pMainWnd恢复为主对话框:
pParent->ShowWindow(SW_HIDE);//将子框架CChildFrame显示状态重新置为隐藏pParent->UpdateWindow();CAttendanceApp* app=(CAttendanceApp*)AfxGetApp();app->m_pMainWnd = app->m_pMiddle;//应用程序主窗口恢复为主对话框窗口app->m_pMiddle->UpdateWindow();
这些后处理工作放在CWrapperView::OnEndPrintPreview(..)函数中的结尾处完成。

7.最后还要为子框架创建一个标识为IDR_MAINFRAME的菜单资源

来源:http://www.tulaoshi.com/n/20160129/1483579.html

延伸阅读
本文的写作源于一个真实的大型软件开发项目,我们努力尝试在这个项目中推广应用AOP。在此我们将对曾经面临过的一些实际问题与困难进行分析,试图引发关于面向方面软件开发(AOSD)的一些更深层次的思考。 !-- frame contents -- !-- /frame contents -- 本文的作者将站在开发者的角度做出客观的判定,既不是AOP的狂热鼓吹者,同样也不...
公司软件部人不多,但几年来也曾经招聘过很多程序员,一个重要的发现就是,仅仅精通技术并不能很好的为公司工作,尤其是一些在领悟业务逻辑思路不是很敏锐,缺乏社会经验的人(譬如应届毕业生或一天到晚扎在技术里的人)。 因为公司小,没有专门的系统分析人员,只能靠程序员作需求分析,在客户满天描述需求时,很多技术精悍的人根本...
一、PC串行通信程序机制 常用的PC串行通信程序大多利用BIOSINT14H中断,以查询I/O方式完成异步串行通信。 Windows系统提供中断方式驱动的串行通信驱动程序COMM.DRV。通信程序无需直接对串行端口进行操作,而是通过驱动程序这一编程接口进行间接操作。 Windows操作系统中,串行通信采用“事件通知”方式,支持数据按块传...
  1.        下载spring包,网址如下 http://www.springframework.org/download.Html 解压后的目录中包含了dist、lib等子目录   2.        在JBuilder2005中增加spring库,选择菜单Tools-Configure-Libraries,在弹...
KVIP考勤系统 作者:Kelvin 下载源代码 最近用VC重写了一个几年前用PowerBuiler写的软件。软件功能并不多,主要是我模仿PB做了几个通用基类,还有这几年收集的一些东东,以下是程序中使用到的主要的几个类: 1、ADOxxxx是别人写的一个数据库类,具体怎么用去问作...

经验教程

63

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部