企业工资信息管理系统.docx
- 文档编号:6605354
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:19
- 大小:587.61KB
企业工资信息管理系统.docx
《企业工资信息管理系统.docx》由会员分享,可在线阅读,更多相关《企业工资信息管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
企业工资信息管理系统
学号:
课程设计
计算机软件设计
题目
企业工资信息管理系统
学院
专业
班级
姓名
指导教师
2011
年
7
月
10
日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
企业工资信息管理系统
初始条件:
职工工资管理是任何企事业单位都面临的问题,由于各个公司的工资处理方式总是有所区别,因此目前还没有一个通用的工资管理系统,只能针对公司情况去开发适合本公司需求的工资管理系统。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
本系统模拟了公司组织的整体信息,包括员工信息和员工工资信息。
通过对系统特点进行调查和分析,得到本系统的主要实现功能如下:
(1)企业职工人员管理模块:
实现对企业人员的查询、增加、修改、删除等操作。
(2)部门管理模块:
对企业的部门进行查询、增加、修改、删除等操作。
(3)工资管理模块:
对工资发放情况进行查询和统计。
时间安排:
2011.6.29——2011.6.30:
选题;
2011.7.1——2011.7.2:
查资料;
2011.7.3——2011.7.6:
编程及实现;
2011.7.7——2011.7.9:
撰写论文。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
1数据库设计1
2详细设计5
2.1系统管理模块..................................................................................................5
2.2职工信息管理模块.....................................................................................................6
3调试与分析9
3.1问题与解决办法...............................................................................................9
3.2经验与体会9
4测试结果10
4.1界面设置....................................................................................................................10
4.2数据库结果...............................................................................................................10
5系统的各功能模块...............................................................................................................11
5.2.1工资信息查看设计12
5.2.2工资信息保存设计15
6参考文献16
【摘要】
本系统使用VisualC++编程语言,采用Access作为数据库,主要使用VisualC++中的AdoData控件来对数据库进行各种操作。
使用AdoData控件操作简单,可以使用最少的代码创建数据库应用程序。
而对数据库的操作,既可以使用AdoData控件直接进行,也可以使用AdoData控件结合代码操纵。
本系统实现了一般工资管理系统对员工工资信息的浏览、添加、删除、修改和查询功能,能够完成对员工当月工资的结算,节省了大量的人工操作的工作量,自动完成众多的信息处理,减少了数据出现错误的几率,加强了工资记录的安全性和完整性。
系统中的工资管理模块是我做的重点,了解到工资的不同种类,需要设定不同的参数去记录工资的情况。
其中基本工资可以由工作小时计算得出确定,也可直接人工设定。
此外,还包含其它工资来源:
如福利来源,奖金来源,津贴来源,当然了,还有扣罚。
员工职务工资的设定,是工资管理系统的基础,可以实现工资的基本管理。
这样可以减少出错,提高效率。
关键词:
Access数据库;AdoData控件;VisualC++编程语言;工资信息
1数据库设计
系统设置了管理员权限,权限为5,职工员权限为0,默认权限为职工权限。
所以管理员登录时要修改权限值为5。
数据库里记录有管理员登录时的用户名以及密码。
默认的登录名及密码分别为:
KJS,KJS。
职工登录只要求输入职工编号,及自设的密码即可登录。
默认的ODBC数据源名为:
BISDB无需修改。
职工可以根据自已所在的部门填写部门编号,部门编号一般为汉字的拼音首字母。
系统自动显示部门名称以及所有在该部门的职工列表。
员工可以从职工列表中找到自己的职工号,输入职工号后即可显示职工的姓名及基本工资等等。
从而可以查看自己的工资情况。
管理员则可以从中设置员工的基本工资,以及添加每个年月的职工的获得的奖金,福利,津贴或者扣发情况。
实现职工工资的更改。
管理员还可以通过菜单栏中的设置按钮设置基本工资的计算方式。
1.1管理员登录表:
1.2员工登录表:
1.3登录用户信息表:
1.4工资情况表:
1.5工资设置表(管理员权限):
1.6部门信息表:
1.7职称信息表:
1.8其它工资来源信息表:
1.9其它工资信息表:
1.10加班时间表:
1.11职工出勤记录表:
1.12计数器表:
2详细设计
2.1系统管理模块:
(代码实现及界面)
voidCLoginDlg:
:
OnOK()//响应按钮连接数据库
{
CStringstr,strPasswd;
_RecordsetPtrpRS;//Recordset对象
UpdateData();//更新数据
//打开数据库
if(pTheConn->GetState()==adStateClosed)
pTheConn->Open(m_strDSN.AllocSysString(),"","",-1);
pRS.CreateInstance(__uuidof(Recordset));//创建Recordset对象实例
strPasswd=CCrypt:
:
Encrypt(m_strPasswd,123);//密码加密
//设置过滤条件
str="ID='"+m_strUser
+"'andPASSWD='"+strPasswd
+"'andAUTHORITY='5'";
try
{
pRS->Filter=str.AllocSysString();
pRS->Open("PERSON",
pTheConn.GetInterfacePtr(),
adOpenStatic,adLockReadOnly,adCmdTable);
}
catch(_com_error*e)
{
CStringError=e->ErrorMessage();
AfxMessageBox(e->ErrorMessage());
}
catch(...)
{
AfxMessageBox("打开数据集对象出错!
");
}
inta=pRS->RecordCount;
if(pRS->RecordCount==1)//判断认证是否通过
{
EndDialog(IDOK);//关闭对话框
}
else
MessageBox("请确认用户名和密码,注意大小写!
","认证失败");
}
voidCSalaryDlg:
:
OnSystemConnect()//显示用户登录窗口
{
CLoginDlgLoginDlg;
if(LoginDlg.DoModal()==IDOK)//认证通过
m_wndStatusBar.SetPaneText(1,"已连接到数据库:
"+LoginDlg.m_strDSN);
}
voidCSalaryDlg:
:
OnSystemDisconnect()//断开连接
{
//关闭Connetion对象
if(pTheConn->GetState()==adStateOpen)
pTheConn->Close();
m_wndStatusBar.SetPaneText(1,"尚未登录数据库,请按F2登录");
}
界面:
2.2职工信息管理模块:
voidCSalaryDlg:
:
OnBtnAddList()//增加职工信息函数
{
UpdateData();//更新数据
_variant_tValue;
CStringstrPersonID;
//判断数据库是否连接
if(pTheConn->GetState()==adStateClosed)return;
if(m_pDG1rs->GetState()==adStateClosed)return;
m_pDG1rs->MoveFirst();//移动到头
while(!
m_pDG1rs->adoEOF)//遍历员工列表
{
Value=m_pDG1rs->GetCollect("ID");//得到员工号
strPersonID=(char*)_bstr_t(Value);
AddRecord(strPersonID);
m_pDG1rs->MoveNext();
}
//刷新各列表
UpdateDG(m_pDG2rs,m_cDG2,2);
UpdateDG(m_pDG3rs,m_cDG3,3);
UpdateDG(m_pDG4rs,m_cDG4,4);
UpdateDG(m_pDG5rs,m_cDG5,5);
}
2.3工资管理模块:
voidCSalaryDlg:
:
OnCalculateStat()
{
CStringstr;//临时变量
intRate_overtime,Money_errand,Money_late,Money_absent;//记录中间结果
longcounter;//保存计数值
CStringstrYearMonth,strPerson,strAddDetail,strSubDetail;//保存说明信息
floatbasic,bonus,add_total,sub_total,total,temp;//保存中间结果
_RecordsetPtrpRS;//临时Recordset对象
//数据库未连接则返回
if(pTheConn->GetState()==adStateClosed)return;
界面:
(计算工资)
界面:
(帮助:
)
总界面:
3调试与分析
3.1问题与解决办法:
首先要在stdafx.h中得加载ADO库。
#import"C:
\programfiles\commonfiles\system\ado\msado15.dll"no_namespace\
rename("EOF","adoEOF")
#include
#include
其中的第一个#import语句是编译器把此指令中的动态链接库文件引入到程序中,并从库中抽取出其中的对象的类信息,并产生出两个头文件包含在工程中。
其中的no_namespace用来对动态链接库的名称域进行隔离。
最后的rename,把ADO中的EOF重新命名,避免和其他地方定义的EOF产生冲突。
第二、三行引入的头文件定义了ADO的类和接口标识。
然后分别实现不同的功能模块,数据库建表,界面设计,类设计,写代码实现。
3.2经验与体会
通过这次课设学到了ADO编程的一些实用方法,增强了上机调试能力,进一步理解了数据库设计,功能模块设计的能力。
面对问题时也能有效的解决,增强了排错能力。
4测试结果
4.1界面设置:
4.2数据库结果:
5系统的各功能模块
本系统由系统管理模块、工资管理模块、职工信息管理模块和帮助模块组成。
工资管理系统模块图
5.1系统管理模块:
这一模块主要完成一些用户管理和员工信息的管理以及系统的退出和重新登录。
系统管理模块结构图
5.2工资管理模块:
这一模块主要实现个人工资管理、工资批量设置和工资计算公式的功能。
工资管理模块结构图
5.2.1工资信息查看设计
在员工工资查看模块中包含了三个显示功能,有员工信息统计、所有员工信息显示以及员工工资、基本工资、预付数、预扣数以及奖金最高者的查看既员工信息排序,但只是看到基本工资信息的最高者,这样可对工资和员工的待遇根据市场和企业效应进行适当调节。
最初设计中,我把显示和数据的排序放到一起,这样可以直观地看到所有员工工资的待遇变动,因此在函数开头定义一个名次变量inti=0.但是在后续程序中设计了一个排序查看员工工资的最高者这样一个函数,觉得这样更加简洁。
因此把排序的实现放在后续的排序查看函数中。
显示函数的程序流程图如下:
函数设计代码如下:
voidDisp(LinkListL)//显示员工资料
{
ListNode*p;
p=L;
if(p->next==NULL){
提示:
没有资料可以显示!
return;}
显示结果
printf("\n");
}
统计员工信息函数设计,首先定义6个用于指向工资最高者信息的结点。
再定义一个指向数据链表的结点类型的指针,同时判断链表是否存在。
若不存在,则作出相应提示;若存在且不为空,则查找最高工资员工的结点,并传值给定义的6个特定指针,再使用显示语句在屏幕上显示。
具体算法流程图如下:
算法设计代码如下:
voidTongji(LinkListL)//统计员工资料
{
ListNode*pz,*px,*ps,*pt,*pa,*pj;//用于指向工资最高的接点
ListNode*r=L;
if(!
r){
提示:
没有资料可以统计!
return;}
ps=pz=px=pt=pa=pj=r;
while(r!
=NULL){
对比统计工资信息
}
显示统计结果}
在算法设计中,先定义一个名次整型变量m,信息排序只是用于查看和显示员工信息,并非更改原链表的结构和位置。
因此要定义一个临时同类型链表ll,同时分配内存空间。
再查找链表中相应工资最大的结点连入新链表中,依次类推。
其算法设计流程图如下:
其算法设计代码如下:
voidSort(LinkListL)//按员工总工资(即其完成额大小)排序
{intm;
LinkListll;
ListNode*p,*rr,*s;
ll=(LinkList)malloc(sizeof(Node));//用于做新的链表
ll->next=NULL;
if(L->next==NULL){
提示:
没有资料可以排序
return;}
p=L;
while(p){
s=(ListNode*)malloc(sizeof(Node));//新建接点用于保存信息
s->data=p->data;s->next=NULL;rr=ll;
while(rr->next!
=NULL&&rr->next->data.sfs>=p->data.sfs)
员工工资排序}
提示:
排序已经完成!
;
for(m=1;rr->next!
=NULL;m++){
显示排序结果}
}
这样的设计思路,不仅使得程序设计更加简单,也使功能界面上的设计更简洁、更直观。
5.2.2工资信息保存设计
工资信息编辑后,存储到文件中才能长期保存。
在运行程序前就给用户一个提示,如果没有建立对应的保存数据文件,则要求用户建立文件后再运行系统。
如果不建立文件,则说明用户不使用系统就自动退出。
初始文件为D:
\\yuan.rec,只要在程序中才能修改文件路径。
这样也可以增强文件内容的安全性。
其设计代码如下:
voidSave(LinkListL)//保存已经输入的员工资料
{
FILE*fp;ListNode*p;
intflag=1,count=0;
fp=fopen("yuan.rec","wb");
if(fp==NULL){
提示:
重新打开文件时发生错误!
exit
(1);}
p=L->next;
while(p){
if(fwrite(p,sizeof(Node),1,fp)==1){
文件保存成功}
fclose(fp);}
6参考文献
[1]Divad.J,VC++5.0技术内幕[M]清华大学出版社,2005年
[2]王珊,数据库系统概论[M](第3版)高等教育出版社,2002年
[3]张丽王强,SQLServer数据库原理及应用教程[M]清华大学出版社,2003年
[4]范策周世平胡潇琨,算法与数据结构[M]机械工业出版社,2004年
[5]刘秋生,数据库系统设计及其应用案例分析[M]东南大学出版社,2005年
本科生课程设计成绩评定表
姓名
性别
专业、班级
课程设计题目:
企业工资信息管理系统
课程设计答辩或质疑记录:
成绩评定依据
评定项目
评分成绩
1.选题合理、目的明确(10分)
2.设计方案正确,具有可行性、创新性(20分)
3.设计结果(例如:
硬件成果、软件程序)(20分)
4.态度认真、学习刻苦、遵守纪律(15分)
5.设计报告的规范化、参考文献充分(不少于5篇)(10分)
6.答辩(25分)
总分
最终评定成绩(以优、良、中、及格、不及格评定)
备注:
成绩等级:
优(90分—100分)、良(80分—89分)、中(70分—79分)、及格(60分—69分)、60分以下为不及格。
指导教师签字:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业 工资 信息管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)