人事管理系统(数据库课程设计).docx

上传人:小飞机 文档编号:1896661 上传时间:2022-12-24 格式:DOCX 页数:36 大小:591.23KB
返回 下载 相关 举报
人事管理系统(数据库课程设计).docx_第1页
第1页 / 共36页
人事管理系统(数据库课程设计).docx_第2页
第2页 / 共36页
人事管理系统(数据库课程设计).docx_第3页
第3页 / 共36页
人事管理系统(数据库课程设计).docx_第4页
第4页 / 共36页
人事管理系统(数据库课程设计).docx_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《人事管理系统(数据库课程设计).docx》由会员分享,可在线阅读,更多相关《人事管理系统(数据库课程设计).docx(36页珍藏版)》请在三一办公上搜索。

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系统管理模块144.3信息管理模块144.4信息查询模块154.5其他模块155

2、.系统运行与测试165.1用户登录165.2系统管理165.3信息管理175.4信息查询195.5其他模块205.5.1关于205.5.2计算器205.5.3退出205.6优缺点自我评价216.课程设计总结227.附录(代码)23参考文献36设计总说明1. 设计概况 名称:人事管理系统 用途:学校等机构 功能:实现对员工信息的管理与维护等功能2. 设计说明学生学籍管理系统,可用于学校等机构的学生信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用java语言编写,用SQLServer2005数据库作为后台的数据库进行信息的存储,用SQL语句完成添加,查询,修改,删除的操作

3、。用ODBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,安全性好。SQLServer2005数据库高效安全,两者结合可相互利用各自的优势。该系统实现的大致功能:系统功能的基本要求: 员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等。 员工各种信息的修改; 对于转出、辞职、辞退、退休员工信息的删除; 按照一定的条件,查询、统计符合条件的员工信息;至少应该包括每个员工详细信息的查询、按婚姻状况查询、按学历查询、按工作岗位查询等,至少应该包括按学历、婚姻状况、岗位、参加工作时间等统计

4、各自的员工信息; 对查询、统计的结果打印输出。3本系统只实现了基本操作功能,对于一些更大型、属性更多、关系更复杂的企业,便利性和安全性仍有不足,使用过程中造成的不便还请谅解!1.人事管理系统概述1.1研究背景人事管理系统是企业管理系统中不可缺少的重要组成部分,它的内容对于企 业的决策者和管理者来说都至关重要,所以人事档案管理系统应该能够为用户提 供充足的信息和快捷的查询手段。 但一直以来人们使用传统人工的方式管理文件 档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产 生大量的文件何数据,这对于查找、更新和维护都带来了不少的困难。随着科学 技术的不断提高,计算机科学日渐

5、成熟,其强大的功能已为人们深刻认识,它已进 入人类社会的各个领域并发挥着越来越重要的作用。1.2意义及目的开发作为计算机应用的一部分,使用计算机对人事档案信息进行管理,具有着手 工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保 密性好、寿命长、成本低等。这些优点能够极大地提高人事档案管理的效率,也 是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管 理软件成为很有必要的事情。本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。所以如何自动高效地管理信息是这些年来许多人所研究的。一个健全的人事管理系统是一

6、个学校或某个集体单位正常运作的必要条件,使人事管理方便快捷而又清晰,面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效地程序结构来支持各种数据的操作的执行。实现集体单位管理系统化,规范化和自动化,从而达到提高人事管理的工作效率和工作质量的目的。2.系统需求分析2.1开发环境和软件本学籍采用Java语言编写前台程序,后台采用SQL Server2005软件管理数据库,调试和运行皆由Eclipse SDK v3.5.0完成。2.2系统设计与功能分析系统设计的基本思想:1. 用户登录模块2. 系统管理模块1)密码修改2)重新登录3)添加/删除用户4)退出系统3. 信息管理模块1)对学

7、校里所有员工和院系进行统一标号,将每一位员工的信息保存在员工档案记录中2)对新聘的员工,将其信息加入到员工档案记录中;对于转出、退休、辞职、辞退的员工,将其信息从员工档案记录中删除3)当员工信息发生变动时,修改员工档案记录中相应的属性4. 信息查询模块查询员工信息及院系信息5. 其他模块1)计算器2)关于系统的说明3)退出系统功能的基本要求: 员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等。 员工各种信息的修改; 对于转出、辞职、辞退、退休员工信息的删除; 按照一定的条件,查询、统计符合条件的员工信息;至少应该包括每个员工详细信息的查询、按婚姻状况查询、按学历查询、按工

8、作岗位查询等,至少应该包括按学历、婚姻状况、岗位、参加工作时间等统计各自的员工信息; 对查询、统计的结果打印输出。3.数据库设计3.1 系统概念结构设计3.1.1系统功能模块图人事管理系统系统管理信息管理信息查询用户登录其他院系信息管理员工信息管理员工信息查询院系信息查询关于计算器退出密码修改重新登录添加/删除用户退出系统添加修改删除添加修改删除3.1.2数据流程图3.2 系统逻辑结构设计画出系统E-R图员工姓名院系编号工资编号岗位编号名族学历婚姻状况性别职称编号身份证号联系方式住址图 4 员工实体图院系院系编号号院系名称图 5 院系实体图管理员用户名密码编号图 6 管理员实体图员工院系(1)

9、员工(n)管理员(1)属于管理管理员ID管理密码员工编号姓名性别婚姻状况民族学历岗位编号工资联系电话住址身份证号院系编号院系名称职称编号图 7 各实体之间联系图(总体E-R图)3.3 物理结构设计数据库物理设计阶段的任务是根据具体计算机系统的特点,给给定的数据库系统确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在索引和存储结构的设置。(1)建立索引1.对员工信息表在属性列:员工编号上建立聚集索引,在属性列:身份证号建立唯一索引;2.对院系信息表在属性列:院系编号上建立聚集索引; (2)

10、存储过程1创建不带参数的存储过程: 查询在信息学院的员工的编号和姓名create procedure s2asselect 员工编号,员工姓名from 员工信息where 院系编号 =(select 院系编号from 院系信息where 院系名称=信息学院)goexec s22创建带参数的存储过程: 根据用户输入的员工编号,输出其姓名和学历create procedure s1(员工编号 int,员工姓名 nchar(10) output,学历 nchar(10) output)asselect 学历 = 学历,员工姓名=员工姓名from 员工信息where 员工编号=员工编号godeclar

11、e 员工姓名 nchar(10),学历 nchar(10)exec s1 2 , 员工姓名 output,学历 outputselect 员工姓名 = 员工姓名, 学历 = 学历(3)存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系,索引,日志,备份等的存储安排及存储结构,以及确定系统存储参数的配置。将日志文件和数据库(表,索引等)分别放在不同的磁盘,可以改进系统的性能,提高系统的安全性,所以,系统应将日志文件存放在不同的磁盘上。3.4 数据库关系图关系模型(1)岗位信息表(岗位编号,岗位名称):其中岗位编号为主键;(2)用户表(管理员ID,密码):管理员ID为主键

12、;(3)员工信息表(员工编号,员工姓名,性别,院系编号,岗位编号,职称编号,婚姻状况,民族,学历,联系方式,住址,身份证号,工资):其中员工编号为主键,院系编号、岗位编号、职称编号均为外键; (4)院系信息表(院系编号,院系名称):其中院系编号为主键;(5) 职称信息表(职称编号,职称名称):其中职称编号为主键。数据库表(1)岗位信息表:(2)用户表:(3)员工信息表:(4)院系信息表:(5)职称信息表:4.系统模块设计概述4.1用户登录模块该模块用于管理员的登录,后台数据库的用户表中给出了三个管理员ID和相对应的密码,只有输入正确方可进入系统。4.2系统管理模块功能如下图所示:(具体见系统运

13、行与测试此模块)4.3信息管理模块功能如下图所示:1)对学校里所有员工和院系进行统一标号,将每一位员工的信息保存在员工档案记录中2)对新聘的员工,将其信息加入到员工档案记录中;对于转出、退休、辞职、辞退的员工,将其信息从员工档案记录中删除3)当员工信息发生变动时,修改员工档案记录中相应的属性(见系统运行与测试此模块)4.4信息查询模块功能如下图所示:(具体见系统运行与测试此模块)4.5其他模块此模块主要用于显示此系统的运行环境、开发环境等信息,考虑到管理员可能要用到数值、统计等计算等,我们还提供了计算器。5.系统运行与测试5.1用户登录5.2系统管理5.3信息管理5.4信息查询5.5其他模块5

14、.5.1关于5.5.2计算器5.5.3退出主界面左边一列最下一个即为退出按钮。5.6优缺点自我评价优点:(1) Java语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,安全性好。SQLServer2005数据库高效安全,两者结合可相互利用各自的优势;(2) 此系统界面整洁大方,功能较强大,根据界面的布局提示,用户可快速方便地操作,考虑到用户可能要进行统计和数值运算,更加体现了人性化的设计构思;(3) 后台的数据库设计基本符合3NF的要求,表格设计了五张,每张表的属性都根据实际情况定义类型和相应的约束,基本涵盖了一个小型企业需要的信息,表和表之间的关系(外键

15、与主键的建立)也基本符合实际要求,为了便于快速查询信息,建立了聚集索引和唯一索引,也建立了有参数和无参数的存储过程;(4) 此系统只能供有权限的管理员登录与操作,提高了安全性。缺点:(1) 对于员工信息表,当时忘了加“出生日期”这一重要属性,接近尾声时才发现,可是由于时间紧迫,没有修改;(2) 五张表之间,岗位信息表和职称信息表与其他表的联系不是太密切,应当直接加入属性,也是由于时间紧迫,没有修改,照成了数据冗余;(3) 建立的存储过程在界面代码中未调用,用户只是管理员类型,没有设置具体的权限,使得其他人员无法操作;(4) 功能强大的同时,代码相应比较多,虽然注释了不少,可对于普通用户来说,看

16、起来还是比较不方便,这些代码也照成了一定程度上的资源浪费;(5) 对于员工信息的查询,只能直接显示院系、职称、岗位编号,无法显示相应的信息。6.课程设计总结在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次课程设计,可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统开发的基本方法,进一步提高我们综合运用所学知识的能力。当我们先确定下来要做的题目时,并不是急着着手写程序。而是大家一起商量这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典,做好这些工作以后,我们各个组员作了一

17、些分工。在主要功能方面我主要负责实现添加和删除用户、用户密码修改的功能的实现,相对于而言,我的工作比较轻松,其中加入了一个计算器类,主要负责计数,这是一个人性化的考虑在里面。我们的分工不同,遇到的困难自然也就不一样了,我们平时都是独立做自己的那一部分,但是会及时将自己的进展告知组员,以便一个的系统的完美完成。当然我们也会集中起来探讨一下各自遇到的问题,大家共同想办法解决,搜索资料、借阅大量书本、向其他同学请教等等都是我们解决问题的方式,最终在大家的努力下,不太完美却是很认真完成的系统诞生了!辛苦在这时显得是那么苍白无力,兴奋的尽头淹没了所有的辛苦。以前也做过课程设计,但是这次的课程设计涉及到的

18、开发工具不一样了,最主要的不一样体现在我们要用到两个开发平台,我们不仅要做出前台数据库,还要与后台开发的数据库进行连接,这是一个全新的认识:我们不可能将大量的数据直接放在代码之中。对于SQL 2005可以熟练的应用,主要得益于老师要求我们平时做的一些实验,所以在后台的设计和操作没有花费太多的时间,虽然平时抱怨实验太多,这个时候还是不会忘记感谢老师平时的严格要求。后台的开发对我来说真的是空前的挑战,首先涉及到的Java语言是在老师的要求下,自己在图书馆借书学得,绝对的半桶水,困难很大也很多,在组员的帮助下也算成功的克服了那些困难,得到一个圆满的结局!当我遇到错误的时候,感到很受打击;值得欣慰的是

19、,在组员的帮助和大量参考书的查阅下,最终成功了!这次课程设计让我懂得遇到困难永不放弃的重要性,我知道了团队合作的重要性,我领悟了只有坚持不懈才会取得胜利.7.附录(代码)关于类:主要功能:显示人事管理系统的一些相关信息源代码:package a;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;public class About extends JInternalFrame JLabel label = new JLabel(运行环境:Windows);JLabel labe2 = new JLabel(开发环境:JAVA

20、,SQL 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.setBackground(C

21、olor.white);setResizable(false);setSize(380,220);setVisible(true);setClosable(true);添加和删除用户类:主要功能:用于添加和删除管理员的帐号信息源代码:package a;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JComboBox;importjavax.swing.JLabel;importjavax.swing.JOption

22、Pane;importjavax.swing.JPasswordField;importjavax.swing.JTextField;public class AddDeleteUser extends javax.swing.JInternalFrame privateJButtonbutACancel,butDCancel,butDelete,butOk;privateJComboBoxcbUserName;privateJLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5;privateJPasswordField pas1,pas2,pas3;p

23、rivateJTextFieldtxtname;publicAddDeleteUser() initComponents();this.setVisible(true);this.setClosable(true);this.setSize(268,350); private void initComponents() jLabel1 = new JLabel(); jLabel2 = new JLabel(); jLabel3 = new JLabel();txtname = new JTextField(); pas1 = new JPasswordField(); pas2 = new

24、JPasswordField();butOk = new JButton();butACancel = new JButton(); jLabel4 = new JLabel();cbUserName = new JComboBox(); jLabel5 = new JLabel(); pas3 = new JPasswordField();butDelete = new JButton();butDCancel = new JButton();getContentPane().setLayout(null); jLabel1.setText(新用户名:);getContentPane().a

25、dd(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);getContentPane().add(txtname);txtname.setBounds(100, 30, 130, 24);getContentPa

26、ne().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(清空);getContentPane().add(butACancel);butACancel.setBounds(160, 130, 70, 27); jLabel4.setText(已

27、有用户名:);getContentPane().add(jLabel4);jLabel4.setBounds(30, 180, 80, 18);getContentPane().add(cbUserName);cbUserName.setBounds(100, 180, 130, 24); jLabel5.setText(密码:);getContentPane().add(jLabel5);jLabel5.setBounds(30, 210, 60, 18);getContentPane().add(pas3);pas3.setBounds(100, 216, 130, 24);butDele

28、te.setText(删除);getContentPane().add(butDelete);butDelete.setBounds(79, 260, 70, 27);butDCancel.setText(清空);getContentPane().add(butDCancel);butDCancel.setBounds(160, 260, 70, 27);/将所有用用户名读出来Database.joinDB(); String sql=select * from 用户;tryif(Database.query(sql)while(Database.rs.next()String name=Da

29、tabase.rs.getString(管理员ID);cbUserName.addItem(name);catch(Exception e)/为添加和取消按钮加事件-butOk.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)if(txtname.getText().equals()new JOptionPane().showMessageDialog(null,用户名不能为空!);else if(pas1.getText().equals()new JOptionPane().sh

30、owMessageDialog(null,密码不能为空!);else if(pas1.getText().equals(pas2.getText()String sql=insert 用户 values(+ txtname.getText() +,+ pas1.getText() +);tryif(Database.executeSQL(sql)new JOptionPane().showMessageDialog(null,添加成功!);cbUserName.addItem(txtname.getText(); catch(Exception ea);butACancel.addAction

31、Listener(new ActionListener()public void actionPerformed(ActionEvent e)txtname.setText();pas1.setText();pas2.setText(););/为删除和取消按钮加事件-butDelete.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String name= + cbUserName.getSelectedItem();String sql=select * from 用户 wher

32、e 管理员ID=+ name +;tryif(Database.query(sql)Database.rs.next();String pas=pas3.getText();String password=Database.rs.getString(密码);System.out.println(password);if(pas.equals(password)String sdelete=delete from 用户 where 管理员ID=+ name +;if(Database.executeSQL(sdelete)new JOptionPane().showMessageDialog(n

33、ull,删除成功!);pas3.setText();cbUserName.removeAllItems(); String sql1=select * from 用户;if(Database.query(sql1)while(Database.rs.next()String name1=Database.rs.getString(管理员ID);cbUserName.addItem(name1);elsenew JOptionPane().showMessageDialog(null,密码不正确!); catch(Exception el)System.out.println(el););but

34、DCancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)pas3.setText();); 用户修改密码类:主要功能:用于修改相应管理员帐号的密码源代码:package a;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.sql.*;public class AmendPassword extends JInternalFrameJLabel lbe1=new JLabel(修改密码

35、);JPanel p=new JPanel();publicAmendPassword() setTitle(修改密码);p.add(lbe1);AmendPanel panel=new AmendPanel(); Container contentPane=getContentPane();contentPane.add(p,North);contentPane.add(panel,Center);setBounds(100, 100, 280, 260);this.setClosable(true);setVisible(true); classAmendPanel extends JPa

36、nelJButton b1,b2;JLabel lbe2,lbe3,lbe4,lbe5;JPasswordField pas1,pas2,pas3;JComboBoxtf;publicAmendPanel() lbe2=new JLabel(用户名:); lbe3=new JLabel(输入旧密码:); lbe4=new JLabel(输入新密码:); lbe5=new JLabel(确定新密码:);tf=new JComboBox(); pas1=new JPasswordField(); pas2=new JPasswordField(); pas3=new JPasswordField(

37、); b1=new JButton(确定); b2=new JButton(清空);add(lbe2);lbe2.setBounds(16,10,90,25);this.add(tf);tf.setBounds(100,10,120,25);add(lbe3);lbe3.setBounds(16,45,90,25);add(pas1);pas1.setBounds(100,45,120,25);add(lbe4);lbe4.setBounds(16,80,80,25);add(pas2);pas2.setBounds(100,80,120,25);add(lbe5);lbe5.setBound

38、s(16,115,80,25);add(pas3);pas3.setBounds(100,115,120,25);add(b1);b1.setBounds(100,160,60,30);add(b2);b2.setBounds(160,160,60,30);setLayout(null);/将所有用用户名读出来Database.joinDB(); String sql=select * from 用户;tryif(Database.query(sql)while(Database.rs.next()String name=Database.rs.getString(管理员ID);tf.addI

39、tem(name);catch(Exception e)/为确定取消按钮加事件b1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String name= + tf.getSelectedItem();System.out.println(name);String sql=select * from 用户 where 管理员ID=+ name +;System.out.println(sql);tryif(Database.query(sql)Database.rs.next();

40、String ps1=pas1.getText();String password=Database.rs.getString(密码);if(ps1.equals(password)if(pas2.getText().equals(pas3.getText()String supdate=update 用户 set 密码=+ pas3.getText()+ where 管理员ID=+ name +;Database.executeSQL(supdate);new JOptionPane().showMessageDialog(null,密码更改成功!);elsenew JOptionPane().showMessageDialog(null,两次密码不同!);elsenew JOptionPane().showMessageDialog(null,旧密码不正确!); catch(Exception el)System.out.println(el););b2.addActionListener(new ActionListener()public void actionPerformed(Action

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号