课 程 设 计
课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 指导教师 刘科峰
2014 年 10 月 29
日
一.设计内容
自学Swing图形界面设计和数据库程序设计。开发用于某单位的人事管理系统。该系统要求实现以下功能:
1.员工信息管理包括:员工信息一览表、新员工的建立、修改 2. 薪资福利管理:考勤与薪资的连动计算、薪资与福利的设置
3. 考勤假期管理:考勤项目录入, 实现考勤信息的查询、统计、汇总 4. 人事报表管理:按照员工性别,数目,薪酬自动生成相关报表, 可自定义统计分析条件并可对历史报表进行管理。
设计亮点
1.null布局方式
Swing图形界面设计中有很多布局方式,通过本次学习了解到了FlowLayout,BorderLayout,GridLayout以及null布局,就这四种布局方式而言,null布局的优点在于可以将组建的位置精准到坐标值,可以把组件放到任意想放置的位置,另外可以通过null去设置组件的大小,相较于其他布局方式来说是一个很大的优势。但同时它的缺点在于不能根据Frame的大小变化而改变位置。
2.组件部分属性的设计
Swing中有很多方法是用来实现组件属性设置的,比如button.setVisible(false);按钮通过调用这个方法实现不可见,这是我此次课程设计中的一个亮点,因为组件是没有设置大小的方法的,只有依靠于相应的布局方式才能改变它的大小,通过设置多几个按钮设为不可见,将所要可见按钮实现大小以及位置的控制是一种很好的方法。
二、设计方案
1主界面(只列出界面设计方面的代码) JPanel panel=new JPanel(); JTable table=null;
JButton ibtn=new JButton(\员工信息\ JButton cbtn=new JButton(\考勤管理\ JButton mbtn=new JButton(\薪资管理\ JButton tbtn=new JButton(\人事报表\
ImageIcon rtou = new ImageIcon(\ JLabel imgLabel=new JLabel(rtou);
//上面代码定义了一个面板与四个标签,并引入了一个图片
panel.setLayout(new FlowLayout()); //设置面板为流布局
panel.add(ibtn); panel.add(cbtn); panel.add(mbtn); panel.add(tbtn);
panel.setBackground(Color.GRAY);
//将按钮加到面板中,设置面板为灰色
this.add(imgLabel,BorderLayout.CENTER); this.add(panel,BorderLayout.SOUTH); this.setBounds(300, 180, 600, 350); this.setVisible(true);
this.getContentPane().setBackground(Color.GRAY);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*图片标签以边框布局放置在中间,将面板也以边框布局放置在下面,可见,灰色,点击关闭程序*/
(2)查询员工界面(只列出界面设计方面的代码) Label idlabel = new JLabel(\
JLabel namelabel = new JLabel(\姓名\ JLabel bumenlabel = new JLabel(\部门\ JLabel zhiweilabel = new JLabel(\职位\
JTextField idfiled = new JTextField(8); JTextField namefield = new JTextField(8); JComboBox bumenbox =new JComboBox(); JComboBox zhiweubox = new JComboBox();
JButton btn=new JButton(\查询\ JButton ibtn=new JButton(\添加\
JPanel spanel=new JPanel(); JPanel vpanel=new JPanel();
/*定义和各个组件,4个标签,两个文本框,两个复选框,两个按钮,两个面板容器*/
spanel.setLayout(new FlowLayout()); vpanel.setLayout(new FlowLayout(FlowLayout.CENTER,45,25));
bumenbox.addItem(\ bumenbox.addItem(\管理部\ bumenbox.addItem(\生产部\ bumenbox.addItem(\业务部\
zhiweubox.addItem(\
zhiweubox.addItem(\部长\ zhiweubox.addItem(\副部长\ zhiweubox.addItem(\普工\ spanel.add(idlabel); spanel.add(idfiled);
spanel.add(namelabel); spanel.add(namefield); spanel.add(bumenlabel); spanel.add(bumenbox); spanel.add(zhiweilabel); spanel.add(zhiweubox); spanel.add(btn); vpanel.add(ibtn); spanel.setBackground(Color.GRAY); vpanel.setBackground(Color.GRAY); //将各个组件放进对应面板,设置相关属性 this.add(spanel,BorderLayout.NORTH); this.add(vpanel,BorderLayout.SOUTH); this.setBounds(300, 180, 600, 350); this.setVisible(true); this.getContentPane().setBackground(Color.GRAY); //将面板以边框布局放入框架中,设置属性 (3)增加员工信息界面
JPanel panel=new JPanel();
JLabel timeLabel=new JLabel(\时间\
JLabel allnumLabel=new JLabel(\员工总数\ JLabel staffMoLabel=new JLabel(\考勤\ JLabel entryLabel=new JLabel(\全勤\ JLabel quitLabel=new JLabel(\缺勤\ JLabel mwLabel=new JLabel(\性别比例\ JLabel manLabel=new JLabel(\男\ JLabel womanLabel=new JLabel(\女\
JLabel proportionLabel=new JLabel(\男女比例\
JLabel distributionLabel=new JLabel(\人员部门分布\ JLabel mdpLabel=new JLabel(\管理部\ JLabel pdpLabel=new JLabel(\生产部\ JLabel bdpLabel=new JLabel(\业务部\ JLabel xmLabel=new JLabel(\项目\ JLabel xzLabel=new JLabel(\细则\ JLabel stLabel=new JLabel(\数据统计\
JTextField timeFiled = new JTextField(8); JTextField allnumFiled = new JTextField(8); JTextField entryFiled = new JTextField(8); JTextField quitFiled = new JTextField(8); JTextField manFiled = new JTextField(8); JTextField womanFiled = new JTextField(8);