




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1 选题背景12 方案论证13 设计论述23.1 设计思想23.2 设计流程及具体功能视图33.2.1 创建数据库及表33.2.2 使用MyEclipse画好登录界面、主界面43.2.3 JTable绑定数据库表中的数据53.2.4 管理员登录界面53.2.5 登录之后主界面63.2.6 实现添加功能73.2.7 实现删除功能83.2.8 实现修改功能103.2.9 实现查询功能124 结果分析145 总结及改进意见145.1 总结145.2 改进意见15参 考 文 献16附录(主要源代码)1731信息专业Java程序设计课程设计报告1 选题背景随着现代社会的快速发展,我们已进入信息化时代,管理系统在人们的生活中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方面。企业对于有用人才的需求逐步加大,企业内部的人事变动和部门规划也开始加速,传统的人事档案已经不能满足各个企业的人员流动速度,迫使人们起用新的管理方法来管理员工的相关信息。科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,员工管理系统也以方便、快捷、费用低、绿色环保的优点正慢慢地进入各个行业和领域,将传统的员工管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,加速信息的更新速度,使企业管理层第一时间了解到员工的信息,从而进一步的进行对员工的调配。为了适应时代的发展,本次课程设计的主要任务是设计一个人事管理系统并完成一些基本操作。其目的是:提高员工信息管理的运作效率,通过对员工全面的信息采集和处理;运用已学的Java知识编一些简单使用的程序,使我们初步具备综合运用所学Java语言基础知识,面向对象程序和采用分层结构(MVC)设计的基本思想、方法与技术;由计算机来代替人工执行一系列诸如增加新员工、删除、修改、查询、显示等操作。这样就使管理人员轻松快捷的完成员工信息的管理工作。2 方案论证为了保证系统能够长期、安全、稳定、可靠、高效的运行,人事信息管理系统应该满足以下的性能需求: 系统处理的准确性和及时性:系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。系统的开放性和系统的可扩充性:人事信息管理系统在开发过程中,应该充分考虑以后的可扩充性。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。系统的易用性和易维护性:人事信息管理系统使用人员往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的帮助,缩短用户对系统熟悉的过程。3 设计论述图3-1 人事管理系统设计图3.1 设计思想项目采用分层结构(MVC)实现,实现管理员验证登录,登录成功后对员工信息进行增、删、改、查等操作。具体设计由JFrame担当View角色,Swing的事件监听器承担Controller角色,模型Model调用自己编写业务类进行实现。项目包结构如下:entity包:存放所有的实体类对象,一般和数据库表对应。dao包:和数据库操作相关的类全封装在此包中。biz包:业务类的封装包。frame包:存放所有的窗体界面。图3-2 包结构显示图3.2 设计流程及具体功能视图3.2.1 创建数据库及表根据文档创建管理员表、部门表和员工表,其中部门表和员工表创建主外键约束,员工表的sex字段创建check约束,值只能为“男”或“女”。表3-1 管理员信息表字段名字段类型约束控制编号(id)Int主键(primary key)姓名(name)Varchar(50)not null密码(pass)Varchar(50)not null表3-2 员工信息表字段名字段类型约束控制员工编号(id)Int主键(primary key)员工姓名(name)Varchar(50)not null员工性别(sex)Varchar(2)not null部门编号(did)Intnot null员工薪资(salary)Moneynot null表3-3 部门信息表字段名字段类型约束控制部门编号(id)Int主键(primary key)部门名称(name)Varchar(50)not null3.2.2 使用MyEclipse画好登录界面、主界面首先设计一个容器,然后再容器中添加菜单,在菜单中添加选项,并在容器中加入面板,面板布局设置为CardLayout,最后将面板添加进容器。功能实现:在录入、查询、修改和删除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice为界面中加入相应的组件,并对其进行监听 图3-3 登录界面设计图图3-4 主界面设计图3.2.3 JTable绑定数据库表中的数据(1)编写数据库查询Dao类,将数据库记录封装成List(emp)(2)编写Biz业务类,业务类负责把Dao类List的数据转换成Object(3)调用Biz类的方法,将返回的Object values设置到Jtable.setModel(values,)中3.2.4 管理员登录界面图3-5 管理员登录错误显示图图3-6 管理员登录成功显示图3.2.5 登录之后主界面图3-7 主界面显示图3.2.6 实现添加功能图3-8 添加失败显示图图3-9 添加成功显示图图3-10 添加成功结果显示图3.2.7 实现删除功能图3-11 删除失败显示图图3-12 删除成功显示图图3-13 删除成功结果显示图3.2.8 实现修改功能图3-14 修改失败显示图图3-15 修改性别显示图图3-16 修改部门显示图图3-17 修改薪资显示图3.2.9 实现查询功能(1)按性别查询图3-18 按性别查询结果显示图(2)按部门查询图3-19 按部门查询结果显示图(3)按姓名查询图3-20 按姓名查询结果显示图(4)按薪资查询图3-21 按薪资查询结果显示图(5)综合查询图3-22 综合查询结果显示图4 结果分析现行系统的用户界面简单,不方便用户浏览。它的规模较小、效率较低、功能简单,不能处理一些用户所需的复杂要求。存在这些问题主要是系统开发时没有把用户需求考虑全面,系统分析用时较少。5 总结及改进意见5.1 总结本次JAVA课程设计我所编写的程序是人事管理系统,程序中实现了对人事信息的添加、查询、修改、删除的功能,其中应用到了图形用户界面。编写程序时必须培养严谨的科学态度,在做需求分析的时候我们深深的体会到严谨的科学态度的重要性,只有认真分析、综合考虑才能使系统尽可能完善,满足用户的需求。我设计的程序简单易懂,操作简单,且适用于不同的单位使用,只需按照自己的需要将所要录入的信息名称做添加或修改就可以实现。通过这次JAVA的程序设计,使我对JAVA有了更加深入的了解,巩固了我对JAVA基础知识的掌握,并且能够更加熟练的应用JDK与MyEclipse进行JAVA程序的编写,也对MVC设计模式有了深刻理解。5.2 改进意见通过这次课程设计,发现自己还有许多需要改进的地方。编写程序之前我没有认真的写出一个流程图,对问题理解不够清晰,导致程序调试时会有一些困难。但是,经过这次课程设计我相信我的程序设计能力又一次进步了很多。因此,自己将更加勤奋地学习理论知识,并且将理论与实践结合起来,使自己能更加熟练地运用理论知识解决实际问题的能力!参 考 文 献1 郑莉.Java语言程序设计M.北京:清华大学出版社,2011.2 刘兆宏,郑莉,罗频捷.Java语言程序设计案例教程M.北京:清华大学出版社,2008.3 王舜燕,钟珞.Java编程方法学M.北京:北京邮电大学出版社,2008.附录(主要源代码)链接数据库操作package com.sxt.emp.dao;import java.sql.*;public class DBTools private Connection conn;private Statement stmt;private ResultSet rs;private Connection getConn()try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);return DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;databaseName=EmDB,sa,200808); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();return null;/增、删、改public int exeucteUpdate(String sql)conn=this.getConn();try stmt=conn.createStatement();return stmt.executeUpdate(sql); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallythis.close();return 0;/查询public ResultSet executeQuery(String sql)conn=this.getConn();try stmt=conn.createStatement();return stmt.executeQuery(sql); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finally/不能关闭资源return null;/关闭资源public void close()if(rs!=null)try rs.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();if(stmt!=null)try stmt.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();if(conn!=null)try conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();对员工数据进行操作package com.sxt.emp.dao;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.sxt.emp.entitn.Emp;public class EmpDao extends DBToolspublic List getValues(Emp condition,int page,int size)/用集合框架List得到职员表中的值List list = new ArrayList();String sql = select top +size+ * from EmpInfo e,DepartInfo d where e.did=d.id and e.id not in (select top +size*(page-1)+ e.id from EmpInfo e,DepartInfo d where e.did=d.id;if(condition!=null)if(condition.getDname()!=null & !condition.getDname().equals(不限)sql+= and =+condition.getDname()+;if(condition.getName()!=null & !condition.getName().equals()sql+= and like %+condition.getName()+%;if(condition.getSex()!=null & !condition.getSex().equals()sql+= and e.sex = +condition.getSex()+;if(condition.getBeginSalary()!=null & !condition.getBeginSalary().equals()sql+= and e.salary +condition.getBeginSalary();if(condition.getEndSalary()!=null & !condition.getEndSalary().equals()sql+= and e.salary =+condition.getBeginSalary();if(condition.getEndSalary()!=null&!condition.getEndSalary().equals()sql+= and salary +condition.getBeginSalary();if(condition.getEndSalary()!=null & !condition.getEndSalary().equals()sql+= and e.salary =+condition.getEndSalary();ResultSet rs=super.executeQuery(sql);try if(rs.next()return rs.getInt(1); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallysuper.close();return 0;public int addEmp(Emp emp)String sql=insert into EmpInfo values(+emp.getName()+,+emp.getSex()+,+emp.getDid()+,+emp.getSalary()+);return super.exeucteUpdate(sql);public int delEmp(int id) String sql=delete from EmpInfo where id=+id;return super.exeucteUpdate(sql);public int deleteEmp(int ids)StringBuffer sqls=new StringBuffer(delete EmpInfo where id in ();for(int i=0;iids.length;i+)if(i=ids.length-1)sqls.append(idsi).append();elsesqls.append(idsi).append(,);String sql=sqls.toString();return super.exeucteUpdate(sql);public int selEmp()String sql=alter table EmpInfo ;return super.exeucteUpdate(sql);public int updateEmp(Emp emp)String sql=update EmpInfo set name=+emp.getName()+,sex=+emp.getSex()+,did=+emp.getDid()+,salary=+emp.getSalary()+ where id=+emp.getId();return super.exeucteUpdate(sql);public boolean getEmp(String id)String sql=select * from EmpInfo where id=+id;ResultSet rs=super.executeQuery(sql);try if(rs.next()return true; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallysuper.close();return false;主界面操作:package com.sxt.emp.frame;import java.awt.Color;import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import java.util.EventObject;import java.util.List;import javax.swing.DefaultCellEditor;import javax.swing.DefaultComboBoxModel;import javax.swing.ImageIcon;import javax.swing.JFileChooser;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JTable;import javax.swing.event.CellEditorListener;import javax.swing.table.TableCellEditor;import javax.swing.table.TableColumn;import .DepartBiz;import .EmpBiz;import .FileBiz;import com.sxt.emp.entitn.*;public class MainFrame extends javax.swing.JFrame /* Creates new form MainFrame */public MainFrame() initComponents();/* This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */GEN-BEGIN:initComponents/ private EmpBiz eb=new EmpBiz();private PageBean pb=new PageBean();private DepartBiz dbs=new DepartBiz();private Emp condition=new Emp();private FileBiz fb=new FileBiz();private Object values;public Emp getCondition() return condition;public void setCondition(Emp condition) this.condition = condition;private void initComponents() jLabel1 = new javax.swing.JLabel();jLabel2 = new javax.swing.JLabel();jComboBox1 = new javax.swing.JComboBox();jComboBox2 = new javax.swing.JComboBox();jComboBox3 = new javax.swing.JComboBox();jScrollPane1 = new javax.swing.JScrollPane();jTable1 = new javax.swing.JTable();jLabel3 = new javax.swing.JLabel();jLabel4 = new javax.swing.JLabel();jLabel5 = new javax.swing.JLabel();jLabel6 = new javax.swing.JLabel();jButton1 = new javax.swing.JButton();jButton2 = new javax.swing.JButton();jButton3 = new javax.swing.JButton();jButton4 = new javax.swing.JButton();jButton5 = new javax.swing.JButton();jMenuBar1 = new javax.swing.JMenuBar();jMenu1 = new javax.swing.JMenu();jMenuItem1 = new javax.swing.JMenuItem();jMenuItem2 = new javax.swing.JMenuItem();jMenuItem3 = new javax.swing.JMenuItem();jMenu2 = new javax.swing.JMenu();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);setTitle(u4ebau4e8bu7ba1u7406u754cu9762);setIconImage(new javax.swing.ImageIcon(getClass().getResource(/images/J0099161.jpg).getImage();jLabel1.setFont(new java.awt.Font(黑体, 1, 24);jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);jLabel1.setText(u4ebau4e8bu7ba1u7406u7cfbu7edf);jLabel2.setText(u90e8u95e8uff1a);DepartBiz db=new DepartBiz();Objectobj=db.getValues();DefaultComboBoxModel dcbm=new DefaultComboBoxModel(obj); jComboBox1.setModel(dcbm);jComboBox1.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / 进行部门过滤Depart dpt=(Depart)jComboBox1.getSelectedItem();String dname=dpt.getName();condition.setDname(dname);setTableValues(1););jComboBox2.setModel(new DefaultComboBoxModel(new String男,女);jComboBox3.setModel(dcbm);/jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String /Item 1, Item 2, Item 3, Item 4 );setTableValues(1);jScrollPane1.setViewportView(jTable1);jLabel3.setText(u9996u9875);jLabel3.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) / 首页点击事件pb=eb.getValue(condition, 1);setTableValues(1);Overridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubjLabel3.setForeground(Color.blue);Overridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubjLabel3.setForeground(Color.black););jLabel4.setText(u4e0au4e00u9875);jLabel4.addMouseListener(new MouseAdapter() /MouseAdapter可以重写MouseListener中自己想要的方法Overridepublic void mouseClicked(MouseEvent e) / 上一页点击事件if(pb.getCurrentPage()=1)JOptionPane.showMessageDialog(null, 已经是第一个页了!);return;int page=pb.getCurrentPage()-1;setTableValues(page);Overridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubjLabel4.setForeground(Color.blue);Overridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubjLabel4.setForeground(Color.black););jLabel5.setText(u4e0bu4e00u9875);jLabel5.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) / 点击下一页事件int total=eb.getTotalPage(condition,pb.getPageSize();if(pb.getCurrentPage()=total)JOptionPane.showMessageDialog(null, 已经是最后一个页了!);return;int page=pb.getCurrentPage()+1;setTableValues(page);Overridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubjLabel5.setForeground(Color.blue);Overridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubjLabel5.setForeground(Color.black););jLabel6.setText(u5c3eu9875);jLabel6.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) / 点击尾页事件int page=pb.getPageSize();setTableValues(page);Overridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubjLabel6.setForeground(Color.blue);Overridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubjLabel6.setForeground(Color.black););jButton1.setText(u589eu52a0);jButton1.addActionListener(new ActionListener() /增加按钮事件Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubAddFrame af=new AddFrame();af.setVisible(true);af.setLocationRelativeTo(null););jButton2.setText(u5220u9664);jButton2.addActionListener(new ActionListener() /删除按钮事件Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stub/判断是否选中行if(jTable1.getSelectedRowCount()0)int flag=JOptionPane.showConfirmDialog(null, 确定删除吗?);if(flag=0)intx=jTable1.getSelectedRows();intids=new intx.length;for(int i=0;i0)int x=jTable1.getSelectedRow();int id=Integer.parseInt(j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业大厦租赁与运营合作协议
- 学校开展征文比赛策划方案
- 2025年教师招聘之《小学教师招聘》练习题库附参考答案详解【预热题】
- 安全知识培训不足课件
- 产品设计方案评审及验收清单模板
- 教师招聘之《幼儿教师招聘》综合练习及参考答案详解【预热题】
- 教师招聘之《小学教师招聘》考试模拟试卷附参考答案详解【突破训练】
- 医护关系协作模式
- 医护关系问答
- (正式版)DB15∕T 2566-2022 《西辽河平原区玉米直收粒栽培技术规程》
- 2025数学步步高大一轮复习讲义人教A版复习讲义含答案
- 数字货币概论 课件 第5章 稳定币的原理与实现
- 重点群体人员本年度实际工作时间表
- 数据科学与大数据技术导论-第1章-数据科学概述
- 健康指南妊娠糖尿病孕期饮食控制的重要性
- 军工行业保密知识传授培训
- 新教科版五年级上册科学全册实验报告
- 殡葬经济现代墓地投资项目分析报告
- 视网膜分支静脉阻塞的护理课件
- 外墙保温一体板监理细则
- 云南省学校食堂“六T”实务管理验收评分标准(2021版)
评论
0/150
提交评论