小型应用系统学年设计任务书
学院 | 计算机与信息工程学院 | 专 业 | 网络工程 |
课程名称 | 小型应用系统设计 | 题 目 | 职工考勤管理信息系统 |
完成期限 | 自2016 年7 月26 日至2016 年8 月26 日共四周 | ||
内 | 一、项目的目的 采用Java 和MySQL 数据库技术,设计一个小型应用系统实现 职工考勤管理信息。锻炼在软件设计过程中的业务逻辑和业务流程 设计能力、以及图形化的用户界面设计和数据库的使用能力。 二、项目任务的主要内容和要求 采用Java 和MySQL 数据库技术,设计一个小型的应用系统 实现职工考勤信息的管理,有图形化的用户界面。内容及要求如下: (1)职工信息,包括职工编号、职工姓名、性别、年龄、职称等; (2)出勤记录信息,包括上班打卡时间,下班打开时间,缺勤记录 等; (3)出差信息,包括出差起始时间、结束时间、统计总共天数等; (4)请假信息,包括请假开始时间,结束时间,统计请假天数等; (5)加班信息,包括加班开始时间、结束时间、统计加班总时间。 三、项目设计(研究)思路 先期设计数据库,画出数据库的E-R 图,设计员工表,出差 表,出勤表,加班表,请假表。然后设计和制作分别完成各个小项 的功能,如员工表的增加、删除、查询、修改以及其他表格的查询。 在各个小功能都完善后,接入数据库,再考虑设计一个主界面,将 软件的各项功能集成在一起。小系统达成后,进行调试与界面编辑 设计,最终完成设计。 四、具体成果形式和要求 (1)设计完成一个职工考勤管理信息系统。要求能对 MySQL 数据 库进行增、删、改、查操作,并且具备图形化的用户界面。 (2)完成和提交一份职工考勤管理信息设计报告文档。 | ||
1
进 | 起止日期 | 工作内容 |
2016.7.25—8.10 | 根据软件设计要求,查询相关Java、数据库知识。 | |
2016.8.11—8.23 | 构建数据库结构,编写程序应用界面。 | |
2016.8.24—8.26 | 调试程序,完善功能,完成学年设计报告。 | |
主 | [1].王诚.JAVA 实用编程技术[M].北京:人民邮电出版社,2012. [2].王雨竹.MySQL 入门经典[M].北京:机械工业出版社,2013. [3].张逸.软件设计精要与模式[M].北京:电子工业出版社,2007. [4].王德永.数据库原理与应用[M].北京:人民邮电出版社,2011. [5].[美]Bruce Eckel.Java 编程思想[M].北京:机械工业出版社,2007. [6].[美]Herbert Schildt 著.马海军,景丽等译.Java 实用教程(第三版).北京:清华大学出版社.2005. | |
指导教师意见 | (签字): 年月日 | |
系(教研室) 主任意见 | (签字): 年月日 | |
2
职工考勤管理信息系统设计说明书
(封面)
学院名称:计算机与信息工程学院
班级名称:网络工程14级2班
学生姓名: | 朱赛赛 | ||
学 | 号: | 2014211585 | |
题 | 目:职工考勤管理信息系统 | ||
指导教师
姓 | 名: | 任倩 |
起止日期: 2016.7.26– 2016.8.26
目录
第一部分:正文部分..................................................1一、选题背景........................................................1二、方案论证(或设计理念)..........................................1三、过程论述........................................................13.1 相关知识介绍.................................................13.2 系统功能模块图...............................................23.3 系统流程图...................................................23.4 数据库设计...................................................33.5 系统的各部分功能模块设计.....................................43.5.1 系统管理部分设计.......................................4
3.5.2职工信息管理部分设计..................................10
3.5.3出勤信息查询..........................................15
3.5.4出差信息查询..........................................17
3.5.5请假信息查询..........................................18
3.5.6加班信息查询..........................................19
3.5.7系统主界面集成设计....................................21
四、结果分析.......................................................254.1 登录系统测试................................................254.2 员工管理测试................................................2.3 出勤信息查询测试............................................2.4 出差信息查询测试............................................2.5 请假信息查询测试............................................274.6加班信息查询测试............................................27五、结论(或总结).................................................28第二部分:参考文献.................................................28第三部分:指导教师评语.............................................30第四部分:成绩评定.................................................30
第一部分:正文部分
一、选题背景
计算机网络技术的发展,给信息时代的人们带来了很大的便利。如今在互联
网上,随处可见各种类型的信息管理系统。随着信息技术的发展已经深入到社会
的各个角落,各个大小企业都充分认识到传统的手工管理模式已经不能顺应时代
的发展,为了企业更好的发展,纷纷开发适合自己的管理系统。相对于手工管理
模式的效率低,易出错,手续繁琐,耗费大量的人力,物力,财力来说,职工考
勤管理信息系统能够通过电脑化管理实现职工信息增加,删除,修改,以及出勤
信息,出差信息,请假信息,加班信息的查询。
二、方案论证(或设计理念)
由于该系统所要满足的硬件是计算机,软件方面是采用JDK1.8开发环境、
Eclipse开发工具和MySQL数据库,这些设备和软件易于实现和满足。采用的
语言是Java语言,具有可移植性,功能易于实现,界面比较美观,操作简单,
能够移植到其他计算机上运行,与平台无关,能够满足更多的用户,使得该系统
能被很多家庭所接受和使用。因此采用该Java+MySQL方案来设计职工考勤管
理信息系统。
三、过程论述
3.1相关知识介绍
MySQL是一个,MySQL最流行的
,在WEB应用方面MySQL是最好的RDBMS(Relational Database
ManagementSystem,关系数据库管理系统)应用软件之一。MySQL是一种关联
数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在
一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的SQL语言是用于访问的最常用标准化语言。
MySQL软件采用了双授权,其体积小、速度快、总体拥有成本低,致使其
被广泛应用。
Eclipse是一个开放的、基于的可扩展开发平台。就其本身而言,
它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse
附带了一个标准的插件集,包括Java(JavaDevelopment Kit,)。
1
3.2系统功能模块图
在该小型应用系统中,用户可以直接执行管理员权限,对员工信息进行增删,
修改,保存,实现出勤信息,出差信息,加班信息,请假信息的查询。系统功能
如图3-1所示。
图3-1系统功能模块图
3.3系统流程图
在该系统中,用户可以通过可以运行程序进入主界面,在主界面中可以管理
各个功能模块,进而通过各个功能模块对后台数据库进行数据操作和管理。系统
流程图如图3-2所示。
图3-2系统流程图
2
3.4数据库设计
根据实体类型、属性和联系的方法,绘制职工,出勤,出差,加班,请假实体集间的实体-联系图。如图3-3所示。
图3-3 E-R 图
本系统的基本功能是设计职工考勤管理信息,因此设置了5张表,分别是表Yuangong、表Chuqin、表Chuchai、表Qingjia、表Jiaban。对数据的增、删、改、查,主要在这四个表上进行。
(1)员工表用来记录员工的基本信息,表结构如表3-1所示。
表3-1员工表
属性名 | 类型 | 长度 | 字段约束 | 含义 |
Id | int | 5 | not null | 编号 |
Name | char | 4 | not null | 姓名 |
Sex | char | 2 | check | 性别 |
Age | int | 2 | not null | 年龄 |
Zhichen | char | 4 | null | 职称 |
(2)出勤表用来记录出勤的基本信息,表结构如表3-2所示。
3
表3-2出勤表
属性名 | 类型 | 长度 | 字段约束 | 含义 |
Id | int | 5 | not null | 编号 |
Am0 | date | 0 | null | 上午开始打卡 |
Pm0 | date | 0 | null | 下午开始打卡 |
Am1 | date | 0 | null | 上午结束打卡 |
Pm1 | date | 0 | null | 下午结束打卡 |
Judge | int | 5 | null | 缺勤记录 |
(3)出差表用来记录出差的基本信息,表结构如表3-3所示。
表3-3出差表
属性名 | 类型 | 长度 | 字段约束 | 含义 |
Id | int | 5 | not null | 编号 |
Beginday | date | 0 | null | 开始时间 |
Endday | date | 0 | null | 结束时间 |
Days | int | 5 | null | 总时间 |
(4)请假表用来记录请假的基本信息,表结构如表3-4所示。
表3-4请假表
属性名 | 类型 | 长度 | 字段约束 | 含义 |
Id | int | 5 | not null | 编号 |
开始时间 | ||||
Beginday | date | 0 | null | |
结束时间 | ||||
Endday | date | 0 | null | |
总时间 | ||||
Days | int | 5 | null |
(5)加班表用来记录加班的基本信息,表结构如表3-5所示。
表3-5加班表
属性名 | 类型 | 长度 | 字段约束 | 含义 |
Id | int | 5 | not null | 编号 |
开始时间 | ||||
BeginTime | date | 0 | null | |
结束时间 | ||||
EndTime | date | 0 | null | |
总时间 | ||||
SumTime | double | 6 | null |
3.5系统的各部分功能模块设计
3.5.1系统管理部分设计
系统管理模块的主要功能有:用户登录、退出。该模块可以实现用户的登录,
4
在程序中主要涉及的类为CheckPassword,在系统核对用户名和密码时需对数据库test中的user1表进行查询对比。登录界面如图3-4所示。
图3-4用户登录界面
具体代码如下:
publicstatic void main(String[] args) {
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.Nim busLookAndFeel");
}
catch(Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(newRunnable() {
publicvoid run() {
try{
ExpandFrameframe = new ExpandFrame();
frame.setVisible(true);
}
catch(Exception e) {
e.printStackTrace();
}
}
});
5
}
publicExpandFrame() {
this.setTitle("登录窗体");
addWindowListener(newWindowAdapter() {
@Override
publicvoid windowOpened(WindowEvent e) { do_this_windowOpened(e);
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100, 0, 221);
contentPane= new JPanel();
contentPane.setBackground(newColor(135, 206, 250)); contentPane.setBorder(newEmptyBorder(5, 5, 5, 5)); setContentPane(contentPane);
contentPane.setLayout(null);
JLabellabel = new JLabel("登录模块");
label.setOpaque(true);
label.setBackground(newColor(245, 222, 179));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(newFont("SansSerif", Font.PLAIN, 30));
label.setBounds(6,6, 422, 72);
contentPane.add(label);
JLabellabel_1 = new JLabel("用户名:");
label_1.setBounds(31,90, 55, 18);
contentPane.add(label_1);
JLabellabel_2 = new JLabel("密码:");
label_2.setBounds(31,134, 55, 18);
6
contentPane.add(label_2);
textField= new JTextField();
textField.setBounds(83,84, 184, 30);
contentPane.add(textField);
textField.setColumns(10);
textField_1= new JTextField();
textField_1.setBounds(83,128, 184, 30);
contentPane.add(textField_1);
textField_1.setColumns(10);
JButtonbutton = new JButton("登录");
button.setBounds(304,84, 90, 30);
contentPane.add(button);
button.addActionListener(newEnter());
JButtonbutton_1 = new JButton("关闭");
button_1.setBounds(304,128, 90, 30);
contentPane.add(button_1);
setLocationRelativeTo(null);
button_1.addActionListener(newClose());
}
classEnter implements ActionListener{
publicvoid actionPerformed(ActionEvent e) {
setVisible(false);
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundExceptione1){System.out.println("加载驱动程 序失败!");}
try{
7
Connection
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
Statementsql=con.createStatement();
Stringuname=textField.getText().trim();
StringMima=textField_1.getText().trim();
StringqueryMima="select * from user1 where 用户名
='"+uname+"'and 密码='"+Mima+"'";
ResultSetrs=sql.executeQuery(queryMima);
if(rs.next())
{
JOptionPane.showMessageDialog(null,"登录成功!
","",JOptionPane.YES_NO_OPTION);
MainFramesf=new MainFrame();
sf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sf.show();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","提 示!",JOptionPane.YES_NO_OPTION);
}
textField.setText("");
textField_1.setText("");
} catch(SQLException g)
{
System.out.println("ECode"+g.getErrorCode());
System.out.println("EM"+g.getMessage());
}
}
}
classClose implements ActionListener{
@Override
8
publicvoid actionPerformed(ActionEvent e) {
//TODO Auto-generated method stub
System.exit(0);
}
}
classwinClose extends WindowAdapter
{
publicvoid windowClosing(WindowEvent e)
{
(e.getWindow()).dispose();
System.exit(0);
}
}
protected void do_this_windowOpened(WindowEvent e) {
finalint height = getHeight();// 记录窗体高度
newThread() {// 创建新线程
publicvoid run() {
Rectanglerec = getBounds();
for(int i = 0; i < frameWidth; i += 10) {//循环拉伸窗体 setBounds(rec.x- i / 2, rec.y, i, height);// 不断 try{
Thread.sleep(10);//线程休眠10毫秒
}catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}.start();//启动线程
}
9
public static void DISPOSE_ON_CLOSE() {
//TODO Auto-generated method stub
}
}
3.5.2职工信息管理部分设计
职工信息管理部分有员工信息增添、查询、职工出差信息查询、职工请假信息查询、职工加班信息查询四个主模块。如图3-5所示。
图3-5职工信息查询选项
员工资料管理部分有查看所有员工信息,添加员工信息,修改员工信息,删
除员工信息五个模块。主要通过类来对数据库进行操作,如添加员工信息。如图3-6所示。
图3-6添加员工信息
具体代码如下:
10
publicstatic int InsertYuangongInfo(Yuangong yuangong) {
Connectionconn = getConn();
inti = 0;
Stringsql = "Insert into Yuangong (ID,Name,Sex,Age,Zhichen) values(?,?,?,?,?)";
PreparedStatementpstmt;
try{
pstmt= (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1,yuangong.getId());
pstmt.setString(2,yuangong.getName());
pstmt.setString(3,yuangong.getSex());
pstmt.setInt(4,yuangong.getAge());
pstmt.setString(5,yuangong.getZhichen());
i= pstmt.executeUpdate();
pstmt.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
return i;
}
查询员工信息。如图3-7所示。
图3-7查询员工信息
具体代码如下:
publicstatic Yuangong getYuangongInfo(int id) {
Connectionconn = getConn();
Stringsql = "Select * from Yuangong where id = '" + id + "'"; 11
PreparedStatementpstmt;
try{
pstmt= (PreparedStatement)conn.prepareStatement(sql); ResultSetrs = pstmt.executeQuery();
Yuangongyuangong = new Yuangong();
while(rs.next()) {
yuangong.setId(rs.getInt("ID"));
yuangong.setName(rs.getString("Name"));
yuangong.setSex(rs.getString("Sex"));
yuangong.setAge(rs.getInt("Age"));
yuangong.setZhichen(rs.getString("Zhichen")); }
returnyuangong;
}catch (SQLException e) {
e.printStackTrace();
}
return null;
}
删除员工信息。如图3-8所示。
图3-8删除员工信息
具体代码如下:
publicstatic int DeleteYuangongInfo(int id) {
Connectionconn = getConn();
inti = 0;
Stringsql = "Delete from Yuangong where ID='" + id + "'"; 12
PreparedStatementpstmt;
try{
pstmt= (PreparedStatement) conn.prepareStatement(sql); i= pstmt.executeUpdate();
System.out.println("resutl:" + i);
pstmt.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
return i;
}
修改员工信息。如图3-9所示。
图3-9修改员工信息
具体代码如下:
publicstatic int UpdateYuangongInfo(Yuangong yuangong) {
Connectionconn = getConn();
inti = 0;
Stringsql = "Update Yuangong set Name = '" + yuangong.getName() + "',Sex= '"+ yuangong.getSex() + "',Age = '" +yuangong.getAge() +
"',Zhichen= '" + yuangong.getZhichen() + "' where ID='" +yuangong.getId() +"'";
PreparedStatementpstmt;
try{
13
pstmt= (PreparedStatement) conn.prepareStatement(sql); i= pstmt.executeUpdate();
pstmt.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();}
return i;
}
查询所有员工信息。如图3-10所示。
图3-10查询所有员工信息
具体代码如下:
publicstatic Yuangong[] getAllYuangongInfo() {
Connectionconn = getConn();
Stringsql = "Select * from Yuangong";
PreparedStatementpstmt;
try{
pstmt= (PreparedStatement)conn.prepareStatement(sql);
ResultSetrs = pstmt.executeQuery();
rs.last();//移到最后一行
introws = rs.getRow(); //得到当前行号,也就是记录数
rs.beforeFirst();//如果还要用结果集,就把指针再移到初始化的位置 Yuangong[]yuangong = new Yuangong[rows];
inti = 0;
while(rs.next()) {
yuangong[i]= new Yuangong();
yuangong[i].setId(rs.getInt("ID"));
yuangong[i].setName(rs.getString("Name"));
14
yuangong[i].setSex(rs.getString("Sex"));
yuangong[i].setAge(rs.getInt("Age"));
yuangong[i].setZhichen(rs.getString("Zhichen")); i++;
}
returnyuangong;
}catch (SQLException e) {
e.printStackTrace();
}
return null;
}
3.5.3出勤信息查询
查询所有员工的出勤信息。如图3-11所示。
图3-11出勤信息查询
具体代码如下:
publicstatic Chuqin[] getAllChuqinInfo() throws ParseException {
Connectionconn = getConn();
Stringsql = "SELECT
a.Name,b.AM0,b.AM1,b.PM0,b.PM1,b.Judge,a.IDFROM Yuangong a,Chuqinb WHERE a.ID = b.ID";
15
PreparedStatementpstmt;
try{
SimpleDateFormatsdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
pstmt= (PreparedStatement)conn.prepareStatement(sql);
ResultSetrs = pstmt.executeQuery();
rs.last();//移到最后一行
introws = rs.getRow(); //得到当前行号,也就是记录数
rs.beforeFirst();//如果还要用结果集,就把指针再移到初始化的位置 Chuqin[]chuqin = new Chuqin[rows];
inti = 0;
while(rs.next()) {
chuqin[i]= new Chuqin();
chuqin[i].setId(rs.getInt(7));
chuqin[i].setAMdate0(sdf.parse(rs.getDate(2)+ " " +
rs.getTime(2)));
chuqin[i].setAMdate1(sdf.parse(rs.getDate(3)+ " " +
rs.getTime(3)));
chuqin[i].setPMdate0(sdf.parse(rs.getDate(4)+ " " +
rs.getTime(4)));
chuqin[i].setPMdate1(sdf.parse(rs.getDate(5)+ " " +
rs.getTime(5)));
chuqin[i].setJudge(rs.getString(6));
i++;
}
returnchuqin;
}catch (SQLException e) {
e.printStackTrace();
}
return null;
}
16
3.5.4出差信息查询
查询所有员工的出差信息。如图3-12所示。
图3-12出差信息查询
具体代码如下:
publicstatic Chuchai[] getAllChuchaiInfo() throws ParseException {
Connectionconn = getConn();
Stringsql = "SELECT a.Name,b.BeginDay,b.EndDay,b.Days,a.ID FROMYuangong a,Chuchai b WHERE a.ID = b.ID";
PreparedStatementpstmt;
try{
pstmt= (PreparedStatement)conn.prepareStatement(sql);
ResultSetrs = pstmt.executeQuery();
rs.last();//移到最后一行
introws = rs.getRow(); //得到当前行号,也就是记录数
rs.beforeFirst();//如果还要用结果集,就把指针再移到初始化的 位置
Chuchai[]chuchai = new Chuchai[rows];
inti = 0;
while(rs.next()) {
chuchai[i]= new Chuchai();
17
chuchai[i].setId(rs.getInt(5));
chuchai[i].setBeginDay(rs.getDate(2));
chuchai[i].setEndDay(rs.getDate(3));
chuchai[i].setDays(rs.getInt(4));
i++;
}
returnchuchai;
}catch (SQLException e) {
e.printStackTrace();
}
return null;
}
3.5.5请假信息查询
查询所有员工的请假信息。如图3-13所示。
图3-13请假信息查询
具体代码如下:
publicstatic Qingjia[] getAllQingjiaInfo() throws ParseException {
Connectionconn = getConn();
Stringsql = "SELECT a.Name,b.BeginDay,b.EndDay,b.Days,a.ID FROMYuangong a,Qingjia b WHERE a.ID = b.ID";
18
PreparedStatementpstmt;
try{
pstmt= (PreparedStatement)conn.prepareStatement(sql); ResultSetrs = pstmt.executeQuery();
rs.last();//移到最后一行
introws = rs.getRow(); //得到当前行号,也就是记录数 rs.beforeFirst();
Qingjia[]qingjia = new Qingjia[rows];
inti = 0;
while(rs.next()) {
qingjia[i]= new Qingjia();
qingjia[i].setId(rs.getInt(5));
qingjia[i].setBeginDay(rs.getDate(2));
qingjia[i].setEndDay(rs.getDate(3));
qingjia[i].setDays(rs.getInt(4));
i++;
}
returnqingjia;
}catch (SQLException e) {
e.printStackTrace();
}
return null;
}
3.5.6加班信息查询
查询所有员工的加班信息。如图3-14所示。
19
图3-14加班信息查询
具体代码如下:
publicstatic Jiaban[] getAllJiabanInfo() throws ParseException {
Connectionconn = getConn();
Stringsql = "SELECT
a.Name,b.BeginTime,b.EndTime,b.SumTime,a.IDFROM Yuangong a,Jiabanb WHERE a.ID = b.ID";
PreparedStatementpstmt;
try{
SimpleDateFormatsdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
pstmt= (PreparedStatement)conn.prepareStatement(sql);
ResultSetrs = pstmt.executeQuery();
rs.last();//移到最后一行
introws = rs.getRow(); //得到当前行号,也就是记录数 rs.beforeFirst();
Jiaban[]jiaban = new Jiaban[rows];
inti = 0;
while(rs.next()) {
jiaban[i]= new Jiaban();
20
jiaban[i].setId(rs.getInt(5));
jiaban[i].setBeginTime(sdf.parse(rs.getDate(2)+ " " +
rs.getTime(2)));
jiaban[i].setEndTime(sdf.parse(rs.getDate(3)+ " " +
rs.getTime(3)));
jiaban[i].setSumTime(rs.getInt(4));
i++;
}
returnjiaban;
}catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
3.5.7系统主界面集成设计
在分别完成各小模块设计后,需要把所有的功能模块整合到主界面上,以便
于用户操作使用。在主界面设计中,主要涉及到菜单栏和菜单项以及相应的事件反应机制的设计。系统主界面完善后如图3-15所示。
图3-15系统主界面
21
具体代码如下:
publicMainFrame() {
setTitle("职工考勤管理系统");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100, 491, 332);
contentPane=new JPanel();
contentPane.setBackground(newColor(102,204,255)); setContentPane(contentPane);
JMenuBarmenuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenumenu = new JMenu("员工");
menuBar.add(menu);
JMenuItemmenuItem_2 = new JMenuItem("添加员工信息");menuItem_2.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent arg0) {
YuangongGUIyuangonggui = new YuangongGUI(-1); yuangonggui.setVisible(true);
}
});
menu.add(menuItem_2);
JMenuItemmenuItem = new JMenuItem("查询员工信息");
menuItem.addActionListener(newActionListener() {
publicvoid actionPerformed(ActionEvent e) {
Stringin =(String)JOptionPane.showInputDialog(null,"请输入员工 编号:\n","查询员工信息
",JOptionPane.PLAIN_MESSAGE,null,null,"在这输入");
intid = Integer.parseInt(in);
YuangongGUIyuangonggui = new YuangongGUI(id);
22
yuangonggui.setVisible(true);
}
});
menu.add(menuItem);
JMenuItemmenuItem_1 = new JMenuItem("查询所有员工信息");menuItem_1.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) {
try{
Tabletable = new Table(5,-1);
table.setVisible(true);
}catch (ParseException e1) {
e1.printStackTrace();
}
}
});
menu.add(menuItem_1);
JMenumenu_1 = new JMenu("出勤");
menuBar.add(menu_1);
JMenuItemmenuItem_7 = new JMenuItem("查询所有出勤");menuItem_7.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) {
try{
Tabletable = new Table(2,-1);
table.setVisible(true);
}catch (ParseException e1) {
e1.printStackTrace();
}
}
});
23
menu_1.add(menuItem_7);
JMenumenu_2 = new JMenu("出差");
menuBar.add(menu_2);
JMenuItemmenuItem_8 = new JMenuItem("查询所有出差");menuItem_8.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) {
try{
Tabletable = new Table(1,-1);
table.setVisible(true);
}catch (ParseException e1) {
e1.printStackTrace();
}
}
});
menu_2.add(menuItem_8);
JMenumenu_3 = new JMenu("请假");
menuBar.add(menu_3);
JMenuItemmenuItem_9 = new JMenuItem("查询所有请假");menuItem_9.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) {
try{
Tabletable = new Table(3,-1);
table.setVisible(true);
}catch (ParseException e1) {
e1.printStackTrace();
}
}
});
menu_3.add(menuItem_9);
24
JMenumenu_4 = new JMenu("加班");
menuBar.add(menu_4);
JMenuItemmenuItem_10 = new JMenuItem("查询所有加班"); menuItem_10.addActionListener(newActionListener() { publicvoid actionPerformed(ActionEvent e) {
try{
Tabletable = new Table(4,-1);
table.setVisible(true);
}catch (ParseException e1) {
e1.printStackTrace();
}
}
});
menu_4.add(menuItem_10);
}
}
四、结果分析
4.1登录系统测试
进入系统的第一步,通过验证输入的用户名与密码是否与数据库中存储的数据是否相符来决定能否登入。当输入的用户名在数据库中没有存储时,如图4-1所示,点击登录按钮,会出现如图4-2所示的错误提示信息。当输入正确的用户名和密码时,如图4-3所示,点击登录按钮,提示登录成功,如图4-4所示。
图4-1 输入错误登录信息 |
图4-2 验证登录信息 |
25
图4-3 输入正确登录信息 |
图4-4 登录成功 |
4.2员工管理测试
主要测试在主界面中查看所有员工信息,添加员工信息,修改员工信息,删除员工信息等功能。如图3-6添加员工信息,图3-7查询员工信息,图3-8删除员工信息,图3-9修改员工信息,图3-10查询所有员工信息所示。
4.3出勤信息查询测试
主要测试在主界面中查看指定员工出勤信息,如图4-5所示。
图4-5查看指定员工出勤
查看所有员工信息,如图4-6所示。
图4-6查看所有员工出勤信息
4.4出差信息查询测试
主要测试在主界面中查看指定员工出差信息,如图4-7所示。
26
图4-7查看指定员工出差
查看所有员工出差信息,如图4-8所示。
图4-8查看所有员工出差
4.5请假信息查询测试
主要测试在主界面中查看指定员工加班信息,如图4-9所示。
图4-9查看指定员工请假
查看所有员工请假信息,如图4-10所示。
图4-10查看所有员工请假
4.6加班信息查询测试
主要测试在主界面中查看指定员工加班信息,如图4-11所示。
27
图4-11查看指定员工加班
查看所有员工加班信息,如图4-12所示。
图4-12查看所有员工加班
五、结论(或总结)
此次考勤管理信息系统的设计运用了Java和MySQL数据库知识,基本完成了相关的员工信息管理和查询的功能。在各个功能模块的运行中,实现了对数据库数据的添加、修改、查询、删除,满足了设计要求。
更多的是根据设计所需学习了这次学年设计的过程,不仅复习了以往所学,
很多新的知识。这其中包括Java的界面设计,MySQL数据库基础知识,以及Java与数据库的链接等,可以说是大大丰富了专业知识。另外,虽然所设计的考勤信息管理系统是一个小型的不成熟的软件,但是可以窥见专业的软件设计的基本方法,提高了专业经验,锻炼了实践能力。总体来说,通过这次学年设计,收获的不仅仅是这一个软件,更收获了一定的经验与教训,在以后的学习中,要注重相关专业知识的积累,提升动手实践的能力。
第二部分:参考文献
[1].王诚.JAVA实用编程技术[M].北京:人民邮电出版社,2012.[2].王雨竹.MySQL入门经典[M].北京:机械工业出版社,2013.[3].张逸.软件设计精要与模式[M].北京:电子工业出版社,2007.
28
[4].王德永.数据库原理与应用[M].北京:人民邮电出版社,2011.
[5].[美]BruceEckel.Java编程思想[M].北京:机械工业出版社,2007.
[6].[美]HerbertSchildt著.马海军,景丽等译.Java实用教程(第三版).北京:清华大学出版社.2005.
学生签名: | 填表日期:年月日 |
29
第三部分:指导教师评语
第四部分:成绩评定
30
Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务