




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州科技学院电子信息与智能化实验中心面向对象课程设计报告职工档案管理系统专业年级计算机科学与技术班级学号姓名成绩指导教师2016年3月19日19目录职工档案管理系统设计报告11.1目的21.2主要完成的任务21.3使用的开发工具21.3.1 Eclipse21.3.2 MySQL31.4解决的主要问题32.1 系统功能分析42.1.1 系统需求分析42.1.2 可行性分析42.2 用例图及用例说明43.1 系统类图63.1.1 表现层63.2.2 业务逻辑层63.2.3 数据访问层73.2 系统时序图73.3 数据库设计84 系统实现95 系统测试17职工档案管理系统设计报告职工档案的管理是企业管理中的一个重要内容,随着时代的进步,企业也逐渐变得庞大起来。如何管理好企业内部员工的信息,成为企业管理中的一个大问题。在这种情况下,开发一个职工档案管理系统就显得非常必要。本系统结合公司实际的职工、制度,经过实际的需求分析,采用eclipse作为开发工具而开发出来的职工档案管理系统。整个系统从符合操作简便、灵活、实用、安全的要求出发,本企业职工档案管理系统具有如下功能:主要实现对员工的职工档案资料进行有效的录入、删除、修改和查询,根据职工编号对符合条件的员工档案资料进行修改以及根据职工编号对符合条件的员工档案资料进行删除,根据职工编号查询符合条件的员工档案资料,并打印查询结果等功能。1 课程设计任务概述1.1目的现代信息技术的发展,在改变着我们的生活方式的同时,也改变着我们的工作方式,使传统意义上的职工档案管理的形式和内涵都在发生着根本性的变化。在过去,一支笔和一张绘图桌,可能就是进行办公的全部工具。今天,电脑、扫描仪和打印机等,已基本取代了旧的办公用具。如今,职工档案管理己完全可以通过电脑进行,并在计算机辅助下准确快速地完成许多复杂的工作,不仅能够大大降低企业在职工档案管理方面的成本,而且能大大缩短档案管理的时间。而今天,职工档案管理的内容己经转变为对更为广泛的系统价值的追求。信息管理,如今已是一个热门话题,它已为许多企业所采用。因此,在现代化的进程中,引入现代管理的思想,建立一套可面向企事业单位职工档案管理系统,也是十分必要的。1.2主要完成的任务随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业职工档案管理势在必行。对于大中型企业来说,利用计算机支持企业高效率完成职工档案管理的日常事务,是适应现代企业制度要求、推动企业劳动职工档案管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高职工管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。合理的利用有助于企业发展的管理系统是企业改革的一种优越的体现,不仅保证了核算准确度,还成倍的提高了工作效率,而且便于查询。作为计算机应用的一部分,使用计算机对职工档案信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高职工档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套适用的职工档案管理软件成为很有必要的事。1.3使用的开发工具 1.3.1 EclipseEclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C+、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。1.3.2 MySQLMySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQ L是开放源码软件,因此可以大大降低总体拥有成本。Linux作为操作系统,Apache和 Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。1.4解决的主要问题职工档案管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以职工档案管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。2 系统分析与建模2.1 系统功能分析2.1.1 系统需求分析当前企业信息管理系统正在从US结构向B/S结构转移,但是由于安全性等方面的因素,C/S结构的管理信息系统仍然占据企业管理信息系统的主流。职工档案管理系统是现代企业管理工作不可缺少的一部分,是适应现代企业制度要求、推动企业劳动职工档案管理走向科学化、规范化的必要条件。职工档案管理系统是一个典型的数据库开发应用程序,它由系统登录、员工信息管理、文件管理组成,具体规划如下:(1)系统管理:只有管理员用户可以对系统的各个模块进行添加,删除,修改,查询,其他普通用户只能查看自己的个人信息,若有误可以联系管理员进行档案信息的修改。(2)员工信息管理:员工信息管理包括对员工基本信息和情况的记录进行浏览和按照姓名顺序排序。(3)文件管理:将文件在本地保存,需要时读取,保障了数据的安全性。2.1.2 可行性分析职工管理系统后台数据库采用目前应用十分广泛的关系数据库MySQL,由于其具有快速、方便、灵活和可移植性等特点被很多软件开发者所使用;前台采用myeclipse作为主要的开发工具,其可与MySQL数据库结合的很好,并且 MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。2.2 用例图及用例说明 (1)职工档案管理用例描述通过档案系统管理员工档案,是系统提供的一项基本服务。在职工档案管理系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。表1职工档案管理用例描述Use Case 名称档案管理执行者档案管理员前置条件管理员通过系统验证后,成功登陆档案管理系统事件流A输入管理员的工号; 若输入不正确,则提示“参数不合法,请重新输入!”B输入管理员密码; 若输入不正确,则提示“您输入的用户名或密码有误,请重新输入!” 成功登陆系统后,管理及操作菜单为编辑状态;C选择要处理的事件进行处理; 若事件处理成功,提示操作成功的信息; 若事件处理失败,则提示操作失败的信息;E. 处理完成,点击“退出”,退出系统。后置条件管理员成功操作管理用户,职工档案管理系统保存档案记录并修改档案中职工信息。(2)管理职工档案用例图根据(1)的用例描述,画出借阅图书用例图,见图1。图1 管理职工档案用例图3 系统设计3.1 系统类图3.1.1 表现层位于最外层(最上层),离用户最近。 用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。对流入的数据的正确性和有效性负责,对呈现样式负责,对呈现友好的错误信息负责。位于表现层是职工类,它具有工号,姓名,出生日期,性别和职位这些属性,还有各自的相应的Sett、Gett方法,同时还有toString方法。如图2。图2 职工类3.2.2 业务逻辑层它处于数据访问层与表示层中间,在数据交换中起到了承上启下的作用。 业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上。它负责系统领域业务的处理,负责逻辑性数据的生成、处理及转换。如图3。 图3 业务控制类3.2.3 数据访问层有时候也称为是持久化层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。 简单地说就是实现对数据表的Select、Insert、Update、Delete的操作。如果要加入ORM(Object Relation Mapping)的元素,那么就会包括对象和数据表之间的Mapping(映射),以及对象实体的持久化。对数据的正确性和可用性不负责,对数据的用途不了解,不负担任何业务逻辑。如图4。图4 数据访问类3.2 系统时序图用例“职工档案管理”时序图,如图5。图5职工档案管理顺序图3.3 数据库设计职工档案管理系统的数据库采用MySQL ,系统数据库的名称为“EmpFile”。数据库EmpFile中包含了一张数据表。下面分别给出数据表概要说明和数据表的结构。如表2。表2 职工档案表FieldTypeNullKeyDefault中文备注idInt(10) unsignedNOPRINULL工号nameVarchar(20)YESNULL姓名passwordVarchar(20)YESNULL登录密码birthdayVarchar(20)YESNULL出生日期sexVarchar(5)YESNULL性别positionVarchar(10)YESNULL职位4 系统实现本系统采用了MVC分层设计,实现本系统功能最重要的模块是业务逻辑层与数据访问层的设计,现将其代码分别贴出,EmployeeServiceImp实现的是业务逻辑的处理,。public class EmpolyeeServiceImp implements IService private IBaseDao employeeDao;public void setDao(IBaseDao employeeDao) this.employeeDao = employeeDao;public boolean register(Employee employee) return employeeDao.insert(employee);public boolean login(Employee employee) boolean result = false;Employee e = employeeDao.findById(employee.getId();if(e != null) if(employee.getPassword().equals(e.getPassword() result = true;return result;public boolean update(Employee employee) return employeeDao.update(employee);public boolean delete(int id) if(id = 101) return false;return employeeDao.delete(id);public List browse() return employeeDao.findAll();public Employee findById(int id) return employeeDao.findById(id);public boolean close() return employeeDao.close();public class EmployeeDaoImp implements IBaseDao private final String configFile = jdbc.conf;private final String FILENAME = employees.dat;private Connection conn = null;private List empLists = null; public EmployeeDaoImp() File file = new File(FILENAME);if(file.exists() try FileInputStream fin = new FileInputStream(file);ObjectInputStream ois = new ObjectInputStream(fin);empLists = (List)ois.readObject(); catch(IOException e ) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString(); catch(ClassNotFoundException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();if(empLists = null) empLists = new ArrayList();empLists.add(new Employee(101, admin, 123, 2012/12/21, true, 经理);private Connection connect() String URL = null;Properties prop = new Properties();try prop.load(new FileInputStream(configFile);String driverName = prop.getProperty(dbDriver);String db = prop.getProperty(dbDataBase);String ip = prop.getProperty(dbIP);String port = prop.getProperty(dbPort);String username = prop.getProperty(dbUserName);String passwd = prop.getProperty(dbPassword);String defaultDB = prop.getProperty(defaultDbName);URL = jdbc: + db + :/ + ip + : + port + / + defaultDB + ?user= + username + &password= + passwd + &useUnicode=true&characterEncoding=gb2312;Class.forName(driverName).newInstance(); conn = DriverManager.getConnection(URL); catch (Exception e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();return conn;public boolean insert(Employee employee) boolean result = false;if (conn = null) connect();if (conn != null) String sql = Insert Into employee(id, password, name, birthday, sex, position) value(?,?,?,?,?,?);PreparedStatement pst = null;try pst = conn.prepareStatement(sql);pst.setInt(1, employee.getId();pst.setString(2, employee.getPassword();pst.setString(3, employee.getName();pst.setString(4, employee.getBirthday();pst.setString(5, employee.isSex()?男:女);pst.setString(6, employee.getPosition();int count = pst.executeUpdate();if (count = 1) result = true; catch (Exception e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString(); finally try pst.close(); catch (SQLException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();return result;public boolean delete(int id) boolean result = false;if(conn = null) connect(); if(conn != null) String sql = Delete From employee where id=? ;PreparedStatement pst = null;try pst = conn.prepareStatement(sql);pst.setInt(1, id);int count = pst.executeUpdate();if (count = 1) result = true; catch (Exception e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString(); finally try pst.close(); catch (SQLException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();return result;public boolean update(Employee employee) boolean result = false;if(conn = null) connect(); if(conn != null) String sql = Update employee Set password=?, name=?, birthday=?, sex=?, position=? Where id=?;PreparedStatement pst = null;try pst = conn.prepareStatement(sql);pst.setString(1, employee.getPassword();pst.setString(2, employee.getName();pst.setString(3, employee.getBirthday();pst.setString(4, employee.isSex()?男:女);pst.setString(5, employee.getPosition();pst.setInt(6, employee.getId();int count = pst.executeUpdate();if(count = 1) result = true; catch (Exception e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString(); finally try pst.close(); catch(SQLException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();return result;public List findAll() List list = null;Employee employee = null;if(conn = null) connect();if(conn != null) String sql = Select * From employee;PreparedStatement pst = null;ResultSet rs = null;try pst = conn.prepareStatement(sql);rs = pst.executeQuery();if(rs != null) list = new ArrayList();while(rs.next() employee = new Employee(rs.getInt(id), rs.getString(password), rs.getString(name), rs.getString(birthday), rs.getString(sex).equals(男) ? true:false, rs.getString(position);list.add(employee); catch(Exception e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString(); finally try rs.close();pst.close(); catch(SQLException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();return list;public Employee findById(int id) Employee employee = null;if(conn = null) connect(); if(conn != null) String sql = Select * From employee Where id=?;PreparedStatement pst = null;ResultSet rs = null;try pst = conn.prepareStatement(sql);pst.setInt(1, id);rs = pst.executeQuery();if(rs.next() employee = new Employee(rs.getInt(id), rs.getString(password), rs.getString(name), rs.getString(birthday), rs.getString(sex).equals(男) ? true:false, rs.getString(position); catch(Exception e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString(); finally try rs.close();pst.close(); catch(SQLException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();return employee;public boolean close() boolean result = false;File file = new File(FILENAME);ObjectOutputStream oos = null;FileOutputStream fos = null;try fos = new FileOutputStream(file);oos = new ObjectOutputStream(fos);oos.writeObject(empLists);result = true;catch(IOException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();finally try oos.close();fos.close(); catch(IOException e) e.printStackTrace();JOptionPane.showMessageDialog(null, e.toString();return result;5 系统测试为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。(1)测试是为了发现程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全科医生心肺复苏技能实操考核答案及解析
- 2025年影像学影像诊断评估答案及解析
- 2025年临床药学专业知识考核测试卷答案及解析
- 2025年放射科医学影像诊断策略考核答案及解析
- 2025年康复医学康复训练方案制定技能答案及解析
- 2025年神经内科常见病例诊断处理技能评估模拟试卷答案及解析
- 2025年营养病科膳食营养调配知识考核答案及解析
- 2025年中医内科中医诊断治疗操作技能考核答案及解析
- 2026航天三院校园招聘笔试模拟试题及答案解析
- 2025年法医学多选题模拟测试卷答案及解析
- 2024版2025秋贵州黔教版综合实践活动五年级上册全册教案教学设计
- 转作风重实干课件
- 甲状腺课件类型
- 单招备考科学方案
- 2025年秋新人教版数学三年级上册全册教学课件
- 快乐主义伦理学课件
- 《工程勘察设计收费标准》(2002年修订本)
- HR如何筹划年终奖?(10大经典个税筹划案例)汇编
- GB/T 43063-2023集成电路CMOS图像传感器测试方法
- 作文格子纸-word版本
- GB/T 18103-2022实木复合地板
评论
0/150
提交评论