实习课程论文.docx
《实习课程论文.docx》由会员分享,可在线阅读,更多相关《实习课程论文.docx(37页珍藏版)》请在冰豆网上搜索。
实习课程论文
面向对象综合试训实习报告
题目:
企业人事管理系统
学号
姓名
专业班级
指导教师
实践日期
目录
一、综合训练目的与要求1
(1)训练目的1
(2)训练题目1
(3)基本要求1
二、综合训练任务1
(1)主界面的设计1
(2)工资编辑1
(3)工资调整1
(4)加班管理1
三、总体设计2
(1)总体设计思想2
(2)系统模块功能图:
2
四、详细设计说明2
(1)主界面设计2
(2)工资管理模块设计说明3
①工资编辑模块3
②工资调整模块3
③加班管理4
(2)程序缺陷5
五、调试与测试5
(1)工资编辑5
(2)工资调整7
(3)加班管理8
六、实习日志12
七、实习总结14
八、附录:
核心代码清单15
(1)对于工资编辑中查询和插入的封装代码15
(2)工资编辑模块代码17
①工资信息查询17
②工资信息插入19
③工资信息删除20
(3)工资调整模块代码20
①涨工资部分20
②降工资部分22
(4)加班管理模块代码23
①加班记录查询23
②加班记录插入25
③加班记录删除26
一、综合训练目的与要求
(1)训练目的
①本系统为企业人事管理系统,目的在于加强对员工的管理,形成纽带,以点带线.实现对员工的跟踪与控制,使部门与部门之间加强联系,形成上下一体;
②学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程;
③学会在短时间内运用一门语言并用于实际,扩展知识面,加强了调试的能力;
④通过此次开发,了解了ECLIPSE与JDK,JRE的安装与环境配置,调试环境与运行环境;
⑤掌握应用JDBC事务连接数据库与Java程序的连接。
(2)训练题目
企业人事管理系统
(3)基本要求
利用面向对象思想实现企业人事管理,应该具有人事信息、员工业绩等管理功能。
二、综合训练任务
我主要负责完成如下任务:
(1)主界面的设计
(2)工资编辑
①工资信息查询;
②工资记录插入;
③工资记录删除;
(3)工资调整
(4)加班管理
①加班信息查询;
②加班记录插入;
③加班记录删除;
三、总体设计
(1)总体设计思想
我把工资管理模块主要分为职工工资编辑、工资调整合加班信息管理三个子模块,以方便企事业单位对职工工资进行统一化管理。
(2)系统模块功能图:
四、详细设计说明
(1)主界面设计
主要运用SWT技术设计主界面,为了让主界面更加的美观,我使用如下代码向界面中引入了图片。
label.setImage(newImage(null,"images/1.jpg"));
(2)工资管理模块设计说明
①工资编辑模块
⑴功能
⑵功能
实现对每个职工的工资信息查询、插入、删除。
⑶程序设计思想
我本来想把查询、插入、删除都用Table表实现,但由于我不懂如何对Table表进行编辑和刷新,就将插入和删除分别写成一个类,然后和查询界面连接起来,实现其功能的完整性。
主要设计的类有:
mysalary:
包括类wageop中的属性以及方法的构造函数;
wageop:
封装工资查询、插入、删除信息。
WageCheeck:
实现工资查询;
.WageInsert:
实现工资的插入;
.WageDelete:
实现工资的删除等。
②工资调整模块
⑴
图3工资调整模块功能图
⑵功能
实现对员工工资的上涨与下降。
⑶程序设计思想
主要设计了WageUpdate类,通过涨与降两个监听事件的添加实现对工资的调整。
③加班管理
⑴
图4加班管理模块功能图
⑵功能
实现对加班信息的查询、加入、删除。
⑶程序设计思想
本模块和工资编辑模块遇到了同样的问题,Table表不能编辑。
所以我还是将插入和删除分别写成一个类,然后和查询界面连接起来。
以实现功能的完整性。
主要设计了如下类:
stayup:
实现对加班信息的查询;
ExtraInsert:
实现对加班信息的插入;
ExtraDelete:
实现对加班信息的删除。
然后把加入与删除类与类stayup界面连接实现加班管理。
(2)程序缺陷
不能对table表进行编辑和刷新,都是通过把插入和删除分别封装在一个类里面,使得系统简洁性打了折扣。
五、调试与测试
(1)工资编辑
①工资信息查询结果如图5所示:
图5工资信息查询结果
②工资信息插入如图6所示:
⒈如果该公司不存在此编号员工,则无法插入此名员工高的工资信息如图7:
⒉如果不存在此记录,将工资信息将删除失如图8所示:
(2)工资调整
①如果不存在此编号员工,将无法对员工工资进行调整如图9所示:
图9不存在异常处理
②如果要下降的金额小于该名员工的基本工资,也无法对员工工资进行调整如图10所示:
图10工资修改常处理
(3)加班管理
①加班信息查询结果如图11所示:
图11加班信息查询
查询过程中出现了“Illegaloperationonemptyresultset”的错误,经检查发现是另外一个组员删除了员工信息表中3号员工的记录,但工资表中信息却没有删除,所以因查不到3号员工的姓名而导致出现运行错误。
之后经我们修改了所有表的约束完整性,使此错误不在发生。
②修改后加班信息的查询结果如图12所示:
图12异常处理后工资信息查询结果
③加班记录插入如图13所示:
图13加班记录插入
④如果不存在此员工信息记录,操作将无法进行如图14所示:
图14插入空异常处理
⑤加班记录删除如图15所示:
图15加班记录删除
⑥如果不存在此员工信息记录,操作将无法进行如图16所示:
图16删除空异常处理
六、实习日志
7月5日星期一
今天是实习的第一天,心里就有点慌,因为平时编程序的时候就很吃力。
今天早上,在老师的配合下,我们确定了各自的实习任务,并组内进行了讨论,我们了解了“企业人事管理系统”这个实习题目的要求,并对其有了一个初步的了解。
企业管理系统主要是就是为了方便企事业单位对其员工及其员工工资、员工业绩的管理。
下午,我们通过商议,确定了各自的任务,我做的是主界面的设计和工资管理模块。
7月6日星期二
上午我主要完成了主界面的设计。
下午我主要完成了工资管理的主界面设计。
都运用了SWT技术。
还有一个收获就是我们在做界面涉及到图片时,不会对图片进行处理,最后在冯妍老师的指导下,我们用photoshop对图片进行处理,进而也熟悉了photoshop的基本操作。
也使得我们的界面更加美观。
7月7日星期三
今天开始了编程,上午,在老师和同学的指导下,同时经过查阅资料,首先对工资管理模块有了一个初步构想。
下午,开始写工资管理中工资编辑分模块程序的时候,由于对有些Java知识不懂,所以有些想法无法用Java代码准确的表达出来,但起初还是存在很多错误和警告。
我开始感到了迷茫。
可能是一开始自己准备的参考资料不足,无法在遇到问题时有效的利用参考资料解决,遇到不懂的问题和不会用程序语言表达的问题时,只能留在那里,无法解决,但经过老师的指导,再加上和组内同学一起反复检查及利用参考书,最终完成了这部分的代码编写。
7月8日星期四
今天我完成了工资管理中工资调整和加班管理的代码编写。
过程中也遇到了问题,比如数据库和就Java程序的连接,没捕捉异常等。
最后,在老师的指导下,终于使代码可以编译正确,我深深的体会到了:
成功就在于坚持,同时我也感到了一丝成功的喜悦。
对后面的任务充满了足够的自信。
不过我的程序功能太少了,离老师的要求还有距离,还需进一步完善。
7月9日星期五
我主要是对所有代码进行集成调试,基本上调试成功。
但当我下午再次运行程序时,工资信息和加班信息查询部分总是报错。
经再三检查,才发现是员工信息表中记录和加班表以及工资表中记录不符。
经改正后,程序最终运行成功。
7月12日星期一
渴望新的一天来临,珍惜新的收获。
随着实习一天天进行,不,同时也对界面进行了进一步的美化,给每个功能界面都加上了配合其的图片,使其显得更加漂亮,吸引用户的眼球.同时,我也知道了原来Java语言功能如此强大,而且包含许多技巧和方法.
7月13日星期二
今天我们配合刘新园完成主界面和各个子模块的连接。
整个过程中,通过与组内同学们进行交流,我觉得自己的知识还有很多欠缺,以后需要更加努力的学习。
期间,有遇到困难时的苦,当然也有解决问题之后的喜,更有在得到老师和同学们帮助时感到的温暖。
在学习知识的同时提高了同学们之间的互助意识和创新意识。
7月14日星期三
今天我开始了《面向对象综合实训报告》的撰写,整个程序算是基本完成了,我们大体上完成题目的设计要求。
在写报告的时候我想要说的话很多,因为毕竟我们是第一次分组作响项目,以前的实习都是一个人一个题目,所以感触特别深。
今天我完成了报告的前五部分。
感觉收获还是很大的。
7月15日星期四
今天中午我们就要所有的源程序代码和《面向对象综合实训报告》,大家都在做最后的努力,力求达到最好,并希望得到老师的宝贵建议。
上午,我在写实习总结的时候,我想到实习期间我们有过开心、有过挫败、也有过情绪低落,但我们最终都能够很好的调整自己,这次综合实训给我以后的工作和学习都将会带来很大的帮助。
下午,在老师给建议的基础上,我们在对其进行修改。
自己也为明天的答辩做准备,在提高动手能力的同时,希望明天自己能以精练的语言让老师和同学们了解我的程序设计思想和逻辑设计。
希望明天自己能以最好的表现给这次实习划上一个完美的句号,以回报老师和同学们对我的帮助。
总之,这次实习收获很大。
七、实习总结
综合实训心得与体会
经过两个星期的设计核开发,企业人事管理系统基本开发完毕,我深有感触,也是我更进一步的认识到Java语言的功能强大,让开发者很容易理解,做出的效果也好。
从选取企业人事管理系统这个题目到对企业人员基本信息了解,从界面设计到应用程序设计,再到系统程序集成调试,再到数据库与Java程序的连接,每一步都很重要,但本系统没有使用到触发器和存储过程,在形式上有些单调。
但其功能基本符合用户要求,能够完成企事业单位各种信息的查询、增加、删除、修改。
面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计泛型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。
它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维模式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象。
但是由于时间较短,所以系统还有许多不尽如人意的地方,设计的过程中也遇到了比较多的问题,比如在写语句时由于疏忽少写一个单词,那么编译就不会通过,所以在开发的过程中要特别的慎重、仔细;用户界面不够美观,出错处理不够等多方面问题。
这些都有待进一步改善。
七月十六号我们提交了所有程序源代码和综合实习报告,在老师给我们提出宝贵建议的基础上,我们继续修改,以力求达到更好。
最终,我们将和老师一起分享我们的程序,向老师和同学们介绍自己编程的思想、原理和方法,以提高我们的动手能力和语言表达能力,感触颇多。
回想我们组的五个人在一起实习的两周时间里,有过开心,有过伤感,有过挫败,但我们最终克服了所有困难,特别是我作为组长,他们的鼎力配合让我感到特别感动。
特别是中间调试程序时,因为实习了好几天,大家可能都累了,都没有了热情。
我当时真的不知该怎么办。
但经过我们之间交流、互相鼓励后,到了下午,每个人的情绪就明显好了许多。
所以我要特别对我们的组的同学表示感谢。
当然我们还要特别感谢师冯妍老师,实习期间,她一次又一次耐心的为我们解疑答惑,给了我们很多帮助。
通过这一次的综合试训,我学到了很多的知识,不管是理论还是实践都有了更进一步的认识。
也提高了学生们的程序调试技术和软件开发能力以及开发较大程序的方法,同时培养了同学之间相互合作的团队精神和同学们的创新意识。
所以,我们应该总结经验,为自己树立目标,在以后的学习中积极探索、奋勇拼搏,不断地去提高自己,完善自己。
努力掌握好本领,来报答学院对我们的精心栽培。
八、附录:
核心代码清单
(1)对于工资编辑中查询和插入的封装代码
packagesalary;
importdatabase.DBconnect;
importjava.sql.*;
publicclasswageop{
DBconnectdb;
PreparedStatementpstmt;
ResultSetrs;
publicwageop()
{
db=newDBconnect();
pstmt=null;
rs=null;
}
publicResultSetquery()
{
Stringsql="select*fromsalary";
try{
pstmt=db.conn.prepareStatement(sql);
rs=pstmt.executeQuery();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnrs;
}
publicintinsert(mysalarymy)
{
intflag=0;
Stringsql1="select*fromsalarywhereid=?
andyear=?
andmonth=?
";
Stringsql2="insertintosalaryvalues(null,?
?
?
?
?
?
)";
try{
pstmt=db.conn.prepareStatement(sql1);
pstmt.setInt(1,my.getId());
pstmt.setInt(2,my.getYear());
pstmt.setInt(3,my.getMonth());
rs=pstmt.executeQuery();
if(rs.next())
{
flag=1;//说明这个月这个员工的工资情况已存在
}else
{
pstmt=db.conn.prepareStatement(sql2);
pstmt.setInt(1,my.getId());
pstmt.setInt(2,my.getSalarybase());
pstmt.setInt(3,my.getBonus());
pstmt.setInt(4,my.getExtrawage());
pstmt.setInt(5,my.getYear());
pstmt.setInt(6,my.getMonth());
pstmt.executeUpdate();
flag=2;//插入成功
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnflag;
}
publicvoidcloses()
{
try
{
if(rs!
=null)
rs.close();
if(pstmt!
=null)
pstmt.close();
db.closeDB();
}catch(SQLExceptione)
{
e.printStackTrace();
}
}
}
packagesalary;
importjava.sql.Date;
publicclassmysalary{
intid;
intsalarybase;
intbonus;
intextrawage;
intyear;
intmonth;
publicmysalary(intid,intsalarybase,intbonus,intextrawage,intyear,
intmonth){
super();
this.id=id;
this.salarybase=salarybase;
this.bonus=bonus;
this.extrawage=extrawage;
this.year=year;
this.month=month;
}
publicintgetId(){
returnid;
}
publicintgetSalarybase(){
returnsalarybase;
}
publicintgetBonus(){
returnbonus;
}
publicintgetExtrawage(){
returnextrawage;
}
publicintgetYear(){
returnyear;
}
publicintgetMonth(){
returnmonth;
}
}
(2)工资编辑模块代码
①工资信息查询
button1.addSelectionListener(newSelectionAdapter(){
publicvoidwidgetSelected(SelectionEvente){
DBconnectdb=newDBconnect();
ResultSetrs=null;
wageopww=newwageop();
try{
rs=ww.query();
while(rs.next()){
Statementstmt=db.conn.createStatement();
ResultSetrrs=stmt.executeQuery("selectnamefromemp_infowhereid="+rs.getInt
(2));
if(rrs.next())
{
TableItemite=newTableItem(table,SWT.NONE);
intrresult=rs.getInt(3)+rs.getInt(4)+rs.getInt(5);
intyear=rs.getInt("year");
intmonth=rs.getInt("month");
Stringdate=year+"-"+month;
ite.setText(newString[]{
rs.getInt
(1)+"",
rrs.getString
(1),
rs.getInt(3)+"",
rs.getInt(4)+"",
rs.getInt(5)+"",
rresult+"",date});
}
stmt.close();
rrs.close();
}
}catch(SQLExceptione1){
e1.printStackTrace();
}finally{
try{
if(rs!
=null){
rs.close();
}
}catch(SQLExceptione1){
e1.printStackTrace();
}
}
db.closeDB();
ww.closes();
}
});
②工资信息插入
button.addSelectionListener(newSelectionAdapter(){
publicvoidwidgetSelected(SelectionEvente){
if(id.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"必须要输入编号");
return;
}else{
try{
intiid=Integer.parseInt(id.getText().trim());
intbase=Integer.parseInt(jiben.getText().trim());
intprizz=Integer
.parseInt(prize.getText().trim());
intes=Integer.parseInt(extra.getText().trim());
intyyear=Integer.parseInt(year.getText());
intmmonth=Integer.parseInt(month.getText());
mysalarymy=newmysalary(iid,base,prizz,es,
yyear,mmonth);
wageopww=newwageop();
intss=ww.insert(my);
if(ss==1){
JOptionPane.showMessageDialog(null,
"此员工该月工资已存在!
");
id.setText("");
jiben.setText("");
prize.setText("");
extra.setText("");
}elseif(ss==2){
JOptionPane.showMessageDialog(null,"插入数据成功");