面向对象课程设计--- 工资管理系统

2019-02-20 20:18

1 需求分析

1.1 课题设计目的

使用面向对象语言java设计一个员工工资管理程序,有显示、储存、显示、修改和删除功能。每个员工有员工工号、姓名、基础工资、职务工资、奖金和工资总额。其中员工工号不需要用户输入,存储时,数据库系统按顺序自动递增。

1.2功能要求

(1)查询功能中,用户查询时可以选择按工号查询,也可以选择姓名进行查询,也可以选择查询工资总额在某个范围内的员工的工资信息,比如查询工资总额在1000~2000的全体员工的信息,还以查询全体员工工资,并且选择按某种方式排序。

(2)修改功能中,用户可以选择修改方式,比如修改某一行,即选择修改某个员工的工资,此时需要输入修改项,即基础工资、职务工资和奖金中的一项,因为工资总额是基础工资、职务工资和奖金的综合,故不能直接修改,同时还需要输入工号,为了避免误改,所以需要确认修改后才能修改;也可以选择修改某一列,即选择修改全体员工的某一项工资,所以还需要选择修改项,其中的修改项也只有基础工资、职务工资和奖金三项。

(3)储存功能即增加用户的功能中,用户不需要输入员工工号,但必须输入员工姓名,其他几项均可以不输入,基础工资、职务工资、奖金和工资总额均被系统初始化为零。

(4)删除功能中,必须慎重操作,删除时必须输入员工工号,先查询出来,把员工的各项信息显示在下方的文本框中,在用户点击确认删除时系统就将该工号的用户的各项信息从数据库中删除。

在此说明一点,由于工资总额是员工基础工资、职务工资和奖金的综合。基础工资、职务工资和奖金中的任意一项改变都会影响工资总额的数值,当修改频繁是,将会大大增加数据库系统的负担,且设计起来更加繁琐,所以工资总额并没有真正的储存在数据库中,每一次的查询或者其他显示工资总额的地方全都是用SQL或者HQL的函数查询语句来实现的。

1 / 66

1.3 设计流程

设计流程采用先界面后模型

界面设计: 外层全局界面设计 查询模块设计 储存模块设计 修改模块设计 擅长模块设计 各组件事件处理功能实现设计: 外层全局界面各组件事件处理设计 查询模块各组件事件处理 储存模块各组件事件处理 修改模块各组建事件处理 删除模块各组件事件处理 数据库及表的设计 Hibernate实现查询功能 Hibernate实现储存功能 Hibernat和jdbc实现修改功能 Hibernate删除功能 图1

2 / 66

1.4 工资表模式

根据上述目的和各项功能要求,选择如表1的数据库表来储存员工各项工资信息其中的Id号即为员工工号。

表1

ID 3 ?? 姓名 张三 ?? 基础工资 5000 ?? 职务工资 2000 ?? 奖金 3000 ??

1.5 开发环境

JDK1.6 Myeclipse6.5 Mysql5.22

Hibernate annotation3.4 测试工具:junit4.7 注明:

(1)在详细设计中的代码均为局部的关键代码,完整代码均在附录里; (2)数据库里的信息只为了测试,与其含义没有关系; (3)所有模块的模样图中,圆角框表示容器,直角框表示组件。

3 / 66

2 详细设计

2.1 外层模块设计

2.1.1 外层模块模样

根据个人设计思路,设计的外侧模块的模样如图2 外层模块Myplet 子容器Panel1 系统名称:工资管理系统 子容器Panel2 查询按钮 储存按钮 修改按钮 删除按钮 子容器Panel3 以卡片布局放置查询、储存、修改、删除模块,默认显示查询模块 图2

外侧模块设计,首先新建一个叫MyApplet的类,并继承java下applet包中的Applet类,在这里,也可以自己定义一个自己的框架的类,去继承Frame类,但是简单起见,我就定义了自己的框架的类,并继承了Applet类,这样有些Applet已经实现的功能就不需要我自己去实现了,比如当你点击这个类运行而得的窗口的右上角的“X”时,窗口就关闭了,如果没有继承Applet类,那么这些功能将由自己实现,查看java的那套api会发现里面有个一属性常量,给定义的窗口设置该属性就可以解决。

参考印旻主编的《java与面向对象程序设计教程》第八章的布局设计可知:FlowLayout的布局方式虽然非常简单,但是这种布局的容器会将容器的里的组件按照加入的顺序一个个从左往右,从上往下的排列。这样的布局显然不合适,也不美观。而BorderLayout则将整个容器分为东、西、南、北、中,这样的布局比较死,限制了设计者自己定义布局的功能。GridLayout的布局形式,虽然给了设计者自己定义布局的一部分功能,但是还是存在很大一

4 / 66

部分的限制,还有CardLayout(卡片布局设计)和GridBagLayout,卡片布局设计显然是可以采用的,但是不能只用卡片布局设计,因为只用它显得单一,而且功能不全。剩下的GridBagLayout的布局设计是很适合我想象的布局的,因为这种布局设计给了设计者很大的自定义空间,并且各个行或者列的大小都可以由设计者自己指定,也不要求容器中的组件按个空格地放。

经过上述外层模块布局设计的分析,最适合外层模块布局设计的方式就是GridBagLayout。GridBagLayout布局设计方式的使用步骤如下:

(1) 创建GridBagLayout的对象; (2) 将容器的布局设置成这个对象;

(3) 创建GridBagConstraints对象,并指定其各项属性; (4) 设置GridBagConstraints对象和组件的关联; (5) 将组件加入容器中。

为了使窗口中的标签和文本框等东西的大小可以随窗口的变大而变大,或者缩小而缩小,所以在外层容器里面的组件不是直接加入外层容器的,本质是在外层容器中加入子容器,然后在子容器中加入组件。外层容器的对子容器放置的布局是GridBagLayout布局设计,而子容器中又使用简单布局设计。所以整体上是使用混合布局设计,这样可以实现更多的界面设计样式。

2.1.2 外层模块代码解析

(1)MyApplet类继承Applet,所以本身就是一个容器,不需要自己再去创建外层容器了,就把this(本容器)当成外层容器就可以了。对本容器采用GridBagLayout的布局设计,按照上述的步骤:

创建GridBagLayout布局对象,即GridBagLayout gbLayout = new GridBagLayout(); 设置本容器为该布局对象,即this.setLayout(gbLayout); (2)创建一个大小为3的Panel数组p,并实例化三个Panel。

(3)创建一个显示系统名称的L abel类型的tittle,设置其中字体的大小和颜色,并将 Label加入到Panel[0]中的语句分别是:Label tittle = new Label(\工资管理系统\tittle.setFont(new Font(\并且对Panel[0]采用Gridlayout的布局设计,由于只需添加标题这样一个组件就可以了,所以设置为一行一列:p[0] = new Panel(new GridLayout(1,1))。并用GridBagLayout的布局设计将Panel1加入到容器MyApplet中,具体实现代码如下:

5 / 66


面向对象课程设计--- 工资管理系统.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:建筑安装工程施工组织设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: