人事管理系统数据库课程设计.docx
《人事管理系统数据库课程设计.docx》由会员分享,可在线阅读,更多相关《人事管理系统数据库课程设计.docx(42页珍藏版)》请在冰豆网上搜索。
人事管理系统数据库课程设计
人事管理系统(数据库课程设计)
《数据库》练习申报
课题:
人事治理体系
课程名称:
数据库道理及应用
学生姓名:
学生学号:
地点专业:
运算机科学与技巧
地点班级:
指导师长教师:
徐龙琴
成就:
设计总说明
1.设计概况
名称:
人事治理体系
用处:
黉舍等机构
功能:
实现对职员信息的治理与爱护等功能
2.设计说明
学生学籍治理体系,可用于黉舍等机构的学生信息治理,查询,更新与爱护,应用便利,易用性强,图形界面清晰清晰明了。
该软件用java说话编写,用SQLServer2005数据库作为后台的数据库进行信息的储备,用SQL语句完成添加,查询,修改,删除的操作。
用ODBC驱动实现前台Java与后台SQL数据库的连接。
Java说话跨平台性强,能够在windows,linux,ubuntu等体系下应用,便利简单,安稳性好。
SQLServer2005数据库高效安稳,两者结合可互响应用各自的优势。
该体系实现的大年夜致功能:
体系功能的全然要求:
Ø职员各类信息的输入,包含职员的全然信息、学历信息、婚姻状况信息、职称等。
Ø职员各类信息的修改;
Ø关于转出、告退、辞退、退休职员信息的删除;
Ø按照必定的前提,查询、统计相符前提的职员信息;至少应当包含每个职员具体信息的查询、按婚姻状况查询、按学历查询、按工作岗亭查询等,至少应当包含按学历、婚姻状况、岗亭、参加工作时刻等统计各自的职员信息;
Ø对查询、统计的成果打印输出。
3.本体系只实现了全然操作功能,关于一些更大年夜型、属性更多、关系更复杂的企业,便利性和安稳性仍有不足,应用过程中造成的不便还请谅解!
1.人事治理体系概述
1.1研究背景
人事治理体系是企业治理体系中弗成缺乏的重要构成部分,它的内容关于企业的决定打算者和治理者来说都至关重要,因此人事档案治理体系应当能够或许为用户提供充分的信息和快捷的查询手段。
但一向以来人们应用传统人工的方法治理文件档案,这种治理方法存在着专门多缺点,如:
效力低、保密性差,别的时刻一长,将产生大年夜量的文件何数据,这关于查找、更新和爱护都带来了许多的困难。
跟着科学技巧的赓续进步,运算机科学日渐成熟,其强大年夜的功能已为人们深刻熟悉,它已进入人类社会的各个范畴并发挥着越来越重要的感化。
1.2意义及目标开创
作为运算机应用的一部分,应用运算机对人事档案信息进行治理,具有着手工治理所无法比较的长处.例如:
检索灵敏、查找便利、靠得住性高、储备量大年夜、保密性好、寿命长、成本低等。
这些长处能够或许极大年夜地进步人事档案治理的效力,也是企业的科学化、正规化治理,与世界接轨的重要前提。
是以,开创如许一套管理软件成为专门有须要的工作。
本体系针对以上缺点能够或许极大年夜地进步学生信息治理的效力,也是科学化、正规化的治理,与世界接轨的重要前提。
因此若何主动高效地治理信息是这些年来专门多人所研究的。
一个健全的人事治理体系是一个黉舍或某个集体单位正常运作的须要前提,使人事治理便利快捷而又清晰,面对各类不合种类的信息,须要合理的数据库构造来储存数据信息以及有效地法度榜样构造来支撑各类数据的操作的履行。
实现集体单位治理体系化,规范化和主动化,从而达到进步人事治理的工作效力和工作质量的目标。
2.体系需求分析
2.1开创情形和软件
本学籍采取Java说话编写前台法度榜样,后台采取SQLServer2005软件治理数据库,调试和运行皆由EclipseSDKv3.5.0完成。
2.2体系设计与功能分析
体系设计的全然思惟:
1.用户登录模块
2.体系治理模块
1)暗码修改
2)从新登录
3)添加/删除用户
4)退出体系
3.信息治理模块
1)对黉舍里所有职员和院系进行同一标号,将每一位职员的信息储存在职员档案记录中
2)对新聘的职员,将其信息参加到职员档案记录中;关于转出、退休、告退、辞退的职员,将其信息从职员档案记录中删除
3)当职员信息产生更换时,修改职员档案记录中响应的属性
4.信息查询模块
查询职员信息及院系信息
5.其他模块
1)运算器
2)关于体系的说明
3)退出
体系功能的全然要求:
Ø职员各类信息的输入,包含职员的全然信息、学历信息、婚姻状况信息、职称等。
Ø职员各类信息的修改;
Ø关于转出、告退、辞退、退休职员信息的删除;
Ø按照必定的前提,查询、统计相符前提的职员信息;至少应当包含每个职员具体信息的查询、按婚姻状况查询、按学历查询、按工作岗亭查询等,至少应当包含按学历、婚姻状况、岗亭、参加工作时刻等统计各自的职员信息;
Ø对查询、统计的成果打印输出。
3.数据库设计
3.1体系概念构造设计
3.1.1体系功能模块图
3.1.2数据流程图
3.2体系逻辑构造设计
画出体系E-R图
图4职员实体图
图5院系实体图
图6治理员实体图
职员
图7各实体之间接洽图(总体E-R图)
3.3物理构造设计
数据库物理设计时期的义务是依照具体运算机体系的特点,给给定的数据库体系确信合理的储备构造和存取方法。
所谓的“合理”重要有两个含义:
一个是要使设计出的物理数据库占用较少的储备空间,另一个对数据库的操作具有尽可能高的速度。
重要表现在索引和储备构造的设置。
(1)建立索引
1.对职员信息表在属性列:
职员编号上建立集合索引,在属性列:
身份证号建立独一索引;
2.对院系信息表在属性列:
院系编号上建立集合索引;
(2)储备过程
1.创建不带参数的储备过程:
查询在信息学院的职员的编号和姓名
createprocedures2
as
select职员编号,职员姓名
from职员信息
where院系编号=(select院系编号
from院系信息
where院系名称='信息学院')
go
execs2
2.创建带参数的储备过程:
依照用户输入的职员编号,输出其姓名和学历
createprocedures1
(@职员编号int,@职员姓名nchar(10)output,@学历nchar(10)output)
as
select@学历=学历,@职员姓名=职员姓名
from职员信息
where职员编号=@职员编号
go
declare@职员姓名nchar(10),
@学历nchar(10)
execs1'2',@职员姓名output,@学历output
select'职员姓名'=@职员姓名,
'学历'=@学历
(3)储备构造
确信命据库的储备构造重要指确信命据的存放地位和储备构造,包含确信关系,索引,日记,备份等的储备安排及储备构造,以及确信体系储备参数的设备。
将日记文件和数据库(表,索引等)分别放在不合的磁盘,能够改进体系的机能,进步体系的安稳性,因此,体系应将日记文件存放在不合的磁盘上。
3.4数据库关系图
关系模型
(1)岗亭信息表(岗亭编号,岗亭名称):
个中岗亭编号为主键;
(2)用户表(治理员ID,暗码):
治理员ID为主键;
(3)职员信息表(职员编号,职员姓名,性别,院系编号,岗亭编号,职称编号,婚姻状况,平易近族,学历,接洽方法,住址,身份证号,工资):
个中职员编号为主键,院系编号、岗亭编号、职称编号均为外键;
(4)院系信息表(院系编号,院系名称):
个中院系编号为主键;
(5)职称信息表(职称编号,职称名称):
个中职称编号为主键。
数据库表
(1)岗亭信息表:
(2)用户表:
(3)职员信息表:
(4)院系信息表:
(5)职称信息表:
4.体系模块设计概述
4.1用户登录模块
该模块用于治理员的登录,后台数据库的用户表中给出了三个治理员ID和相对应的暗码,只有输入精确方可进入体系。
4.2体系治理模块
功能如下图所示:
(具体见体系运行与测试此模块)
4.3信息治理模块
功能如下图所示:
1)对黉舍里所有职员和院系进行同一标号,将每一位职员的信息储存在职员档案记录中
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退出
主界面左边一列最下一个即为退出按钮。
5.6优缺点自我评判
长处:
(1)Java说话跨平台性强,能够在windows,linux,ubuntu等体系下应用,便利简单,安稳性好。
SQLServer2005数据库高效安稳,两者结合可互响应用各自的优势;
(2)此体系界面整洁大年夜方,功能较强大年夜,依照界面的构造提示,用户可快速便利地操作,推敲到用户可能要进行统计和数值运算,加倍表现了人道化的设计构思;
(3)后台的数据库设计全然相符3NF的要求,表格设计了五张,每张表的属性都依照实际情形定义类型和响应的束缚,全然涵盖了一个小型企业须要的信息,表和表之间的关系(外键与主键的建立)也全然相符实际要求,为了便于快速查询信息,建立了集合索引和独一索引,也建立了有参数和无参数的储备过程;
(4)此体系只能供有权限的治理员登录与操作,进步了安稳性。
缺点:
(1)关于职员信息表,当时忘了加“出身日期”这一重要属性,接近尾声时才发明,但是因为时刻紧急,没有修改;
(2)五张表之间,岗亭信息表和职称信息表与其他表的接洽不是太紧密,应当直截了当参加属性,也是因为时刻紧急,没有修改,照成了数据冗余;
(3)建立的储备过程在界面代码中未调用,用户只是治理员类型,没有设置具体的权限,使得其他人员无法操作;
(4)功能强大年夜的同时,代码响应比较多,因此注释了许多,可关于通俗用户来说,看起来照样比较不便利,这些代码也照成了必定程度上的资本白费;
(5)关于职员信息的查询,只能直截了当显示院系、职称、岗亭编号,无法显示响应的信息。
6.课程设计总结
在我看来,数据库课程设计重要的目标是应用课程中学到的数据库常识和技巧较好的开创设计出数据库应用体系,去解决各行各业信息化处理的要求。
经由过程此次课程设计,能够巩固我们对数据库基来源差不多理和差不多理论的明白得,操纵数据库应用体系开创的全然方法,进一步进步我们综合应用所学常识的才能。
当我们先确信下来要做的标题时,并不是急着着手写法度榜样。
而是大年夜家一路磋商那个体系概述、体系目标、体系需求、营业流程分析、数据流程分析和数据词典,做好这些工作今后,我们各个组员作了一些分工。
在重要功能方面我重要负责实现添加和删除用户、用户暗码修改的功能的实现,相关于而言,我的工作比较轻松,个中参加了一个运算器类,重要负责计数,这是一小我性化的推敲在里面。
我们的分工不合,碰到的困难天然也就不一样了,我们日常平凡差不多上自力做本身的那一部分,然则会及时将本身的进展告诉组员,以便一个的体系的完美完成。
因此我们也会合中起来商量一下各自碰到的问题,大年夜家合营想方法解决,搜刮材料、借阅大年夜量书本、向其他同窗就教等等差不多上我们解决问题的方法,最终在大年夜家的尽力下,不太完美倒是专门卖力完成的体系出生了!
辛劳在这时显得是那么惨白无力,快乐的尽头吞没了所有的辛劳。
往常也做过课程设计,然则此次的课程设计涉及到的开创对象不一样了,最重要的不一样表现在我们要用到两个开创平台,我们不仅要做出前台数据库,还要与后台开创的数据库进行连接,这是一个全新的熟悉:
我们弗成能将大年夜量的数据直截了当放在代码之中。
关于SQL2005能够闇练的应用,重要得益于师长教师要求我们日常平凡做的一些实验,因此在后台的设计和操作没有花费太多的时刻,因此日常平凡埋怨实验太多,那个时刻照样可不能不记得感激先诞辰常平凡的严格要求。
后台的开创对我来说确实是空前的挑战,起首涉及到的Java说话是在师长教师的要求下,本身在藏书楼借书学得,绝对的半桶水,困难专门大年夜也专门多,在组员的赞助下也算成功的克服了那些困难,获得一个美满的终局!
当我碰到缺点的时刻,认为专门受突击;值得欣慰的是,在组员的赞助和大年夜量参考书的查阅下,最终成功了!
此次课程设计让我明白得碰到困难永不舍弃的重要性,我明白了团队合作的重要性,我融合了只有保持不懈才会取获成功.
7.附录(代码)
关于类:
重要功能:
显示人事治理体系的一些相干信息
源代码:
packagea;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassAboutextendsJInternalFrame{
JLabellabel=newJLabel("运行情形:
Windows");
JLabellabe2=newJLabel("开创情形:
JAVA,SQLServer");
JLabellabe3=newJLabel("制造人员:
郝中奎、马家权、童孟丹");
JLabellabe4=newJLabel("对应学号:
201011621407;201011621421;201011621322");
publicAbout(){
setTitle("关于");
Containercon=getContentPane();
con.setLayout(newGridLayout(4,1));
con.add(label);
con.add(labe2);
con.add(labe3);
con.add(labe4);
con.setBackground(Color.white);
setResizable(false);
setSize(380,220);
setVisible(true);
setClosable(true);
}
}
添加和删除用户类:
重要功能:
用于添加和删除治理员的帐号信息
源代码:
packagea;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JComboBox;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
publicclassAddDeleteUserextendsjavax.swing.JInternalFrame{
privateJButtonbutACancel,butDCancel,butDelete,butOk;
privateJComboBoxcbUserName;
privateJLabeljLabel1,jLabel2,jLabel3,jLabel4,jLabel5;
privateJPasswordFieldpas1,pas2,pas3;
privateJTextFieldtxtname;
publicAddDeleteUser(){
initComponents();
this.setVisible(true);
this.setClosable(true);
this.setSize(268,350);
}
privatevoidinitComponents(){
jLabel1=newJLabel();
jLabel2=newJLabel();
jLabel3=newJLabel();
txtname=newJTextField();
pas1=newJPasswordField();
pas2=newJPasswordField();
butOk=newJButton();
butACancel=newJButton();
jLabel4=newJLabel();
cbUserName=newJComboBox();
jLabel5=newJLabel();
pas3=newJPasswordField();
butDelete=newJButton();
butDCancel=newJButton();
getContentPane().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);
getContentPane().add(txtname);
txtname.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("清空");
getContentPane().add(butACancel);
butACancel.setBounds(160,130,70,27);
jLabel4.setText("已有效户名:
");
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);
butDelete.setText("删除");
getContentPane().add(butDelete);
butDelete.setBounds(79,260,70,27);
butDCancel.setText("清空");
getContentPane().add(butDCancel);
butDCancel.setBounds(160,260,70,27);
//将所有效用户名读出来
Database.joinDB();
Stringsql="select*from用户";
try{
if(Database.query(sql)){
while(Database.rs.next()){
Stringname=Database.rs.getString("治理员ID");
cbUserName.addItem(name);
}
}
}
catch(Exceptione){}
//为添加和撤消按钮加事宜-----------------------------------------
butOk.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(txtname.getText().equals("")){
newJOptionPane().showMessageDialog(null,"用户名不克不及为空!
");
}
elseif(pas1.getText().equals("")){
newJOptionPane().showMessageDialog(null,"暗码不克不及为空!
");
}
elseif(pas1.getText().equals(pas2.getText())){
Stringsql="insert用户values('"+txtname.getText()+"','"+pas1.getText()+"')";
try{
if(Database.executeSQL(sql)){
newJOptionPane().showMessageDialog(null,"添加成功!
");
cbUserName.addItem(txtname.getText());
}
}
catch(Exceptionea){}
}
}
});
butACancel.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
txtname.setText("");
pas1.setText("");
pas2.setText("");
}
});
//为删除和撤消按钮加事宜---------------------------------------
butDelete.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringname=""+cbUserName.getSelectedItem();
Stringsql="select*from用户where治理员ID='"+name+"'";
try{
if(Database.query(