1、主界面修改删除添加工资计算确定统计结果图1系统模块图2.5数据库设计(1)实体E-R图这一设计阶段是在需求分析的基础上,设计出能满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。 将现实世界的实体,属性和联系转化为抽象的概括的概念模型。构成E-R图的基本要素是实体型、属性和联系。员工信息的实体-属性图,如图2所示。图2员工工资实体-属性图 选择“文件”“新建”菜单,在右边任务窗格中单击“空数据库”,弹出一个对话框,指定数据库名员工工资管理系统.mdb。单击“创建”按钮。就创建了数据库
2、,该课程一共需要2张表,分别存放相应的数据信息,其中工资数据表是关键表,用于存放基础数据信息。它涉及职员信息和工资情况的表;另一张表用来存放登录的用户名和密码用来登录的时候用。2(2)员工的工资数据库表 员工的工资数据库表的设计界面如图3所示 图3工资数据表 员工工资数据库表的数据结构如表1所示表1员工工资数据库表字段名称字段类型字段大小员工编号字符型8部门编号工龄数值型1000姓名10职称12基础工资奖金车补饭补其他补助(3)员工的登录表员工的登录对话框记录着用户需要的登录的用户名和密码,表结构如图3所示:表2用户的登录表UsernamePassword6员工登录对话框表的设计界面如图4所示
3、图4员工的登录数据表(4)ODBC数据源Windows中的ODBC组件是出现在系统的“控制面板”管理工具中。双击ODBC图标,进入ODBC数据源管理器。运行ODBC组件,进入ODBC数据源管理器。单击“添加”按钮,弹出有一驱动程序列表的“创建新数据源”对话框,在该对话框中选择Microsoft Access Driver。单击“完成”按钮,进入指定驱动程序的安装对话框,数据源名称设为“员工工资管理系统”,单击“选择”按钮将本实验中的数据库。单击“确定”按钮,刚才创建的用户数据源被添加在“ODBC数据源管理器”的“用户数据源”列表中。2.6具体界面设计打开计算机,启动Visual C+ 6.0系
4、统创建一个单文档应用程序,在工程名称框中输入Win32应用程序项目名称员工工资管理系统。(1)登录界面的设计系统登录表单主要任务是输入密码,其作用是保护系统数据的安全性。只有合法用户才可以使用本系统。当系统运行时,首先打开登录窗体,只有有权限的用户才能进入系统。在【用户名】文本框中输入后按Tab键,程序将自动查询用户名并跳到【密码】文本框中,输入密码后按Enter键即可进入系统,登陆界面的实现如图5示:3 4图5 登陆界面具体的步骤如下:将本项目工作区窗口切换到ResourceView页面插入一个对话框资源,打开属性对话框,设置字体设置,向对话框中添加两个编辑框:“请输入用户名”( IDC_E
5、DIT_USERNAME)、“请输入密码”( IDC_EDIT_USERPASSWD)为登陆界面对话框资源模板添加控件如表3所示。表3 登陆界面控件属性设置添加的控件ID号标题静态文本框IDC_STATIC用户名:密码:编辑框IDC_EDIT_USERNAMEIDC_EDIT_USERPASSWD按钮IDC_BUTTON_OKIDC_BUTTON_CANCEL取消双击对话框模板或按【Ctrl+W】快捷键为对话框资源建立类向导。为该对话框类取个名字:CDlg_login。左键双击IDC_EDIT_USERNAME(或者单击后,点击右边的add variables),为IDC_EDIT1增加一个对
6、应在类中的名字:m_login_name。点击确定。同样也对IDC_EDIT_USERPASSWD也取一个名字:m_login_pwd。 【Ctrl+W】快捷键,进入类向导界面,为IDC_BUTTON_OK和IDC_BUTTON_CANCEL添加代码void Cdenglu:OnOK() / TODO: Add extra validation hereUpdateData(); m_username.TrimLeft();if(m_username.IsEmpty() MessageBox(请输入用户名!); return; CDatabase database; database.Open
7、Ex( _T( DSN=工资管理数据库 ),CDatabase:noOdbcDialog); CRecordset recset(&database); CString mSqlStr; mSqlStr= SELECT * FROM 登录对话框 WHERE username=; mSqlStr = mSqlStr + m_username; mSqlStr = mSqlStr + AND passwor d= mSqlStr = mSqlStr + m_password; / if (!recset.Open(CRecordset:forwardOnly, mSqlStr, CRecordse
8、t:readOnly) AfxMessageBox(登陆界面表打开失败! if (!recset.IsEOF() / Open all function for user登录成功 else AfxMessageBox(登录失败!void Cdenglu:OnCancel() / TODO: Add extra cleanup here CDialog:OnCancel(); exit(0);在mainFrm.cpp文件的前面添加:#include dlg_login.h。在运行过程中,点击OK后,主窗体会显示出来,并没有在用户名以及密码框中输入。要求输入正确的用户名和密码,主窗体才能显示出来。
9、增加一个成员函数,点击OK。 (2)系统编辑界面的设计 进入主界面,主要是编辑员工的基本信息,可以对这些基本信息进行添加删除修改等一些操作,具体的设计界面如图6所示图6用户主界面(3)员工工资管理系统表单对话框资源模板添加部分控件如表4所示。表4 表单对话框控件及属性IDC_QUESTIONIDC_ANSWERIDC_REANAMEIDC_IDNUMIDC_AGEIDC_PHINE年份月份员工姓名员工部门基本工资业绩工资津贴各种补助水电费组框编辑模块查询模块IDC_BUTTON 查询 双击对话框模板或按【Ctrl+W】快捷键为对话框资源建立类向导。在弹出MFC ClassWizard对话框,切
10、换到Member Varibles选项卡,在Class name框中为上述控件添加相关联的数据成员变量。 具体代码如下/ CMyView database supportCRecordset* CMyView:OnGetRecordset() return m_pSet;/ CMyView message handlersBOOL CMyView:OnCommand(WPARAM wParam, LPARAM lParam) Add your specialized code here and/or call the base classCString str; CMainFrame *pFr
11、ame =(CMainFrame*)AfxGetApp()-m_pMainWnd; CStatusBar *pStatus=&pFrame-m_wndStatusBar; if(pStatus) CRecordsetStatus rStatus; m_pSet-GetStatus(rStatus); str.Format(当前记录:%d/总记录:%d,1+rStatus.m_lCurrentRecord,m_pSet-GetRecordCount();pStatus-SetPaneText(1,str); return CRecordView:OnCommand(wParam, lParam)
12、;void CMyView:OnChaxunzgbh() Add your control notification handler code here UpdateData(); m_ZGBH.TrimLeft(); m_ZGBH.TrimRight(); if(m_ZGBH.IsEmpty() MessageBox(要查询的员工编号不能为空Close();m_strFilter.Format(ZGBH=%S,m_ZGBH); /查询字符串m_ZGBHm_pSet-m_strSort=YFOpen();if(!IsEOF() UpdateData(FALSE);else没有查到你要找的纪录!
13、void CMyView:OnButtonAdd() CEditDlg dlg; if(dlg.DoModal()=IDOK) AddNew() ; / m_NF=dlg.m_intNF;m_YF=dlg.m_intYF;m_ZGBH=dlg.m_strZGBH;m_ZGXM=dlg.m_strZGXM;m_ZGBM=dlg.m_strZGBM;m_JBGZ=dlg.m_longJBGZ;m_YJGZ=dlg.m_longYJGZ;m_JJ=dlg.m_longJJ;m_JT=dlg.m_longJT;m_GZBZ=dlg.m_longGZBZ;m_SDF=dlg.m_longSDF;m_FZ
14、=dlg.m_longFZ;m_HF=dlg.m_longHF;m_CX=dlg.m_longCX;m_BX=dlg.m_longBX; m_pSet-Update();Requery();OnButtonDelete() CRecordsetStatus status;GetStatus(status);Delete();if(status.m_lCurrentRecord=0) MoveNext();MoveFirst(); UpdateData(FALSE);OnButtonEdit() dlg.m_intNF=m_pSet-m_NF; dlg.m_intYF=m_pSet-m_YF;
15、dlg.m_strZGBH =m_pSet-m_ZGBH; dlg.m_strZGXM =m_pSet-m_ZGXM; dlg.m_strZGBM =m_pSet-m_ZGBM; dlg.m_longJBGZ=m_pSet-m_JBGZ; dlg.m_longYJGZ=m_pSet-m_YJGZ; dlg.m_longJJ =m_pSet-m_JJ; dlg.m_longJT=m_pSet-m_JT; dlg.m_longGZBZ=m_pSet-m_GZBZ; dlg.m_longSDF=m_pSet-m_SDF; dlg.m_longFZ=m_pSet-m_FZ; dlg.m_longHF=
16、m_pSet-m_HF; dlg.m_longCX=m_pSet-m_CX; dlg.m_longBX=m_pSet-m_BX;/IDOK if(dlg.DoModal()=IDOK) m_pSet-Edit(); / m_pSet-void CEditDlg:m_strZGBH.TrimLeft(); m_strZGXM.TrimLeft(); m_strZGBM.TrimLeft(); if(m_strZGBH.IsEmpty()员工编号不能为空! if(m_strZGXM.IsEmpty() 员工姓名不能为空! if(m_strZGBM.IsEmpty()员工部门不能为空!OnOK();
17、 (4)系统工资统计界面的设计 员工的最后实际发的工资是经过计算后的,这个界面就是体现出这个计算的过程,应发工资减掉各种扣钱,得到最后的工资,设计界面如图7所示图7用户主界面为IDC_GUOJI对话框资源模板添加控件如表5所示表5单对话框控件及属性应发合计扣除合计实发工资IDC_IDUNMIDC_GUOJIIDC_CMDE 取消按Ctrl+W键,弹出MFC ClassWizard对话框,切换到Member Varibles选项卡,在Class name框中选择IDC_GUOJI,为上述控件添加相关联的数据成员变量。代码如下:OnButtonTongji() CTongji dlg;dlg.m_
18、YFHJ=m_pSet-m_JBGZ+m_pSet-m_YJGZ+m_pSet-m_JJ+m_pSet-m_JT+m_pSet- dlg.m_KCHJ=m_pSet-m_SDF+m_pSet-m_FZ+m_pSet-m_HF+m_pSet-m_BX+m_pSet- dlg.m_SFGZ= dlg.m_YFHJ-dlg.m_KCHJ; dlg.DoModal(); /3设计结果与分析3.1系统登录界面设计进入程序后,首先出现的是【员工登陆】对话框,在【用户名】文本框中输入后按Tab键,程序将自动查询用户名并跳到【密码】文本框中,输入密码后按Enter键即可进入系统,执行denglu.cpp文件,
19、调用CEditDlg:OnOK()函数。登录对话框如图8所示。图8员工登录对话框3.2系统主界面设计登录成功后将显示主界面主界面如图9所示,在此界面可以选择各种按钮进行不同的操作。比如点击【添加】按钮,系统将执行EditDlg.cpp文件,调用void CMyView:OnButtonAdd() 函数。然后将进出编辑对话框,对数据进行添加操作。点击【查询】按钮,调用void CMyView:OnChaxunzgbh() 函数。系统将显示出该员工号的工资。点击【工资统计结果】按钮,调用CMyView:OnButtonTongji() 函数,系统将显示该员工号的工资。3图9主界面3.3编辑功能的实现(1) 增加功能单击“增加“按钮,进入增加记录功能窗体,如图10所示。在上边的编辑框中,可以很清楚看到整个表中的记录和主视图一致,在编辑框中输入完成了记
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2