《Java人事管理系统数据库系统应用课程设计报告.doc》由会员分享,可在线阅读,更多相关《Java人事管理系统数据库系统应用课程设计报告.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 . 理工大学城南学院数据库系统应用课程设计报告JAVA人事管理信息系统41 / 41课程设计成绩评定系 别 水利计通系 专 业 计算机科学与技术班 级 计算机1001 学 号 24指导教师对学生在课程设计中的评价评分项目优良中与格不与格课程设计中的创造性成果学生掌握课程容的程度课程设计完成情况课程设计动手能力文字表达学习态度规要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日课程设计任务书城南学院水利计通系 计算机科学与技术专业课程名称数据库系统应用课程设计时间20122013学年第1学期12周学生指导老师题 目JAVA人事管理系统公司人员管理实现主要容:本
2、课程设计主要完成一个公司人事管理信息系统,本系统分为三个大模块,两人完成,三个模块分别为:1. 应用层界面模块。其中包括登陆界面与主要管理界面的实现。2. 系统数据库模块。这里主要实现对数据库的创建。3. 程序消息响应模块。主要实现程序的运行,连接数据库等功能。要求:(1)要求能独立地运用程序语言和数据库方面知识,编制一个功能简单的小型信息模拟系统。(2)学生按要求编写课程设计报告书,能正确阐述设计和实验结果。(3)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(4)学生应抱着严谨认真的态度积极投入到课程设计过程中。 应当提交的文件:(1)课程设计报告。(2)课程设计附件(
3、源程序、各类图纸、实验数据、运行截图等)。JAVA人事管理信息系统摘 要 在当前的信息化管理浪潮下,我国的人事管理模式也由传统的手工业务办理模式逐渐转向信息化,现代化的高效管理模式。结合人事办公管理的实际情况和实践操作,研发的新一代人事管理系统,使一直沿袭传统办公模式而产生的管理效率较低,经营管理水平相对滞后等现象得改善已经成为各个单位的必然需求;为了提高人事办公行业整体的科技含量与管理效率,加快人事行业的信息化建设;为了提高公司的管理水平,他们急需一套安全可靠的人事管理系统,所以我与同学阳坚一起开发了这套人事管理系统。关键词 JAVA;人事管理系统;oracle1 开发环境与项目组介绍1.1
4、硬件环境1、存:256MB以上2、CPU:酷睿 i5 M4601.2 软件环境1、操作系统:Microsoft Windows XP2、数据库系统:Oracle + PL/SQL3、开发工具包:JDK Version 1.4.24、开发软件: Eclipse1.3 项目组成员1、映喆:主要负责程序的界面与消息响应。2、阳 坚:负责数据库的创建与优化。2 系统设计2.1 应用程序界面设计由于公司人事管理并非普通员工管理、系统必须具有较高的安全性,只有具有管理员身份的用户才能允许对员工信息的编辑,修改等权限,所以我们必须为管理者设定一个登陆框,通过登录才能进入主界面实现对员工信息的操作,这样即使管
5、理者不在电脑旁别人也无法私自修改员工信息,大大的增加了系统的安全可靠性。进入主界面以后,管理者能实现对员工的档案进行管理,可以查看、添加、修改、删除员工信息等。同时主界面也必须实现管理者的用户管理,用于修改当前密码等。同时系统要具有较高的适应性,能够适应应用要求的变化与修改,具有灵活可扩充性。程序在性能上必须可以方便快捷有效地完成编辑、查询等地各项操作,录入数据合法性校验程序高,查询速度快。保证信息的正确与时更新,并降低信息访问的成本。操作方便可大大提高工作效率。程序主要流程图如图1所示:图1 程序流程图2.2 数据库的选择Oracle Database,又名Oracle RDBMS,或简称O
6、racle。是甲骨文公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器端(Client/Server)或B/S体系结构的数据库之一。作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品。所以在此课程设计中,我和阳坚同学采用Oracle作为我们的开发数据库来开发这个人事管理系统。2.3 系统数据实体结构描述管理员信息表(Manager):用以登陆对员工信息的管理。具体设计结构如表1所示:表1 管理者信息表功能名称:管理者信息表(Manager)数据元素数据采集方式说明 Name 人工采集 主键,必须输入 SSID 人工采集 非空,必
7、须输入员工信息表(worker):用以记录员工基本信息,具体设计如表2所示:表2 员工信息表功能名称:员工信息表(worker)数据元素数据采集方式说明nId人工采集主键,必须输入Name人工采集非空,必须输入Job人工采集允许空Sal人工采集允许空由于某些特定的公司拥有一些特殊职业,所以我们在工作与工资这两栏设置允许空,方便管理者管理。3 系统详细设计3.1系统工作原理在登陆框处使用代码连接Manager数据库,采用JDBC方法连接数据库,从Edit框获取用户输入的用户名与密码与Manager表中数据对比,如果为数据库中的数据则允许登陆进行员工管理,若非数据库中的数据则报错。在主界面处分别连
8、接worker与Manager两个数据库进行不同操作,如修改密码时则连接Manager,对员工进行操作则连接worker进行数据库操作,从而达到人事管理系统的需求。由于Oracle为C/S或者B/S模式的数据库,B/S模式即流浪器/服务器模式,是一种从传统的的二层C/S(客户端/服务端)模式发展起来的新的网络结构模式,其本质是三层结构的C/S模式,安全性与方便性高。所以我们整个员工管理系统也采用C/S或者B/S模式的系统构架,我们的数据库放在公司服务器上,管理者客户端通过代码远程连接至数据库服务器,从而获取数据并修改数据。而我们的数据库处在服务器的防火墙之后,更增加了数据的可靠性与安全性。应用
9、界面的工作原理如图2所示: 图2 应用界面工作原理3.2数据库详细设计要操作数据库的方法有很多,这里我们采用方便的PL/SQL来操作Oracle数据库,在系统服务中打开Oracle数据库的Server之后,我们使用默认的 scott账号登陆并创建表单。Manager表单的创建:Create Table Manager(Name varchar(20),SSID varchar(20) Not NULL,PRIMARY KEY (Name)Worcker表单的创建:Create Table worker(NID VARCHAR2(4) ,NAME VARCHAR2(20) Not NULL,JO
10、B VARCHAR2(20) ,SAL NUMBER(8,2),PRIMARY KEY (NID)在表单创建后用Insert into语句向两个表单中分别插入数据,因为数据量比较大,我这就不一一赘述我的数据了,插入数据如图3所示: 图3 两个表中所插入的数据3.3程序界面详细设计界面设计我们采用了网格布局方法,使得界面简洁美观易于操作。界面主要分为登陆框界面与主程序界面,主界面使用了一个Table控件分割员工管理与用户管理来方便管理员管理,同时也为程序节省了占用的资源。3.4程序消息响应详细设计程序的消息响应主要为登陆框的登录响应与主程序的添加删除查询等Button的KeyDown响应,只要为
11、Button添加成员函数addActionLisener并在函数书写响应代码即可,如登陆框的消息响应如下:utton okBtn = new utton(登陆);/ 为登陆按钮添加事件okBtn.addActionListener(new ActionListener()publicvoid actionPerformed(ActionEvent e)/ 获取用户在文本框中输入的值,去掉前后的空格,匿名部类访问外部成员,外部成员必须使用final修饰String name = txt_name.getText().trim();String pwd = txt_pwd.getText().tr
12、im();LoginSql u = new LoginSql();int flag = 1;tryflag = u.findByName(name,pwd);/System.out.println(flag);catch (Exception e1)/ TODO Auto-generated catch block/e1.printStackTrace();/判断用户是否合法/System.out.println(flag);if(flag = 1) / System.out.println(登陆成功。);if(JOptionPane.showConfirmDialog(loginFrame,
13、 登陆成功!,提示,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)=JOptionPane.YES_OPTION)loginFrame.setVisible(false);new MainFrame(); else JOptionPane.showConfirmDialog(loginFrame, 用户名或者密码错误!,错误通知, 0); );3.5连接数据库详细设计使用Java连接Oracle数据库需要驱动库,因此先Import从网上下载的Java Oracle驱动库classes.jar文件,如图4所示:图4 工程文件目录使用
14、Java连接Oracle数据库的步骤:1、 加载数据库驱动:Class.forName(oracle.jdbc.driver.OracleDriver);2、连接数据库:Connection connection = DriverManager.getConnection(jdbc:oracle:thin:127.0.0.1:1521:WAIT,scott,tiger);采用本机回路IP默认本机为主机端口为配置Oracle时所填写的1521,主机名:wait,登录数据库账户与密码:scott,tiger;3、 查询数据库:ResultSet rSet = statement.executeQu
15、ery(select * from Manager);在完成以上三步以后我们就可以通过ResultSet的对象 rSet.next来读取数据库中的数据了。4 测试和运行结果截图4.1登录界面图5 登录界面运行截图4.2主程序界面图6 主程序界面图7 添加新员工界面图8 删除提示图9 修改与查询后的界面图10 管理人员修改密码界面5 结束语在这次课程设计中,小组每个成员分工明确,互相帮助,为设计的开发成功营造了良好的氛围。在日后的工作与学习中,我们应继续发扬这样的工作精神。通过这次的课程设计,我们学习到了整个开发软件的标准流程与数据库在实际操作中的应用,以与在开发过程中团队合作分工的重要性。更能
16、深刻地理解开发软件的相关知识,锻炼了开发能力,知识得到了很大的拓展。在进行分析、设计、编码、调试、维护这几部分的工作的时候,最核心的就是文档的编写。文档的编写有助于我们整理思路不做无头苍蝇,同样也便于团队交流与日后维护的参考。通过这次课程设计,我学习到了不少的知识,如Java、Oracle的使用,将对我在今后的软件开发过程中起到极大的作用。其实开发软件也可以用到我们现实生活中来,这次课程设计改变了我以往的思维方式,以前我总认为做软件就是一个人对着电脑无限地敲打代码,现在明白了团队的分工、合作的重要性,团队的力量要远远超过个人的力量!附录1 程序源代码1、LoginFrame.javapacka
17、ge .JiangYzh;import java.awt.BorderLayout;import java.awt.Color;import java.awt ponent;import java.awt.Container;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;importjava.awt.event.WindowEve
18、nt;import java.awt.event.WindowListener;importjava.sql.SQLClientInfoException;import javax.swing.BorderFactory;import javax.swing.utton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JT
19、extField;importjavax.swing.UIManager;importjavax.swing.UnsupportedLookAndFeelException;/import .sun.org.apache.xml.internal.utils.SuballocatedIntVector;/* * 登陆界面 */publicclass LoginFrameprivate JFrame loginFrame = new JFrame();private JPanel loginPanel = null;public LoginFrame()initFrame();publicvoi
20、d initFrame()/ 设置窗口大小loginFrame.setBounds(400, 300, 400, 250);/ 左上角的坐标,宽/高loginFrame.setBackground(Color.blue);/ 设置背景颜色loginFrame.setTitle(欢迎使用城南学院人事管理系统);/ 设置标题loginFrame.setVisible(true);/ 设置可见loginFrame.setDefaultCloseOperation(0); /设置选择关闭时不执行任何操作loginFrame.addWindowListener(new WindowListener()p
21、ublicvoid windowClosing(WindowEvent e)/ TODO Auto-generated method stubif(JOptionPane.showConfirmDialog(loginFrame, 确定退出?,提示,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)=JOptionPane.YES_OPTION)System.exit(0);Overridepublicvoid windowClosed(WindowEvent e)/ TODO Auto-generated method stubOv
22、erridepublicvoid windowOpened(WindowEvent e)/ TODO Auto-generated method stubOverridepublicvoid windowIconified(WindowEvent e)/ TODO Auto-generated method stubOverridepublicvoid windowDeiconified(WindowEvent e)/ TODO Auto-generated method stubOverridepublicvoid windowActivated(WindowEvent e)/ TODO A
23、uto-generated method stubOverridepublicvoid windowDeactivated(WindowEvent e)/ TODO Auto-generated method stub);loginFrame.setLayout(new BorderLayout();/ 为整个窗口设置边框布局,分为东西南北中Container mainFrame = loginFrame.getContentPane();mainFrame.setBackground(Color.blue);/ 登陆面板loginPanel = new JPanel();loginPanel
24、.setBounds(100, 300, 250, 200);loginPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK);GridBagConstraints gbc = new GridBagConstraints();/ 以网格作为基础的布局形式GridBagLayout gbl = new GridBagLayout();loginPanel.setLayout(gbl);/ 设置登陆面板的布局为网格gbc.fill = GridBagConstraints.NONE; / 定义组件的放置形式,如果面板改变不重新调整组
25、件的大小gbc.weighty = 0.001;JLabel jL_Title = new JLabel();jL_Title.setText( 用户登录);jL_Title.setFont(new Font(用户登录, Font.BOLD, 30);/ 设置字体为粗体,大小为30磅/ 设置字体位置add(jL_Title, gbc, 0, 0, GridBagConstraints.REMAINDER, 1);/ 第一该组件为最后一个组件/ 用户名JLabel jL_user = new JLabel();jL_user.setText(用户名);/ jL_Title.setFont(new
26、 Font(用户名,Font.BOLD,25);add(jL_user, gbc, 0, 3, 1, 1);/ 用户名文本框final JTextField txt_name = new JTextField(10);/ 文本框,长度为10add(txt_name, gbc, 1, 3, 1, 1);/ 密码JLabel jL_pwd = new JLabel();jL_pwd.setText(密码);add(jL_pwd, gbc, 0, 4, 1, 1);/ 密码框final JPasswordField txt_pwd = new JPasswordField(10);/ 密码框,长度1
27、0add(txt_pwd, gbc, 1, 4, 1, 1);/ 登陆按钮utton okBtn = new utton(登陆);/ 为登陆按钮添加事件okBtn.addActionListener(new ActionListener()publicvoid actionPerformed(ActionEvent e)/ 获取用户在文本框中输入的值,去掉前后的空格,匿名部类访问外部成员,外部成员必须使用final修饰String name = txt_name.getText().trim();String pwd = txt_pwd.getText().trim();LoginSql u
28、= new LoginSql();int flag = 1;tryflag = u.findByName(name,pwd);/System.out.println(flag);catch (Exception e1)/ TODO Auto-generated catch block/e1.printStackTrace();/判断用户是否合法/System.out.println(flag);if(flag = 1) / System.out.println(登陆成功。);if(JOptionPane.showConfirmDialog(loginFrame, 登陆成功!,提示,JOptio
29、nPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)=JOptionPane.YES_OPTION)loginFrame.setVisible(false);new MainFrame(); else JOptionPane.showConfirmDialog(loginFrame, 用户名或者密码错误!,错误通知, 0); );add(okBtn, gbc, 0, 6, 1, 2);/ 取消按钮utton cancleBtn = new utton(确定);cancleBtn.addActionListener(new ActionListene
30、r()Overridepublicvoid actionPerformed(ActionEvent e)/ TODO Auto-generated method stubif(JOptionPane.showConfirmDialog(loginFrame, 确定退出?,提示,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)=JOptionPane.YES_OPTION)System.exit(0););add(cancleBtn, gbc, 1, 6, 1, 2);mainFrame.add(loginPanel, BorderL
31、ayout.CENTER);/ 将面板加入到中部loginFrame.setResizable(false);/ 不允许调整窗口的大小/* 为组件定位 */publicvoid add(Component c, GridBagConstraints gbc, int x, int y, int w,int h)gbc.gridx = x;/ 定义第几行,一行中的开始单元格 gridx=0gbc.gridy = y;/ 一列中开始的单元格 gridy=0gbc.gridwidth = w;/ 一行中单元格的格数gbc.gridheight = h;/ 一列中单元格的格数loginPanel.ad
32、d(c, gbc);/ 加入布局publicstaticvoid main(String args)new LoginFrame();2、LoginSql.javapackage .JiangYzh;import java.sql.*;publicclass LoginSqlprivate String myName;private String mySsid;publicint findByName(String str1,String str2) throws Exception Class.forName(oracle.jdbc.driver.OracleDriver);Connecti
33、on connection = DriverManager.getConnection(jdbc:oracle:thin:127.0.0.1:1521:WAIT,scott,tiger);Statement statement = connection.createStatement();ResultSet rSet = statement.executeQuery(select * from Manager);while(rSet.next()myName = rSet.getString(1);mySsid = rSet.getString(2);if(str1.equals(myName
34、) & str2.equals(mySsid)/System.out.println(进了循环!);connection.close();statement.close();rSet.close();return 1;connection.close();statement.close();rSet.close();return 0;3、MainFram.javapackage .JiangYzh;import java.awt.BorderLayout;import java.awt.Color;import java.awt ponent;importjava.awt.Frame;impo
35、rt java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Vector;importjavax.activation.FileDataSource;import javax.swing.ButtonGroup;impor
36、t javax.swing.utton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JTabbedPane;import javax.swing.JTable;import javax.swing.JT
37、extField;import javax.swing.table.DefaultTableModel;importorg.omg.CORBA.PUBLIC_MEMBER;publicclassMainFrameextends JFrameJTabbedPanejtp= new JTabbedPane();JPanelfield= new JPanel();SuppressWarnings(unused)JPanelmaJPanel= new JPanel();JTabletable= null;JTextFieldtextField= new JTextField(10);JPanelpan
38、el;ButtonGroupconditionGroup;DefaultTableModeldtm;JScrollPanemJScrollPane;public MainFrame()mInit();publicvoid add(Component c, GridBagConstraints constraints, int x, int y,int w, int h)/ 此方法用来添加控件到容器中constraints.gridx = x;constraints.gridy = y;constraints.gridwidth = w;constraints.gridheight = h;pa
39、nel.add(c, constraints);publicvoid mInit()field.setLayout(new BorderLayout();final JFrame frame = new JFrame();JSplitPane mSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);mSplitPane.setDividerLocation(150);mSplitPane.setDividerSize(4);field.add(mSplitPane);VectorVector rowData = null;tryrowDat
40、a = MainSql.getMyData();catch (Exception e)/ TODO Auto-generated catch blocke.printStackTrace();System.out.println(rowData);/ dtm = new DefaultTableModel(rowData, ves);table = getQueryMsg(rowData);mJScrollPane = new JScrollPane(table);field.add(mJScrollPane, BorderLayout.SOUTH);/ field.add(textField
41、,BorderLayout.CENTER);GridBagConstraints gbc = new GridBagConstraints();jtp.add(工作人员 , field);panel = new JPanel();GridBagLayout gbl = new GridBagLayout();panel.setLayout(gbl);conditionGroup = new ButtonGroup();JLabel queryTitle = new JLabel(条件查询);queryTitle.setBackground(Color.GREEN);add(queryTitle, gbc, 0, 0, 1, 1);final MainSql mSql = new MainSql();SlcListener mListener = new SlcListener(this);JRadioButton con1 = new JRadioButton(按编号, true);/ 单选按钮JRadioButton con2 = new JRadioButton(按);utton slcButton = new utton(查询);slcButton.addActionListener(mListener);add(con1, gbc, 1, 0, 1