工资管理系统软件工程课程设计2_工资管理系统课程设计
工资管理系统软件工程课程设计2由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“工资管理系统课程设计”。
目 录
目录...............................................................................................................第一章 绪
论.................................................................................................1.1 开发背景说明....................................................................................1.2课程设计目的.....................................................................................1.3课程题目及内容.................................................................................1.4课程设计要求.....................................................................................1.5预期目标.............................................................................................1.6 系统环境............................................................................................第二章 可行性分析.........................................................................................2.1 可行性研究前提................................................................................2.2 经济上可行性....................................................................................2.3 技术可行性........................................................................................2.4目标方案可行性.................................................................................2.5操作可行性.........................................................................................第三章 需求分析.............................................................................................3.1引言.....................................................................................................3.2任务陈述.............................................................................................3.3市场需求分析.....................................................................................3.4系统功能需求分析.............................................................................3.5系统性能需求分析.............................................................................3.6 系统业务数据流...................................................错误!未定义书签。3.7用例分析...........................................................................................3.8用例列表...........................................................................................3.9绘制系统模型图...............................................................................第四章 系统概要设计...................................................................................4.1模块分析和概要设计.......................................................................4.2 系统数据库逻辑结构设计..............................................................4.3概念模型转换为关系数据模型.......................................................4.4 数据库设计......................................................................................第五章 详细设计...........................................................................................5.1登录管理...........................................................................................-***39424243443
入帐目时的错误,可以根据职工的考勤、职务、部门、各种税费等等,自动求出工资。为了便于企业领导掌握本企业的工资信息在系统中应加入各种查询功能,包括个人信息、职工工资、本企业内某一个月或某一部门的工资情况查询。系统应能输出各类统计报表。
本系统需要完成的功能主要有:系统数据初始化;职工基本信息数据的输入、修改、删除;企业工资的基本设定;职工工资的浏览;职工个人工资表的查询;职工工资的计算;工资报表打印。
数据流:
职工基本状况:包括职工编号、职工姓名、性别、年龄、职位等。工资级别和工资金额:包括工资等级、工资额。
企业部门及工作岗位信息:包括部门名称、工作岗位名称、工作岗位工资等。工资信息:包括职工编号、职工姓名、职工基本工资、职工岗位工资、职工工龄工资、公司津贴、职工实发工资等。工龄和工资金额:包括工龄及对应工资额。
1.4课程设计要求
坚持“规格严格,功夫到家”的优良传统,加强基本功训练,做到理论与实际相结合,继承与创新相结合,充分发挥学生的主观能动性与教师因材施教、严格要求相结合,抓智力因素教育与非智力因素教育相结合,教书育人。所设计的工资管理系统应包含输入输出、修改、删除、查询等基本功能。根据题目的基本需求,画出流程图、用例图、类图等,编写程序,并写出详细的设计说明书。课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出课程设计报告。
1.5预期目标
计划设计:对于企、事业单位的工资发放来说,不需要太大型的数据库系统,只需要一个操作方便,功能实用,能满足财务部门对工资及时的发放。本工资管理系统预期目标就是实现如下的一些功能:查询浏览记录功能,增加记录功能、修改记录功能、删除记录功能、刷新记录功能、最后实现统计计算功能。
1.6 系统环境
1.6.1硬件:个人PC 1.6.2软件:
Windows XP、Microsoft Visual C++6.0、Rational Rose。
第二章 可行性分析
2.1 可行性研究前提
要求:满足对工资管理的基本要求及功能,并对职工信息收集、处理、保存。目标:实现无纸化办公,节省成本,提高工作效率。
条件、假定、限制:当企业工资管理的信息量和复杂程度达到某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,如用计算机技术对信息的收集、加工、传递和存贮等,这样,一个工资管理系统就可以对企业职工工资进行高效、合理、恰当地管理。
2.2 经济上可行性
开发成本要低廉。
效益:大幅度地提高工资管理信息系统的工作质量和效率,让企业掌握整个工资管理系统的全面情况,为管理人员提供了准确的工资管理信息,促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全;提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求。
效益/投资比:暂时无法估算。投资回收期内:
(1)企业有能力承担系统开发费用。
(2)新系统将为企业带来经济效益。管理系统是一个信息化、智能化和先进。理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。其最主要的表现就是减少了企业管理费用和人力开支。
2.3 技术可行性
(1)软件需求:操作系统WINDOWS 2000 Advance Server以上。
硬件需求:赛扬1.7G CPU、512M内存 80G硬盘的计算机。(2)本系统采用VC++实现,依靠其强大的面向对象系统,与数据库管理系统相结合。
(3)要求掌握计算机技术,熟悉系统的功能和使用方法使系统能够顺利运行。
2.4目标方案可行性
计算机设备处理繁杂的工资增减问题,大幅度减少人力、物力,极大地提高企业的管理水平和管理效率。
管理水平和管理效率的提高能直接产生经济效益。
格,如完成任务表、考勤表、考核表、职工当月的扣款情况(包括水电费、病事假扣款等)等计算职工变动工资、个人所得税和应发放工资等,编制工资单。按类进行汇总,编制工资汇总表。将实发工资转入代发银行,由银行代发工资,并进行账务处理。工资结算过程主要设计如下会计账户:现金、银行存款、应付工资、其他应付款、其他应收款等。
3.3市场需求分析
工资管理系统是一个企业单位不可或缺的部分,他能为用户提供充足的信息和快捷的查询手段。一个工资管理系统可以高效能、大容量的收集、处理、存储工资管理信息,大幅度的工资管理信息系统的工作质量和效率。
能够为企业管理人员及时掌握整个工资管理系统的全面情况,提供系统的准确的工资管理信息,可以促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全。为企业提供各种加工管理了工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍建设提出的新要求,帮助管理人员选择方案,实现优化决策。虽然当前,不少单位的工资管理部门对于计算机应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大。
3.4系统功能需求分析
工资管理系统涉及到员工基本信息的录入、修改和删除,工资标准的设定、查询和结算等。
典型的工资管理系统主要有以下基本功能: a)系统数据初始化
b)员工基本信息的录入、修改、删除等功能
c)工资标准的设定功能,集体包括职务工资、职称工资、其他工资标准和福利的设定。
d)工资信息的浏览
e)员工工资信息表的创建及查询 f)工资调整管理 g)工资计算 h)工资报表打印
3.5系统性能需求分析
3.5.1 需求分析总体目标
需求分析的目的在于与开发人员与用户之间达成系统开发的共识,使开发人员所考虑的系统在功能(系统能做什么)、简单操作,良好界面,个人信息保密性,系统安全与稳定,良好帐户管理,友好信息返回模式(如报表及打印功能)。
时,防止数据被不法分析任意的修改和破坏,对所有的敏感数据均进行基于SSL协议 的加密操作,只有对信息解密的人员才能最终读取数据信息。这样,能 最大程度的防止数据在传输过程的安全保密性。
3.6 系统业务数据流
3.6.1 数据流分析
数据流程图是一种能全面描述信息系统逻辑模型的主要工具,也是系统分析人员与用户进行交流的有效手段。本系统的数据流程图把握住对系统总体目标与总体功能的要求,基于上述的业务流程图,从科学性,合理性和可行性入手,采用自顶向下,逐层分解的方法建立本管理信息系统的逻辑模型,综合地反映出信息在本系统中的流动,处理和存储,具有抽象性和概括性.通过进行用户调查收集用户需求后,就要对用户需求进行分析,并表达用户的需求。采用结构化分析方法,主要采用数据流图对用户需求进行分析,用数字字典和加工说明对数据流图进行补充和说明。数据流图用于描述系统中数据流动的过程,反映的是加工处理的对象。
3.6.2 流程图,模块图如下:
流程图
模块图
112
3.9.2活动图:
分析用例中的逻辑流程,描述用例的事件流,进而画出各用例对应的活动图 用户登录活动图:
管理员工信息活动图:
3.9.3 类图:
类图是面向对象的软件开发中的一个核心概念。Rose中的类图用于描述软件系统中涉及到的类的相关信息,以及类与类之间的相互关系。
〔1〕类的识别
类的识别通常由分析员在分析问题域的基础上来完成。常用的方法有: a.名词识别法。 b.系统识别法。 c.从用例中识别类。 d.利用分解与抽象技术。〔2〕系统类图
3.9.4状态图:
状态图(State Diagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。
3.9.5 时序图:
时序图用来描述对象之间动态的交互关系,着重体现对象间消息传送消息的时间顺序。下面分别给出各个用例的时序图:
用户登录时序图:
职工时序图:
71819
设计一般分为三个步骤:
〔1〕概念模型转换为关系数据模型。〔2〕关系模型的优化。〔3〕设计用户子模式书号。
4.3概念模型转换为关系数据模型
一般转换原则如下:
〔1〕一个实体转换为一个表(Table),则实体的属性转换为表的列(Column),实体的码转换为表的主键(Primary Key)。
〔2〕实体间的联系根据联系的类型,转换如下: ① 1:n 的联系:
1:n 的联系是比较普遍的联系,其转换比较直观。转换规律是在n 端的实体对应的表中增加属性,该属性是1 端实体对应表的主码。如:岗位和员工的关系是1:n 的联系。
② m:n 的联系:
通过引进一个新表来表达两个实体间多对多的联系,新表的主码由联系两端实体的主码组合而成,同时增加相关的联系属性。如:部门与员工的联系是n:m 联系。
4.4 数据库设计
数据库的物理结构设计是指为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法),它完全取决于给定的计算机系统。物理结构可分两步进行。第一步是分析所得到的各种数据模型,依据在实际执行时可能产生的数据容量以及各种数据模型之间的相互依赖程度等,确定数据库的物理结构;第二步则要根据某种方法对所设计的物理结构进行评价,评价重点是时间和空间的效率。数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
根据人员规模,我们只建立起一个数据库,在此数据库基础上建立起如下表:
·职工表
·用户表
·工资表
下面说明各表的字段名称和数据类型:
工资表:
职工表:
用户表:
第五章 详细设计
详细设计阶段主要是将系统中的每个模块完成的功能进行具体描述。
5.1登录管理
根据系统总体结构可以得出登录管理模块实现用户登录、密码修改和退出系统三个功能。其中,退出系统实现流程很容易,只需要一行代码即可;用户登录的实现流程是用户在登录窗口输入用户名称和密码,如果没有用户名和密码可以进行注册后再登录,选择了用户角色后,单击【登录】按钮进行提交,系统开始验证用户提交的登录信息是否正确。如果正确,则打开工资管理系统,并根据用户角色赋于相应的操作权限;否则给出错误信息。
5.1.1界面设计 登录界面如下:
5.1.2 代码
部分核心代码设计: void CZHUCE::OnButton1(){
UpdateData(TRUE);if(m_username.IsEmpty()||m_paword.IsEmpty()||m_paword2.IsEmpty()){AfxMeageBox(“请将资料填写完整!”);m_paword2.Empty();
m_paword.Empty();
UpdateData(FALSE);
return;} OnInitADOConn();if(m_paword2==m_paword){
CString str;
str.Format(“insert into 用户表(用户名,密码)('%s','%s')”,m_username,m_paword);
_variant_t var;
int fieldrow;
try{//捕捉表的主键存在重复值的异常
m_pConnection->Execute((_bstr_t)str,&var,adCmdText);
fieldrow=(int)V_I2(&var);
}
catch(...)
{
AfxMeageBox(“用户名已存在,注册失败”);
m_username.Empty();
m_paword.Empty();
m_paword2.Empty();
UpdateData(FALSE);
return;}
AfxMeageBox(“注册成功,请返回登录!”);
m_pConnection->Close();
Clogin clg;
clg.DoModal();} else{AfxMeageBox(“两次密码输入不一样,注册失败!”);
m_username.Empty();
m_paword.Empty();m_paword2.Empty();
}} UpdateData(FALSE);return;void CZHUCE::OnInitADOConn()try {//创建连接对象实例
} catch(_com_error e){ AfxMeageBox(e.Description());m_pConnection.CreateInstance(“ADODB.Connection”);//设置连接字符串 Cstring
strConnect=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;”;//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,“”,“”,adModeUnknown);
}
try{if(m_pConnection==NULL){OnInitADOConn();} m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sqlstr,m_pConnection.GetInterfacePtr(),adOpenDyna
} catch(_com_error e){ e.Description();} return m_pRecordset;
mic,adLockOptimistic,adCmdText);
5.1.3修改密码模块:
成功登录主界面:
5.2用户管理
用户管理模块用于实现用户的添加、删除、更新功能。5.2.1新增用户模块:
627UpdateData(TRUE);if(m_Bianhao.IsEmpty()||m_Name.IsEmpty()){AfxMeageBox(“not null”);return;} OnInitADOConn();CString str;str.Format(“update 职工表 set 性别='%s',年龄=%d,电话='%s',住址='%s',位='%s',备
注
='%s'
where
职
工
编
号='%s'”,m_Sex,m_Age,m_Telphone,m_Addre,m_Zhiwei,m_Beizhu,m_Bianhao);m_pConnection->Execute((_bstr_t)str,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();UpdateData(FALSE);
{// TODO: Add your control notification handler code here
} void CGXZHG::OnButton4(){
UpdateData(TRUE);if(m_tiaojian.IsEmpty()){AfxMeageBox(“请选择删除的职工!”);return;} OnInitADOConn();CString bstrSQL;bstrSQL.Format(“delete from 职工表 where 职工编号CMAKESURE cmake;if(cmake.DoModal()!=IDOK){ }
m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();AfxMeageBox(”删除成功!“);UpdateData(FALSE);return;='%s'”,m_tiaojian);UpdateData(TRUE);m_type.GetWindowText(m_Type);if(m_Type.IsEmpty()){AfxMeageBox(“请选择查询的方式!”);return;} if(m_tiaojian.IsEmpty()){AfxMeageBox(“请输入查询的职工编号!”);return;} OnInitADOConn();CString sql;
部分核心代码如下: void CTXGZ::OnButton2()
{// TODO: Add your control notification handler code here
息!“);
if(m_Bianhao.IsEmpty()||m_Jibengz==NULL||m_Yuefen.IsEmpty()){AfxMeageBox(”编号不允许空值,请重新填写!“);ClearALL();return;} OnInitADOConn();float CString cstr1;cstr1.Format(”%.2f“,f1);m_yfsh.SetWindowText(cstr1);float f2=m_Fangzu+m_Chuxu+m_Huifei;CString cstr2;cstr2.Format(”%.2f“,f2);m_yksh.SetWindowText(cstr2);float f4;f4=calculator(f1-f2);float f3=f1-f2-f4;CString cstr3;cstr3.Format(”%.2f“,f3);m_shfsh.SetWindowText(cstr3);CString cstr4;cstr4.Format(”%.2f“,f4);m_grsdsh.SetWindowText(cstr4);CString str;str.Format(”insert
into
工
资
表
values UpdateData(TRUE);m_yuefen.SetCurSel(0);// AfxMeageBox(“该编号的职工不存在,请先到职工管理添加职工信f1=m_Jibengz+m_Jintie+m_Gangtie+m_Butie+m_Fangtie+m_Jiaotongbt;('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)”,m_
} void CTXGZ::ClearALL(){
} void CTXGZ::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code here
m_pConnection->Close();m_gzlist.DeleteAllItems();AddToGrid();m_yuefen.SetCurSel(0);ClearALL();m_Jibengz=NULL;m_Jintie=NULL;
m_Shfsh.Empty();m_Yfsh.Empty();m_Yksh.Empty();m_Yuefen.Empty();m_Chaxun.Empty();m_Jiaotongbt=NULL;m_Huifei=NULL;m_Grsdsh.Empty();m_Fangzu=NULL;m_Fangtie=NULL;m_Chuxu=NULL;m_Bianhao=“”;m_Gangtie=NULL;UpdateData(FALSE);int position=m_gzlist.GetSelectionMark();m_Bianhao=m_gzlist.GetItemText(position,0);m_Chaxun=m_gzlist.GetItemText(position,0);m_Yuefen=m_gzlist.GetItemText(position,1);m_Jibengz=atof(m_gzlist.GetItemText(position,2));m_Jintie=atof(m_gzlist.GetItemText(position,3));m_Gangtie=atof(m_gzlist.GetItemText(position,4));
3return;} void CTXGZ::OnButton5(){
} float CTXGZ::calculator(float a){float b=a-2000;
} if(b=500&&b=2000&&b=5000&&b=20000&&b=40000&&b=60000&&b=80000&&b=100000){ return b=b*45/100-15375;} UpdateData(TRUE);if(m_Chaxun.IsEmpty()){AfxMeageBox(“请输入查询的职工编号!”);return;} OnInitADOConn();CString sql;sql.Format(“select * from 工资表 where 职工编号='%s'”,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();ClearALL();m_Chaxun=m_Chaxun;m_yuefen.SetCurSel(0);UpdateData(FALSE);5.5查询管理
该模块实现功能是职工查询工资的详细信息,查询个人详细信息的功能。
5.5.1职工信息查询:
5.5.2工资信息查询:
部分核心代码如下: void CGXGZ::OnButton1(){ UpdateData(TRUE);
if(m_Chaxun.IsEmpty()){AfxMeageBox(“请输入查询的职工编号!”);return;} OnInitADOConn();CString sql;sql.Format(“select * from 工资表 where 职工编号='%s'”,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();UpdateGrid();m_Chaxun.Empty();
6UpdateData(FALSE);{//创建连接对象实例
} catch(_com_error e){ AfxMeageBox(e.Description());m_pConnection.CreateInstance(“ADODB.Connection”);//设置连接字符串 CString
strConnect=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;”;//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,“”,“”,adModeUnknown);
} OnInitADOConn();//设置查询字符串 CString bstrSQL;bstrSQL.Format(“select * from 工资表 where 职工编号='%s' order by 职//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));//打开记录集
m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),ad adLockOptimistic,adCmdText);工编号 desc ”,m_Chaxun);OpenDynamic, while(!m_pRecordset->adoEOF){ m_gzlist.InsertItem(0,“”);m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect(“职工编号
m_gzlist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect(”月份“));m_gzlist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect(”基本工资“));m_gzlist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect(”津贴“));m_gzlist.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect(”岗贴“));m_gzlist.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect(”补贴“));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect(”房贴“));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect(”交通补贴“));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect(”应发数“));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect(”房租“));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect(”储蓄“));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect(”会费“));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect(”个人所得税“));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect(”应扣数“));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect(”实发数“));
} void CGXGZ::ExitConnect(){if(m_pRecordset!=NULL)
} m_pRecordset->Close();m_pConnection->Close();//将记录集指针移动到下一条记录
} //AfxMeageBox(”123“);//断开数据库连接 ExitConnect();m_pRecordset->MoveNext();
第六章 系统测试
6.1 测试方法
(1)测试人员:
测试队伍由两位成员组成。软件的设计者在测试整个过程中负责整体测试方案的制定和测试进度的掌握以及白盒测试的测试者。第二位成员由未参加软件制作者担任,主要责任是进行软件的黑盒测试以及软件环境,硬件要求和极限测试工作。
(2)机器测试:
通过在计算机上直接运行被测程序,来发现程序中的错误。机器测试包括黑盒测试盒白盒测试。黑盒测试也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,研究软件的外部特性。根据软件的需求规格说明书测试用例,从程序的输入和输出特性上测试是否满足设定的功能。白盒测试也称结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查与测试是否相符。
6.2测试内容
1)软件的正常运行、关闭及退出时保存记录的提示。
2)用户登录界面友好,可操作性及安全性能较好,能对不同管理级别者进行限制,以保证数据库的安全。
3)数据库的可维护性好,数据的录入、删除及更改均能顺利完成,并能实现动态更新。
4)数据查询便捷,能对各种不同的查询条件搜索,以找到最合适的答案。5)数据溢出、越界均能进行非法提示,以警告用户正确使用。对用户的正常操作方式也提出警告。
6)数据类型填写错误时,系统能够报错。
7)软件对操作系统的兼容性良好,可移植性完好。
6.3测试结果
本系统有提示消息!
录入相同编号的数据:
该系统有报错功能!
查询职工工资信息:
查询职工信息成功!
1424344-
牟永敏
清华大学出版社