1需求分析
1.1课题设计目的
使用面向对象语言java设计一个员工工资管理程序,有显示、储存、显示、修改和 删除功能。每个员工有员工工号、姓名、基础工资、职务工资、奖金和工资总额。其中员 工工号不霊要用户输入,存储时,数据库系统按顺序自动递増。
1. 2功能耍求
(1) 查询功能中,用户查询时可以选择按工号查询,也可以选择姓名进行查询,也 可以选
择查询工资总额在某个范围内的员工的工资信息,比如查询工资总额在1000^2000 的全体员工的信息,还以查询全体员工工资,并且选择按某种方式排序。
(2) 修改功能中,用户可以选择修改方式,比如修改某一行,即选择修改某个员工 的匸
资,此时需要输入修改项,即基础匸资、职务工资和奖金中的一项,因为工资总额是 基础工资、职务工资和奖金的综合,故不能直接修改,同时还需要输入工号,为了避免误 改,所以需要确认修改后才能修改:也可以选择修改某一列,即选择修改全体员工的某一 项匚资,所以还需要选择修改项,其中的修改项也只有基础工资、职务工资和奖金三项。
(3) 储存功能即增加用户的功能中,用户不需要输入员工工号,但必须输入员工姓 名,其
他几项均可以不输入,基础工资、职务工资、奖金和工资总额均被系统初始化为零。
(4) 删除功能中,必须慎重操作,删除时必须输入员工工号,先查询出來,把员工 的各项
信息显示在下方的文本框中,在用户点击确认删除时系统就将该工号的用户的各项 信息从数据库中删除。
在此说明一点,由于工资总额是员工基础工资、职务工资和奖金的综合。基础工资、 职务工资和奖金中的任意一项改变都会影响工资总额的数值,当修改频繁是,将会大大增 加数据库系统的负担,11设计起來更加繁琐,所以工资总额并没有真正的储存在数据库中, 每一次的查询或者其他显示工资总额的地方全都是用SQL或者HQL的函数查询语句來实现 的。
1 / 66
1. 3设计流程
设计流程采用先界面后模型
界面设计:外层全局界面设计查询模块设计储存模块设计修改模块设计擅长模 块设计各组件事件处理功能实现设计:外层全局界面各组件事件处理设计查询模块各 组件事件处理储存模块各组件事件处理修改模块各组建事件处理删除模块各组件事件 处理数据库及表的设计 Mbernate实现查询功能Mbernate实现储存功能Hibernat 和jdbc实现修改功能Mbernate删除功能 图1
2/66
1.4工资表模式
根据上述目的和各项功能要求,选择如表1的数据库表來储存员工各项工资信息其中 的Id号即为员工工号。
表1
ID 3 ??姓名张三??基础工资5000 ??职务工资2000 ??奖金3000 ?? 1. 5开发环境
JDK1. 6 Myeclipse6.5 MysqlS. 22
Hibernate annotation3. 4 测试工具:junit4. 7 注明:
(1)在详细设计中的代码均为局部的关键代码,完整代码均在附录里:(2)数据 库里的
信息只为了测试,与其含义没有关系:(3)所有模块的模样图中,圆角框表示容 器,直角框表示组件。
3/66
2详细设计
2.1外层模块设计 2.1.1外层模块模样
根据个人设计思路,设计的外侧模块的模样如图2
外层模块Myplet
子容器Panell系统名称:工资管理系统子容器Pane 12查询按钮储存按钮修改按钮 删除按钮子容器Panel3以卡片布局放置查询、储存、修改、删除模块,默认显示查询模 块图2
外侧模块设计,首先新建一个叫MyApplet的类,并继承java下applet包中的 Applet类,在这里,也可以白己定义一个口己的框架的类,去继承Frame类,但是简单起 见,我就定义了自己的框架的类,并继承了 Applet类,这样有些Applet已经实现的功能 就不需要我口己去实现了,比如当你点击这个类运行而得的窗口的右上角的“X”时,窗 口就关闭了,如果没有继承Applet类,那么这些功能将由口己实现,査看java的那套 api会发现里面有个一属性常量,给定义的窗口设置该属性就可以解决。
参考印❷F主编的《java与面向对象程序设计教程》第八章的布局设计可知: FlowLayout的布局方式虽然非常简单,但是这种布局的容器会将容器的里的组件按照加入 的顺序一个个从左往右,从上往下的排列。这样的布局显然不合适,也不美观。而 BorderLayout则将整个容器分为东、西、南、北、中,这样的布局比较死,限制了设计者 口己定义布局的功能。GridLayout的布局形式,虽然给了设计者白己定义布局的一部分功 能,但是还是存在很大一
4/66
部分的限制,还有CardLayout (卡片布局设计)和GridBagLayout,卡片布局设计显 然是可以采用的,但是不能只用卡片布局设计,因为只用它显得单一,而IL功能不全。剩 下的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 0 ; 设置本容器为该布局对象,即this, set Layout (gbLayout) ; (2)创建一个大小为3的
Panel数组p,并实例化三个Panel。
(3)创建一个显示系统名称的L abel类型的tittle,设置其中字体的大小和颜色, 并将Label加入到Panel EO]中的语句分别是:Label tittle = new Label (\\ E资管理系 统\ittle. set Font (new Font (\\并 11 对 Panel [0]采用 Gridlayout 的布局设计,由丁•只
需 添加标题这样一个组件就可以了,所以设置为一行一列:p[02 = new Panel (new GridLayout
(1, 1))。并用 GridBagLayout 的布局设计将 Pane 11 加入到容器 MyApplet 中, 具体实现代
码如下:
5/66
感谢您的阅读,祝您生活愉快。
因篇幅问题不能全部显示,请点此查看更多更全内容