《数据库技术》课程设计-工资管理系统.doc_第1页
《数据库技术》课程设计-工资管理系统.doc_第2页
《数据库技术》课程设计-工资管理系统.doc_第3页
《数据库技术》课程设计-工资管理系统.doc_第4页
《数据库技术》课程设计-工资管理系统.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

数据库技术课程设计课题名称: 工资管理系统 班 级: 08通信2-BF 学 号: 姓 名: 小组成员: 信息与通信工程学院2011年6月11日-2011年6月26日一设计目的本次课程设计是学习完数据库系统概论课程后,进行的一次全面的综合训练,其目的在于加深对数据库基础理论和基本知识的理解,掌握运用数据库应用系统开发软件的基本方法。 企业工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。最初的工资统计和发放都是使用人工方式处理,工作量大的时候,出现错误的机率也随之升高,不仅花费财务人员大量的时间,而且往往由于抄写不慎,或者由于计算的疏忽,出现工资发放错误的现象。同时工资的发放具有较强的时间限制,必须严格按照单位规定的时间完成计算和发放工作。正是企业工资管理的这种重复性、规律性、时间性,使得企业工资管理计算机化成为可能。企业工资管理系统就是使用电脑代替大量的人工统计和计算,完成众多企业工资信息的处理,同时使用电脑还可以安全地、完整地保存大量的企业工资记录。2 系统的功能分析1.用户对系统的功能需求经过分析研究,确定了用户对系统的主要功能需求有:(1)员工基本信息增删改功能:员工基本信息录入和员工删除。(2)员工工资管理:基本工资管理,浮动工资管理,工资发放管理。(3)员工工资查询:基本工资查询,浮动工资查询,加班/休假查询,工资总体查询。(4)系统管理:用户管理,密码修改,系统退出。(5)帮助功能。2.用户对系统的性能需求一般的性能需求是指相互消息传递顺利,协议分析正确,界面友好,运行时间满足使用需要,安全性得到完全保证。 1稳定性:本系统面对的是大量的职工,一旦服务器发生阻塞而崩溃将带来很大的麻烦和问题。系统服务器的及时响应也是服务质量的重要指标,太长的延迟时间将给工作带来不便。由于数据量大,必须对数据及时备份与恢复。 2安全性:对职工工资管理系统而言,通过提供访问权限来防止职工信息泄漏。3可扩展性:系统要满足用户需求和业务复杂性要求。主要表现在用户数量以及提供的用户服务的复杂性和集成性等方面,系统要随着用户的要求和技术的不断发展改进。因此系统可扩展性非常必要。4易于管理:可以很方便的对系统进行管理,确保系统正常运行,同时系统的管理和监控可以在远程完成 5. 一致性:系统数据要保证一致性、准确性,当某一数据库中记录改变,与之相关联的数据库也随之变化。三系统数据库设计1,通过以上功能需求分析,得到系统业务流图及功能模块图:(1) 数据流图(DFD): 图1: 系统数据流图(2) 本系统的功能模块图如下: 图2:系统功能模块图(3) 数据字典(DD):本系统需要使用的数据包括以下关系。表1:职员信息表Czyxxb字段名称数据类型字段大小作 用是否主键CzyNamevarchar20用户名是Pwdvarchar20密码是Czyjbvarchar10用户等级是表2:工资发放信息表Gzffxxb字段名称数据类型字段大小作 用是否主键YGidvarchar30员工编号是YGxmvarchar30员工姓名是JBgzmoney8基本工资否ZWgzmoney8职务工资否GLgzmoney8工龄工资否YLbxjmoney8养老保险金否JiaBtsint4加班天数否JiaBgzmoney8加班工资否SJtsint4事假天数否SJkkmoney8事假扣款否GRsdsmoney8个人所得税否ZFbzmoney8住房补助否SHbzmoney8生活补助否BXfmoney8保险费否YFjemoney8应发金额否SFjemoney8实发金额否Yu_Emoney8余额否SJiandatetime8时间否表3:员工浮动工资项目表Ygfdgzxmb字段名称数据类型字段大小作 用是否主键YGidvarchar30员工编号是YGxmvarchar30员工姓名否GRsdsmoney8个人所得税否ZFbzmoney8住房补助否BXfmoney8保险费否SHbzmoney8生活补助否表4:员工基本工资表Ygjbgzb字段名称数据类型字段大小作 用是否主键YGidvarchar30员工编号是YGxmvarchar30员工姓名否JBgzmoney8基本工资否ZWgzmoney8职务工资否GLgzmoney8工龄工资否YLbxjmoney8养老保险金否表5:员工加班休假表Ygjbxjb字段名称数据类型字段大小作 用是否主键YGidvarchar30员工编号是YGxmvarchar30员工姓名否JiaBtsint4加班天数否JiaBgzmoney8加班工资否SJtsint4事假天数否SJkkmoney8事假扣款否表6:员工基础信息表Ygjcxxb字段名称数据类型字段大小作 用是否主键YGidvarchar30员工编号是YGxmvarchar30员工姓名否Sexchar2性别否WHcdvarchar20学历否2.概念结构设计:根据需求分析,得到系统ER图如下:加班天数员工姓名员工编号事假天数加班工资员工加班休假事假扣款员工编号关系员工编号 员工姓名基本工资员工姓名关系基本工资信息基本信息拥有员工性别职务工资学历工龄工资关系养老保险金员工浮动工资项目员工编号生活补助保险费员工姓名住房补助个人所得税图3:系统E-R图3.逻辑结构设计:(1)将上面ER图转换为关系模型,关系的码为黑体字加下划线。员工加班休假(员工编号,员工姓名,加班天数,加班工资,事假扣款,事假天数)此为员工加班休假实体对应的关系模式,其中员工编号是码。基本信息(员工编号,员工姓名,基本工资,职务工资,工龄工资,养老工资)此为员工基本信息实体对应的关系模式,其中员工编号是码。员工浮动工资项目(员工编号,员工姓名,个人所得税,住房补贴,保险费,生活补贴)此为员工浮动工资项目实体对应的关系模式,其中员工编号是码。基本工资信息(员工编号,员工姓名,性别,学历)此为基本工资信息实体对应的关系模式,其中员工编号是码。 (2)在SQL Server 2000的企业管理器中直接新建库和表: 设计Czyxxb表如下:图4:设计的Czyxxb表设计的Gzffxxb表如下:图5:设计的Gzffxxb表设计的Ygfdgzxmb表如下:图6:设计的Ygfdgzxmb表设计的Ygjbgzb表如下:图7:设计的Ygjbgzb表设计的Ygjbxjb表如下:图8:设计的Ygjbxjb表设计的Ygjcxxb表如下:图9:设计的Ygjcxxb表四、系统的详细设计与实现 本系统采用Visual C+ 6.0 ,SQL Server 2000进行开发,运行在Windows XP环境下。前台应用程序采用Visual C+ 6.0软件编写,后台数据库采用SQL Server 2000设计。各功能模块界面如下:1、 用户登录界面如下图7所示: 图10:用户登录界面2、进入工资管理系统菜单主界面: 图11:工资管理系统菜单主界面(1) 可以进行员工的录入、删除: 图12:员工删除界面(2) 管理员可以进行员工工资数据的更新:图13:员工工资添加界面(3) 管理员和员工均可以进行员工工资数据的查询: 图14:基本工资信息查询界面(4) 可以进行用户登录的系统管理:图15:用户信息管理界面五.设计心得体会在这次的设计过程中,我们是利用 SQL Server2000和VC+6.0来作为开发系统工具,在实践中了解了它们的使用和操作,由于这次设计涉及到数据库,我们学到了不少编程工具与数据库连接的知识,对数据库的操作有了进一步的了解。这次设计对我们的综合能力也是一次很好的锻炼,并且在实现过程中,我们学到的不仅是知识,还认识到许多事情。这次设计使我们的对编程的认识提高了一大步,在以小组的形式完成任务中,使我们充分的认识到合作的可贵。虽说在长达两个星期的苦思冥想后,终于完成了任务,但是我们必须承认自己的能力和知识还很有限,今后我们的学习道路还是很漫长的。附录:系统设计源代码1、登陆界面代码:CLogin:CLogin(CWnd* pParent /*=NULL*/): CDialog(CLogin:IDD, pParent)/AFX_DATA_INIT(CLogin)m_name = _T();m_pwd = _T();/AFX_DATA_INITm_hIcon = AfxGetApp()-LoadIcon(IDI_LOGINICON);void CLogin:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CLogin)DDX_Text(pDX, IDC_EDIT1, m_name);DDX_Text(pDX, IDC_EDIT2, m_pwd);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CLogin, CDialog)/AFX_MSG_MAP(CLogin)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CLogin message handlersvoid CLogin:OnOK() / TODO: Add extra validation here/将对话框中编辑框的数据读取到成员变量中UpdateData(true);if(m_name=)MessageBox(请输入用户名,工资管理系统);return;/如果读取数据和用户输入不同,则返回if(ffxxb.HaveCzy(m_name,m_pwd)!=1)MessageBox(用户名或密码错误!,工资管理系统);return;ffxxb.SetCzyName(m_name);jb=1;/判断当前用户级别if(ffxxb.HaveCzyjb(m_name,m_pwd,jb)=1)ffxxb.SetCzyjb(jb);CDialog:OnOK();BOOL CLogin:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization hereSetIcon(m_hIcon, TRUE);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE2、工资总体查询界面代码:CZongtcxdlg:CZongtcxdlg(CWnd* pParent /*=NULL*/): CDialog(CZongtcxdlg:IDD, pParent)/AFX_DATA_INIT(CZongtcxdlg)m_check1 = FALSE;m_check2 = FALSE;/AFX_DATA_INITm_hIcon = AfxGetApp()-LoadIcon(IDI_ZTCXICON);void CZongtcxdlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CZongtcxdlg)DDX_Control(pDX, IDC_DATETIMEPICKER1, m_time);DDX_Control(pDX, IDC_ADODC1, m_ad);DDX_Control(pDX, IDC_DATACOMBO1, m_dc);DDX_Control(pDX, IDC_DATAGRID1, m_da);DDX_Check(pDX, IDC_CHECK1, m_check1);DDX_Check(pDX, IDC_CHECK2, m_check2);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CZongtcxdlg, CDialog)/AFX_MSG_MAP(CZongtcxdlg)ON_BN_CLICKED(IDC_CHAXUN, OnChaxun)ON_BN_CLICKED(IDC_CHECK1, OnCheck1)ON_BN_CLICKED(IDC_CHECK2, OnCheck2)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CZongtcxdlg message handlersBOOL CZongtcxdlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization hereSetIcon(m_hIcon, TRUE);/设置复选框初始化显示m_check1=TRUE;m_check2=TRUE;UpdateData(false);/设置DataGrid控件各列显示的长度_variant_t vIndex; vIndex=long(0);m_da.GetColumns().GetItem(vIndex).SetWidth(60); vIndex=long(1);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(2);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(3);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(4);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(5);m_da.GetColumns().GetItem(vIndex).SetWidth(75);vIndex=long(6);m_da.GetColumns().GetItem(vIndex).SetWidth(75); vIndex=long(7);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(8);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(9);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(10);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(11);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(12);m_da.GetColumns().GetItem(vIndex).SetWidth(60); vIndex=long(13);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(14);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(15);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(16);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(17);m_da.GetColumns().GetItem(vIndex).SetWidth(120);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CZongtcxdlg:OnChaxun() / TODO: Add your control notification handler code hereUpdateData(true);CString str;/读取DataCombo控件中文本str=m_dc.GetText();CString date;CTime temp;m_time.GetTime(temp);/读取当前Date Time控件的月份int m;m = temp.GetMonth();/读取当前Date Time控件的年份int y;y=temp.GetYear();CString stry;stry.Format(%d,y);CString strm;strm.Format(%d,m);if(check2=0)m_ad.SetRecordSource(SELECT YGid AS 员工编号,YGxm AS 员工姓名,JBgz AS 基本工资,GLgz AS 工龄工资,ZWgz AS 职务工资,YLbxj AS 养老保险金,GRsds AS 个人所得税,SHbz AS 生活补助,ZFbz AS 住房补助,BXf AS 保险费,JiaBts AS 加班天数,JiaBgz AS 加班工资,SJts AS 事假天数,SJkk AS 事假扣款,YFje AS 应发金额,SFje AS 实发金额,Yu_E AS 余额,SJian AS 时间 FROM Gzffmxb where YGid=+str+ );else if(check=0)/不选择员工编号时查询m_ad.SetRecordSource(SELECT YGid AS 员工编号,YGxm AS 员工姓名,JBgz AS 基本工资,GLgz AS 工龄工资,ZWgz AS 职务工资,YLbxj AS 养老保险金,GRsds AS 个人所得税,SHbz AS 生活补助,ZFbz AS 住房补助,BXf AS 保险费,JiaBts AS 加班天数,JiaBgz AS 加班工资,SJts AS 事假天数,SJkk AS 事假扣款,YFje AS 应发金额,SFje AS 实发金额,Yu_E AS 余额,SJian AS 时间 FROM Gzffmxb where year(sjian)=+stry+ and month(sjian)=+strm+ );else/选择员工编号时查询 m_ad.SetRecordSource(SELECT YGid AS 员工编号,YGxm AS 员工姓名,JBgz AS 基本工资,GLgz AS 工龄工资,ZWgz AS 职务工资,YLbxj AS 养老保险金,GRsds AS 个人所得税,SHbz AS 生活补助,ZFbz AS 住房补助,BXf AS 保险费,JiaBts AS 加班天数,JiaBgz AS 加班工资,SJts AS 事假天数,SJkk AS 事假扣款,YFje AS 应发金额,SFje AS 实发金额,Yu_E AS 余额,SJian AS 时间 FROM Gzffmxb where YGid=+str+ and year(sjian)=+stry+ and month(sjian)=+strm+ );m_ad.Refresh();_variant_t vIndex; vIndex=long(0);m_da.GetColumns().GetItem(vIndex).SetWidth(60); vIndex=long(1);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(2);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(3);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(4);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(5);m_da.GetColumns().GetItem(vIndex).SetWidth(75);vIndex=long(6);m_da.GetColumns().GetItem(vIndex).SetWidth(75); vIndex=long(7);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(8);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(9);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(10);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(11);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(12);m_da.GetColumns().GetItem(vIndex).SetWidth(60); vIndex=long(13);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(14);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(15);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(16);m_da.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(17);m_da.GetColumns().GetItem(vIndex).SetWidth(120);void CZongtcxdlg:OnOK() / TODO: Add extra validation hereCTime temp;m_time.GetTime(temp);int m;m = temp.GetMonth();int y;y=temp.GetYear();CString stry;stry.Format(%d,y);CString strm;strm.Format(%d,m);m_ad.SetRecordSource(SELECT sum(sfje) AS 公司本月发放工资总额 from Gzffmxb where year(sjian)=+stry+ and month(sjian)=+strm+);m_ad.Refresh();/CDialog:OnOK();void CZongtcxdlg:OnCheck1() / TODO: Add your control notification handler code hereUpdateData(true);if(m_check1=TRUE)check=1;elsecheck=0;UpdateData(false);void CZongtcxdlg:OnCheck2() / TODO: Add your control notification handler code hereUpdateData(true);if(m_check2=TRUE)check2=1;elsecheck2=0;UpdateData(false);3、用户管理关键字代码:CXinjyhdlg:CXinjyhdlg(CWnd* pParent /*=NULL*/): CDialog(CXinjyhdlg:IDD, pParent)/AFX_DATA_INIT(CXinjyhdlg)m_name = _T();m_pwd = _T();m_pwd1 = _T();/AFX_DATA_INITm_hIcon = AfxGetApp()-LoadIcon(IDI_XINJYHICON);void CXinjyhdlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CXinjyhdlg)DDX_Control(pDX, IDC_COMBO1, m_jb);DDX_Text(pDX, IDC_EDIT1, m_name);DDX_Text(pDX, IDC_EDIT2, m_pwd);DDX_Text(pDX, IDC_EDIT3, m_pwd1);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CXinjyhdlg, CDialog)/AFX_MSG_MAP(CXinjyhdlg)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CXinjyhdlg message handlersvoid CXinjyhdlg:OnOK() / TODO: Add extra validation hereUpdateData(true);if(m_name=)MessageBox(请输入用户名,工资管理系统);return;CString jb;m_jb.GetWindowText(jb);if(jb=)MessageBox(级别不能为空,工资管理系统);return; if(m_pwd=)MessageBox(请输入密码,工资管理系统);return;if(m_pwd1=)MessageBox(请确认密码,工资管理系统);return;if(m_pwd!=m_pwd1)MessageBox(两次密码不同,工资管理系统);return;CCzyxxb xxb;if(xxb.Havename(m_name)=1)MessageBox(用户以存在,请重新输入,工资管理

温馨提示

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

评论

0/150

提交评论