java课程设计(人事管理系统)

合集下载

java人事部课程设计

java人事部课程设计

java人事部课程设计一、课程目标知识目标:1. 掌握Java面向对象编程的基本概念,包括类、对象、继承、封装和多态;2. 学会使用Java编写人事部信息管理系统的基础功能,如员工信息的增加、删除、修改和查询;3. 理解并能运用Java异常处理、文件操作和数据持久化存储。

技能目标:1. 能运用面向对象的思想分析并解决实际问题,具备初步的软件项目设计能力;2. 能够使用Java编写结构清晰、可读性强的代码,养成良好的编程习惯;3. 能够运用所学知识,独立完成一个小型人事部信息管理系统的设计与实现。

情感态度价值观目标:1. 培养学生积极的学习态度,激发对计算机编程的兴趣和热情;2. 培养学生的团队合作意识,学会在项目开发过程中与他人沟通与协作;3. 培养学生勇于面对困难,敢于挑战的精神,提高解决问题的能力。

课程性质:本课程为实践性较强的学科,注重理论联系实际,通过项目驱动的教学方法,使学生能够将所学知识应用于实际项目中。

学生特点:学生具备一定的Java基础,对面向对象编程有一定的了解,但实践经验不足,需要通过实际项目锻炼编程能力。

教学要求:结合学生特点,教师应注重理论与实践相结合,引导学生通过项目实践,掌握Java编程技巧,提高解决实际问题的能力。

在教学过程中,关注学生的学习进度和个体差异,提供有针对性的指导。

二、教学内容1. 面向对象编程基础:- 类与对象的概念及其关系- 封装、继承和多态的实现原理- Java异常处理机制2. Java编程规范与技巧:- 代码规范、命名规范- 编程习惯和调试方法- 设计模式初步介绍3. 人事部信息管理系统功能模块设计:- 系统需求分析- 功能模块划分与设计- 数据存储与文件操作4. 实践项目开发:- 系统框架搭建- 员工信息管理功能实现- 系统测试与优化教学内容安排与进度:第一周:面向对象编程基础,学习类与对象、封装、继承和多态等概念;第二周:Java编程规范与技巧,培养良好的编程习惯;第三周:人事部信息管理系统功能模块设计,进行需求分析和模块划分;第四周:实践项目开发,分阶段完成系统框架搭建、功能实现及测试优化。

基于java的人事管理系统设计与实现

基于java的人事管理系统设计与实现

基于Java的人事管理系统设计与实现引言人员管理是每个组织或企业都需要关注和重视的一个方面。

为了更好地管理和组织人力资源,许多组织和企业选择开发和使用人事管理系统。

本文将介绍基于Java的人事管理系统的设计和实现原理。

系统需求分析在设计和开发人事管理系统之前,我们首先需要进行系统需求分析。

根据用户的需求和要求,我们确定了以下主要功能:1. 员工信息管理:包括员工基本信息、合同信息、岗位信息等。

2. 考勤管理:记录员工的签到、签退和请假情况。

3. 薪资管理:计算员工的薪资并生成相应的工资条。

4. 培训管理:记录员工的培训情况,包括培训计划和培训成绩。

5. 绩效管理:评估员工的工作绩效并记录相关数据。

6. 权限管理:设置和管理系统用户的权限。

系统设计与实现技术选型由于本系统需要实现较为复杂的功能,我们选择了Java作为开发语言。

Java拥有良好的跨平台性和稳定性,适合用于开发大型的企业级应用。

此外,我们还选择了Spring框架作为系统的基础框架,使用MySQL作为数据库。

架构设计本系统采用了MVC(模型-视图-控制器)的架构模式。

通过将系统划分为模型、视图和控制器,实现了各个模块的解耦和灵活的拓展性。

模型层模型层主要负责处理与数据相关的逻辑。

我们使用Spring 框架提供的ORM(对象关系映射)功能,将Java对象映射到数据库表中,实现了数据的持久化和访问。

视图层视图层主要负责系统用户界面的展示和用户交互。

我们使用HTML、CSS和JavaScript技术开发了一个响应式的Web界面,使用户可以方便地操作系统。

控制器层控制器层作为模型和视图之间的桥梁,负责处理用户请求、调用模型层处理数据,并将处理结果返回给视图层。

我们使用Spring框架的控制器功能,实现了对用户请求的路由和处理。

数据库设计本系统使用MySQL作为数据库管理系统,设计了以下几个主要的数据表: 1. 员工表:存储员工的基本信息,如姓名、性别、出生日期等。

java课程设计(人事管理系统)

java课程设计(人事管理系统)

人事管理系统一.系统需求分析: (2)(1)系统的功能设计 (2)(2)系统功能结构 (2)(3)数据库设计 (2)二.功能模块开发 (3)(1)查询人员信息界面 (3)(2)添加员工界面 (3)(3)修改员工信息界面 (4)(4)删除员工界面 (5)(5)员工考核界面 (5)(6)员工考核历史记录界面 (6)三.各个类说明 (6)四.程序代码 (9)(1)Manager (9)(2)CardEmploy (11)(3)SelEmploy (12)(4)AddEmploy (14)(5)ReviseEmploy (16)i UpdDialog (18)(6)DelEmploy (21)(7)AllEmploy (23)(8)Examine (23)(9)History (27)(10)EmployModel (29)(11)AppraisalModel (30)(12)SqlHelper (33)一.系统需求分析:(1)系统的功能设计i员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、添加、删除和修改及部门管理ii员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核情况进行浏览(2)系统功能结构人事管理的系统结构功能结构如图所示:(3)数据库设计考核历史记录(History)二. 功能模块开发(1)查询人员信息界面实例一个SelEmploy类,当点击“查询”时调用EmployModel类的queryEmploy方法实现查询(2)添加员工界面实例一个AddEmploy类当点击“添加”时调用EmployModel 类的updEmploy方法实现添加功能(3)修改员工信息界面实例一个ReviseEmploy类当点击“修改”时,先调用UpdDialo弹跳出一个修改信息对话框,信息修改完毕后,调用EmployModel类的updEmploy方法实现修改功能(4)删除员工界面实例一个DelEmploy类当点击“删除”时调用EmployModel类的updEmploy方法实现删除功能(5)员工考核界面实例一个Examine类当点击“确认”时调用AppraisalModel类的updAppraisal方法来完成考核功能(6)员工考核历史记录界面实例一个History类当点击时调用AppraisalModel类的updAppraisal方法来完成考核功能三.各个类说明类之间的关系图:1.M anager类Manager类的一个实例,从而生成了人事管理系统的界面,用JSplitPane类将整个界面分为左右两个部分。

java课程设计(人事管理系统)毕业用资料

java课程设计(人事管理系统)毕业用资料

人事管理系统一.系统需求分析: (3)(1)系统的功能设计 (3)(2)系统功能结构 (3)(3)数据库设计 (3)二.功能模块开发 (5)(1)查询人员信息界面 (5)(2)添加员工界面 (5)(3)修改员工信息界面 (6)(4)删除员工界面 (6)(5)员工考核界面 (7)(6)员工考核历史记录界面 (7)三.各个类说明 (8)四.程序代码 (12)(1)Manager (12)(2)CardEmploy (16)(3)SelEmploy (19)(4)AddEmploy (22)(5)ReviseEmploy (28)i UpdDialog (31)(6)DelEmploy (37)(7)AllEmploy (40)(8)Examine (42)(9)History (49)(10)EmployModel (52)(11)AppraisalModel (56)(12)SqlHelper (61)一.系统需求分析:(1)系统的功能设计i员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、添加、删除和修改及部门管理ii员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核情况进行浏览(2)系统功能结构人事管理的系统结构功能结构如图所示:(3)数据库设计员工基本表(Employinfo)名称字段名称数据类型主键非空工号Empno varchar(10)Yes Yes姓名Ename varchar(10)No yes性别Sex varchar(4)No yes出生年月Birthday Datetime No Yes部门DeptNo Char(10)No Yes职务Ejob Char(20)No Yes工资Sal float No Yes员工考核表(Appraisal)名称字段名称数据类型主键非空工号Empno varchar(10)yes yes 考核Consequence varchar(10)no yes 变更日期RegDate datetime No Yes考核历史记录(History)名称字段名称数据类型主键非空流水号JourNo Int Yes yes工号Empno varchar(10)no yes姓名Ename varchar(10)No Yes上次考核OldInfo varchar(10)No Yes本次考核NewInfo varchar(10)No Yes变更日期RegDate datetime No Yes。

人事管理系统 java课程设计说明书

人事管理系统 java课程设计说明书

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊目录一、设计目的 (2)二、功能介绍 (2)三、程序流程 (2)四、设计步骤 (3)五、设计总结 (6)六、程序清单 (6)┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊一、设计目的通过课程设计,使自己提高理论联系实际解决实际问题的能力;也使自己对基于面向对象的理论进行系统设计过程中的诸多具体问题有感性的认识和深入的理解;进而提高自己的学习兴趣为其将来顺利进入毕业环节作必要的准备。

按照教师给出的思路和计划进度安排独立完成课程设计二、功能介绍1、具有新用户注册功能。

2、具有注册用户登录功能。

3、具有数据的录入功能。

4、具有数据查询功能,可以实现查询全部信息和按条件执行查询。

5、具有按条件删除数据功能。

6、具有统计功能7、本程序采用RCP技术,和SQL数据库。

三.程序流程图1┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊四、设计步骤(一)程序设计步骤1.建立RCP工程并构建数据库2.建立view和editor3.构建基本框架,并主要修改Perspective和WorkbenchWindowAdvisor两个文件4.构建需要的辅助文件5. 测试(二)详细设计:1.登录和注册当登录名框和密码为空的时候,后边会显示×;当点击验证码的时候,调用Random函数产生随机验证码,点击登录的时候,从三个框中获得值,进行对数据库的操作。

部分代码如下:String name = text.getText();String sql = "select * from users where name='"+name+"'";DBHelper db = new DBHelper();ResultSet rs = db.query(sql);效果如图如下:图2当用户点击提交时,程序会将用户输入的信息通过SQL语句提交给数据库,如果数据库修改成功,会返回信息。

人事管理系统Java课程设计报告

人事管理系统Java课程设计报告

人事管理系统Java课程设计报告第一篇:人事管理系统Java课程设计报告湖南科技大学计算机科学与工程学院数据库课程设计报告题目:人事管理管理系统学号:1005030221 姓名:艾向兵指导教师:张黎完成时间:2012年1月4日组员:苏勇,成佳裕,艾向兵企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理。

使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配 1.1系统功能需求分析人事管理系统主要有以下几项功能要求:.新员工资料的输入。

.自动分配员工编号,并且设置初始的用户密码:.人事变动的记载,包括岗位和部门的调整。

.员工信息的查询和修改,包括员工个人信息和密码 1.2 系统功能模块设计根据系统功能要求,可以将系统分解成几个模块来分别设计应用程序界面,如图,人事资源管理包括:新员工档案输入,人事变更,员工档案查询1.3 与其它系统的关系本关系是公司管理信息系统的基础部分,为其他子系统,如考勤管理系统,工资管理系统和员工培训系统,提供员工的基本信息。

同时为其他系统提供了员工登录的密码认证和权限分配。

1.4数据库设计数据库需求分析:员工信息:员工号,密码,权限,姓名,性别,生日,专业,通讯地址,电话,Email,当前状态,其他。

人事变动:记录号,员工,变动,详细描述部门设置:部门编号,名称员工变动代号表员工信息表员工职位代码表管理员登陆界面信息查询,修改,删除主界面查询单个员工的界面总结这次的课程设计,是在学习了Java以后通过阅读课本及在图书馆借阅相关书籍同严景、孟珍三人共同完成的。

在开发这个系统的过程中,碰到很多或大或小的问题,我们一起思考,一起努力,最后大部分都解决了,得到了现在的这个简单的人事管理系统。

在编制过程中,我们首先考虑到了界面的友好性,并在界面设计时不采用烦琐的细节,使界面简单、清晰,便于操作。

一开始我们是想做个登录界面,实现用户的登录权限管理,但试了几次都没有达到预期的效果,最后不得不放弃。

java课程设计--企业人事管理系统

java课程设计--企业人事管理系统

沈阳工程学院课程设计设计题目:企业人事管理系统系别信息工程系班级计本091学生姓名学号指导教师职称副教授、讲师起止日期:2011年6 月6 日起——至2011年6 月17 日止沈阳工程学院课程设计任务书课程设计题目:企业人事管理系统系别信息工程系班级计本091学生姓名学号指导教师职称副教授、讲师课程设计进行地点:实训F任务下达时间:2011 年 6 月 6 日起止日期:2011年6月7日起——至2011年6月17日止教研室主任2011年5月19日批准1.设计的原始资料及依据查阅有关数据库设计、Java语言程序设计以及案例分析等资料,进一步熟悉面向对象程序设计基本理论以及基本思想。

本设计要求按照软件工程、数据库设计思想及设计步骤设计一个实用程序,并采用Java开发该系统。

通过本设计可以加深对面向对象程序设计基本思想的理解,加强学生研发、调试程序的能力,培养学生分析、解决问题的能力,提高学生的科技写作能力。

2.设计的主要内容及要求(1)写出系统的需求分析。

(2)写出系统的数据库设计过程,包括概念结构设计、逻辑结构设计、物理结构设计。

(数据库应用程序管理系统类设计详细写,其它类设计可以略)(3)写出系统设计思路—工作原理、功能规划。

(4)详细设计—数据分析、算法思路、类设计、功能实现(包括程序流程图、主要代码及注释)、界面等。

(5)运行调试与分析讨论--给出运行屏幕截图,分析运行结果,有何改进等。

3.对设计说明书撰写内容、格式、字数的要求(1)学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。

课程设计说明书(论文)的结构及各部分内容要求参照《沈阳工程学院毕业设计(论文)撰写规范》执行。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

(2)装订格式:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、结论、致谢、参考文献。

(3)课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。

基于JAVA的人事管理系统设计与实现

基于JAVA的人事管理系统设计与实现

基于JAVA的人事管理系统设计与实现本文将介绍一个基于JAVA的人事管理系统的设计与实现,该系统主要功能包括员工信息管理、薪资管理、考勤管理等,旨在提高企业的管理效率和员工工作满意度。

一、可行性分析在开始设计之前,我们需要对该系统的可行性进行分析。

首先,该系统的目标用户为企业,能够提高企业的管理效率和员工工作满意度,具有很高的市场需求。

其次,采用JAVA进行系统开发,可以保证系统功能的稳定性和可扩展性。

最后,该系统的开发难度较低,人员技术要求不高,可以通过培训进行技术储备。

二、系统需求分析根据企业的人力资源管理需求,我们对人事管理系统的功能进行如下需求分析:1. 员工信息管理:包括员工基本信息、个人档案、职位信息、教育经历等。

2. 薪资管理:包括员工薪酬信息、绩效考核、社保等。

3. 考勤管理:包括员工出勤记录、请假管理、加班管理等。

行统计分析。

5. 系统安全:系统必须具备登录验证、权限分配等安全措施。

三、系统设计1. 数据库设计为了保证系统数据的完整性和准确性,我们需要对数据库进行设计。

该系统主要由员工信息表、薪资信息表、考勤信息表、部门信息表等构成。

2. 界面设计该系统的界面设计要简洁明了,易于操作。

首先需要设计登录页面,实现用户身份验证和权限管理。

其次,需要设计系统主界面,使用户可以快速定位所需的功能模块。

3. 功能模块设计为了实现人事管理系统的各项需求,我们需要设计如下功能模块:-员工信息管理模块:实现员工的基本信息、个人档案、教育经历、职位信息等的管理。

- 薪资管理模块:实现员工的薪酬信息、绩效考核、社保等的管理。

- 考勤管理模块:实现员工的出勤记录、请假管理、加班管理等的管理。

进行统计分析。

- 系统安全模块:系统必须具备登录验证、权限分配等安全措施,实现系统数据的安全保障。

四、系统开发1. 技术选型根据需求分析和系统设计,我们选择JAVA作为开发语言,并采用MySQL作为数据库。

同时,我们使用Spring、Hibernate、Struts等框架进行开发,以保证系统稳定性和可扩展性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

人事管理系统(1)系统的功能设计3(2)系统功能结构3(3)数据库设计3二.功能模块开发 (4)(1)查询人员信息界面4(2)添加员工界面5(3)修改员工信息界面5(4)删除员工界面6(5)员工考核界面7(6)员工考核历史记录界面7三.各个类说明 (8)四.程序代码 (11)(1)................................................................................................................ M anager 11(2)........................................................................................................... CardEmploy 14(3).............................................................................................................. S elEmploy 16(4)............................................................................................................ AddEmploy 17(5)........................................................................................................ ReviseEmploy 21i UpdDialog (23)(6)............................................................................................................. DelEmploy 27(7).............................................................................................................. AllEmploy 29(8)................................................................................................................. E xamine 30(9)................................................................................................................... H istory 34(10)...................................................................................................... EmployModel 37(11)................................................................................................... AppraisalModel 39(12)............................................................................................................. S qlHelper 42一.系统需求分析:(1)系统的功能设计i员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、添加、删除和修改及部门管理ii员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核情况进行浏览(2)系统功能结构人事管理的系统结构功能结构如图所示:(3)数据库设计员工基本表(Employinfo)名称字段名称数据类型主键非空Yes Yes 工号Empno varchar(10)No yes 姓名Ename varchar(10)性别Sex varchar(4)No yes出生年月Birthday Datetime No Yes部门DeptNo Char(10)No Yes员工考核表(Appraisal)考核历史记录(History)二.功能模块开发(1)查询人员信息界面实例一个SelEmploy类,当点击“查询”时调用EmployModel类的queryEmploy方法实现查询(2)添加员工界面实例一个AddEmploy类当点击“添加”时调用EmployModel类的updEmploy方法实现添加功能(3)修改员工信息界面实例一个ReviseEmploy类当点击“修改”时,先调用UpdDialo 弹跳出一个修改信息对话框,信息修改完毕后,调用EmployModel类的updEmploy方法实现修改功能(4)删除员工界面实例一个DelEmploy类当点击“删除”时调用EmployModel类的updEmploy方法实现删除功能(5)员工考核界面实例一个Examine类当点击“确认”时调用AppraisalModel 类的updAppraisal方法来完成考核功能(6)员工考核历史记录界面实例一个History类当点击时调用AppraisalModel类的updAppraisal方法来完成考核功能三.各个类说明类之间的关系图:1.Manager类Manager类的一个实例,从而生成了人事管理系统的界面,用JSplitPane 类将整个界面分为左右两个部分。

其中左侧实现了人事管理系统的功能树,采用JTree类构建,同时实现了TreeSelectionListener接口,定义了该接口所必须实现的valueChanged(TreeSelectionEvent e)方法,JSplitPane右边加入卡片布局CardEmploy类。

当JTree的TreeSelectionEvent事件发生时,调用CardEmploy的c.show方法切换不同卡片,实现不同的管理界面。

2.CardEmploy类CardEmploy为卡片布局类的面板,主要功能是添加各个界面的卡片,当JTree的TreeSelectionEvent事件发生时。

切换不同的卡片3.EmployModel、AppraisalModel类这两个类继承了AbstractTableModel,主要实现的功能是,存放调用sqlhelper 类得到的数据。

可以通过调用sqlhelper实现增删查改功能4.SqlHelpe r类主要就是连接数据库的一些基础操作是,方便代码修改,重复使用5.SelEmplo y这个类继承Panel,为“查询员工”的界面。

实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类的queryEmploy方法实现查询6.AddEmploy、ReviseEmploy、DelEmploy类这些类继承Pane,分别为“添加员工信息”“修改员工信息”“删除员工信息”的界面,这些类实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类的updEmploy方法实现添加、查询、删除、功能7.Examine类这个类继承Panel,为“考核员工”界面。

这个类实现了Actionlistener 接口,当ActionEvent 事件发生时,(1)先通过调用AppraisalModel的queryAppraisal获取上次考核成绩,(2)修改Appraisal表的考核成绩(3)再把上次考核成绩跟本次考核成绩加到History表中8.History这个类主要是把History表中的信息显示到界面上。

四.程序代码(1)Managerpackage com.Manager;import java.awt.*;import javax.swing.*;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;import javax.swing.tree.*;import java.awt.event.*;public class Manager extends JFrame implements TreeSelectionListener { J Panel jp;J SplitPane js;J ScrollPane jsp;J Tree tree;D efaultMutableTreeNode root, t1, t2, t1_1, t1_2, t1_3, t1_4, t1_5, t2_1,t2_2;C ardEmploy ae;E mployModel em;p ublic static void main(String[] args) {Manager manager = new Manager();}p ublic Manager() {// 给树的各个结点赋值root = new DefaultMutableTreeNode("人事管理系统");t1 = new DefaultMutableTreeNode("基本信息管理");t1_1 = new DefaultMutableTreeNode("查询员工");t1_2 = new DefaultMutableTreeNode("添加员工");t1_3 = new DefaultMutableTreeNode("修改员工信息"); t1_4 = new DefaultMutableTreeNode("删除员工资料"); t1_5 = new DefaultMutableTreeNode("查询全体员工");t2 = new DefaultMutableTreeNode("人员考核管理"); t2_1 = new DefaultMutableTreeNode("人员考核");t2_2 = new DefaultMutableTreeNode("考核历史查询");t1.add(t1_1);t1.add(t1_2);t1.add(t1_3);t1.add(t1_4);t1.add(t1_5);t2.add(t2_1);t2.add(t2_2);root.add(t1);root.add(t2);tree = new JTree(root);// 对树进行监听tree.addTreeSelectionListener(this);// 实例化CardEmploy面板并加到jsplitpane的边ae = new CardEmploy();js = new JSplitPane();js.setLeftComponent(tree);js.setRightComponent(ae);this.getContentPane().add(js);this.setTitle("人事管理系统");this.setVisible(true);this.setSize(600, 500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}p ublic void valueChanged(TreeSelectionEvent e) {// 获取点击结点名称DefaultMutableTreeNode dpath = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent();// 通过点击不同结点切换不同界面if (dpath.equals(t1_1)) {ae.c.show(ae, "1");} else if (dpath.equals(t1_2)) {ae.c.show(ae, "2");} else if (dpath.equals(t1_3)) {ae.c.show(ae, "3");} else if (dpath.equals(t1_4)) {ae.c.show(ae, "4");} else if (dpath.equals(t1_5)) {ae.c.show(ae, "5");} else if (dpath.equals(t2_1)) {ae.c.show(ae, "6");} else if (dpath.equals(t2_2)) {ae.c.show(ae, "7");}}}(2)CardEmploy /*** 用卡片布局设置各个界面*/package com.Manager;import javax.swing.*;import java.awt.*;public class CardEmploy extends Panel{C ardLayout c;//查询表S elEmploy selE;//添加表A ddEmploy addE;//修改员工信息表ReviseEmploy revE;//删除员工表格DelEmploy delE;//所有员工信息AllEmploy allE;//员工考核表Examine exaE;//历史记录界面History His;public CardEmploy(){//查询员工表selE = new SelEmploy();//添加员工表addE = new AddEmploy();//修改员工信息revE = new ReviseEmploy();//删除员工表格delE = new DelEmploy();//所有员工信息allE =new AllEmploy();//员工考核表exaE = new Examine();//历史记录界面His = new History();JPanel jp = new JPanel();//定义cardemploy面板为卡片布局//把各个面板加入到C的卡片布局中c = new CardLayout();this.setLayout(c);this.add(selE,"1");this.add(addE,"2");this.add(revE,"3");this.add(delE,"4");this.add(allE,"5");this.add(exaE,"6");this.add(His,"7");}}(3)SelEmploy/*** SelEmploy 类设置查询员工界面*/package com.Manager;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class SelEmploy extends Panel implements ActionListener { E mployModel em;J Label jl;J TextField jtf;J Button jb;J Table jt;J ScrollPane jsp;J Panel jp1;p ublic SelEmploy() {// 北部jp1 = new JPanel();jl = new JLabel("输入员工号:");jtf = new JTextField(20);jb = new JButton("查询");// 对查询按钮监听jb.addActionListener(this);jp1.add(jl);jp1.add(jtf);jp1.add(jb);// 中部em = new EmployModel();String[] paras = { "1" };em.queryEmploy("select * from Employinfo where 1 = ?", paras);jt = new JTable(em);jsp = new JScrollPane(jt);this.setLayout(new BorderLayout());this.add(jp1, BorderLayout.NORTH);this.add(jsp, BorderLayout.CENTER);}p ublic void actionPerformed(ActionEvent e) {if (e.getSource() == jb) {String name = this.jtf.getText().trim();String sql = "select * from Employinfo where Empno = ?";String[] paras = { name };em = new EmployModel();em.queryEmploy(sql, paras);// 查找成功更新表jt.setModel(em);}}}(4)AddEmploy package com.Manager;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class AddEmploy extends Panel implements ActionListener { J Label jl, jl1, jl2, jl3, jl4, jl5, jl6, jl7;J Button jb1, jb2;J TextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7;J Panel jp1, jp2, jp3, jp4;E mployModel em;p ublic AddEmploy() {jl1 = new JLabel("工号:");jl2 = new JLabel("姓名:");jl3 = new JLabel("性别:");jl4 = new JLabel("出生年月:");jl5 = new JLabel("部门:");jl6 = new JLabel("职位:");jl7 = new JLabel("工资:");jtf1 = new JTextField(20);jtf2 = new JTextField(20);jtf3 = new JTextField(20);jtf4 = new JTextField(20);jtf5 = new JTextField(20);jtf6 = new JTextField(20);jtf7 = new JTextField(20);jb1 = new JButton("添加");jb2 = new JButton("取消");// 监听‘添加’ ‘取消’按钮jb1.addActionListener(this);jb2.addActionListener(this);jp1 = new JPanel(new GridLayout(7, 1)); jp2 = new JPanel(new GridLayout(7, 1)); jp3 = new JPanel();jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp1.add(jl7);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp2.add(jtf7);jp3.add(jb1);jp3.add(jb2);jp4 = new JPanel(new BorderLayout());jp4.add(jp1, BorderLayout.WEST);jp4.add(jp2, BorderLayout.EAST);jp4.setSize(300, 300);this.setLayout(new FlowLayout());this.add(jp4);this.add(jp3);}p ublic void actionPerformed(ActionEvent e) {if (e.getSource() == jb1) {// 调用EmployModel 里的updEmploy 方法,实现对表格的添加String sql = "insert into Employinfo values(?,?,?,?,?,?,?)";String[] paras = { jtf1.getText(), jtf2.getText(), jtf3.getText(),jtf4.getText(), jtf5.getText(), jtf6.getText(),jtf7.getText() };em = new EmployModel();if (em.updEmploy(sql, paras)) {// 当添加新员工成功时,则弹出”添加成功“的对话框JOptionPane.showMessageDialog(this, "添加成功");} else if (!em.updEmploy(sql, paras)) {JOptionPane.showMessageDialog(this, "添加失败");}// 当新员工加入成功后,要把新加入员工的工号加到考核表AppraisalModel temp = new AppraisalModel();String sql1 = "insert into Appraisal(Empno) values(?)";String[] paras1 = { jtf1.getText() };temp.updAppraisal(sql1, paras1);}else if(e.getSource() == jb2){jtf1.setText("");jtf2.setText("");jtf3.setText("");jtf4.setText("");jtf5.setText("");jtf6.setText("");jtf7.setText("");}}}(5)ReviseEmploy package com.Manager;/*** 修改员工界面*/import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ReviseEmploy extends Panel implements ActionListener { J Table jt;J ScrollPane jsp;J Button jb1, jb2;J Panel jp1,jp2;E mployModel em;JLabel jl1;p ublic ReviseEmploy() {jl1 = new JLabel("修改员工信息",JLabel.CENTER);jl1.setFont(new Font("宋体", Font.BOLD, 28));jp2 = new JPanel();jp2.add(jl1);em = new EmployModel();String[] paras = { "1" };em.queryEmploy("select * from Employinfo where 1 = ?", paras);jt = new JTable(em);jsp = new JScrollPane(jt);jb1 = new JButton("修改");jb2 = new JButton("刷新");// 对两个按钮进行监听jb1.addActionListener(this);jb2.addActionListener(this);this.setLayout(new BorderLayout());jp1 = new JPanel();jp1.add(jb1);jp1.add(jb2);this.add(jp2,BorderLayout.NORTH);this.add(jsp, BorderLayout.CENTER);this.add(jp1, BorderLayout.SOUTH);}p ublic void actionPerformed(ActionEvent e) {if (e.getSource() == jb1) {int rowNum = this.jt.getSelectedRow();if (rowNum == -1) {JOptionPane.showMessageDialog(this, "请选择一行");return;}// 弹出修改对话框new UpdDialog(em, rowNum);} else if (e.getSource() == jb2) {// 刷新修改界面中的表格em = new EmployModel();String[] paras1 = { "1" };em.queryEmploy("select * from Employinfo where 1 = ?", paras1);jt.setModel(em);}}}i UpdDialogpackage com.Manager;/*** 弹出修改界面*/import javax.swing.*;import java.awt.*;import java.awt.event.*;public class UpdDialog extends JDialog implements ActionListener {J Label jl1, jl2, jl3, jl4, jl5, jl6, jl7;J Button jb1, jb2;J TextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7;J Panel jp1, jp2, jp3;p ublic UpdDialog(EmployModel em, int rowNums) {jl1 = new JLabel("工号:");jl2 = new JLabel("姓名:");jl3 = new JLabel("性别:");jl4 = new JLabel("出生年月:");jl5 = new JLabel("部门:");jl6 = new JLabel("职位:");jl7 = new JLabel("工资:");jtf1 = new JTextField(20);jtf2 = new JTextField(30);jtf3 = new JTextField(30);jtf4 = new JTextField(30);jtf5 = new JTextField(30);jtf6 = new JTextField(30);jtf7 = new JTextField(30);// 初始化jtextfield数据jtf1.setText((String) em.getValueAt(rowNums, 0)); jtf1.setEditable(false);jtf2.setText((String) em.getValueAt(rowNums, 1)); jtf3.setText((String) em.getValueAt(rowNums, 2)); jtf4.setText((String) em.getValueAt(rowNums, 3)); jtf5.setText((String) em.getValueAt(rowNums, 4)); jtf6.setText((String) em.getValueAt(rowNums, 5)); jtf7.setText((String) em.getValueAt(rowNums, 6));jb1 = new JButton("修改");jb2 = new JButton("取消");// 对两个按钮监听jb1.addActionListener(this);jb2.addActionListener(this);jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();// 设置布局jp1.setLayout(new GridLayout(7, 1));jp2.setLayout(new GridLayout(7, 1));// 添加组件jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp1.add(jl7);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp2.add(jtf7);jp3.add(jb1);jp3.add(jb2);this.add(jp1, BorderLayout.WEST);this.add(jp2, BorderLayout.CENTER);this.add(jp3, BorderLayout.SOUTH);this.setSize(300, 250);this.setVisible(true);this.setLocation(200, 200);this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {dispose();}});}p ublic void actionPerformed(ActionEvent e) {if (e.getSource() == jb1) {// 修改员工信息的sql 语句,paras 为待注入的值String sql = "update Employinfo set "+ "Ename = ?,Sex = ?,Birthday = ?, DeptNo = ?, Ejob = ? ,Sal=? where Empno = ?";String[] paras = { jtf2.getText(), jtf3.getText(), jtf4.getText(),jtf5.getText(), jtf6.getText(), jtf7.getText(),jtf1.getText() };EmployModel temp = new EmployModel();// 如果修改语句运行成功则弹出“修改成功”对话框if (temp.updEmploy(sql, paras)) {JOptionPane.showMessageDialog(this, "修改成功");}this.dispose();} else if (e.getSource() == jb2) {// 关闭对话框this.dispose();}}}(6)DelEmploy/*** 删除员工*/package com.Manager;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class DelEmploy extends Panel implements ActionListener {J Table jt;J ScrollPane jsp;J Button jb1, jb2;J Panel jp1, jp2;J Label jl1;E mployModel em;p ublic DelEmploy() {// 北部jl1 = new JLabel("删除员工", JLabel.CENTER);jl1.setFont(new Font("黑体", Font.BOLD, 30));jp2 = new JPanel();jp2.add(jl1);// 中部em = new EmployModel();String[] paras = { "1" };em.queryEmploy("select * from Employinfo where 1 = ?", paras);jt = new JTable(em);jsp = new JScrollPane(jt);// 南部jp1 = new JPanel();jb1 = new JButton("删除");jb2 = new JButton("取消");jb1.addActionListener(this);jp1.add(jb1);jp1.add(jb2);this.setLayout(new BorderLayout());this.add(jp2, BorderLayout.NORTH);this.add(jsp, BorderLayout.CENTER);this.add(jp1, BorderLayout.SOUTH);}p ublic void actionPerformed(ActionEvent e) {if (e.getSource() == jb1) {// 返回用户点中的行int rowNum = this.jt.getSelectedRow();if (rowNum == -1) {JOptionPane.showMessageDialog(this, "请选择一行");return;}// 得到学生编号String Empno = (String) em.getValueAt(rowNum, 0);// 删除记录的sql语句String sql = "delete from Employinfo where Empno = ?";String[] paras = { Empno };EmployModel temp = new EmployModel();temp.updEmploy(sql, paras);// 删除员工成功后,更新员工表em = new EmployModel();String[] paras1 = { "1" };em.queryEmploy("select * from Employinfo where 1 = ?", paras1);jt.setModel(em);}}}(7)AllEmploy/*** 遍历所有员工*/package com.Manager;import java.awt.*;import javax.swing.*;public class AllEmploy extends Panel{E mployModel em;J Table jt;J ScrollPane jsp;JLabel jl1;JPanel jp;p ublic AllEmploy(){//北部jp = new JPanel();jl1 = new JLabel("全体员工",JLabel.CENTER);jl1.setFont(new Font("黑体", Font.BOLD, 30));jp.add(jl1);//中部em = new EmployModel();String []paras ={"1"};em.queryEmploy("select * from Employinfo where 1 = ?", paras);jt = new JTable(em);jsp = new JScrollPane(jt);this.setLayout(new BorderLayout());this.add(jp,BorderLayout.NORTH);this.add(jsp,BorderLayout.CENTER);}}(8)Examine/*** 员工考核界面*/package com.Manager;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.util.Vector;import java.sql.*;import javax.swing.*;public class Examine extends Panel implements ActionListener {J Label jl1, jl2, jl3, jl4;J Table jt;J ScrollPane jsp;J TextField jtf1, jtf2;C hoice ch;J Button jb1, jb2;J Panel jp1, jp2, jp3, jp4;A ppraisalModel am;S qlHelper sqh;p ublic Examine() {// 北部为标题文字jp4 = new JPanel();jl1 = new JLabel("员工考核", JLabel.CENTER);jl1.setFont(new Font("黑体", Font.BOLD, 30));jp4.add(jl1);// 中部am = new AppraisalModel();am.queryAppraisal("select E.Empno,E.Ename,A.Consequence,A.RegDate from "+ "Employinfo as E,Appraisal as A where E.Empno=A.Empno");jt = new JTable(am);jsp = new JScrollPane(jt);// 监听jtable 点击表格时获取点击的行数并通过鼠标点击事件给jtf1,jtf2 赋值jt.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {int rowNum = jt.getSelectedRow();jtf1.setText((String) am.getValueAt(rowNum, 0));jtf2.setText((String) am.getValueAt(rowNum, 1));}});jl2 = new JLabel("工号:");jl3 = new JLabel("姓名:");jl4 = new JLabel("考核");jtf1 = new JTextField(10);jtf2 = new JTextField(10);jtf1.setEditable(false);jtf2.setEditable(false);// 实例单选框组件,并赋值ch = new Choice();ch.add("未考核");ch.add("不合格");ch.add("合格");ch.add("优秀");jp1 = new JPanel();jp1.add(jl2);jp1.add(jtf1);jp1.add(jl3);jp1.add(jtf2);jp1.add(jl4);jp1.add(ch);jp2 = new JPanel(new BorderLayout()); jp2.add(jsp, BorderLayout.CENTER);jp2.add(jp1, BorderLayout.SOUTH);// 南部jb1 = new JButton("确认");jb2 = new JButton("刷新");jp3 = new JPanel();jb1.addActionListener(this);jb2.addActionListener(this);jp3.add(jb1);jp3.add(jb2);this.setLayout(new BorderLayout());this.add(jp4, BorderLayout.NORTH);this.add(jp2, BorderLayout.CENTER);this.add(jp3, BorderLayout.SOUTH);}p ublic void actionPerformed(ActionEvent e) {if (e.getSource() == jb1) {String Empno = jtf1.getText();String Ename = jtf2.getText();String Consequence = ch.getSelectedItem();// 先获取上次考核记录String sql = "select Consequence from Appraisal where Empno =?";String[] paras = { Empno };String OldInfo = "";try {sqh = new SqlHelper();ResultSet rs = sqh.queryExecute(sql, paras);rs.next();OldInfo = rs.getString(1);} catch (Exception e1) {e1.printStackTrace();} finally {sqh.close();}// 对考核表进行修改修改考核记录的sql语句String sql1 = "update Appraisal set Consequence = ? where Empno =?";String[] paras1 = { Consequence, Empno };AppraisalModel temp = new AppraisalModel();if (temp.updAppraisal(sql1, paras1)) {JOptionPane.showMessageDialog(this, "考核成功");}// 再把"上次考核记录"以及"本次操作记录" 插入到history表中String sql2 = "insert into History(Empno,Ename,OldInfo,NewInfo) values(?,?,?,?)";String[] paras2 = { Empno, Ename, OldInfo, Consequence };AppraisalModel temp1 = new AppraisalModel();temp1.updAppraisal(sql2, paras2);} else if (e.getSource() == jb2) {// 刷新员工考核表am = new AppraisalModel();String[] paras3 = { "1" };am.queryAppraisal("select E.Empno,E.Ename,A.Consequence,A.RegDate from "+ "Employinfo as E,Appraisal as A where E.Empno=A.Empno");this.jt.setModel(am);}}}(9)History/*** 历史记录界面*/package com.Manager;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class History extends Panel implements ActionListener {A ppraisalModel am;J Table jt;J ScrollPane jsp;J Label jl1;J Panel jp, jp1, jp2;J Button jb1, jb2;p ublic History() {// 北部jp = new JPanel();jl1 = new JLabel("员工考核历史记录", JLabel.CENTER);jl1.setFont(new Font("黑体", Font.BOLD, 30));jp.add(jl1);// 中部am = new AppraisalModel();String[] paras = { "1" };am.queryHistory("select * from History where 1 = ?", paras);jt = new JTable(am);jsp = new JScrollPane(jt);// 南部jp2 = new JPanel();jb1 = new JButton("清空");jb2 = new JButton("刷新");jb1.addActionListener(this);jb2.addActionListener(this);jp2.add(jb1);jp2.add(jb2);this.setLayout(new BorderLayout());this.add(jp, BorderLayout.NORTH);this.add(jsp, BorderLayout.CENTER);this.add(jp2, BorderLayout.SOUTH);}p ublic void actionPerformed(ActionEvent e) {if (e.getSource() == jb1) {// 删除历史记录并更新表am = new AppraisalModel();String[] paras = { "1" };am.updAppraisal("delete History where 1 = ?", paras);am.queryHistory("select * from History where 1 = ?", paras);this.jt.setModel(am);} else if (e.getSource() == jb2) {// 刷新表格am = new AppraisalModel();String[] paras = { "1" };am.queryHistory("select * from History where 1 = ?", paras);this.jt.setModel(am);}}}(10)E mployModel /*** 重写TableModel*/package com.Manager;import javax.swing.table.*;import java.sql.*;import java.util.*;public class EmployModel extends AbstractTableModel{V ector rowData,columnNames;//实现查询p ublic void queryEmploy(String sql,String []paras){SqlHelper sqh = null;//用columnNames 存放表的列名columnNames = new Vector();columnNames.add("工号");columnNames.add("姓名");columnNames.add("性别");columnNames.add("出生年月");columnNames.add("部门");columnNames.add("职位");columnNames.add("工资");//rowData 存放表格的各行数据rowData = new Vector();try {sqh = new SqlHelper();ResultSet rs = sqh.queryExecute(sql, paras);while(rs.next()){Vector hang = new Vector();hang.add(rs.getString(1));hang.add(rs.getString(2));hang.add(rs.getString(3));hang.add(rs.getString(4));hang.add(rs.getString(5));hang.add(rs.getString(6));hang.add(rs.getString(7));rowData.add(hang);}} catch (Exception e) {e.printStackTrace();}finally{sqh.close();}}//实现表格增修改功能p ublic boolean updEmploy(String sql,String []paras) {SqlHelper sqh = new SqlHelper();return sqh.updExecute(sql, paras);}p ublic int getRowCount() {return this.rowData.size();}p ublic String getColumnName(int column) {return (String)this.columnNames.get(column);}p ublic int getColumnCount() {return this.columnNames.size();}p ublic Object getValueAt(int row, int column) {//获得某一个单元格的数值return ((Vector)this.rowData.get(row)).get(column);}}(11)A ppraisalModel /*** 重写TableModel 为考核类的table模板*/package com.Manager;import javax.swing.table.*;import java.sql.*;import java.util.*;public class AppraisalModel extends AbstractTableModel {V ector rowData, columnNames;// 实现查询p ublic void queryAppraisal(String sql) {SqlHelper sqh = null;// 用columnNames 存放表的列名columnNames = new Vector();columnNames.add("工号");columnNames.add("姓名");columnNames.add("上次考核");columnNames.add("考核时间");// rowData 存放表格的各行数据rowData = new Vector();try {sqh = new SqlHelper();ResultSet rs = sqh.queryExecute(sql);while (rs.next()) {Vector hang = new Vector();hang.add(rs.getString(1));hang.add(rs.getString(2));hang.add(rs.getString(3));hang.add(rs.getString(4));rowData.add(hang);}} catch (Exception e) {e.printStackTrace();} finally {sqh.close();}}// 查询员工考核历史记录方法p ublic void queryHistory(String sql, String[] paras) {SqlHelper sqh = null;// 用columnNames 存放表的列名columnNames = new Vector(); columnNames.add("流水号"); columnNames.add("工号"); columnNames.add("姓名"); columnNames.add("上次考核"); columnNames.add("本次考核"); columnNames.add("更改时间");// rowData 存放表格的各行数据rowData = new Vector();try {sqh = new SqlHelper();ResultSet rs = sqh.queryExecute(sql, paras);while (rs.next()) {Vector hang = new Vector();hang.add(rs.getString(1));hang.add(rs.getString(2));hang.add(rs.getString(3));hang.add(rs.getString(4));hang.add(rs.getString(5));hang.add(rs.getString(6));rowData.add(hang);}} catch (Exception e) {e.printStackTrace();} finally {sqh.close();}}// 实现表格增修改功能p ublic boolean updAppraisal(String sql, String[] paras) {SqlHelper sqh = new SqlHelper();return sqh.updExecute(sql, paras);}p ublic int getRowCount() {return this.rowData.size();}p ublic String getColumnName(int column) {return (String) this.columnNames.get(column);}p ublic int getColumnCount() {return this.columnNames.size();}p ublic Object getValueAt(int row, int column) {// 获得某一个单元格的数值return ((Vector) this.rowData.get(row)).get(column);}}(12)S qlHelper /*** 后台通过调用SqlHelper实现对sql数据库的各个操作*/package com.Manager;import java.sql.*;public class SqlHelper {C onnection ct = null;PreparedStatement ps = null;R esultSet rs = null;S tring driver = "sun.jdbc.odbc.JdbcOdbcDriver";S tring url = "jdbc:odbc:Manager";// 查询数据库操作p ublic ResultSet queryExecute(String sql, String[] paras) { try {Class.forName(driver);ct = DriverManager.getConnection(url);ps = ct.prepareStatement(sql);for (int i = 0; i < paras.length; i++) {ps.setString(i + 1, paras[i]);}rs = ps.executeQuery();} catch (Exception e) {e.printStackTrace();}return rs;}//没注入式查询数据库操作p ublic ResultSet queryExecute(String sql) {try {Class.forName(driver);ct = DriverManager.getConnection(url);ps = ct.prepareStatement(sql);。

相关文档
最新文档