



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、 设计题目 .2二、 系统环境 .2三、 设计内容 .23.1数据库的设计 .23.2创建数据库及其数据表 .33.3开放数据源。 .43.4创建工资管理系统基本框架.63.5主对话框 IDD_MY_FORM中控件的加入与布局。 .83.6为编辑框控件建立数据字段映射 .113.7为命令按钮增加函数并编制过程代码 .13四、流程图及模块图 .174,1系统的总体设计 .174.2工资数据处理模块 .184.3工资数据浏览模块 .184.4增加与删除模块 .194.5统计模块 .19五、程序清单 .19六、程序中遇到的问题及解决方法 .38七、心得体会 .38八、参考文献 .391一、设
2、计题目工资管理系统设计与实现。二、系统环境windowsXP VC+三、设计内容3.1 数据库的设计作为工资管理系统,它主要是数据库应用系统数据处理,数据库应用系统开发的前提是首先开发数据库和数据库中的数据表。因此在本案例中,我采用 Microsoft Access 2007 创建数据库和数据表。为此我们先定义一个 “职工工资数据表 ”的结构,如下表所示。职工工资数据表字段名称字段类型字段大小小数位数索引必须填写年份数字整型是月份数字整型是输入日期日期 /时间默认是职工编号数字整型是姓名文本16是部门文本20是基本工资数字长整型自动是业绩工资数字长整型自动是奖金数字长整型自动是津贴数字长整型自
3、动是各种补助数字长整型自动是应发数数字长整型自动是水电费数字长整型自动是2房租数字长整型自动是储蓄数字长整型自动是会费数字长整型自动是保险数字长整型自动是扣除总计数字长整型自动是实发工资数字长整自动是型3.2 创建数据库及其数据表( 1)启动 Microsoft Office 2007 中的 Microsoft Access 应用程序,出现下图所示界面,通过该界面可以创建一个新的数据库。(2)在创建里头单击“表设计” ,用户可以在其中设计一个新的数据表结构。如下图所示。3在 Microsoft Access 2007 数据库设计器中,用户可以定义数据表的字段名称、字段类型、字段大小等数据表结构
4、的内容。数据表结构一经确定,用户可以打开该数据表,在数据表中输入一些基本数据,以在后面的系统设计中体现设计的效果。最后,系统自动将创建的数据表保存在 “D:VC+ 写作案例 CH432 资管理数据库 ”中,将创建的数据表命名为 “职工工资表 ”。3.3 开放数据源。4开始设置控制面板管理工具,双击数据源打开。选择第二个系统 DSN,点击“添加”选择Microsoft Access Driver(*.mdb) 。点击完成。在弹出的对话框中起一个数据源名,然后点击“选择”,然后在目录一栏选择刚才建立的那个表。 选中,点击确定。一路确定下去, OK 。数据源就建立好了。53.4 创建工资管理系统基本
5、框架在前面我已经创建了 “工资管理数据库 ”、“职工工资表 ”。它可为应用程序提供一个数据源。应用程序就是对该数据源的记录进行访问、增加、删除以及数据管理的一切操作。有了这一切的工作,用户就可以着手进行应用系统的构建了。接下来我要创建 “工资管理系统 ”应用程序框架,步骤如下:(1)结束数据库的创建并启动VC+ ,出现 VC+ 主控界面。(2)在 VC+ 主控界面中单击 “文件 |新建 ”菜单项,出现新建工程类型选择对话框,在工程类型列表中选择MFC AppWizard(EXE) 工程类型。(3)输入工程名称为 “工资管理系统 ”,并选择 Win32 平台类型。(4)单击 “确定 ”按钮,进入
6、文档类型设置。(5)选择单文档类型,即创建一个单文档界面的应用程序,设置资源使用语言为中文,选择文档查看体系结构支持。(6)单击 “下一步 ”按钮,进入框架设置的第 2 步,如图的对话框。在该对话框中,需要用户对数据库的类型作一些相关的选择。6(7)选择“查看数据库不使用文件支持”;这时候Data Source按钮处于可用状态(或激活状态);在这一种选择下, VC+ 将为应用系统引入数据环境,即数据源,该数据源就是我们在前面创建的 “工资数据库 ”,而不使用其他类型数据的文件支持。但数据源在系统制作中的引入需要用一定的驱动程序为之进行。(8)单击 “ Data Source按钮”,出现图下图所
7、示的选择数据源类型的对话框。73.5 主对话框 IDD_MY_FORM 中控件的加入与布局。(1)在主对话框 IDD_MY_FORM 中放入各种需要的控件,如标签控件、编辑框控件、命令按钮控件,如下图。各个控件的属性设置如下表:标签对象的基本属性ID标题内容IDC_STATICCAPTION职工工资管理系统8IDC_STATICNE年份IDC_STATICYF月份IDC_STATICZGBH职工编号IDC_STATICZGXM职工姓名IDC_STATICZGBM部门IDC_STATICJBGZ基本工资IDC_STATICJJ奖金IDC_STATICYJGZ业绩工资IDC_STATICJT津贴I
8、DC_STATICGZBZ各种补助IDC_STATICRDF水电费IDC_STATICFZOU房租IDC_STATICCX储蓄IDC_STATICHF会费IDC_STATICBX保险IDC_STATICYFHJ应发合计IDC_STATICKCHJ扣除合计IDC_STATICSFGZ实发工资编辑框空间的基本属性和编辑内容ID编辑内容IDC_EDITNF年份IDC_EDITYF月份IDC_EDITZGBH职工编号IDC_EDITZGBM所在部门IDC_EDITZGXM职工姓名IDC_EDITJBGZ基本工资9IDC_EDITJJ奖金IDC_EDITYJGZ业绩工资IDC_EDITJT津贴IDC_E
9、DITGZBZ各种补助IDC_EDITRDF水电费IDC_EDITFZOU房租IDC_EDITCX储蓄IDC_EDITHF会费IDC_EDITBX保险IDC_EDITYFHJ应发合计IDC_EDITKCHJ扣除合计IDC_EDITSFGZ实发工资命令按钮对象的基本属性和内容ID标题内容IDC_BUTIONFIRST|第一条IDC_BUTIONNEXT下一条IDC_BUTIONPREV前一条IDC_BUTIONLAST|最后一条IDC_BUTIONSUM执行统计IDC_RADIOADD增加记录IDC_RADIODELETE删除记录IDC_RADIOUPDATE刷新记录分组对象控件的基本属性ID标
10、题IDC_STATICDATA工资数据处理10IDC_STATICBROWSE工资数据浏览3.6 为编辑框控件建立数据字段映射(1)在主对话框 IDD_MY FORM 中选取“年份”编辑框控件。(2)用鼠标右键单击该对话框,出现一个快捷菜单。(3)在快捷菜单中单击 “建立类向导 ”,出现类向导对话框。(4)在类向导对话框中将页面切换至 Member Variables 页面并设置类名为CmySet。该对话框列出了数据集的全部字段名、字段类型和字段的成员变量名称,但成员变量名是在创建数据源时自动生成的,往往不便于与编辑框建立映射关系,为此将全部成员变量名称删除,并重新定义字段的成员变量名称。重新
11、定义后的字段变量名称如下图所示。(5)在 Classname列表中选择 CmyView ,出现为编辑框控件与字段成员变量建立消息映射的页面,如下图所示。11(6)选中 IDC_EDITNF( 年份编辑 )控件资源索引,再单击 Add Variable 按钮,出现变量选择列表框。在字段选择列表框中选择 “年份 ”成员变量,如下图所示。(7)单击 OK 按钮,即完成 “年份 ”编辑框与 “年份 ”字段成员变量的映射。12采用相同的方法为全部编辑框控件建立消息映射,然后编译对话框,则发现可以在编辑框中修改数据表中的记录。3.7 为命令按钮增加函数并编制过程代码3.7.1 “第一条记录 ”命令按钮的过
12、程代码( 1)在对话框中选取 “第一条记录 ”命令按钮。( 2)用鼠标右键单击该命令按钮,出现一个快捷菜单。( 3)在快捷菜单中单击 “建立类向导 ”菜单项,出现一个消息映射的对话框。( 4)在消息映射的对话框中选择 Message Maps 页面,选择消息类型为 “ ON_CLICKED”并单击 Add Function 按钮,出现一个函数命令对话框,建议接受系统命名的函数名即可。( 5)确认函数名后单击 Edit Code 按钮,出现代码编辑框,在代码编辑框中编辑命令按钮的代码,如下所示:这样, “第一条记录 ”命令按钮的过程代码就编辑完成了。采用同样的方法,我们可以编辑其他命令按钮的过程
13、代码。133.7.2 “下一条记录 ”命令按钮的过程代码void CMyView:OnButionnext()/ TODO: Add your control notification handler code here m_pSet-MoveNext();if(m_pSet-IsEOF()MessageBox( 已经是最后了!);m_pSet-MovePrev();UpdateData(FALSE);return;UpdateData(FALSE);3.7.3“上一条记录 ”命令按钮的过程代码void CMyView:OnButionprev()/ TODO: Add your contro
14、l notification handler code here m_pSet-MovePrev();if(m_pSet-IsBOF()MessageBox(已经是第一条了! );m_pSet-MoveNext();UpdateData(FALSE);return;UpdateData(FALSE);143.7.4“最后一条记录 ”命令按钮的过程代码void CMyView:OnButionlast()/ TODO: Add your control notification handler code here m_pSet-MoveLast();if(m_pSet-IsEOF()Messag
15、eBox(已经是最后了! );m_pSet-MovePrev();UpdateData(FALSE);return;UpdateData(FALSE);3.7.5 “增加记录 ”选项按钮的过程代码void CMyView : : OnRadiodd ()/TODO: Add your control notification handler code herem_pSet - AddNew ();UpdateData (FALSE);3.7.6“删除记录 ”选项按钮的过程代码void CMyView:OnRadiodelete()/ TODO: Add your control notific
16、ation handler code here15m_pSet-Delete();m_pSet-MoveNext();if(m_pSet-IsEOF()m_pSet-MoveLast();if(m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);3.7.7“刷新记录 ”选项按钮的过程代码void CMyView:OnRadioupdate()/ TODO: Add your control notification handler code here m_pSet-Edit();UpdateData();m_pSet-Update
17、(); m_pSet-Requery(); m_pSet-CancelUpdate();3.7.8 “执行统计 ”命令按钮的过程代码void CMyView:OnButionsum()/ TODO: Add your control notification handler code here m_pSet-Edit();m_pSet-m_YJGZ=m_pSet-m_JBGZ+m_pSet-m_JJ+m_pSet-m_YJ GZ+m_pSet-m_JT+m_pSet-m_GZBZ;m_pSet-m_KCZJ=m_pSet-m_CX+m_pSet-m_HF+m_pSet-m_FZO U+m_pS
18、et-m_RDF+m_pSet-m_BX;m_pSet-m_SFGZ=m_pSet-m_YJGZ-m_pSet-m_KCZJ;16UpdateData(FALSE);m_pSet-Requery();m_pSet-Update();最后编译执行,结果如下图:四、流程图及模块图4,1 系统的总体设计根据对系统需求的分析, 可以把系统划分: 工资数据处理模块、 工资数据浏览模块、增加与删除模块、统计模块。系统总体模块工工工工资资资资数数数数据据据据浏处处处览理理理模模模模块块块块174.2 工资数据处理模块保险会费储蓄房租月份年份职工编号职工姓名工 资 数据处理模部门块水电费各种补助4.3 工资数
19、据浏览模块津贴业绩工资基本工资奖金工资数据浏览模块下上最第一一后一条条一条条184.4 增加与删除模块增加与删除模块增删刷加除新记记纪录录录4.5 统计模块统计模块应实扣发发除合合合计计计五、程序清单5.1 / 工资管理 .cpp : Defines the class behaviors for the application./#include stdafx.h#include 工资管理 .h19#include MainFrm.h#include ChildFrm.h#include 工资管理 Set.h#include 工资管理 Doc.h#include 工资管理 View.h#if
20、def _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyAppBEGIN_MESSAGE_MAP(CMyApp, CWinApp)/AFX_MSG_MAP(CMyApp)ON_COMMAND(ID_APP_ABOUT, OnAppAbout)/ NOTE - the ClassWizard will add and remove mapping macroshere./ DO NOT EDIT what you see in these blocks of generate
21、dcode!/AFX_MSG_MAP/ Standard file based document commands20ON_COMMAND(ID_FILE_NEW, CWinApp:OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp:OnFileOpen) / Standard print setup commandON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp:OnFilePrintSetup)END_MESSAGE_MAP()/ CMyApp constructionCMyApp:CMyApp()/ TODO: add c
22、onstruction code here,/ Place all significant initialization in InitInstance/ The one and only CMyApp objectCMyApp theApp;/ CMyApp initializationBOOL CMyApp:InitInstance()21AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your
23、 final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a sharedDLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically #endif/ Change the registry key under which
24、 our settings are stored./ TODO: You should modify this string to be something appropriate/ such as the name of your company or organization. SetRegistryKey(_T(Local AppWizard-Generated Applications);LoadStdProfileSettings();/ Load standard INI file options (includingMRU)/ Register the applications
25、document templates. Document templates/ serve as the connection between documents, frame windows and22views.CMultiDocTemplate* pDocTemplate;pDocTemplate = new CMultiDocTemplate(IDR_MYTYPE,RUNTIME_CLASS(CMyDoc),RUNTIME_CLASS(CChildFrame), / custom MDI child frame RUNTIME_CLASS(CMyView);AddDocTemplate
26、(pDocTemplate);/ create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame;if (!pMainFrame-LoadFrame(IDR_MAINFRAME) return FALSE;m_pMainWnd = pMainFrame;/ Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo);/ Dispatch commands
27、 specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;23/ The main window has been initialized, so show and update it. pMainFrame-ShowWindow(m_nCmdShow); pMainFrame-UpdateWindow();return TRUE;/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg(
28、);/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides /AFX_VIRTUAL(CAboutDlg)protected:24virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDVsupport/AFX_VIRTUAL/ Implementation protected:/AFX_MSG(CAboutDlg)/ No message handlers/A
29、FX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAP25BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No messag
30、e handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ App command to run the dialog void CMyApp:OnAppAbout()CAboutDlg aboutDlg; aboutDlg.DoModal();/ CMyApp message handlers5,2 / 工资管理 Doc.cpp : implementation of the CMyDoc class/#include stdafx.h#include 工资管理 .h#include 工资管理 Set.h26#include 工资管理 Doc.h#ifdef _DEBU
31、G#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyDocIMPLEMENT_DYNCREATE(CMyDoc, CDocument)BEGIN_MESSAGE_MAP(CMyDoc, CDocument)/AFX_MSG_MAP(CMyDoc)/ NOTE - the ClassWizard will add and remove mapping macroshere./ DO NOT EDIT what you see in these blocks of generatedcode
32、!/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDoc construction/destruction27CMyDoc:CMyDoc()/ TODO: add one-time construction code hereCMyDoc:CMyDoc()BOOL CMyDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: add reinitialization code here/ (SDI documents will reuse this document)return TRUE;/28/ CMyDoc serializationvoid CMyDoc:Serialize(CArchive& ar)if (ar.IsStoring()/ TOD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有效排痰护理 2
- 造口并发症及处理
- 心肺复苏知识培训
- 浙江省2023~2024学年高二数学下学期返校联考试题含答案
- 贵州省黔西南州金成实验学校2024−2025学年高一下学期3月检测 数学试卷(含解析)
- 江苏省盐城市大丰区新丰初级中学2025届学业水平模拟考试化学试题仿真模拟试题A卷含解析
- 内蒙古丰州职业学院《食品工艺综合实验》2023-2024学年第一学期期末试卷
- 九州职业技术学院《矿床地球化学》2023-2024学年第二学期期末试卷
- 四川省成都实验高级中学2025届高三年级5月统测模拟试卷含解析
- 西交利物浦大学《理论力学B》2023-2024学年第二学期期末试卷
- 创伤紧急救护知识课件
- 医院单位单位内部控制自我评价报告
- 湖北省第十届湖北省高三(4月)调研模拟考试数学试题及答案
- 2025年03月广东深圳市光明区科技创新局公开招聘专干5人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 内蒙古通辽市科左中旗实验小学2025届数学三下期末质量检测试题含解析
- 高温急救知识培训
- 学前教育学 课件 第1、2章 绪论;学前教育的目标、内容的方法
- 2025北京丰台高三一模物理试题及答案
- 江南美术遗产融入美育的数智化路径探索
- 西雅图驾驶证考题及答案
- 综合执法考试试题及答案
评论
0/150
提交评论