Mini人事管理系统课程设计报告
目录
第一章 系统描述
(一) 前言
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对人事信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事情。
目前,无论是机关、事业单位、还是企业单位,人事管理对于组织生存与长远发展所具备的重要性都已经有了明确的认识,而人事管理水平的提升不仅需要高素质的管理人员,而且也需要信息化工具进行辅助
在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。
(二) 开发系统的功能介绍
1. 上班登记子系统
上班登记子系统主要对所有员工的上班信息进行登记,包括员工的工号、员工的姓名、员工的上班时间和相应的备注信息,并且还要能够删除错误的员工上班时间信息的记录
2. 下班登记子系统
下班登记子系统主要对所有员工的下班信息进行登记,包括员工的工号、员工的姓名、员工的下班时间和相应的备注信息,并且还要能够删除错误的员工下班时间信息的记录。
3. 请假登记子系统
请假登记子系统主要对所有员工的请假信息进行登记,包括员工的工号、员工的姓名、员工的请假时间和相应的备注信息,并且还要能够删除错误的员工请假时间信息的记录。
4. 信息统计子系统
信息统计系统主要对所有员工的上班时间信息、下班时间信息、请假时间信息进行统计,包括员工的工号、员工的姓名、员工的上班时间、员工的下班时间、员工的请假时间和相应的备注信息,并且还可以删除错误的员工时间信息的记录。
5. 记录添加子系统
记录添加子系统的主要作用是在数据库中添加员工工号、员工姓名、相应的时间和备注,还有系统时间提示。
(三) 解决的问题
由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,因此,请不要故意输入错误信息。这些不足请老师多多谅解。今后设计者会更多的学习编程技巧,不断的提高程序设计水平。
1.在使用读取功能时,运行程序出现错误,发现原来没有申请新的空间,导致运行出错。
2.在使用录入功能时,如果输入与已经存在的数据时不会出现提示,最后要用到循环来检查数据是否相同。开始的时候用到全局变量来控制循环,然后再用到局部变量来覆盖全部变量,导致不能判断数据是否相同。经过修改。在循环那里在重新赋值就可以成功判断!
3.在使用读取功能时,读出数据成功,可是读出一些空值,因此在保存数据的时候增加了保存多少条数据,这样用来控制读出数据的条数,以免读出空值!
4. 在设计页面的时候,以在Button上放背景图片来设背景时,图片的放置总是找不到路径,最简单的办法就是把图片放在和工程同路径的地方,系统就可以自动找到图片。添加图片有大小的要求,我用PS做的图像太大了……
第二章 分析与设计
(一) 功能模块划分
本系统分为如下的几大模块:
主界面
下班登记 |
上班登记 |
请假登记 |
统计情况 |
退出系统 |
(二) 数据库结构描述
在这个MINI开发系统中,选用SOL Sever2000作为系统服务数据库,这是因为SOL Sever 2000功能强大,操作简便,应用较广。
数据库方面只做了一张表,根据功能不同,在每个子系统里面读取的数据部分不同。设计的表如下:
|
列名 |
数据类型 |
可否允空 |
长度 |
|
工号 |
数值型 |
否 |
50 |
|
姓名 |
字符型 |
否 |
50 |
|
上班时间 |
日期型 |
否 |
30 |
|
下班时间 |
日期型 |
否 |
30 |
|
请假时间 |
日期型 |
是 |
30 |
|
备注 |
字符型 |
是 |
50 |
(三) 系统详细设计文档
为了界面简洁些,用了两个类。一个类包含页面表格,员工信息项等公共域,还包括添加记录,删除记录以及更新记录的公共方法的统计信息页面基类。一个类包含员工ID、员工姓名、员工上班时间、员工下班时间、员工请假时间变量域以及对这些变量域的存取方法的记录信息基类。
a) 统计信息界面的基类
由于上班时间统计界面,下班时间统计界面,请假时间统计界面和信息统计界面都非常相似,因此可以给这些界面设计一个基类,以提高代码的可复用性和程序的清晰度。在此基类中,主要包括页面表格,员工信息项等公共域,还包括添加记录,删除记录以及更新记录的公共方法。
添加记录方法、删除记录方法以及更新记录方法涉及具体的逻辑处理流程,因此在基类中只声明了一个空的函数体,其具体操作由各个子类单独表现。
b) 记录添加界面的基类
由于上班时间记录添加界面,下班时间记录添加界面和请假时间记录添加界面也都非常相似,因此也可以给这些界面设计一个基类,以提高代码的可复用性和程序的清晰度。为了在记录添加时更方便的设置记录添加时间,因此在记录添加页面放置一个时钟,其具体代码如下:
package manpowersystem;
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.awt.*;
import java.awt.event.*;
public class RecordPane extends JFrame {
RecordItem item = new RecordItem();
Database database = new Database();
XYLayout xYLayout1 = new XYLayout(); //采用XY布局方式
JTextField jEmployeeIDTextField = new JTextField(); //员工ID域
JTextField jEmployeeNameTextField = new JTextField(); //员工NAME域
JTextField jDateTimeTextField = new JTextField(); //时间域
JTextField jReasonTextField = new JTextField(); //原因域
JButton jOKButton = new JButton();
JButton jExitButton = new JButton();
JButton jResetButton = new JButton();
JLabel jIDLabel1 = new JLabel();
JLabel jIDLabel2 = new JLabel();
JLabel jIDLabel3 = new JLabel();
JLabel jIDLabel4 = new JLabel();
JPanel jClockPanel = new JPanel();
Clock clock = new Clock("现在时刻"); //初始化一个时钟对象
Thread clockThread;
XYLayout xYLayout2 = new XYLayout(); //时钟线程
JLabel jIDLabel5 = new JLabel();
public RecordPane() {
try {
jbInit();
}
catch ( Exception e ) {
e.printStackTrace();
}
}
//记录添加页面组件初始化
public static void main( String[] args ) {
RecordPane recordPane1 = new RecordPane();
}
private void jbInit() throws Exception {
this.getContentPane().setBackground( new Color( 210, 138, 177 ) );
this.setFont( new java.awt.Font( "DialogInput", 1, 14 ) );
this.setTitle( "请添加相应记录" );
this.getContentPane().setLayout( xYLayout1 );
xYLayout1.setWidth(725 );
xYLayout1.setHeight(274 );
jOKButton.setBackground( new Color( 212, 158, 217 ) );
jOKButton.setFont( new java.awt.Font( "DialogInput", 1, 14 ) );
jOKButton.setText( "确定" );
jOKButton.addActionListener(newRecordPane_jOKButton_actionAdapter( this ) );
jExitButton.setText( "退出" );
jExitButton.addActionListener(newRecordPane_jExitButton_actionAdapter( this ) );
jExitButton.setBackground( new Color( 212, 158, 217 ) );
jExitButton.setFont( new java.awt.Font( "DialogInput", 1, 14 ) );
jResetButton.setText( "重写" );
jResetButton.addActionListener( new
RecordPane_jResetButton_actionAdapter( this ) );
jResetButton.setBackground( new Color( 212, 158, 217 ) );
jResetButton.setFont( new java.awt.Font( "DialogInput", 1, 14 ) );
jReasonTextField.setText( "" );
jEmployeeIDTextField.setText( "" );
jEmployeeNameTextField.setText( "" );
jIDLabel1.setText( "姓名" );
jIDLabel1.setFont( new java.awt.Font( "SansSerif", 1, 18 ) );
jIDLabel2.setFont( new java.awt.Font( "SansSerif", 1, 18 ) );
jIDLabel2.setText( "时间" );
jIDLabel3.setFont( new java.awt.Font( "SansSerif", 1, 18 ) );
jIDLabel3.setText( "备注" );
jIDLabel4.setFont( new java.awt.Font( "SansSerif", 1, 18 ) );
jIDLabel4.setText( "工号" );
jDateTimeTextField.setText("");
//在页面上放置时钟并启动时钟线程
//时间盘
clockThread=new Thread(clock);
clockThread.start();
jClockPanel.setBackground(new Color(210, 138, 177));
jClockPanel.setLayout(xYLayout2);
jClockPanel.setBorder(BorderFactory.createLoweredBevelBorder());
jIDLabel5.setText("现在时刻");
jIDLabel5.setFont(new java.awt.Font( "SansSerif", 1, 18 ));
this.getContentPane().add( jEmployeeNameTextField,
new XYConstraints( 108, 83, 89, 31 ) );
this.getContentPane().add( jEmployeeIDTextField,
new XYConstraints(15, 83, 81, 31) );
this.getContentPane().add( jReasonTextField,
new XYConstraints(351, 83, 86, 58) );
this.getContentPane().add( jOKButton,
new XYConstraints( 91, 220, -1, 35 ) );
this.getContentPane().add( jResetButton,
new XYConstraints( 206, 220, -1, 35 ) );
this.getContentPane().add( jExitButton,
new XYConstraints( 318, 220, -1, 35 ) );
this.getContentPane().add( jIDLabel2,
new XYConstraints(223, 43, 80, 18) );
this.getContentPane().add( jIDLabel1,
new XYConstraints(121, 43, 80, 18) );
this.getContentPane().add( jIDLabel4, new XYConstraints(25, 43, 80, 18) );
this.getContentPane().add( jIDLabel3,
new XYConstraints(364, 43, 80, 18) );
this.getContentPane().add(jDateTimeTextField,new XYConstraints(213, 83, 113, 31));
this.getContentPane().add(jIDLabel5, new XYConstraints(475, 43, 80, 18));
this.getContentPane().add(clock, new XYConstraints(458, 82, 145, 118));
clock.add(jClockPanel, null);
}
void jExitButton_actionPerformed( ActionEvent e ) {
this.dispose();
}
//重置按钮的处理
void jResetButton_actionPerformed( ActionEvent e ) {
jEmployeeIDTextField.setText( "" );
jEmployeeNameTextField.setText( "" );
jReasonTextField.setText( "" );
jDateTimeTextField.setText( "" );
