1、Java EE的出入库管理系统设计与实现江西理工大学 信息学院计算机技术专业刘阳 学号:2010G047 摘要:随着企业规模的扩大,仓库管理系统将发挥越来越重要的作用。高效方便的仓库管理系统,可以为生产经营提供坚强的后盾和有力的支持。仓库管理系统主要提供一个仓库业务及其作业管理的信息存储和检索系统。通过入库管理、出库管理、报表生成管理、仓库人员管理、仓库位置信息管理等功能模块来实现仓库的综合管理。本论文以标准的仓库管理模式为蓝本,基于Java EE开发出一个可以用于一般单位的仓库管理系统,实现了仓库管理的高效性与安全性。本系统可以方便快捷地实现库管理中的货物登记、出库入库、库房管理等操作,使企
2、业的仓库管理井井有条,为企业的健康发展创造良好的条件。关键词:单片机 数字钟 动态 LED显示 引言随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。电子数字钟是单片机实验中一个很常用的课题,因为它有很好的开放性和可发挥性,不仅考察了实验者对单片机的掌握能力,更加强调了对单片机扩展的应用,而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的
3、日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,逐渐受到人们的欢迎。LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。 设计方案选择11 主控制部分采用可编程逻辑器件设计。可选用ALTERA公司的FLEX10K系列PLD器件。设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。从成本上来讲,用可编程逻辑器件来设计也没有什么优势。采用16位单片机设计。16位单片机有丰富的中断源和时基,方便本实验的设
4、计,它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用,I/O口功能也比较强大,方便使用。用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。这些都方便对设计进行扩展,使设计更加完善,成本也相对较低。采用89C51芯片作为硬件核心,内部具有4KB ROM 存储空间,能工作于3V的超低压,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。采用AT89C52,片内ROM全都采用Flas
5、h ROM,能以3V的超底压工作,同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,故应选用AT89C52作为主控制系统。12 显示部分液晶显示方式。采用液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用液晶显示屏.LED数码动态显示方式。LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用
6、的单片机口线少。操作较液晶显示略显繁琐,但总体同样可以做到比较人性化。所以,最后选择LED数码管动态显示方案。 软件设计部分21 阳历程序的设计因为使用了时钟芯片DS1302,阳历程序只需要从DS1302各寄存器中读出年、周、月、日、小时、分、秒等数据,再处理既可。在首次对DS1302进行操作之前,必须对他进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓存单元。阳历程序流程图见图51所示。开 始初始化13021302开始振荡从1302中读出年、周、月、日、小时、分、秒读出的数据都为BCD码,将其高低位分离,送显示缓存 图21 阳历程序流程图阴历程序的实现是要靠阳历日期来推算的
7、,要根据阳历来推算阴历日期,首先要计算法。推算方法就是,根据阳历当前日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年2月为29秒天,平年2月为28天)。阴历一年有12个月或13个月(含闰月),一个月为30天 或29天。如果把一个只有29天的月称为小月,用1为标志,把30天的月称为大月,用0为标志,那么12位二进制能表示一年12个月的大小。如果有闰月,则把闰月的月份作为一个字节的高4位,低4位表示闰月大小,大月为0,小月为1,这样一个字节就包含了所有闰月的信息。阴历春节和阳历元旦相差的天数也用一个字节表示。总共用4字节就可以存储一年中任何一天阳历和阴历的对应关系的
8、有关数据,例如2004年的阴历和阳历对应关系表如表21所示。2004年的春节和元旦差21天,这样2004年的信息表示为:21,42H,52H,21H。其中表示12个月大小信息的字节,第4位和第7位不用。第个字节为十进制,其他的都为十六进制。按此方法,50年的阳历和阴历对应关系表总共使用200字节。月份123456789101112闰2月大小小大大大小大小大小大小大小天数1000101010101二进制29303030293029302930293016进制425221表212004年阴历和阳历对应关系表有了算法和数据以后,就可以设计软件了。根据当前阳历的日期,算出阳历为该年中的第几天。图22为
9、计算阳历中任何一天在该年中为第几天的流程图。计算出当前阳历日期为该年中的第几天后,再减去阳历该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年的总第几天了。根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历年为阳历年的前一年。这种情况下,根据实际,当前阴历日期会处于阴历11月或12月,此时春节和元旦的日差减去前面计算出的当前阳历日期在阳历年为第几天的数据,其结果表示当前阴历日期离春节的天数。计算出阳历天数为该年的第几天,存放在R2和R3中。计算出天数后如果大于#FFH,则把#FFH存放在R2中,余值存放在R3中。也就是说在用积存器R2和R3表示的天数信息中,R2充当主
10、积存器,数据先存满R2,再存R3。在整个转换程序中,这里面的数据不能被覆盖。 计算出阳历总天数后,就可以根据它来推算阴历日期。推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计算春节和元旦的日差时,假设元旦为0天,春节为n天,则日差为n。前面计算的阳历总天数是该天在该年中的第几天,是以元旦为1而得到的,与计算春节和元旦日差的这种方法相比,其数值少了1,所以要在原来本应该以0作为该天就是春节的依据的基础上加1,所以以1作为该天是春节的标志);如果结果小于1,则阴历应该是阳历的前一年;如果结果大于1,说明阳历和阴历为同一年。再根据查表所得的该年的阴
11、历的闰月和大小月的信息,就可以推算出该天的阴历日期了。图23为由总天数推算出阴历日期的程序流程图。Y总天数加入号数 Y当前数是总天数NN与当前月是否同同与当前月同?月数加1总天数中加入该月天数当前月为1月?置阴历总天数为0计算阳历天数结束,总天数中的为当前日期在阳历年中的第几天 图22计算阳历天数程序流程图程序入口NR2=0? 月份为当前正在减的月份,号数为R2中的值Y月份为当前正在减的月份的前一个月的最后一天YNR3=0?R2=R2+R3R3=0N下个月为闰月?够减YYN月加1减去闰月天数R2减1月天数 图23推算阴历日期的程序流程图22 时间调整程序设计调整时间用3个调整按纽,1个作为移位
12、、控制用,另外2个作为加个减用,分别定义为控制按纽、加按纽、减按纽。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定时间熄灭一次,比如说50ms。利用定时器记时,当到达50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序流程图如图22所示。图24时间调整程序流程图 实验测试部分31 硬件测试电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的
13、不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。(1)LED数码管的断码错乱,原因出于没有认真看清a、b 、c等引脚信息。解决方法:重新排列74LS47的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。(2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。解决方法:根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。32 软件测试电子万年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的
14、仪器。功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件测试中容易出现的问题:(1)烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决方法:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。(2)修改时间、日期时没有农历没有自动对应上。解决方法:把不相关的程序暂时屏蔽,地农历的子程序独立调试
15、,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.参考文献:1 刘斌.精通Java Web 整合开发(JSP+AJAX+Struts+Hibernate)M.北京:电子工业出版社,2011.2陈正振 编 电子电路设计与制作 广西交通职业技术学院信息工程系 2010.3杨子文 编 单片机原理及应用 西安电子科技大学出版社 2009.4 薛四新,贾郭军.软件项目管理M.北京:机械工业出版社,20055曹琳琳单片机原理及接口技术【M】北京:国防科技大学出版社,20046许惠民单片微型计算机原理、接口及应用fM】 北京:北京邮电大学出版社,2000