《人事管理系统(数据库课程设计).docx》由会员分享,可在线阅读,更多相关《人事管理系统(数据库课程设计).docx(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、人事管理系统(数据库课程设计) 数据库实习报告课题: 人事管理系统课程名称:数据库原理及应用学生姓名:学生学号: 所在专业:计算机科学与技术所在班级: 指导老师:成果: 目录设计总说明. 31.人事管理系统概述. 41.1 探讨背景. 41.2 意义及目的开发. 42.系统需求分析. 52.1 开发环境和软件. 52.2 系统设计与功能分析. 53.数据库设计. 63.1系统概念结构设计. 63.1.1 系统功能模块图. 63.1.2 数据流程图 . 73.2系统逻辑结构设计. 83.3物理结构设计. 103.4数据库关系图. 114.系统模块设计概述. 144.1 用户登录模块. 144.2
2、 系统管理模块. 144.3 信息管理模块. 144.4 信息查询模块. 154.5 其他模块. 155.系统运行与测试. 165.1 用户登录. 165.2 系统管理. 165.3 信息管理. 175.4 信息查询. 195.5 其他模块. 205.5.1 关于. 205.5.2 计算器. 205.5.3 退出. 205.6 优缺点自我评价. 206.课程设计总结. 217.附录(代码) . 22参考文献. 35 设计总说明 1. 设计概况名称:人事管理系统用途:学校等机构功能:实现对员工信息的管理与维护等功能2. 设计说明 学生学籍管理系统,可用于学校等机构的学生信息管理,查询,更新与维护
3、,运用便利,易用性强,图形界面清楚明白.该软件用 java 语言编写,用SQLServer2005 数据库作为后台的数据库进行信息的存储,用 SQL 语句完成添加,查询,修改,删除的操作.用 ODBC 驱动实现前台 Java 与后台 SQL 数据库的连接.Java 语言跨平台性强,可以在 windows,linux,ubuntu 等系统下运用,便利简洁,平安性好.SQLServer2005 数据库高效平安,两者结合可相互利用各自的优势. 该系统实现的大致功能: 系统功能的基本要求: 员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等. 员工各种信息的修改; 对于转出、辞职、
4、辞退、退休员工信息的删除; 根据肯定的条件,查询、统计符合条件的员工信息;至少应当包括每个员工具体信息的查询、按婚姻状况查询、按学历查询、按工作岗位查询等,至少应当包括按学历、婚姻状况、岗位、参与工作时间等统计各自的员工信息; 对查询、统计的结果打印输出.3本系统只实现了基本操作功能,对于一些更大型、属性更多、关系更困难的企业,便利性和平安性仍有不足,运用过程中造成的不便还请谅解!1. 人事管理系统概述 1.1 探讨背景 人事管理系统是企业管理系统中不行缺少的重要组成部分,它的内容对于企 业的决策者和管理者来说都至关重要,所以人事档案管理系统应当能够为用户提 供足够的信息和快捷的查询手段. 但
5、始终以来人们运用传统人工的方式管理文件 档案,这种管理方式存在着很多缺点,如:效率低、保密性差,另外时间一长,将产 生大量的文件何数据,这对于查找、更新和维护都带来了不少的困难.随着科学 技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻相识,它已进 入人类社会的各个领域并发挥着越来越重要的作用. 1.2 意义及目的开发 作为计算机应用的一部分,运用计算机对人事档案信息进行管理,具有着手 工管理所无法比拟的优点.例如:检索快速、查找便利、牢靠性高、存储量大、保 密性好、寿命长、成本低等.这些优点能够极大地提高人事档案管理的效率,也 是企业的科学化、正规化管理,与世界接轨的重要条件.因
6、此,开发这样一套管 理软件成为很有必要的事情. 本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件.所以如何自动高效地管理信息是这些年来很多人所探讨的. 一个健全的人事管理系统是一个学校或某个集体单位正常运作的必要条件,使人事管理便利快捷而又清楚,面对各种不同种类的信息,须要合理的数据库结构来保存数据信息以及有效地程序结构来支持各种数据的操作的执行.实现集体单位管理系统化,规范化和自动化,从而达到提高人事管理的工作效率和工作质量的目的.2. 系统需求分析 2.1 开发环境和软件 本学籍采纳Java语言编写前台程序,后台采纳SQL Server20
7、05软件管理数据库,调试和运行皆由Eclipse SDK v3.5.0完成. 2.2 系统设计与功能分析 系统设计的基本思想: 1. 用户登录模块 2. 系统管理模块 1)密码修改 2)重新登录 3)添加/删除用户 4)退出系统 3. 信息管理模块 1)对学校里全部员工和院系进行统一标号,将每一位员工的信息保存在员工档案记录中 2)对新聘的员工,将其信息加入到员工档案记录中;对于转出、退休、辞职、辞退的员工,将其信息从员工档案记录中删除 3)当员工信息发生变动时,修改员工档案记录中相应的属性 4. 信息查询模块 查询员工信息及院系信息 5. 其他模块 1)计算器 2)关于系统的说明 3)退出系
8、统功能的基本要求: 员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等. 员工各种信息的修改; 对于转出、辞职、辞退、退休员工信息的删除; 根据肯定的条件,查询、统计符合条件的员工信息;至少应当包括每个员工具体信息的查询、按婚姻状况查询、按学历查询、按工作岗位查询等,至少应当包括按学历、婚姻状况、岗位、参与工作时间等统计各自的员工信息; 对查询、统计的结果打印输出.3. 数据库设计 3.1系统概念结构设计 3.1.1 系统功能模块图人事管理系统 系统管理 信息管理 信息查询 用户登录其他 院系信息管理 员工信息管理 员工信息查询 院系信息查询 关于计算器 退出密码修改重新登
9、录 添加 /删除用户退出系统添加修改删除添加修改删除 3.1.2 数据流程图 3.2系统逻辑结构设计 画出系统 E-R 图 图 4 员工实体图 员工 姓名 院系编号工资 编号 岗位编号 名族 学历 婚姻状况 性别 职称编号 身份证号联系方式住址 图 5 院系实体图图 6 管理员实体图 员工 图 7 各实体之间联系图(总体 E-R 图) 院系 院系编号 院系名称 管理员 用户名 密码 编号 院系(1) 员工(n) 管理员(1) 属于 管理 管理员 ID 管理密码 员工编号 姓名 性别 婚姻状况 民族 学历 岗位编号 工资 联系电话 住址 身份证号 院系编号 院系名称 职称编号3.3物理结构设计
10、数据库物理设计阶段的任务是依据详细计算机系统的特点,给给定的数据库系统确定合理的存储结构和存取方法.所谓的合理主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度.主要体现在索引和存储结构的设置. (1)建立索引 1.对员工信息表在属性列:员工编号上建立聚集索引,在属性列:身份证号建立唯一索引; 2.对院系信息表在属性列:院系编号上建立聚集索引;(2)存储过程 1创建不带参数的存储过程: 查询在信息学院的员工的编号和姓名create procedure s2 as select 员工编号,员工姓名 fro米 员工信息 where 院系编号 =(
11、select 院系编号 fro米 院系信息 where 院系名称=信息学院) goexec s2 2创建带参数的存储过程: 依据用户输入的员工编号,输出其姓名和学历create procedure s1 (员工编号 int,员工姓名 nchar(10) output,学历 nchar(10) output) as select 学历 = 学历,员工姓名=员工姓名 fro米 员工信息 where 员工编号=员工编号 go declare 员工姓名 nchar(10), 学历 nchar(10)exec s1 2 , 员工姓名 output,学历 output select 员工姓名 = 员工姓名
12、, 学历 = 学历(3)存储结构 确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系,索引,日志,备份等的存储支配及存储结构,以及确定系统存储参数的配置. 将日志文件和数据库(表,索引等)分别放在不同的磁盘,可以改进系统的性能,提高系统的平安性,所以,系统应将日志文件存放在不同的磁盘上. 3.4数据库关系图 关系模型 (1)岗位信息表(岗位编号,岗位名称):其中岗位编号为主键; (2)用户表(管理员 ID,密码):管理员 ID 为主键; (3)员工信息表(员工编号,员工姓名,性别,院系编号,岗位编号,职称编号,婚姻状况,民族,学历,联系方式,住址,身份证号,工资):其中员工编
13、号为主键,院系编号、岗位编号、职称编号均为外键;(4)院系信息表(院系编号,院系名称):其中院系编号为主键; (5) 职称信息表(职称编号,职称名称):其中职称编号为主键.数据库表 (1)岗位信息表:(2)用户表: (3)员工信息表: (4)院系信息表:(5)职称信息表:4. 系统模块设计概述 4.1 用户登录模块 该模块用于管理员的登录,后台数据库的用户表中给出了三个管理员 ID 和相对应的密码,只有输入正确方可进入系统.4.2 系统管理模块 功能如下图所示:(详细见系统运行与测试此模块)4.3 信息管理模块 功能如下图所示: 1)对学校里全部员工和院系进行统一标号,将每一位员工的信息保存在
14、员工档案记录中 2)对新聘的员工,将其信息加入到员工档案记录中;对于转出、退休、辞职、辞退的员工,将其信息从员工档案记录中删除 3)当员工信息发生变动时,修改员工档案记录中相应的属性 (见系统运行与测试此模块) 4.4 信息查询模块 功能如下图所示:(详细见系统运行与测试此模块)4.5 其他模块 此模块主要用于显示此系统的运行环境、开发环境等信息,考虑到管理员可能要用到数值、统计等计算等,我们还供应了计算器.5. 系统运行与测试 5.1 用户登录 5.2 系统管理5.3 信息管理5.4 信息查询5.5 其他模块 5.5.1 关于 5.5.2 计算器5.5.3 退出 主界面左边一列最下一个即为退
15、出按钮. 5.6 优缺点自我评价 优点: (1)Java 语言跨平台性强,可以在 windows,linux,ubuntu 等系统下运用,便利简洁,平安性好.SQLServer2005 数据库高效平安,两者结合可相互利用各自的优势; (2)此系统界面整齐大方,功能较强大,依据界面的布局提示,用户可快速便利地操作,考虑到用户可能要进行统计和数值运算,更加体现了人性化的设计构思; (3)后台的数据库设计基本符合 3NF 的要求,表格设计了五张,每张表的属性都依据实际状况定义类型和相应的约束,基本涵盖了一个小型企业须要的信息,表和表之间的关系(外键与主键的建立)也基本符合实际要求,为了便于快速查询信
16、息,建立了聚集索引和唯一索引,也建立了有参数和无参数的存储过程; (4)此系统只能供有权限的管理员登录与操作,提高了平安性.缺点 : (1)对于员工信息表,当时忘了加诞生日期这一重要属性,接近尾声时才发觉,可是由于时间紧迫,没有修改; (2)五张表之间,岗位信息表和职称信息表与其他表的联系不是太亲密,应当干脆加入属性,也是由于时间紧迫,没有修改,照成了数据冗余; (3)建立的存储过程在界面代码中未调用,用户只是管理员类型,没有设置详细的权限,使得其他人员无法操作; (4)功能强大的同时,代码相应比较多,虽然注释了不少,可对于一般用户来说,看起来还是比较不便利,这些代码也照成了肯定程度上的资源奢
17、侈; (5)对于员工信息的查询,只能干脆显示院系、职称、岗位编号,无法显示相应的信息. 6. 课程设计总结 在我看来,数据库课程设计主要的目标是利用课程中学到的数据库学问和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求.通过这次课程设计,可以巩固我们对数据库基本原理和基础理论的理解,驾驭数据库应用系统开发的基本方法,进一步提高我们综合运用所学学问的实力. 当我们先确定下来要做的题目时,并不是急着着手写程序.而是大家一起商议这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典,做好这些工作以后,我们各个组员作了一些分工.在主要功能方面我主要负责实现添加和删除
18、用户、用户密码修改的功能的实现,相对于而言,我的工作比较轻松,其中加入了一个计算器类,主要负责计数,这是一个人性化的考虑在里面.我们的分工不同,遇到的困难自然也就不一样了,我们平常都是独立做自己的那一部分,但是会刚好将自己的进展告知组员,以便一个的系统的完备完成.当然我们也会集中起来探讨一下各自遇到的问题,大家共同想方法解决,搜寻资料、借阅大量书本、向其他同学请教等等都是我们解决问题的方式,最终在大家的努力下,不太完备却是很仔细完成的系统诞生了!辛苦在这时显得是那么苍白无力,兴奋的终点沉没了全部的辛苦. 以前也做过课程设计,但是这次的课程设计涉及到的开发工具不一样了,最主要的不一样体现在我们要
19、用到两个开发平台,我们不仅要做出前台数据库,还要与后台开发的数据库进行连接,这是一个全新的相识:我们不行能将大量的数据干脆放在代码之中.对于 SQL 2005 可以娴熟的应用,主要得益于老师要求我们平常做的一些试验,所以在后台的设计和操作没有花费太多的时间,虽然平常埋怨试验太多,这个时候还是不会遗忘感谢老师平常的严格要求.后台的开发对我来说真的是空前的挑战,首先涉及到的Java语言是在老师的要求下,自己在图书馆借书学得,肯定的半桶水,困难很大也许多,在组员的帮助下也算胜利的克服了那些困难,得到一个圆满的结局!当我遇到错误的时候,感到很受打击;值得欣慰的是,在组员的帮助和大量参考书的查阅下,最终
20、胜利了!这次课程设计让我懂得遇到困难永不放弃的重要性,我知道了团队合作的重要性,我领悟了只有坚持不懈才会取得成功.7. 附录( 代码) 关于类: 主要功能:显示人事管理系统的一些相关信息 源代码: package a;i 米 portjava.awt.*; i 米 portjava.awt.event.*; i 米 portjavax.swing.*;public class About extends JInternalFra 米 e JLabel label = new JLabel(运行环境:Windows); JLabel labe2 = new JLabel(开发环境:JAVA,SQ
21、L Server); JLabel labe3 = new JLabel(制作人员:郝中奎、马家权、童孟丹); JLabel labe4 = new JLabel(对应学号:201011621407;201011621421;201011621322);public About()setTitle(关于); Container con=getContentPane(); con.setLayout(new GridLayout(4,1); con.add(label); con.add(labe2); con.add(labe3); con.add(labe4); con.setBac 千克
22、round(Color.white);setResizable(false); setSize(380,220); setVisible(true); setClosable(true); 添加和删除用户类: 主要功能:用于添加和删除管理员的帐号信息 源代码:package a;i 米 portjava.awt.event.ActionEvent; i 米 portjava.awt.event.ActionListener;i 米 portjavax.swing.JButton; i 米 portjavax.swing.JCo 米 boBox; i 米 portjavax.swing.JLab
23、el; i 米 portjavax.swing.JOptionPane; i 米 portjavax.swing.JPasswordField; i 米 portjavax.swing.JTextField;public class AddDeleteUser extends javax.swing.JInternalFra 米 e privateJButtonbutACancel,butDCancel,butDelete,butOk; privateJCo 米 boBoxcbUserNa 米 e; privateJLabel jLabel1,jLabel2,jLabel3,jLabel4,j
24、Label5; privateJPasswordField pas1,pas2,pas3; privateJTextFieldtxtna 米 e;publicAddDeleteUser() initCo 米 ponents(); this.setVisible(true); this.setClosable(true); this.setSize(268,350); private void initCo 米 ponents() jLabel1 = new JLabel(); jLabel2 = new JLabel(); jLabel3 = new JLabel(); txtna 米 e =
25、 new JTextField(); pas1 = new JPasswordField(); pas2 = new JPasswordField(); butOk = new JButton(); butACancel = new JButton(); jLabel4 = new JLabel(); cbUserNa 米 e = new JCo 米 boBox(); jLabel5 = new JLabel(); pas3 = new JPasswordField(); butDelete = new JButton(); butDCancel = new JButton();getCont
26、entPane().setLayout(null);jLabel1.setText(新用户名:); getContentPane().add(jLabel1); jLabel1.setBounds(30, 30, 70, 20);jLabel2.setText(输入密码:); getContentPane().add(jLabel2); jLabel2.setBounds(30, 60, 70, 18);jLabel3.setText(确认密码:); getContentPane().add(jLabel3);jLabel3.setBounds(30, 90, 60, 18);getConte
27、ntPane().add(txtna 米 e); txtna 米 e.setBounds(100, 30, 130, 24);getContentPane().add(pas1); pas1.setBounds(100, 60, 130, 24);getContentPane().add(pas2); pas2.setBounds(100, 90, 130, 24);butOk.setText(添加);getContentPane().add(butOk); butOk.setBounds(80, 130, 70, 27);butACancel.setText(清空); getContentP
28、ane().add(butACancel); butACancel.setBounds(160, 130, 70, 27);jLabel4.setText(已有用户名:); getContentPane().add(jLabel4); jLabel4.setBounds(30, 180, 80, 18);getContentPane().add(cbUserNa 米 e); cbUserNa 米 e.setBounds(100, 180, 130, 24);jLabel5.setText(密码:); getContentPane().add(jLabel5); jLabel5.setBound
29、s(30, 210, 60, 18);getContentPane().add(pas3); pas3.setBounds(100, 216, 130, 24);butDelete.setText(删除); getContentPane().add(butDelete); butDelete.setBounds(79, 260, 70, 27);butDCancel.setText(清空); getContentPane().add(butDCancel); butDCancel.setBounds(160, 260, 70, 27); /将全部用用户名读出来Database.joinDB()
30、;String sql=select * fro 米 用户; tryif(Database.query(sql) while(Database.rs.next()String na 米 e=Database.rs.getString(管理员 ID);cbUserNa 米 e.addIte 米(na 米 e); catch(Exception e)/为添加和取消按钮加事务- butOk.addActionListener(new ActionListener()public void actionPerfor 米 ed(ActionEvent e) if(txtna 米 e.getText().
31、equals()new JOptionPane().show 米 essageDialog(null,用户名不能为空!); else if(pas1.getText().equals()new JOptionPane().show 米 essageDialog(null,密码不能为空!); else if(pas1.getText().equals(pas2.getText()String sql=insert 用 户 values(+ txtna 米 e.getText() +,+ pas1.getText() +);try if(Database.executeSQL(sql) new J
32、OptionPane().show 米 essageDialog(null,添加胜利!);cbUserNa 米 e.addIte 米(txtna 米 e.getText(); catch(Exception ea) );butACancel.addActionListener(new ActionListener()public void actionPerfor 米 ed(ActionEvent e) txtna 米 e.setText(); pas1.setText(); pas2.setText(); );/为删除和取消按钮加事务-butDelete.addActionListener(
33、new ActionListener()public void actionPerfor 米 ed(ActionEvent e) String na 米 e= + cbUserNa 米 e.getSelectedIte 米(); String sql=select * fro 米 用户 where 管理员 ID=+ na 米 e +; try if(Database.query(sql)Database.rs.next(); String pas=pas3.getText(); String password=Database.rs.getString(密码); Syste 米.out.pri
34、ntln(password); if(pas.equals(password) String sdelete=delete fro 米 用户 where 管理员 ID=+ na 米 e +; if(Database.executeSQL(sdelete)new JOptionPane().show 米 essageDialog(null,删除胜利!); pas3.setText(); cbUserNa 米 e.re 米 oveAllIte 米 s(); String sql1=select * fro 米 用户;if(Database.query(sql1) while(Database.rs.next()String na 米 e1=Database.rs.getString(管理员 ID);cbUserNa 米 e.addIte 米(na 米 e1); elsenew JOptionPane().show 米 essageDialog(null,密码不正确!); catch(Exception el)