Java课程设计报告.docx
- 文档编号:29920982
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:29
- 大小:298.30KB
Java课程设计报告.docx
《Java课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
Java课程设计报告
合肥学院
计算机科学及技术系
课程设计报告
2010~2011学年第二学期
课程
Java语言程序设计
课程设计名称
企业人事管理系统
专业班级
08网络工程
(1)班
姓名
陈涛
指导教师
金莹郭昌建
2011年9月
一、需求分析
系统需求分析:
考察中小企业企业,要求设计一套人事管理系统,其中应具有一定的人事档案管理功能。
企业人事管理系统是企业进行管理的不可缺少的一部分。
职工的个人信息,各部门的信息,以及职工和部门之间的联系。
职工的考勤,职务,部门等。
为了方便企业领导掌握本企业的人事信息,在系统中加入查询功能,包括职工的所有信息。
还加入了对人事变动(删除、添加、修改)的功能。
高效的人事管理系统是中小企业系统之所需。
本系统的具体要求为:
1能全面管理公司人事管理中的各类主体,如人员信息查询,人员信息更新,人员添加,部门分配等;
2通过计算机能方便的维护(包括插入,删除,修改更新等)各类信息表;
3能通过开发语言实现对数据库的操作,查询基于某个信息表的所须信
息;
4系统具有操作方便,简捷等特点。
功能需求分析:
①.在数据库服务器如SQLServer2000中,建立个关系模式对应的库表,并确定主键,索引,参照完整性,用户自定义完整性等。
②能对各库表进行输入,修改,删除,添加,查询等基本操作。
③能实现如下各类查询:
能统计职工的基本情况,如部门,姓名,年龄,性别等
能够统计职工在出勤方面的情况
④要求所设计系统界面友好,功能安排合理,操作使用方便,并能进一步考虑子系统在安全性,完整性,并发控制,备份恢复等方面的功能要求
二.设计
1.设计思想:
这个题目主要是通过在界面上进行操作从而对数据库里的内容进行添加、删除、修改等各项操作。
首先对数据库进行设计,新建一个数据库,在这个数据库里建7个表,按照题目需要对各表进行设计。
进行界面设计的时候,因为要在主程序界面上进行操作,所以需要在设计时需要设计一个主函数,在主函数上进行操作,根据需要调用不同的子程序进行不同的功能操作。
2.功能设计
根据本次课程设计的要求,将该程序的功能设计如下:
运行主程序,进入操作界面,通过链接数据库,对该程序进行各项操作。
进入主界面以后,管理员可以对数据库里各员工的信息进行插入、删除、更新、查询等各项操作,临时添加的用户只能对数据库里的信息进行查询。
进行各项操作后,会显示相应的信息,并以此对原本数据库信息进行更新。
3.数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库的结构设计的好坏直接影响了数据库的效率。
在充分需求分析的基础上,经过逐步的抽象,概括,分析,充分研讨,可画出如下反映人事管理系统的E-R图:
用户实体图:
用户名——用户——密码
员工基本信息实体及联系图:
姓名性别籍贯年龄生日学历专业
住址
邮编员工编号电话
起薪时间
参加工作时间进入公司时间原部门现部门
员工调入基本信息实体及联系图:
考试情况调入理由
单位意见员工姓名备注
员工调出基本信息实体及联系图
员工姓名调出理由
单位意见员工编号备注
员工考勤信息表:
姓名当前日期上班时间下班时间
病假员工编号事假
特殊加班天数正常加班天数出差目的地出差天数
上下班时间表:
上班时间————时间表————下班时间
员工考勤信息统计表:
姓名
员工编号迟到次数
早退次数
4.详细设计
数据库详细设计:
新建一个数据库,在其中建立7个不同的表格,分别记录为:
上下班时间表,员工信息表,员工考勤信息统计表,员工考勤表,员工调入信息表,员工调出信息表,用户表。
CREATETABLE[上下班时间表](
[上班时间][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[下班时间][char](10)COLLATEChinese_PRC_CI_ASNOTNULL
)ON[PRIMARY]
GO
CREATETABLE[员工信息表](
[员工编号][char](53)COLLATEChinese_PRC_CI_ASNOTNULL,
[员工姓名][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[性别][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[籍贯][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[年龄][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[生日][char](10)COLLATEChinese_PRC_CI_ASNULL,
[学历][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[专业][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[住址][char](60)COLLATEChinese_PRC_CI_ASNOTNULL,
[邮编][char](53)COLLATEChinese_PRC_CI_ASNOTNULL,
[电话][char](53)COLLATEChinese_PRC_CI_ASNOTNULL,
[参加工作时间][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[进入公司时间][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[原部门][char](10)COLLATEChinese_PRC_CI_ASNULL,
[现部门][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[起薪时间][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[职务][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[备注][char](60)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
CREATETABLE[员工考勤信息统计表](
[员工编号][char](53)COLLATEChinese_PRC_CI_ASNOTNULL,
[员工姓名][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[迟到次数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[早退次数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[病假天数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[事假天数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[总请假天数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[总出差天数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[总加班天数][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
CREATETABLE[员工考勤表](
[员工编号][char](53)COLLATEChinese_PRC_CI_ASNOTNULL,
[当前日期][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[上班时间][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[下班时间][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[病假][char](10)COLLATEChinese_PRC_CI_ASNULL,
[事假][char](10)COLLATEChinese_PRC_CI_ASNULL,
[特殊加班天数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[正常加班天数][char](10)COLLATEChinese_PRC_CI_ASNULL,
[出差目的地][char](10)COLLATEChinese_PRC_CI_ASNULL,
[出差天数][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
CREATETABLE[员工调入信息表](
[员工姓名][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[考试成绩][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[调入理由][char](100)COLLATEChinese_PRC_CI_ASNULL,
[单位意见][char](100)COLLATEChinese_PRC_CI_ASNULL,
[备注][char](100)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
CREATETABLE[员工调出信息表](
[员工编号][char](53)COLLATEChinese_PRC_CI_ASNOTNULL,
[员工姓名][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[调出理由][char](100)COLLATEChinese_PRC_CI_ASNULL,
[单位意见][char](100)COLLATEChinese_PRC_CI_ASNULL,
[备注][char](100)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
CREATETABLE[用户表](
[用户名][char](53)COLLATEChinese_PRC_CI_ASNOTNULL,
[密码][float]NULL
)ON[PRIMARY]
GO
主要程序设计:
1Denglu.java:
登录界面的设计,设计3个标签分别记录地址、用户名、密码、设计两个明文文本框,分别输入地址和用户名,设计一个密文文本框,输入密码,保证输入的密码不可见,在登录后,就连接到数据库,并将连接保存到线程中,这样就保证了数据库操作的及时性和高效性。
2Caozuo.java:
主界面的设计,各个功能按钮、菜单的设计,在主程序中,利用线程技术,主程序界面能显示当前具体的日期时间,在未登录前,主程序的关键按钮和菜单项不可用,当判断到用户登录后关键按钮设为可用,保证了程序使用过程中的安全性。
3JDBC.java:
sqlserver2000数据库驱动,完成加载驱动、建立数据库连接、关闭数据库连接等功能,建立的数据库连接保存到线程中。
4BaseDao.java:
主要执行数据库语言插入、修改、删除等操作,发送数据库语言到数据库执行,执行成功后返回true,否则返回false。
5Dao.java:
继承BaseDao.java类,实现具体的每个表的数据库操作,包括查询、查询、修改、添加等功能,其中的删除、修改、添加继承BaseDao.Java类的方法。
6Permessage.java:
实现员工基本信息的管理界面以及功能的设计,在此要对登录用户进行判断,若是普通用户,只能使用查询按钮,只有管理员账户,才能进行各项操作。
7Work.java:
实现员工考勤信息的管理界面以及功能模块的设计,在此要对登录用户判断,若是普通用户,只能使用查询按钮,只有管理员账户,才能进行各项操作。
三.调试及测试
1、调试过程中遇到的主要问题及解决方法
在进行程序运行的时候,因为使用的数据库版本不一致,所以必须在机器上安装新的数据库驱动,并且对环境变量进行设置。
在数据库驱动加载成功以后,会出现操作界面,但是单击登录,程序停滞,并且会显示加载数据库失败,经检查发现,这是因为在数据库进行设置的时候没有对数据库登录用户的属性进行设置,需要对数据库访问和数据库角色进行设置,才能进行具体操作。
2、对设计和编码的回顾讨论和分析;
程序连接到本地或者远程数据库,这种机制对数据库的安全性起到了有效的保证,在程序中用户分为普通用户和管理员用户,权限分配合理,这样又保证了程序运行的安全性和数据库操作的安全性。
程序中的密码存在缺点,本次设计只使用float类型的密码,密码存在不健壮性。
在程序中对两次线程的使用,恰到好处,保证操作的及时性以及准确性。
在程序输出查询结果后放到二维表中,在将二维表放到对话框中。
3、程序运行的时空效率分析
①数据库登录连接后就一直保存在线程中,占用系统资源;
②时间显示中使用线程,占用系统资源
③数据库一直连接中,占用网络通信资源
4、测试数据集
四、经验和体会。
在这次课程设计中,对JAVA开发语言有了进一步的了解和掌握.确立好的实体模型是最基本的,一个好的实体模型会使数据库查询更加方便,数据冗余也会很小。
在建立数据库过程中,一些数据库语言掌握不是很熟练,只有通过不断的学习和练习,熟悉掌握宿主语言,充实自己的经验,才能逐渐独立建立好的数据库。
这次实验安排两个人一组,相互之间有所讨论,并在一些有分歧的地方交换了意见,最终达到一致。
通过这次课程设计,不仅仅对自己所学的Java知识和数据库有了更深一步的认识,并且还很好的培养了我们相互协作的能力,这对我们以后学习工作有所帮助。
附录:
主要源程序
操作主程序:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.io.*;
import.*;
importjava.util.*;
importjava.util.Date;
importjava.sql.*;
importjava.applet.Applet;
importjava.*;
publicclasscaozuoextendsJFrameimplementsActionListener
{
publicstaticImageicon,pic;//程序图标
publicstaticJLabelstatus;
publicstaticJButtonb1,b2,b3,b4,b5,b6,b7;
JLabeltime0,time1,time2,time3;
//建立菜单
JMenuBarjmenubar=newJMenuBar();
//建立菜单组
JMenustartmenu=newJMenu("开始(V)");
//建立菜单项
publicstaticJMenuItemb7item=newJMenuItem("登录(P)");
publicstaticJMenuItemb1item=newJMenuItem("系统人员信息管理(S)");
publicstaticJMenuItemb2item=newJMenuItem("员工基本信息管理(T)");
publicstaticJMenuItemb3item=newJMenuItem("员工考勤信息管理(X)");
publicstaticJMenuItemb4item=newJMenuItem("员工调动信息管理(G)");
publicstaticJMenuItemb5item=newJMenuItem("注销(C)");
publicstaticJMenuItemb6item=newJMenuItem("退出(Z)");
JMenuhelpmenu=newJMenu("帮助(H)");
JMenuItemhelpitem=newJMenuItem("帮助(H)");
Graphicsg;
//框架的大小
Dimensionfacesize=newDimension(1000,600);
JPaneldownpanel,timepanel;
GridBagLayoutgridbag;
GridBagConstraintsgridbagcon;
publiccaozuo()
{
Containercontentpane=getContentPane();//一般的AbstractWindowToolkit(AWT)
//容器对象是一个可包含其他AWT组件的组件。
contentpane.setLayout(newBorderLayout());
//添加菜单栏
startmenu.add(b7item);
startmenu.add(b1item);
startmenu.add(b2item);
startmenu.add(b3item);
startmenu.add(b4item);
startmenu.add(b5item);
startmenu.add(b6item);
jmenubar.add(startmenu);
helpmenu.add(helpitem);
jmenubar.add(helpmenu);
setJMenuBar(jmenubar);
//初始化时令停止服务按钮不可用
b1item.setEnabled(false);
b2item.setEnabled(false);
b3item.setEnabled(false);
b4item.setEnabled(false);
b5item.setEnabled(false);
//为菜单栏添加事件监听
b7item.addActionListener(this);
b1item.addActionListener(this);
b2item.addActionListener(this);
b3item.addActionListener(this);
b4item.addActionListener(this);
b5item.addActionListener(this);
b6item.addActionListener(this);
helpitem.addActionListener(this);
status=newJLabel("您好:
");
status.setFont(newFont("宋体",Font.BOLD,14));//设置标签中的文字为宋体、粗体、14号
status.setForeground(newColor(0,0,255));//设置标签中的文字为红色
status.setHorizontalAlignment(SwingConstants.CENTER);//设置标签中的文字居中显示
b1=newJButton("系统人员信息管理");
b1.setEnabled(false);
b2=newJButton("员工基本信息管理");
b2.setEnabled(false);
b3=newJButton("员工考勤信息管理");
b3.setEnabled(false);
b4=newJButton("员工调动信息管理");
b4.setEnabled(false);
b7=newJButton("登录");
b5=newJButton("注销");
b5.setEnabled(false);
b6=newJButton("退出");
time0=newJLabel();
time0.setFont(newFont("",Font.BOLD,12));
time0.setText("今天是:
");
time1=newJLabel();
time1.setFont(newFont("",Font.BOLD,12));
time1.setForeground(newColor(120,1,120));//设置标签中的文字为红色
time1.setHorizontalAlignment(SwingConstants.CENTER);//设置标签中的文字居中显示
time1.setText(Today.getDateOfShow());
time2=newJLabel();
time2.setFont(newFont("",Font.BOLD,12));
time2.setForeground(newColor(120,1,120));//设置标签中的文字为红色
time2.setHorizontalAlignment(SwingConstants.CENTER);//设置标签中的文字居中显示
time2.setText(Today.getDayOfWeek());
time3=newJLabel();
time3.setFont(newFont("宋体",Font.BOLD,14));//设置标签中的文字为宋体、粗体、14号
time3.setForeground(newColor(255,0,0));//设置标签中的文字为红色
time3.setHorizontalAlignment(SwingConstants.CENTER);//设置标签中的文字居中显示
newTime().start();//开启线程
Calendarnow;
inthour;
intminute;
intsecond;
now=Calendar.getInstance();
hour=now.get(Calendar.HOUR_OF_DAY);
minute=now.get(Calendar.MINUTE);
second=now.get(Calendar.SECOND);
time3.setText(hour+":
"+minute+":
"+second)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 报告