课程设计(论文)-VC++设计职工管理系统.doc_第1页
课程设计(论文)-VC++设计职工管理系统.doc_第2页
课程设计(论文)-VC++设计职工管理系统.doc_第3页
课程设计(论文)-VC++设计职工管理系统.doc_第4页
课程设计(论文)-VC++设计职工管理系统.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录1课程设计目的 12 课程设计题目(问题)描述和要求 13系统分析与设计 13.1 系统分析 13.1.1系统功能分析23.2 系统设计 23.2.1 系统功能设计 23.2.2数据库与数据表的设计 23.2.3 职工管理系统应用程序框架设计 44 系统运行报告 145 设计中的不足 176 总结(实习心得体会)17参考书目 1831湖南商学院计电系课程设计报告用vc+设计职工管理系统1 课程设计目的了解软件开发的基本流程,学会设计简单的软件系统。初步了解如何利用vc+的应用程序向导制作应用程序。通过这一次的课程设计的综合训练,培养自己的综合分析问题、编程和实际动手能力,使自己能够更好地掌握该门课程的主要内容,同时也增强自己综合分析能力。2 课程设计题目(问题)描述和要求职工信息管理是众多部门必须做的一项工作,而这些工作往往比较繁冗也很复杂,如果通过人工文件管理将会增加很多的工作,也很容易出现错误且比较难修改,所以对一个企事业单位来讲,一个好的职工信息管理系统能够节省很多的工作,大大的提高工作效率,也能够为单位节省不少的人力资源,也为职工信息的录入与修改带来了不少的便利。因为所学知识的不足,现在只能设计一个比较简单的信息管理系统,该系统主要是要求通过一个数据库(两个数据表)及其相关的对话框的制作开发、数据源的引用实现数据的录入、增加、修改、删除等功能。3 系统分析与设计3.1 系统需求分析3.1.1 系统功能分析 能够实现一般系统的数据处理功能,包括数据的录入、增加、修改、删除等,还有信息的总体浏览,功能如图3.1所示:职工管理系统职工信息浏览职工信息编辑职工工资浏览删除刷新添加图3.1 职工管理系统整体功能表3.2 系统设计3.2.1 系统功能设计 本系统具有一般系统的数据处理功能,包括数据的录入、增加、修改、删除等,另外,本系统将涉及职工信息表和职工工资表的操作,用户可以在两个表之间相互进行功能切换,因此本系统的制作中需要涉及到对话框相互切换的方法,它是一个重要而且常用的方法。3.2.2数据库与数据表的设计本系统将创建一个职工信息数据库,并在它之中创建两个数据表,一个是“职工信息数据表”,一个是“职工工资信息表”。利用microsoft access 2003创建职工管理数据库及其数据表。启动microsoft access 2003应用程序,创建一个空的数据库,通过使用设计器创建表设计上面两个数据表。两个数据表的结构如下:表1 职工数据表的结构字段名称字段类型字段大小索引是否必须填写职工编号数字长整型唯一、主索引是职工姓名文本20是职工性别文本2是所在部门文本30是职工年龄数字整型是工作时间日期/时间8是职务文本20是职称文本20是简历备注默认表2 职工工资数据表的结构字段名称字段类型字段大小索引是否必须填写职工编号数字长整型唯一、主索引是职工姓名文本20是基本工资数字单精度是其他工资数字单精度是月收入数字单精度是3.2.3 职工管理系统应用程序框架设计 vc+中创建应用程序可以通过创建一个应用程序的框架来进行,应用程序框架为用户提供了一个基本的开发步骤。(1) 创建职工管理系统的基本框架: 启动vc+程序,利用工程类型为“mfc appwizard(exe)”,创建一个基本对话框,将这个对话框作为“职工基本信息编辑”。添加两个命令控件按钮“职工信息浏览”、“职工工资浏览”。在为“退出系统”按钮创建类并添加成员变量。在vc+应用程序中,资源是按类和成员变量进行识别的,因此我们需要为资源中的每一个对象创建或声明一个类和相应的成员变量。由于此处该按钮是对话框中的一个控件,也就是它的一个成员,因此它是一个控件对象,不用在为它创建一个新类,只要为它创建一个成员变量即可。创建好成员变量后就可以为“退出系统”按钮编制事件的过程代码了,代码如下:void cmydlg:onexitbutton() / todo: add your control notification handler code hereonok();(2)、为工程添加两个对话框资源在前面的过程中,我们已经同过向导为应用程序生成了一个应用程序框架,并生成了一个系统主控界面对话框idd-my-dialog和一个idd-aboutbox对话框,这还不能满足工程设计的需要,所以要添加两个对话框资源。在“插入|资源”菜单项新建对话框资源。由于新增的两个对话框不再像前面的命令按钮一样从属于主窗体对话框,而且它是新增的加的资源,因此必须为它创建一个新的类,否则系统不能识别和调用它们。通过建立“类向导”菜单项创建一个新的类,并设计好新的类名。创建好新的类后必须对它们加以声明,因为在资源互相调用时,需要在它们之间进行声明,否则将不可识别。声明过程如下:step1 在资源管理器中选择fileview选项卡。图3.2.1 类的声明step2 双击“职工管理系统view.cpp”,即出现文件的开头部分,该部分用来对工程的类进行声明,增加新的声明,如下所示:/ 职工管理系统view.cpp : implementation of the cmyview class#include stdafx.h#include 职工管理系统.h#include 职工管理系统set.h#include 职工管理系统doc.h#include 职工管理系统view.h#include mydlg1.h#include mydlg2.h#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#endif这样,在职工管理系统dlg.cpp中就声明了三个新的类的头文件。通过声明程序,可以在以后新的类的引用加以识别。如果不加以声明,将会出现不明对象身份的信息提示。(3) 各个对话框设计完成以上的过程之后就可以对各个对话框进行设计了。将其中的两个对话框的名称一个改为“职工信息浏览”,一个改为“职工工资浏览”。再为每一个对话框添加各种控件。在“职工管理系统主界面”中添加“职工信息浏览”、“职工工资浏览”、“职工基本信息编辑”个按钮控件。在“职工信息浏览”、“职工工资浏览”界面上分别插入两个active控件。插入过程如下:在active控件列表中选择“microsoft ado date control,version6.0”选项,确定即插入了一个adoc控件,如图3.2.2: 图3.2.2 插入adoc控件它是一个数据源控件,专门用于为应用系统创建数据库环境,其作用与odbc数据源一样,但在使用方法上有 一定的区别。同时数据环境一经建立,adoc控件又可以作为一个数据导航控件,专门用于对数据环境中的数据记录进行浏览查询。将控件的属性设为:表3 adoc控件的基本属性属性属性内容ididc_adodc1标题yes显示数据浏览connectionstingdsn=职工管理数据库recordsoure职工信息数据表再在activex控件列表中选择“micosoft datagrid control,version6.0”选项插入一个“microsoft datagrid 6.0”表格控件,如图3.2.3:图3.2.3 插入表格控件它是一表格的方式对数据源中的数据进行处理的控件。设置表格控件的属性,如下表:表4 datagrid控件的基本属性属性属性内容ididc_datagrid1显示yes标题职工基本信息一览表datasoureidc_adodc1allowaddnewtrueallowdeletetrueallowupdatatrue表5 分组框对象的基本属性id标题内容idc_staticgroup1记录编辑区idc_staticgroup2记录操作区为“职工基本信息编辑”界面放入控件并进行属性设置,属性如以下的表:表6 命令按钮对象的基本属性id标题内容idc_buttonaddnew增加内容idc_buttondelete删除内容idc_buttonupdata刷新记录idc_buttonfirst第一条idc_buttonnext下一条idc_buttonprev前一条idc_buttonlast最后一条idc_buttonliulan1职工基本信息一览idc_buttonliulan2职工工资一览 表7 标签对象的命令按钮的基本属性id标题内容idc_staticname职工姓名idc_staticnumber职工编号idc_staticsex性别idc_staticnialing年龄idc_staticjianli简历idc_staticzhiwu职务idc_staticzhichen职称idc_statictime工作时间idc_staticjibengongji基本工资idc_staticqitagongzi其他工资idc_staticyueshouru月收入idc_staticbumen所在部门表8 编辑框对象的基本属性id标题内容idc_editname职工姓名idc_editnumber职工编号idc_editsex性别idc_editnialing年龄idc_editjianli简历idc_editzhiwu职务idc_editzhichen职称idc_edittime工作时间idc_editjibengongji基本工资idc_editqitagongzi其他工资idc_edityueshouru月收入idc_editbumen所在部门然后对编辑框进行数据绑定,完成以上的操作后在为每一个命令按钮编制过程代码,各个按钮的代码如下:增加记录代码:void cmyview:onbuttonaddnew() / todo: add your control notification handler code herem_pset-addnew(); /指针调用addnew()函数,录入新数据updatedata(false); /显示新信息删除记录代码:void cmyview:onbuttondelete() / todo: add your control notification handler code herem_pset-delete(); m_pset-movenext();if(m_pset-iseof() /判断是否已经到达最首记录m_pset-movelast(); /移向下一条记录if(m_pset-isbof() /判断是否已经到达最末记录m_pset-setfieldnull(null);updatedata(false);刷新记录代码:void cmyview:onbuttonupdate() / todo: add your control notification handler code hereupdatedata(); /更新编辑框中内容的编辑m_pset-update(); m_pset-requery(); /重新从表中获取内容m_pset-cancelupdate();第一条记录代码:void cmyview:onbuttonfirst() / todo: add your control notification handler code herem_pset-movefirst(); /移至首信息if(m_pset-isbof() /判断是否已经到达最首记录messagebox(记录已经在第一条);m_pset-movenext(); /往后移一条updatedata(false); return;updatedata(false); /显示第一条的信息下一条记录代码:void cmyview:onbuttonnext() / todo: add your control notification handler code herem_pset-movenext(); /往后移一条if(m_pset-iseof() /判断是否在最后一条messagebox(记录已经在最后一条!);m_pset-moveprev(); /往前移一条updatedata(false);return;updatedata(false); /显示下一条信息前一条记录代码:void cmyview:onbuttonprev() / todo: add your control notification handler code herem_pset-moveprev(); /往前移一条if(m_pset-isbof() /判断是否在最开始messagebox(记录已经在第一条!);m_pset-movenext();updatedata(false);return;updatedata(false); /显示上一条信息最后一条记录代码:void cmyview:onbuttonlast() / todo: add your control notification handler code herem_pset-movelast(); / m_pset移至最后if(m_pset-iseof() /判断是否已经到达最首记录messagebox(记录已经在最后一条!);m_pset-moveprev(); /移向前一条updatedata(false);return;updatedata(false); /显示最后一条信息(4) 各对话框之间的切换要从“职工信息编辑界面”到“职工信息浏览”界面,先要在“职工管理系统主界面”的对话框中声明对话框“职工信息浏览”,其声明如下:#include stdafx.h#include 职工管理系统.h#include 职工管理系统set.h#include 职工管理系统doc.h#include 职工管理系统view.h#include mydlg1.h#include mydlg2.h再在主界面上添加的命令按钮“职工信息浏览”,通过“建立类向导”对按钮添加函数,函数代码如下:void cmyview:onbuttonliulan() / todo: add your control notification handler code heremydlg1 mydlg1; /创建mydlg1的对象mydlg1mydlg1.domodal(); /通过对象mydlg1调用domodal()函数void cmyview:onbuttonliulan2() / todo: add your control notification handler code heremydlg2 mydlg2;mydlg2.domodal();其它的界面互换方法一样。4 系统运行报告4.1 系统运行的主界面程序的各个部分运行没有错误后,进行总体组建,编译后运行出现系统的主界面,如下图所示:4.2 职工基本信息运行界面 单击主界面中的“职工信息全部浏览”按钮,出现下面的界面:4.3 职工工资信息运行界面单击主界面的“职工工资全部浏览”按钮,出现如下界面:5 设计中的不足 (1) 对vc+中的不熟悉,和不能熟练地运用mfc这个软件开发工具所以系统的界面比较简单,不够美观。(2)还有就是由于对mfc中的很多类不是很熟悉,不能够熟练运用使得系统很多地方都不是很完善,比如有些程序比较繁冗,不利于维护与修改。(3) 该系统的功能比较简单,灵活性不高,还有许多需要改进的地方。6 总结通过这次软件设计学到了很多东西.上学期开设了vc+课程,由于是我们首次接触面向对象的概念.所以在学习vc+的过程当中,很多时间都用在学习vc+中的一些基本语法以及面向对象的编程思想上面,真正自己实践的部分比较少。很感谢这次学校给我们提供一个平台,让我们有一次自己动手实践的机会。另外对c+语言有更深的理解,能够解决该语言的基本错误能够进行判别和修改。对c+语言懂得了基本的应用方法,知道了学习c+语言的关键是要掌握程序设计的核心-算法和数据结构。还有通过自学掌握了用mfc开发软件的基本方法与过程,也了解与熟悉了数据库的一些基本知识并能够运用mirosoft access 2003创建一个简单的数据库。并通过实际操作了解了软件开发的基本流程。同时,通过这次设计也认识到自己的知识的贫乏。很多东西仅仅学到了一些皮毛,这是远远不够的。这需用要以后不断加强自己的自学能力,通过多学习课程以外的专业知识来充实自己。 总之,通过这次面向对象课程设计,改变了自己的一些观念,发现了很多问题,并且在发现问题和解决问题的过程当中学习到了很多东西。参考书目1 伍俊良, visusl c+ 课程设计与系统开发案例, 清华大学出版社, 2002.11.2 刘振安等编, c+ 课程设计机械工业出版社, 2004.8. 3 王正军等编, visusl c+ 6.0程序设计从入门到精髓, 人民邮电出版社, 2005.11. 部分程序清单:/ 职工管理系统set.cpp : implementation of the cmyset class/#include stdafx.h#include 职工管理系统.h#include 职工管理系统set.h#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#endif/ cmyset implementationimplement_dynamic(cmyset, crecordset)cmyset:cmyset(cdatabase* pdb): crecordset(pdb)/afx_field_init(cmyset)m_jibengongzi = 0.0f;m_jianli = _t();m_qitagongzi = 0.0f;m_bumen = _t();m_shouru = 0.0f;m_zhichen = _t();m_number = 0;m_name = _t();m_nianlin = 0;m_number1 = 0;m_name1 = _t();m_zhiwu = _t();m_sex = _t();m_nfields = 14;/afx_field_initm_ndefaulttype = snapshot;cstring cmyset:getdefaultconnect()return _t(odbc;dsn=职工管理数据库);cstring cmyset:getdefaultsql()return _t(职工工资数据表,职工信息数据表);void cmyset:dofieldexchange(cfieldexchange* pfx)/afx_field_map(cmyset)pfx-setfieldtype(cfieldexchange:outputcolumn);rfx_single(pfx, _t(基本工资), m_jibengongzi);rfx_text(pfx, _t(简历), m_jianli);rfx_single(pfx, _t(其他工资), m_qitagongzi);rfx_text(pfx, _t(所在部门), m_bumen);rfx_single(pfx, _t(月收入), m_shouru);rfx_text(pfx, _t(职称), m_zhichen);rfx_long(pfx, _t(职工工资数据表.职工编号), m_number);rfx_text(pfx, _t(职工工资数据表.职工姓名), m_name);rfx_int(pfx, _t(职工年龄), m_nianlin);rfx_long(pfx, _t(职工信息数据表.职工编号), m_number1);rfx_text(pfx, _t(职工信息数据表.职工姓名), m_name1);rfx_text(pfx, _t(职务), m_zhiwu);rfx_text(pfx, _t(职工性别), m_sex);rfx_date(pfx, _t(工作时间), m_shijian);/afx_field_map/ cmyset diagnostics#ifdef _debugvoid cmyset:assertvalid() constcrecordset:assertvalid();void cmyset:dump(cdumpcontext& dc) constcrecordset:dump(dc);#endif /_debug/ 职工管理系统.cpp : defines the class behaviors for the application./#include stdafx.h#include 职工管理系统.h#include mainfrm.h#include 职工管理系统set.h#include 职工管理系统doc.h#include 职工管理系统view.h#ifdef _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 macros here./ do not edit what you see in these blocks of generated code!/afx_msg_map/ standard print setup commandon_command(id_file_print_setup, cwinapp:onfileprintsetup)end_message_map()/ cmyapp constructioncmyapp:cmyapp()/ todo: add construction code here,/ place all significant initialization in initinstance/ the one and only cmyapp objectcmyapp theapp;/ cmyapp initializationbool cmyapp:initinstance()afxenablecontrolcontainer();/ standard initialization/ if you are not using these features and wish to reduce the size/ of your 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 shared dll#elseenable3dcontrolsstatic();/ call this when linking to mfc statically#endif/ change the registry key under which 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 (including mru)/ register the applications document templates. document templates/ serve as the connection between documents, frame windows and views.csingledoctemplate* pdoctemplate;pdoctemplate = new csingledoctemplate(idr_mainframe,runtime_class(cmydoc),runtime_class(cmainframe), / main sdi frame windowruntime_class(cmyview);adddoctemplate(pdoctemplate);/ parse command line for standard shell commands, dde, file openccommandlineinfo cmdinfo;parsecommandline(cmdinfo);/ dispatch commands specified on the command lineif (!processshellcommand(cmdinfo)return false;/ the one and only window has been initialized, so show and update it.m_pmainwnd-showwindow(sw_show);m_pmainwnd-updatewindow();return true;/ caboutdlg dialog used for app aboutclass caboutdlg : public cdialogpublic:caboutdlg();/ dialog data/afx_data(caboutdlg)enum idd = idd_aboutbox ;/afx_data/ classwizard generated virtual function overrides/afx_virtual(caboutdlg)protected:virtual void dodataexchange(cdataexchange* pdx); / ddx/ddv support/afx_virtual/ implementationprotected:/afx_msg(caboutdlg)/ no message handlers/afx_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_mapbegin_message_map(caboutdlg, cdialog)/afx_msg_map(caboutdlg)/ no message handlers/afx_msg_mapend_message_map()/ app command to run the dialogvoid cmyapp:onappabout()caboutdlg aboutdlg;aboutdlg.domodal();/ cmyapp message handlers/ 职工管理系统.cpp : defines the class behaviors for the application./#include stdafx.h#include 职工管理系统.h#include mainfrm.h#include 职工管理系统set.h#include 职工管理系统doc.h#include 职工管理系统view.h#ifdef _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 macros here./ do not edit what you see in these blocks of generated code!/afx_msg_map/ standard print setup commandon_command(id_file_print_setup, cwinapp:onfileprintsetup)end_message_map()/ cmyapp constructioncmyapp:cmyapp()/ todo: add construction code here,/ place all significant initialization in initinstance/ the one and only cmyapp objectcmyapp theapp;/ cmyapp initializationbool cmyapp:initinstance()afxenablecontrolcontainer();/ standard initialization/ if you are not using these features and wish to reduce the size/ of your 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 shared dll#elseenable3dcontrolsstatic();/ call this when linking to mfc statically#endif/ change the registry key under which 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 (including mru)/ register the applications document templates. document templates/ serve as the connection between documents, frame windows and views.csingledoctemplate* pdoctemplate;pdoctemplate = new csingledoctemplate(idr_mainframe,runtime_class(cmydoc),runtime_class(cmainframe), / main sdi frame windowruntime_class(cmyview);adddoctemplate(pdoctemplate);/ parse command line for standard shell commands, dde, file openccommandlineinfo cmdinfo;parsecommandline(cmdinfo);/ dispatch commands specified on the command lineif (!processshellcommand(cmdinfo)return false;/ the one and only window has been initialized, so show and update it.m_pmainwnd-showwindow(sw_show);m_pmainwnd-updatewindow();return true;/ caboutdlg dialog used for app aboutclass caboutdlg : public cdialogpublic:caboutdlg();/ dialog data/afx_da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论