面向对象课程设计论文_第1页
面向对象课程设计论文_第2页
面向对象课程设计论文_第3页
面向对象课程设计论文_第4页
面向对象课程设计论文_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、is responsible for Organization training, and implementation, and check; 12, master workshops annual economic indicators of implementation, reporting to financial health on a regular basis; 13, is responsible for the daily oversight in the allocation and use of funds; 14, responsible for all Departm

2、ent statistics, collecting, sorting, reporting of accounting reports; 15, the company responsible for the supervision of the Treasury, including the third grade library, a library of materials, products for regular inventory handling, sampling, storage monitoring, the picking work, and provide the i

3、nventory report, and make the appropriate accounting treatment; 16, responsible for waste and recycling, transportation and settlement; 17, is responsible for all product sales accounting functions; 18, responsible for the companys raw materials, auxiliary materials, account management; 19, is respo

4、nsible for the flow of control of all assets of the company, according to the changes in accounting treatment of fixed assets and assets to the departments responsible for clearing, settlement and asset monthly report submitted to the asset management section of the Finance Department of the company

5、 organized on a company-wide special inspection of asset management; 20, according to the companys business activities, monthly projects involved in the business activities of the company (including expenses, business management, cost control, cash flow, revenue, etc) financial analysis, provide a b

6、asis for decisions for the company, the business of the company responsible for monitoring, forecasting and risk analysis; 21, responsible for the settlement of transactions with the Bank; 22, is西北农林科技大学信息工程学院企业人事管理系统实习报告 学 号09108082姓 名刘新园专业班级计算机083班指导教师冯妍 完成日期21目 录一、综合训练目的与要求11.训练目的12.要求1二、综合训练任务11

7、.任务描述12.技术路线13.进度安排1三、总体设计21.功能设计22.接口设计4外部接口4内部接口43.补救措施4四、详细设计说明41.考勤信息管理42.奖罚信息管理53.设计思路5五、调试与测试51.考勤信息管理5 查询结果显示5插入考勤记录7删除记录9更新记录102.奖罚信息管理11六、实习日志12七、实习总结13八、附录:核心代码清单14一、综合训练目的与要求1.训练目的一直以来,程序设计实习是学生掌握一门编程语言的必要途径,能够很好的激发学生的创新能力,也有利于学生全面了解开发系统的各个过程,对于知识的理解也会更加深刻。本次实习是面向对象编程设计。实习的主要目的包括:l 通过训练能够

8、加深对Java的认识,掌握其基本操作,加深对面向对象思想的理解。l 对于SWT design 运用要能够熟练也可以了解经常用到但是没有学过的组件,掌握利用现有知识开发程序的基本思路和方法。 l 能够熟练掌握JDBC技术,了解系统开发的基本流程。l 加强团队合作的精神。2.要求l 体现可视化编程的风格,界面尽可能漂亮,操作要尽量简单。l (2) 利用面向对象的思想完成系统的开发。二、综合训练任务1.任务描述 我们的任务是企业人事管理系统,包括三个模块,员工管理、工资管理和业绩管理,员工管理任务比较多而且繁重,由两个人完成,工资和业绩管理分别由一个同学完成,另外一个同学设计数据库,根据我们的需要更

9、改数据库的内容。 我做系统中考勤信息和奖罚信息的管理,主要包括信息的编辑和查看,能通过按钮或者是工具栏展示功能,要添加相应的监听事件,而且对于违法操作要有相应的提示信息。各个界面之间能够很好的衔接到一起。待各个模块设计完成之后,我负责将各个部分综合到一起,最后来完成系统的整体测试。2.技术路线设计过程中用到的技术包括SWT可视化界面,远程访问服务器的mysql数据库,使用JDBC技术完成mysql 与java程序的结合,完成系统的设计。综合各个模块时,在征求原始创建人同意的情况下,统一各个模块代码和界面设计的风格,使系统能不断完善。3.进度安排进度安排如下: 7-5:功能的大体设计,包括功能描

10、述,以及对于过程中会用到的知识的复习。 7-67-7:完成考勤信息的添加、修改、删除和查询; 7-87-9:完成奖罚信息的添加、修改、删除和查询;7-107-11:正常公休; 7-127-13:完成各个模块的综合,调试,统一设计风格; 7-147-15:撰写课程设计论文,随时修改程序,不断完善; 7-16:答辩 三、总体设计1.功能设计 我的任务大体也可以分为两个小模块,即考勤管理和奖罚管理。总体功能如下图所示:图1 功能模块图 两个小模块功能比较相似,而且都会放到一个单独的界面去实现。对于考勤信息管理,有一个公共的管理界面,可以调度到各个功能界面如图2所示,而对于奖罚信息的管理,则将显示界面

11、作为主界面,上面承载着其他功能的处罚按钮,如图3所示。做之前我们商量好,主界面中要有跟其他功能连接的接口,以便于最后将各个模块放到一起。我做的这两个都属于业绩管理的范畴,所以我要做一个界面,能够和主界面相连,而且还可以分别链接到这两个子功能模块。实质上各个功能模块是不会相互干扰的,这样写起来都比较方便,只是有一点比较麻烦,mysql中好像没有办法设置外键,这样,我们在进行增删改的时候就要兼顾着要考虑外键了。不过我想用程序来控制应该也不会很难的,所以最后还约定好,一定要用程序来约束界面操作,保证数据的完整性。同时,我还提醒大家,要注意事务的完整性,要记得哪些地方该用到事务的完整性,保证数据库中数

12、据的安全性和正确性。图2 考勤信息管理主界面图3奖罚信息管理主界面2.接口设计外部接口该系统界面比较清晰,从各个功能界面均可回到主界面。 内部接口远程访问数据库,实现数据的共享,动态更新数据库,完成各个模块之间的联系。我要访问的包括请假条信息表和考勤表,要用到员工信息,所以员工信息的修改也会对我最后要显示的数据造成影响。数据共享便使得可以保证数据库不断保持更新。3.补救措施信息提示:主要包括无数据输入、输入数据不合法、输入的数据不足以完成某些处罚事件等,都会用对话框来进行提示,然后退出操作。对于正确的操作,也会用对话框来提示操作完成的信息。具体的形式如调试与测试中的截图。四、详细设计说明 1.

13、考勤信息管理 该模块又包括了数据的添加、修改 、查看和删除,操作的步骤基本一致,下图以添加信息为例,展示了操作的基本步骤。图4 添加考勤信息流程 对于查看信息,是用一个table来实现的,如果查询的月份没有记录,就会给出相关的提示。但是缺点就是只能查询一次,后面再进行查询的时候无法刷新。删除信息是按条件来进行的,可以按照时间查询,也可以按照员工编号查询,当然也可以按照时间编号查询(当然这样肯定至多有一条记录),选择的时候也进行了对违法操作的处理,用户可以根据提示来完成相关操作。2.奖罚信息管理奖罚信息包括信息的查看、删除、修改和添加。与考勤信息不同的是,设计思路上有所改变,该模块摒弃了考勤中查

14、询的概念,设计成了直接显示所有信息(用table显示)。如图3-3 所示。为了便于显示,我添加了一个刷新按钮,因为表格无法编辑是最大的障碍,而且无法让它自己来清除以前的信息,添加刷新功能是通过链表来记录奖罚单的编号,每一次都要检查内容有没有在链表中,如果没有则添加进去,但是这个刷新只能刷新刚添加的信息。对于修改和删除都是直接将这个显示隐藏,待修改或者是删除完成后,直接回到了显示界面。这样可以方便的查看功能的完成情况。3.设计思路面向对象要求将方法抽象出来,只进行调用。但是在有些情况下,这样做要处理的异常就会少了一些。所以,我一部分用了功能是通过调用函数来实现的,还有一部分功能就是直接在界面的设

15、计过程中完成的函数。包括一个DBconnect类,是专门用于数据库的连接和关闭的,凡是涉及到来连接数据库的一律来调用这个类。专门设计这个类是为了实现代码的重用。而且为了保证数据库打开了要随时关闭,调用这个类也是很安全的。这个类的使用也确实带来了很多的好处,每次如果服务器换了,只需要改变一个地方,代码就可以正常运行了。类Attend,用于封装关于考勤中的一些信息,但是不全,因为设计的初衷只是为了能够用一个链表来存放查询出来的所有记录。类Operate,封装的是关于考勤中删除、添加和查看的方法,只是为了顺应面向对象的概念而已,也没有 发现跟设计放在一起有多大的区别。其他的方法就和界面放到了一个地方

16、,因为这样使用起来比较方便,而且处理异常也很灵敏,不用考虑那么多的因素。五、调试与测试 1.考勤信息管理 查询结果显示这部分使用边个来显示的。如果点击图2中的“查看考勤”按钮,会直接进入查询界面 ,如图5所示。 图5 用图表显示查询结果在年月的选项中选择相应的日期,如果没有结果会给出提示,否则会直接显示如图5-3,图5-4所示。图6 没有记录的情况图7 有结果可显示的情况 但是,该表格无法刷新,无法编辑,只支持一次查询 ,如果重复查询,每次结果会累积,这是一个不足之处。目前也没有找到比较合理的解决方法。插入考勤记录点击图2的“添加记录”会进入添加记录的页面。如果输入的用户编号不是整型(如图8)

17、,或者是无效的(如图9),都会给出相应的提示。而且如果“实到天数”中添加的不是整型数据(如图8)会有提示信息,超过了31天也会给出提示(如图10)。图8 输入格式不正确的数据图9 输入用户编号无效 图10 天数不符合实际因为每个月每个员工至多只能有一条记录,所以如果要想一个月有关于某个员工的两条记录是不可能的。提示结果如图11所示 。图11 已有记录 图12 插入成功提示 如果添加成功也会有如图12所示的提示,然后点击返回,可以回到考勤信息管理的主界面。删除记录进入删除界面后,三个条件都是不可以编辑的,只有选择了条件之后才可以编辑。图13 删除界面原始状态点击时间之后,年份和月份便成为可以编辑

18、的了。选择要查询的时间,便会有相应的运行结果。如果存在要删除的数据,则会出现图14所示的运行结果。如果没有符合条件的记录,也会给出相应的提示信息。 点击综合之后,三个都是可编辑的了,输入条件,运行结果如图15所示。对于没有删除数据或者是输入异常的,因为篇幅有限,就不再重复了。图14 按时间删除的运行结果图15 按时间编号删除的运行结果更新记录图16所示为存在记录,且输入无违法数据的执行结果。对于输入有错或者是无记录的,都会像上面的几个功能一样,会有相应的提示。只是,这个必须要先输入查询条件,查询之后下面三项才会成为可编辑的。图16 更新记录执行结果2.奖罚信息管理因为这两个模块中对于无记录和输

19、入违法数据的处理方式是一样的,提示信息也相同,所以,下面将只演示正确的运行结果。如图3所示,奖罚管理的主界面就是一个显示所有奖罚信息的表格,其他功能按钮也都在这个界面上。图17所示为修改记录的运行结果,与考勤信息中的设计思想是一样的。查询完之后才可以修改。点击更新之后会直接返回如图3所示的主界面,此时显示的将会是最新的信息。图17 修改奖罚信息 删除记录与更新记录是一样的,其实是可以写到一个界面上的,但是那样按钮会多一些,还是放在不同的界面来完成吧。添加信息后可以点击刷新,会自动增加刚添加的数据。这个界面没有让直接返回主界面,为的是展示刷新的作用。六、实习日志 2010-7-5: 今天是第一天

20、,感觉挺新鲜的。组长根据大家的选择,衡量每个人的能力,很快就把任务分完了,并且我们开始自己分析任务的实施方案及进度安排。因为数据库还没有做好,所以我能做的也就是想想会用到什么技术,怎样设计界面。已经确定是用java 和mysql来做了。下午的时候,数据库已经做得差不多了,我们已经可以连接到主服务器去访问数据了,只是因为业务比较多,数据库会随着我们的需要不断作调整。2010-7-6 不知道为什么,突然感觉任务很紧。因为开始的时候忽略了一些细节,现在突然问题不断,赶紧把进度重新调整了一下,把任务时间放长了一些。我怕要是真的没有按进度完成可就会影响到整体的进度了。因为要访问服务器,要是老是去问做数据

21、库的同学一些细节,实在是太麻烦了,我想到以前听说过可以在lombozeclipse查看数据库的内容,而且在现在用的eclipse可以看到database explore标志,我想应该行吧。试了一下,结果还不错,我就赶紧告诉了同组的同学,这样大家就方便了许多,做数据库的同学也不用一遍一遍去解释了。以前没怎么接触过那么长那么混乱的代码,所以如果出了错就很头痛,那么长要想找错实在是太难了。不过幸好都差不多的内容,对JDBC我也是很有信心,倒是可以查出来,不过很让人烦。我最放在心上的就是,打开了一定要关闭。我虽然没有碰到过不关的后果,但是,老师们都特别强调其重要性,那我也就很小心的记下了。2010-7

22、-7 为了要将要查看的内容全部显示出来,我正在想用什么方法来实现。想到过Table,但是我从来没有试过,先放一边吧。那就让它有个向上向下的的按钮,可以一直往下去查询,那既然要可以向上也可以向下,而ResultSet只能向下指,所以还是把它放到一个数组中把,方便用索引值来控制要显示项编号。当然想想这样做也确实不是很科学,提前开辟空间,说不准就会遇到越界的危险,即使不越界,也会有空间的浪费。 上午基本上把删除和查看全都做好了,剩下的是修改和删除了。应该差不多的,所以我想把这两个任务写到一个界面里面,可以方便一些。 想是一回事,做又是一回事,总感觉把两个业务写在一起会使程序混乱,所以,我决定还是分开

23、来实现。因为有前边两个的基础,做起这两个来轻松了一些,基本功能算是实现了。2010-7-8老师来检查进度的时候,把我所有有疑问的地方都给提出来了,因为这些在设计方面确实不是最优的,比如说多条结果应该用Table了,对于输入的信息,因为数据库没有做相应的表间联系,就要在程序中加以限制等。老师一句话让我有晴天霹雳的感觉:“你看看要不重做吧!”我三天的劳动成果啊,就这样被否定了。我分析了一下,时间有限,我的任务还有很多,重写是不可能的了,只能是来优化。上午老师给我找了个同学来教我Table的用法,我看了一下,挺简单的,就回来做,可是弄了很长时间,就是只能显示不能编辑。下午同样尝试了很长时间,可是依然

24、是没有结果,算了,既然这样,那我就只好把其他功能分开写了,也只能这样了。而且,其他几个功能中,将年月的选择给限制了,对于外键也完成了程序查找和限制。这个考勤暂告一段落,要开始下一个任务,奖罚信息的相关操作了。2010-7-9 今天开始尝试着写奖罚情况的功能,我现在想尝试着用不同的方式来实现我想要的功能。但是很失望的是,因为一方面是考虑的因素太多,受到的限制也是挺多的。另一方面就是因为同学来找我,因为前几天我给他说过不用数据结构而是用数据库中的数据通过递归算法来实现。现在他攒了一大堆的疑问来问我。我只是见过别人用过这个算法来解决类似的问题而已,自己也从来没有实地的做过。他问我,我也不敢肯定我说的

25、到底对不对,能不能行得通。只能是用事实来说话。我们一边商量着,我一面解释着我的思路,弄了一个多小时,终于算是搞定了。但是,我的思路却被打断了,做的时候挺慢的。不过还算可以吧,因为不想老是翻工了,一气呵成就算了吧。下午我把所有的功能都放到了一个面板上,因为我一直觉得那样做不安全,所以设了不少的限制,可以让自己的数据库尽量安全。限制还剩下删除一点没写,关于修改还剩一些扫尾工作。2010-7-12因为周六日加了一天的班,基本上把进度赶上了。今天把几个人的程序综合到了一起,当然大体上还是差不多的,把数据库的连接都用一个类来完成,操作的模式统一了。还有就是做了一些小地方的优化。如果可以用下拉框或者是日期

26、组件的尽量用,如果操作不了,那也没有办法,只能按照最原始的办法来处理。2010-7-13早晨又把代码检查了一遍,凡是能进一步完善的,我都尽量去做,结果把DateTime组件还有单选按钮、下拉框全都加了进来,对于几个控件是有些陌生的。在swing中倒是学过,可是那里面的函数与SWT里面的都不一样,重新去找真的好费时间啊!开始时是我自己在做,可是因为界面上的控件有些多,而我不是负责这个功能实现的,看那些组件就头晕,可是又没有人愿意来帮我,大家都在写论文了。也许我们进度有些慢了,好多组都在写论文了,而我们这里程序还有问题。我也有些着急,可是总不能不管程序直接去写论文啊?最后组长一直安慰我,其实我也慢

27、慢意识到是因为不知道那几个组件怎么用才耍脾气的。想想真对不起大家,但是又不好意思道歉,只能化愧疚为力量,来完善我们的系统了。下午差不多把界面设计好了,只是还有几个地方设计不是很合理,尽量调试吧。把所有图片的地址都改成了相对地址了,这样虽然不能预览,但是运行的时候还是很好的2010-7-14开始写论文了,又是总体设计详细设计的,恨没有办法把自己的想法用文字还有图片表现出来。也是尽量在网上搜索一些模板,但是帮助很小,还得靠自己想了。下午感觉几个地方不太对劲,开始去修改一些异常,老师还有好几个同学都说我,什么时候了,还不赶紧写论文。我就是紧不起来,如果程序我不满意的话,我也没有心情写论文了。改了2个

28、小时,不想改了,还是要继续写论文了,把我的想法展示出来。2010-7-15今天是实习最后一天了,也是论文和程序定型的时候。昨天晚上想到处理日前控件不显示正确结果的办法了。一会儿也改完了。还有很多地方可以完善,时间不够了,只能是做什么样算什么样子了。老师又提到了面向对象的概念,我方才想到,我只有一个模块是真正用到了面向对象的知识,因为要处理的情况太多,都抽象到一个类总是感觉处理不了那样的情况。七、实习总结 这次实习用到的大多是JDBC和SWT中的知识。好多同学用的都是Swing,因为SWT没有怎么讲过。不过用了这两周确实发现,SWT和swing还是有很多区别的。像我遇到的最大问题就是table不

29、可编辑,但是听说JTABLE就好操作的很。但是,table有它自身的有点,它会自动增加滚动条。不过,实习中也确实在尝试着使用我从来没有用过的组件。像用过messagebox,可是那个弄出来太“简陋”了,我不知道怎么样来“打扮”它。但是还有像datetime组件,我没有办法让它显示理想的数据,只能想别的办法来弥补这个缺点,这样势必会影响到功能的实现。 遇到问题要积极的去寻找解决方案,不能怨天尤人,这是我一直以来经常对自己说的一句话。这次也是一样。因为代码比较多,比较乱,开始遇到错误的时候老是发怵,后来也习惯了,而且发现每次就那几个错误,慢慢每个错误我都想到了不错的解决方案。最不怕看见的就是出错信

30、息了。我不能保证我的代码是很好的,但是我可能保证其功能是齐全的,安全性和可行性方面我也下了很大的力气去完成。不过,在界面布局方面我可不得不承认是外行了。不知道该怎样做才能既可以使界面漂亮,又不会喧宾夺主,把人们的注意力分散。两周以来准时上下班,日子过的忙碌而充实,这样挺好的,比上课可好多了。把自己所学的知识展示出来,确实不错。这样的实习意义挺大的,不过要是能少一些书写报告之类的,多放些经历在操作上就更好了。总之,两周以来,我们算是工作认认真真吧,虽然做出的系统还是有很多缺点,但是这两周我们已经尽心尽力在做了。八、附录:核心代码清单Attend.javapackage beans;public

31、class Attend public int id;/编号 public String name;/姓名public int actual; /出勤天数public String note;/评估public int takeoff;/请假天数public Attend(int id, String name, int actual, String note, int takeoff) super();this.id = id; = name;this.actual = actual;this.note = note;this.takeoff = takeoff;DBcon

32、nect.javapackage database;import java.sql.*;/* * 该类完成的是数据库的连接和关闭,因为每个操作都会使用到数据库的开和关,为了使代码可以复用,把这个专门封装成一个类,以方便其他类 * 直接进行调用* */public class DBconnect public Connection conn = null;public DBconnect()try Class.forName(com.mysql.jdbc.Driver);String url = jdbc:mysql:/3:3306/test;conn = DriverMa

33、nager.getConnection(url,root,123); catch (ClassNotFoundException e) e.printStackTrace();catch(SQLException e)e.printStackTrace();public void closeDB()if(conn!=null)try conn.close(); catch (SQLException e) e.printStackTrace();Operate.javapackage attendance;import database.DBconnect;import java.sql.*;

34、import org.eclipse.swt.SWT;import beans.Attend;public class Operate DBconnect db ;PreparedStatement pstmt;ResultSet rs ;public Operate()db = new DBconnect();pstmt = null;rs = null;public ResultSet query(int year,int month)String sql =select * from attendance where year =? and month =?;try pstmt = db

35、.conn.prepareStatement(sql);pstmt.setInt(1, year);pstmt.setInt(2, month);rs = pstmt.executeQuery(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return rs;public int insert(Attend att,int year,int month)int id = att.getId();int flag = 0;try Statement stmt = db.conn.cre

36、ateStatement();ResultSet rrs = stmt.executeQuery(select * from emp_info where id=+id);if(rrs.next()String sql =select * from attendance where id =? and year =? and month=?;pstmt = db.conn.prepareStatement(sql);pstmt.setInt(1, id);pstmt.setInt(2, year);pstmt.setInt(3, month);ResultSet srr = pstmt.exe

37、cuteQuery();if(!srr.next()pstmt =db.conn.prepareStatement(insert into attendance(aid,id,year,month,actual,notes) values(null,?,?,?,?,?); pstmt.setInt(1, id); pstmt.setInt(2, year); pstmt.setInt(3, month); pstmt.setInt(4, att.getActual(); pstmt.setString(5, att.getNote(); pstmt.executeUpdate(); flag

38、=3;/插入成功elseflag = 2;/该月的考勤已经存在了srr.close();elseflag = 1;/输入的用户编号无效stmt.close();rrs.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return flag;public String delete(int id,int method,int year,int month)String flag =;if(method = 1)String sql =delete from attendanc

39、e where year=? and month = ?; try pstmt = db.conn.prepareStatement(sql);pstmt.setInt(1, year);pstmt.setInt(2, month);int count =pstmt.executeUpdate();flag +=共删除了+count+行数据; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();else if(method = 2)String sql =delete from attendan

40、ce where id=?;PreparedStatement pstmt;try Statement stmt = db.conn.createStatement();String sqql =select * from attendance where id =+id;ResultSet ff = stmt.executeQuery(sqql);if(ff.next()pstmt = db.conn.prepareStatement(sql);pstmt.setInt(1, id);int cou = pstmt.executeUpdate();flag +=共有+cou+条数据被删除;e

41、lseflag+=无此条数据可删除;stmt.close();ff.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();else if(method = 3)String sql =delete from attendance where id=? and year=? and month = ?;PreparedStatement pstmt;try Statement stmt = db.conn.createStatement();String sqql =select * from attendance where id =+i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论