软件工程课程设计工资管理系统.docx

上传人:b****4 文档编号:4839131 上传时间:2022-12-10 格式:DOCX 页数:22 大小:101.81KB
下载 相关 举报
软件工程课程设计工资管理系统.docx_第1页
第1页 / 共22页
软件工程课程设计工资管理系统.docx_第2页
第2页 / 共22页
软件工程课程设计工资管理系统.docx_第3页
第3页 / 共22页
软件工程课程设计工资管理系统.docx_第4页
第4页 / 共22页
软件工程课程设计工资管理系统.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

软件工程课程设计工资管理系统.docx

《软件工程课程设计工资管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计工资管理系统.docx(22页珍藏版)》请在冰豆网上搜索。

软件工程课程设计工资管理系统.docx

软件工程课程设计工资管理系统

1前言

课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。

通常,课程设计中的问题比平时的习题复杂得多,也更接近实际。

课程设计着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力。

另一方面,使书上的知识变活,起到深化理解和灵活应用教学内容的目的。

平时的习题局限于一个和二个知识点,而课程设计题是软件设计的综合训练,包括问题分析,总体结构设计,用户界面设计、程序设计、基本技能和技巧,以及一整套软件工作规范的训练和科学作风的培养。

我们这组选的课题是工资管理系统的设计与开发。

从接到任务书开始,我们首先完成了系统的需求分析与概要设计,在完成这些任务时,我们深感理论与实践的结合的是需要一个过程。

从个人分工到整个系统分析,从设计到测试之所以能顺利完成是和大家的努力分不开的。

虽然还有一些不足之处,但是我们还是从中获益不少。

下面简要介绍一下我们课题组的分工,我们这组的分工其实借鉴了ShariLawrencePfleeger和JoanneM.Atlee合著的SOFTWAREENGINEERINGTheoryandPractice(高等教育出版社第三版影印版)中的一些理论,这些知识可以参考此书的第25页中关于“开发团队的角色分工”一节。

根据分工的细化和部分重叠原则,我们组的具体分如下:

(1)项目管理:

王培

(2)需求分析:

钟耀明、贺纯

(3)概要设计:

贺纯、赵亦娴

(4)详细设计:

赵亦娴、王培、钟耀明、杨安、陈华、贺纯

(5)程序编码:

王培、陈华

(6)系统测试:

陈华、杨安

我的主要任务是概要设计和详细设计

2需求分析

2.1任务概述

现代企业基本上都引进了计算机软件对公司业务进行管理,这样做有很多优点,一是提高了工作的效率,同时也减少了手工操作的错误以及人员的开支。

本课题开发的工资管理系统正是基于这样的目的实现的,系统完成的主要功能是对员工工资的管理,同时还包括对员工信息、部门信息以及附属于员工、部门的职称和职务信息的管理。

系统主要采用事务型数据库设计,但对于员工工资的信息,系统能够保留其相应的历史记录,包括员工的请假信息,出差信息以及工资结算信息等。

本系统面向员工和管理人员同时开放,普通用户可以进行查询以及对个人相关信息的修改等操作,管理账户则拥有系统的全部功能。

系统不允许非经认证通过的用户使用系统。

系统采用ASP.NET语言开发,系统的数据使用SQL数据库进行管理。

2.2功能需求分析

(1)系统能够维护员工的基本信息,部门、职务、职称以及工资记录等信息。

(2)系统应该能记录员工的每一个职称信息,并授予相应的职称,系统在计算员工工资的时候选取职称对应的最高职称津贴。

(3)工资表应当由系统自动生成。

系统负责员工的工资表以及员工工资的历史记录及记录员工的请假信息和出差信息等意外情况。

(4)系统可以给管理员提供权限增加删除修改系统用户以及其它实体信息,系统的部分权限不能下放给普通用户以保证系统的安全性以及数据的正确性。

2.3外部接口需求分析

系统人机交互界面为半屏幕大小,采用上下左右居中方式显示,系统分辩率默认设置为1280*800,实际的界面大小由具体的屏幕决定。

主界面包括标题栏,菜单栏,快捷工作区,帮助信息区(默认是隐藏的)。

每一个菜单对应一个键盘快捷键区。

2.4性能需求分析

系统在主频1.5GHZ,内存512MB,总线频率667MHZ的硬件平台上运行时,系统的响应时间、更新处理时间、数据转换与传输时间、运行时间均能达到毫秒级。

系统支持用户并发操作,事务采用可串行化隔离级别,防止在读写过程中产生的丢失修改、读脏数据、不可重复读等一系列由并发操作带来的不一致问题。

系统的运行主存控制在1024KB以内,响应时间控制在1000ms以内,系统对数据的存储空间取决于数据库系统表空间的约束限制。

2.5软件属性需求分析

系统必须保证所有操作结果以及存储数据的正确性,对于用户的非法操作,系统必须能够提出告警信息,对于用户的错误操作,系统能够提供错误信息以及错误源。

在数据库操作上的异常,系统也应捕捉到并提供界面化的提示信息,对于可能会产生错误的操作,应当能够防范。

另外系统必须提供一定的安全保密性,一些保密信息只针对特定的用户提供。

它人员无法访问。

软件必须为中文操作界面,并且所有的中文功能菜单项描述须与其实际对应的功能相一致,不能存在功能不足或者功能不对的情况,软件采用面向对象技术架构,遵循代码编写规范,提供适当的代码注释,尽可能地采用可复用技术,提高软件的可维护性。

3 概要设计

3.1系统设计总体思想

当工资管理系统处理的事务主要有工资管理,员工信息管理,部门信息管理,职务信息管理,职称信息管理。

职务和职称以及部门信息管理主要服务于工资管理和员工信息管理,系统接收的输入项目有员工信息,部门信息,职务信息,职称信息,请假信息,出差信息等。

系统能够接受用户的请求,显示相应的查询信息,增加、删除、修改相应的合法的信息。

图3.1.1工资管理系统HIPO图

图3.1.1是工资管理系统的HIPO图,上图主要说明了系统的各个主要功能以及各功能模块之间的层次关系。

上图的基本框架也是整个系统界面的基要框架。

系统的人机交互采用图形化用户界面,考虑到系统的平台无关性,系统由JAVA语言实现,系统的界面元素也是采用了JAVA的JFC图形类库。

系统可以在安装了JAVA运行环境的平台上运行。

系统从登录界面开始,要求验证用户信息,用户通过验证后,进入系统主界面。

主界面提供了一个菜单框架,可以通过各个菜单类的一个实例来加载菜单,这一步不是由主界面完成的,而是由所需要被加载的类完成的,但需要主界面类去生成这些菜单英的实例。

系统加载的功能主要包括系统管理,用户管理,工资管理,部门管理,职务管理,职称管理以及适当的帮助信息。

系统管理主要向用户提供用户更改密码的操作以及退出程序的功能。

用户管理允许管理员新建一个员工信息,比如当公司新增加了一个员工时,系统为该员工生成相应的工资关系,但新建这个员工的信息则是第一环节,当然如果公司离任了一名员工时,此员工与公司的工资关系已解除,则没有必要保留该员工的信息,系统应向管理员提供删除该员工的功能,同时删除与该员工相关的所有其它信息。

公司所在的员工可能有部分具有相应的职称,考虑到职称的种类繁多,系统只添加本公司员工所拥有的职称的一个集合,而不考虑外界的因素,因此系统提供了增加、删除、修改、查询等对职称的相关操作。

例如,当公司一员工拿到高级职称后,管理员首选应该查看系统是否记录了相应职称的信息,如果有,则直接将该职称信息添加到员工信息中去,如果没有,则应当先增加这一职称信息,再执行上述操作。

另外在删除一个职称的时候,系统要求必须没有员工拥有此职称,否则系统不能删除,如果确实要删除,则只能先删除拥有此职称的所有员工或者撤销拥有此职称的所有员工的此职称。

3.2系统功能模块设计

图3.2.1系统功能模块设计

3.3系统数据库设计

通过对工资管理系统的数据分析并根据业务之间的联系,我们可以得出与系统相关的实体有:

员工、部门、职务、职称、请假信息、出差信息、工资。

工资管理系统的数据据库管理模式用语义描述如下:

(1)每一个员工只能属于一个部门,担任一个职务,但是可以拥有多个职称.

(2)每个部门可以有多名员工,有不同的职务.

(3)每个职务可以由多名员工担任,可以在相同的部门,也可以在不同的部门.

(4)每个职称可以授予不同的员工.

(5)每个员工每个月都会有一份工资记录,并且会有一份历史工资记录.

(6)员工每个月可以请假多次或者出差多次.但是要扣除相应的工资或者获得相应的补助.每个员工都有一分历史请假记录和历史出差记录。

综合上述语义,可以得出系统的ER图如图3.3.1所示:

3.3.1工资管理系统ER图

根据实体之间的联系,以及分析实体的属性,得出了工资管理系统中各个实体的属性,相关属性列表见表3.3.1。

表3.3.1工资管理模型的相关属性列表

实体或联系

属性

员工

员工编号、姓名、性别、部门号、职务

部门

部门编号、名称、人数、电话

职务

职务编号、名称、基本工资

职称

职称编号、名称、职称津贴

出差信息

出差编号、员工编号、天数、出差年份、出差月份、出差补助

员工职称信息

员工编号、职称编号

请假信息

请假编号、员工编号、天数、年、月、扣除工资、请假原由

工资

工资编号、员工编号、工资所属年月、基本工资、扣除工资、出差补助、岗位工资、职称津贴、工资总额

说明:

加粗部分为主键,加底线部分为外键

图3.3.2实体及其相关属性图

4 详细设计

4.1数据结构设计

4.1.1数据库表结构设计

Employee——员工信息表

字段名

数据类型

约束

名称

说明

empno

number(6)

主键

员工编号

ename

varchar2(20)

notnull

员工姓名

sex

varchar2(4)

notnull

性别

deptno

number(6)

外键department(deptno)

部门编号

dutyno

number(6)

外键duty(dutyno)

职务编号

Department--部门信息表

字段名

数据类型

约束

名称

说明

deptno

number(6)

主键

部门编号

deptname

varchar2(20)

notnull

部门名

empnum

number

部门人数

tel

number

电话

Duty--职务信息表

字段名

数据类型

约束

名称

说明

dutyno

number(6)

主键

职务编号

dutyname

varchar(20)

notnull

职务名

dutypay

number

default(0),check(dutypay>=0)

职务基本工资

Title--职称信息表

字段名

数据类型

约束

名称

说明

titleno

number(6)

主键

职称编号

titlename

varchar2(20)

notnull

职称名

titlepay

number

default(0),check(titlepay>=0)

职称津贴

TitledEmployee--员工职称联系表

字段名

数据类型

约束

名称

说明

empno

number(6)

组合主键,外键employee(empno)

员工编号

titleno

number(6)

职称编号

year

number(4)

记录职称授予时间

month

number

between1and12

Leave--员工请假信息表

字段名

数据类型

约束

名称

说明

leaveno

number(6)

主键

请假编号

empno

number(6)

外键employee(empno)

请假员工

leavedays

number

notnull

请假天数

leaveyear

number(4)

notnull

请假年份

leavemonth

number

notnull

请假月份

deduction

number

notnull

扣除工资

reason

varchar(60)

请假原因

BusinessTravel--出差信息表

字段名

数据类型

约束

名称

说明

travelno

number(6)

primarykey

出差编号

empno

number(6)

外键employee(empno)

员工编号

traveldays

number

notnull

出差天数

travelyear

number(4)

notnull

出差年份

travelmonth

number

notnull

出差月份

travelpay

number

notnull

出差补助

Reward--奖励信息表

字段名

数据类型

约束

名称

说明

rewardno

number(6)

primarykey

奖励编号

empno

number(6)

外键employee(empno)

员工编号

rewardyear

number(4)

notnull

奖励年份

rewardmonth

number

notnull

奖励月份

rewardpay

number

奖励金额

reason

varchar(60)

奖励原由

Penalty--罚金信息表

字段名

数据类型

约束

名称

说明

penaltyno

number(6)

primarykey

罚金编号

empno

number(6)

外键employee(empno)

员工编号

penaltyyear

number(4)

notnull

罚金年份

penaltmonth

number

notnull

罚金月份

penaltynum

number

罚金额度

reason

varchar(60)

罚金原由

Salary--职工工资信息表

字段名

数据类型

约束

名称

说明

salno

number(6)

primarykey

工资编号

empno

number(6)

外键employee(empno)

员工编号

payyear

number(4)

工资年份

paymonth

number

between1and12

工资月份

basepay

number

基本工资

deduction

number

请假扣除金额

travelpay

number

出差补助

dutypay

number

职务工资

titlepay

number

职称津贴

rewardpay

number

奖励金额

penaltynum

number

罚金

totalpay

number

工资总额

4.1.2程序数据结构设计

(1)ADTDepartmentBean

{

数据对象:

D={deptNo,deptName,empNum,tel|deptNo,empNumt和tel均为整数,deptName为字符串}

数据关系:

R1={|deptNo为部门编号,deptName为部门号,tel为部门电话}

R2={|deptNo为部门编号,empNum为部门人数}

基本操作:

setDeptNo(intno):

设置部门的部门号为no.

getDeptNo():

返回部门的部门号。

setDeptName(Stringname):

设置部门的部门名为name.

getDeptName():

返回部门的部门号.

setEmpNum(intnum):

设置部门的员工人数为num.

getEmpNum():

返回部门的人数.

setTel(inttelephone):

设置部门的电话号码为telephone.

getTel():

返回部门的电话号码。

}ADTDepartmentBean

(2)ADTJdbc

{

数据对象:

D={dbUrl,theUser,thePsw,c,stmt,rs|dbUrl提供数据库对象,theUser,thePsw指定用户名和密码,c与数据库建立一个连接,stmt声明一条SQL语句,rs保存执行SQL语句的结果集.}

数据关系:

R1:

用户登陆的验证信息用户名和密码.

R2:

rs为语句stmt执行的结果集.

基本操作:

Jdbc():

加载数据库驱动,建立数据库连接.

executeUpdate(Stringsql):

执行SQL更新语句,成功返回TRUE,失败则返回FALSE.

executeQuery(Stringsql):

执行SQL查询语句,返回结果集rs.

close():

关闭与数据库的连接.

}ADTJdbc

4.2模块功能详细设计

4.2.1部门信息删除模块设计

(1)类图设计

图4.2.1.1部门信息删除模块类图

以下对部分类的属性和方法的说明:

DepartmentMenu类:

属性名称

属性类型

属性说明

deptMenu

JMenu

顶层菜单项

deptInqueryItem

JMenuItem

部门信息查询菜单项

deptDeleteItem

JMenuItem

部门信息删除菜单项

deptUpdateItem

JMenuItem

部门信息更新菜单项

User

UserBean

用户业务类

说明:

当点击各菜单项时,会弹出相应的操作界面。

DepartmentDelete类:

方法名称

返回值类型

功能说明

isDeptExist()

boolean

判断输入的部门号是否存在

isDeptEmpty()

boolean

判断输入的部门号是否为空

executeDelete()

void

执行删除操作

ShowAction类:

该类为内部类,是将各功能集成到系统的框架之中.ShowAction类的构造函数提供了一个命名菜单项的方法,主要功能引入了DepartMentDelete这个类到系统中。

通过监听器ShowAction执行actionPerformed()方法,系统就应该可以产生期望的动作。

(2)界面设计

图4.2.1.2界面设计

界面设计说明:

该文本框为单行文本框,可以输入要删除的部门号,当系统监听到文本框中选项被确定,将会自动地将该部门信息从数据库中删除。

(3)核心代码

publicclassDepartmentDelete

{

publicDepartmentDelete()

{

executeDelete();

}

privatebooleanisDeptExist(intdeptno)

{

ResultSetrs;

Jdbcconn=null;

booleanflag=false;

try{

conn=newJdbc();

rs=conn.executeQuery("selectdeptnofromdepartment");

while(rs.next())

{

if(deptno==rs.getInt("deptno"))

{

flag=true;break;

}

}

}catch(InstantiationExceptione1){

e1.printStackTrace();

}catch(IllegalAccessExceptione1){

e1.printStackTrace();

}catch(ClassNotFoundExceptione1){

e1.printStackTrace();

}catch(SQLExceptione1){

e1.printStackTrace();

}

returnflag;

}

publicbooleanisDeptEmpty(intdeptno)

{

ResultSetrs;

Jdbcconn=null;

booleanflag=false;

try{

conn=newJdbc();

rs=conn.executeQuery("selectcount(*)fromemployeewheredeptno="+deptno);

while(rs.next())

{

if(rs.getInt

(1)==0)

{

flag=true;break;

}

}

}catch(InstantiationExceptione1){

e1.printStackTrace();

}catch(IllegalAccessExceptione1){

e1.printStackTrace();

}catch(ClassNotFoundExceptione1){

e1.printStackTrace();

}catch(SQLExceptione1){

e1.printStackTrace();

}

returnflag;

}

privatevoidexecuteDelete(){

StringdeptnoStr=JOptionPane.showInputDialog(null,"请输入待删除部门编号!

");

intdeptno=0;

booleanflag=true;

try{

deptno=Integer.parseInt(deptnoStr);

}catch(Exceptione){flag=false;}

if(isDeptExist(deptno)==true)

{

if(isDeptEmpty(deptno)==false){

JOptionPane.showMessageDialog(null,"部门中有员工存在,无法删除!

");

}

else

{

Jdbcconn=null;

intres=0;

try{

conn=newJdbc();

pstmt.setInt(1,deptno);

res=pstmt.executeUpdate();

if(res!

=0)

JOptionPane.showMessageDialog(null,"成功删除部门"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1