范文一:仓库管理毕业设计
目录
内容提要引言
一、系统设计…………………………………………
1·11·21·31.4
系统目标设计…………………………………………开发设计思想………………………………………系统功能分析………………………………………系统功能模块设计………………………………………
二、系统主要功能模块的创建………………………………………
2.1功能选择界面的设计……………………………………2.2设备入库模块的设计……………………………………2.3设备出库模块的设计………………………………………2.4设备还库模块的设计……………………………………2.5设备需求模块的设计……………………………………2.6设备采购模块的设计……………………………………2.7显示报表模块的设计……………………………………2.8开发中的难点和解决技巧………………………………三、系统的编译和发行…………………………………四、总结…………………………………………………………五、致谢)……………………………………………
六、附录(参考文献)……………………………………………
仓库管理系统设计
内容摘要
《仓库管理系统》是采用VISAULFOXPRO开发的一个数据库管理系统。本设计说明书主要讲述了VISAULFOXPRO的基本功能及设计方法。紧接着以本系统为例,逐一介绍开发本系统系统的步骤:系统分析、系统设计、系统实现、系统维护。在系统分析中先后用数据流图、系统的功能结构图分析了系统所需的各种数据。在系统的设计中,详细的展现了系统的各个功能模块。所需的数据库表及表字段。菜单的设计等。在系统的实现中,给出了实现表单中相应的功能控件的事件及代码。以及菜单实现的方法。文章的最后则给出了本系统的主要功能运行界面图。
关键字:仓库管理仓库前言
企业的物资供应管理往往是很复杂的,烦琐的。由于所掌握的物资种类众多,订货,管理,发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计计划报表繁多,因此物资管理必须实现计算机化,而且必须根据企业的具体情况制定相应的方案。
一个完整的企业物资供应管理系统应该包括计划管理,合同托收管理,仓库管理,定额管理,统计管理,财务管理等模块。其中仓库管理是整个物资供应管理系统的核心。
鉴于VisualFoxpro6.0有强大的数据库管理功能,我们选用VisualFoxpro6.0来完成这个仓库管理系统。一、系统设计1.1系统目标设计
系统开发的总体任务是实现企业物资设备管理的系统化,规范化和自动化,从而达到提高企业物资管理的效率的目的。1.2开发设计思想
仓库管理的物资在本文中主要假定都是企业生产所需要的各种设备。进货时经检查合同确认认为有效托收以后,进行验货入库,填写入库单,进行入库登记。企业各个部分根据所需要的物资设备总额和部门生产活动需要提出物资需求申
管理系统
VISAULFOXPRO面向对象
请。计划员根据整个企业的需求开出物资设备出库单,仓库管理员根据出库单核对发放设备。设备使用完毕需要及时归还入库,填写入库单。根据需要按照月,季,年进行统计分析,产生相应报表。
仓库管理的特点是信息处理量比较大。所管理的物资设备种类繁多,而且由于入库单,出库单,需求单等单据发生量特别大,关联信息多,查询和统计的方式各不相同。因此在管理上实现起来有一定的困难。在管理的过程中经常会出现信息的重复传递,单据,报表种类繁多,各个部门管理规格不统一等问题。1.3系统功能分析
本仓库管理系统需要完成功能主要有以下几点。
●仓库管理各种信息的输入,包括入库、出库、还库、需求信息的输入等。●仓库管理各种信息的查询、修改和维护。●设备采购报表的生成。
●在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警。
●企业各个部门的物资需求的管理。●操作日志的管理。●仓库管理的使用帮助。1.4系统功能模块设计
在系统功能分析的基础上,考虑vfp程序编制的特点,得到如图所示的系统功能模块图:
仓库管理系统
系
统模块输入模块维护模块查看模块报表模块
打印设置日志管里入库模块出库模块
还库模块需求模块
二、系统主要功能模块的创建
按照前面的分析,我们将管理系统的逻辑模块统一到6个实际功能模块中,如图所示。切换面板用于切换不同的操作,每项具体操作结束后,都会返回到切换面板。
切换面板
设备入库设备出库设备还库设备需求设备采购显示报表
下面对各模块的作用进行说明:
(1)设备入库模块:添加设备到库存中。(2)设备出库模块:将设备从库存取出并记录。
(3)设备还库模块:将归并到库存的设备保存到数据库。(4)设备需求模块:记录各部门的设备需求。(5)设备采购模块:记录要采购的设备。
(6)切换面板:用于切换到不同的操作,如设备入库、设备出库等。(7)显示报表:显示库存过多、库存不足等信息。
下面就按照功能模块图来设计该仓库管理系统。首先在VisualFoxPro6.0中建立一个项目管理器,以便管理本系统中所有的数据,命名为“仓库管理”。一下操作均在该项目管理器中进行。以下所有表单的“desktop”属性全部设为“.T.-真”。
2.1功能选择界面的设计:
这一模块的主要功能是作为系统主界面为进入本系统不同功能界面选择提供一个接口,使用一个窗口来实现这一功能。
首先建立一个表单,设取“caption”属性为“仓库管理”。在该表单上添加
6个“按钮”控件,它们的“caption”属性分别为“设备入库”,“设备出库”,“设备还库”,“部门需求”,“设备采购”,“显示报表”。然后在表单上添加“图象控件”,并设其“stretch”属性为“2-strech(扩展)”,“pictrue”属性为图片所在的位置,本例中为“c:\仓库管理\001.jpg”。
在“comm.and1”(“caption”属性为“设备入库”)控件的“click”事件中添加如下代码:
doform设备入库表thisform.release
在“comm.and2”(“caption”属性为“设备出库”)控件的“click”事件中添加如下代码:
doform设备出库表thisform.release
在“comm.and3”(“caption”属性为“设备还库”)控件的“click”事件中添加如下代码:
doform设备还库表thisform.release
在“comm.and4”(“caption”属性为“部门需求”)控件的“click”事件中添加如下代码:
doform部门需求表thisform.release
在“comm.and5”(“caption”属性为“设备采购”)控件的“click”事件中添加如下代码:
doform设备采购表thisform.release
在“comm.and6”(“caption”属性为“显示报表”)控件的“click”事件中添加如下代码:
doform显示报表thisform.release
在“form1”的属性里选择“autocenter”设置为“.T.-真”,同时将“backcolor”
设置为“255,255,255”,“windowstate”设置为“0-普通”。添加“form1”的“init”事件的代码如下:setdirectorytoc:\仓库管理\
*将程序的默认的路径指向资源所在的文件夹
该表单设计结果如图所示:
2.2设备入库模块的设计
在设备入库模块中将实现设备数据的添加和入库等功能。本模块设计采用先用向导生成表单,然后修改的方法实现。
首先在项目管理器的文档视图下单击“新建”按钮,
在接下来的向导中,“数据库和表”选择“仓库管理”以及“设备入库表”,这是前面定义好的数据库和表。
由于设备入库需要显示所有的字段,因此我们将可用字段全部移至选定字
段,如图所示,单击“下一步”按钮,
在表单样式中,选择“阴影式”以及“图片按钮”,如图所示。左上角的窗口提供了表单样式的预览功能,图片按钮和文本按钮的区别在于显示的时候是以图片来表达功能还是文字来表达,实现功能的函数没有区别。选择“上一步”按
钮可以跳回上一个界面对表单中显示的字段进行修改。
单击“下一步”按钮后,向导进行到“步骤3-排序次序”,如图所示,选择
“设备号”为索引,并选择升序排列。最后预览表单,核对每项的设置,完成表
单向导,如图所示。
值得注意的是,在结束表单向导前,可选择“保存表单以备将来使用”,“保存并运行表单”,或者“保存表单并用表单设计器修改表单”。由于VisualFoxPro6.0向导生成的表单只具有普遍性,对于当前设计的仓库管理系统还需要一定的改变,因此以我们选择“保存表单并用表设计器修改表单”。
单击“完成”按钮系统提示保存表单,将表单保存为“设备入库表.scx”,存于c:\仓库管理目录下。然后打开表单修改器生成的表单,如图所示。
在修改BUTTONSET时,可以通过属性窗口的下拉列表选定单个按钮,调整其
位置和其它属性。如图所示。
根据功能需求,把“cmdprint”、“”cmdexit、“cmdDelete”和“cmdedit”
的Visible属性都设为“.F.-假”。添加2个命令按钮,Caption属性分别设为“修改库存”和“回主界面”。
在“回主界面”命令按钮的click事件中添加代码如下:thisform.releasedoform仓库管理
在修改库存命令按钮的click事件中添加代码如下:select现有库存表
getid=thisform.设备号1.text1.valuesetorderto设备号seekgetidiffound()
getnum=thisform.入库数量1.text1.value
update现有库存表set现有库存=(现有库存+getnum)where(设备号=getid)
else
insertinto现有库存表(设备号,现有库存,最大库存,最小库存);value(thisform.设备号1.text1.value,thisform.入库数量
1.text1.value,1000,10)
endif
insertinto操作日志表(操作员,操作内容,操作时间);values(thisform.采购员1.text1.value,'设备入库',date())
保存后运行表单,界面如图所示:
2.3设备出库模块的设计:
在设备出库模块中将实现设备出库数据的添加和修改库存等功能。该模块的功能和设备入库的功能相似。具体操作可以参考设备入库模块的设计,设计最终
的界面如图所示。
在表单的左上角加上了显示当前时间的功能,添加标签label2的caption属性设为“当前时间”;添加label3的caption属性设为空;为当前表单的label3init事件添加如下代码:
this.caption=dtoc(date())
该模块具体实现过程不再一一详细说明。下面列出了表单中所用到控件的属性值。
(1)Form1控件的主要属性:属性名称CaptionAutocenterBackColor
(2)ButtonSet1控件的主要属性:控件名cmdExitcmdDeletecmdPrintcmdEdit
属性名称VisibleVisibleVisibleVisible
属性值.F.-假.F.-假.F.-假.F.-假
属性值设备出库表.T.-真255.255.255
Command1Command2
CaptionCaption
修改库存回主界面
下面时设备出库表单中“修改库存”命令按钮的click事件的代码:select现有库存表
*先在该表单的数据环境中添加现有库存表getid=thisform.设备号1.text1.valuesetorderto设备号seekgetid
*在现有库存表中查找设备号等于getid的纪录iffound()
getnum=thisform.出库数量1.text1.valueupdate现有库存表;
set现有库存=(现有库存-getnum)where(设备号=getid)*如果库存表中有该项设备,则更新库存表
insertinto操作日志表(操作员,操作内容,操作时间);
values(thisform.领取人1.text1.value,'设备出库',date())else
messagebox("出错",1,"错误的设备号")endif
2.4设备还库模块的设计
在设备还库模块中将实现设备还库数据的添加和修改库存等功能,按照前面介绍的步骤设计设备还库表。2.5设备需求模块的设计
在设备需求模块中将实现设备需求数据的添加和保存日志等功能。首先通过VisualFoxpro的表单向导生成所需的设备需求表单,选择部门需求表的所有可用字段,然后为保持程序风格的一致,继续采用表单的阴影式和图片按钮的风格。在“步骤3-排序次序”时。选择设备号的升序排列。最后单击“完成”按钮,把表单保存在“c:\仓库管理\”目录下,名为“设备需求.scx”。
通过表单向导生成的表单如图所示,我们可以调节控件的位置,修改表单
中控件的属性,最后结果所下图所示:
相关的属性设置如下图所示:(1)Form1控件的主要属性:属性名称CaptionAutocenterBackColor
(2)ButtonSet1控件的主要属性:控件名cmdExitcmdDeletecmdPrintcmdEditCommand1Command2
属性名称VisibleVisibleVisibleVisibleCaptionCaption
属性值.F.-假.F.-假.F.-假.F.-假保存日志回主界面
属性值部门需求表.T.-真255.255.255
在表单设计器中,双击“保存日志”命令按钮。添加click事件代码如下:insertinto操作日志表(操作员,操作内容,操作时间)values(username,'设备需求',date())
双击回主界面命令按钮,添加click事件代码如下:thisform.releasedoform仓库管理保存对表单所作的修改。2.6设备采购模块的设计
在设备采购模块中将实现设备采购数据的添加和保存日志等功能。(1)由数据表生成表单
通过VisualFoxpro的表单向导,生成设备采购计划表单。在选择数据库和表时,选择仓库管理数据库和设备采购计划表。在选择字段时,选择所有可用字段,选择阴影式和图片按钮作为设备采购计划表的样式。选择计划采购时间的升序排列作为设备采购计划表的索引。(2)为窗体修改和添加命令按钮
添加2个命令按钮“保存日志”和“回主界面”。设置表单中控件的属性。下面的表列出了需要修改的控件的名称以及属性值。
(1)Form1控件的主要属性:属性名称CaptionAutocenterBackColor
属性值设备采购表.T.-真255.255.255
(2)ButtonSet1控件的主要属性:控件名cmdExitcmdDeletecmdPrintcmdEditCommand1Command2
属性名称VisibleVisibleVisibleVisibleCaptionCaption
属性值.F.-假.F.-假.F.-假.F.-假保存日志回主界面
(3)为按钮添加click事件代码:
在表单设计器中,双击保存日志命令按钮。添加click事件代码如下:insertinto操作日志表(操作员,操作内容,操作时间)values(username,"设备需求",date())
*把设备需求写入操作日志表中
双击回主界面按钮,添加click事件代码如下:
thisform.release*释放本表单doform仓库管理*运行仓库管理界面
保存对表单所作的修改,表单运行效果如图所示:
2.7显示报表模块的设计
在该模块中,一共要显示3个报表,分别提供库存不足,库存过多和操作日志等信息。
1.设计显示报表表单
在项目管理器的文档视图下选择“新建”
,然后选择新建表单,如图所示。
在如图所示的空白表单中添加一个页框控件,并按照下表设置页框的属性,同时在数据环境里添加现有库存表和操作日志表。
控件名Form1Pageframe1Pageframe1.Page1
属性名称CaptionCaptionCaption
属性值显示报表3
库存不足表
Pageframe1.Page2Pageframe1.Page3
CaptionCaption
库存过多表操作日志
分别为每个page添加一个表格grid1,如图所示:
库存过多表库存不足表
操作日志表
设置表格控件的属性,如表所示:grid1控件的主要属性表:控件名
属性名称
属性值.T.-真
Pageframe1.Page1.grid1ReadOnly
Pageframe1.Page1.grid1RecordSourceType1-别名Pageframe1.Page1.grid1ColumnCountPageframe1.Page2.grid1ReadOnly
-1.T.-真
Pageframe1.Page2.grid1RecordSourceType1-别名Pageframe1.Page2.grid1ColumnCountPageframe1.Page3.grid1ReadOnly
-1.T.-真
Pageframe1.Page3.grid1RecordSourceType1-别名Pageframe1.Page3.grid1ColumnCount2.代码设计
定义Pageframe1.Page1.grid1的init事件
-1
运行“显示报表”表单,界面所图所示:localCusts1
select设备号,最大库存,现有库存from现有库存表where(现有库存>最大库存)intocursorCusts1
thisform.页框.库存过多.库存过多表.recordsource="Custs1"定义Pageframe1.Page2.grid1的init事件localCusts2
select设备号,最小库存,现有库存from现有库存表where(现有库存<>
thisform.页框.库存不足.库存不足表.recordsource="Custs2"定义Pageframe1.Page3.grid1的init事件localCusts3
select*from操作日志表
intocursorCusts3
thisform.页框.操作日志.操作日志表1.recordsource="Custs3"
运行“显示报表”表单,界面如图所示。
2.8开发中的难点和解决技巧
为了快速开发高效的软件,本设计中的多数表单的设计采用利用表单设计向
导生成,然后在生成的表单的基础上修改。
数据库软件用来管理数据的优势在于可以迅速从成千上万的数据中找到我们需要的数据,而查询功能的设计也是数据库应用软件设计过程中的重点也是难点。本设计过程中利用表单向导强大的功能,轻松完成了数据的查询功能。而且表单向导生成的查询功能非常强大,完全可以满足数据库应用软件的需要。三、系统的编译和发行
3.1设置主文件
用主图标标记的文件是用户在启动.app或者.exe时被调用的文件。它可以是一个表单、菜单或者程序,建议使用程序作为主文件。3.2构造主文件
如果主文件是一个程序,它将调用应用程序框架中的各个功能组件,然后由这些组件调用应用程序的其余部分。
如果要建立一个简单的主程序,可以按下列步骤进行。(1)现设置应用环境界面。(2)建立初始用户界面。(3)建立事件循环。
(4)恢复环境,退出应用程序。四、小结
一个完整的仓库管理系统到此就制作完成了。在本例中详细的讲述了从创建数据库到系统设计和各模块的创建、面向对象的表单的设计、基本功能如查询的实现、主程序的编写。五、致谢
在本次毕业设计的过程中,我的指导老师给了我很大的指导和帮助。不仅使我在规定的时间内完成了系统的设计,同时还使我学到了很多有益的经验。在此,我谨向他表示最衷心的感谢。
同时,学校给了我这次毕业设计的机会,使我得到了很好的锻炼,在此,我也向学校的各位老师表示最诚挚的感谢。六、附录:主要参考文献
出版社.出版日期1.李加福《VisualFoxPro6.0》北京清华大学出版社1999年6月
2.周建成《FoxPro2.5命令与函数专辑》北京人们邮电出版社1994年7月
作者.
书名.
3.梁杰、效英、殷咸青《Foxpro2.6forwindows使用详解》西安电子科技大学出版社1995年5月
范文二:仓库管理毕业设计
目录
内容提要
引言
一、 系统设计????????????????
1·1 系统目标设计????????????????
1·2 开发设计思想???????????????
1·3 系统功能分析???????????????
1.4 系统功能模块设计???????????????
二、 系统主要功能模块的创建???????????????
2.1 功能选择界面的设计??????????????
2.2 设备入库模块的设计??????????????
2.3 设备出库模块的设计???????????????
2.4 设备还库模块的设计??????????????
2.5 设备需求模块的设计??????????????
2.6 设备采购模块的设计??????????????
2.7 显示报表模块的设计??????????????
2.8 开发中的难点和解决技巧????????????
三、 系统的编译和发行?????????????
四、总结??????????????????????
五、致谢)?????????????????
六、附录(参考文献)?????????????????
仓库管理系统设计
内容摘要
《仓库管理系统》是采用VISAUL FOXPRO开发的一个数据库管理系统。本设计说明书主要讲述了VISAUL FOXPRO的基本功能及设计方法。紧接着以本系统为例,逐一介绍开发本系统系统的步骤:系统分析、系统设计、系统实现、系统维护。在系统分析中先后用数据流图、系统的功能结构图分析了系统所需的各种数据。在系统的设计中,详细的展现了系统的各个功能模块。所需的数据库表及表字段。菜单的设计等。在系统的实现中,给出了实现表单中相应的功能控件的事件及代码。以及菜单实现的方法。文章的最后则给出了本系统的主要功能运行界面图。
关键字:仓库管理 仓库 管理系统 VISAUL FOXPRO 面向对象
前言
企业的物资供应管理往往是很复杂的,烦琐的。由于所掌握的物资种类众多,订货,管理,发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计计划报表繁多,因此物资管理必须实现计算机化,而且必须根据企业的具体情况制定相应的方案。
一个完整的企业物资供应管理系统应该包括计划管理,合同托收管理,仓库管理,定额管理,统计管理,财务管理等模块。其中仓库管理是整个物资供应管理系统的核心。
鉴于Visual Foxpro6.0有强大的数据库管理功能,我们选用Visual Foxpro6.0来完成这个仓库管理系统。
一 、系统设计
1.1 系统目标设计
系统开发的总体任务是实现企业物资设备管理的系统化,规范化和自动化,从而达到提高企业物资管理的效率的目的。
1.2 开发设计思想
仓库管理的物资在本文中主要假定都是企业生产所需要的各种设备。进货时经检查合同确认认为有效托收以后,进行验货入库,填写入库单,进行入库登记。企业各个部分根据所需要的物资设备总额和部门生产活动需要提出物资需求申
请。计划员根据整个企业的需求开出物资设备出库单,仓库管理员根据出库单核对发放设备。设备使用完毕需要及时归还入库,填写入库单。根据需要按照月,季,年进行统计分析,产生相应报表。
仓库管理的特点是信息处理量比较大。所管理的物资设备种类繁多,而且由于入库单,出库单,需求单等单据发生量特别大,关联信息多,查询和统计的方式各不相同。因此在管理上实现起来有一定的困难。在管理的过程中经常会出现信息的重复传递,单据,报表种类繁多,各个部门管理规格不统一等问题。
1.3 系统功能分析
本仓库管理系统需要完成功能主要有以下几点。
●仓库管理各种信息的输入,包括入库、出库、还库、需求信息的输入等。 ●仓库管理各种信息的查询、修改和维护。
●设备采购报表的生成。
●在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警。
●企业各个部门的物资需求的管理。
●操作日志的管理。
● 仓库管理的使用帮助。
1.4 系统功能模块设计
在系统功能分析的基础上,考虑vfp程序编制的特点,得到如图所示的系统
二、 系统主要功能模块的创建
按照前面的分析,我们将管理系统的逻辑模块统一到6个实际功能模块中,如图所示。切换面板用于切换不同的操作,每项具体操作结束后,都会返回到切换面板。
下面对各模块的作用进行说明:
(1) 设备入库模块:添加设备到库存中。
(2) 设备出库模块:将设备从库存取出并记录。
(3) 设备还库模块:将归并到库存的设备保存到数据库。
(4) 设备需求模块:记录各部门的设备需求。
(5) 设备采购模块:记录要采购的设备。
(6) 切换面板:用于切换到不同的操作,如设备入库、设备出库等。
(7) 显示报表:显示库存过多、库存不足等信息。
下面就按照功能模块图来设计该仓库管理系统。首先在Visual FoxPro6.0中建立一个项目管理器,以便管理本系统中所有的数据,命名为“仓库管理”。一下操作均在该项目管理器中进行。以下所有表单的“desktop”属性全部设为“.T.-真”。
2.1功能选择界面的设计:
这一模块的主要功能是作为系统主界面为进入本系统不同功能界面选择提供一个接口,使用一个窗口来实现这一功能。
首先建立一个表单,设取“caption”属性为“仓库管理”。在该表单上添加
6个“按钮”控件,它们的“caption”属性分别为“设备入库”,“设备出库”,“设备还库”,“部门需求”,“设备采购”,“显示报表”。然后在表单上添加“图象控件”,并设其“stretch”属性为“2-strech(扩展)”,“pictrue”属性为图片所在的位置,本例中为“c:\仓库管理\001.jpg”。
在“comm.and1”(“caption”属性为“设备入库”)控件的“click”事件中添加如下代码:
do form 设备入库表
thisform.release
在“comm.and2”(“caption”属性为“设备出库”)控件的“click”事件中添加如下代码:
do form 设备出库表
thisform.release
在“comm.and3”(“caption”属性为“设备还库”)控件的“click”事件中添加如下代码:
do form 设备还库表
thisform.release
在“comm.and4”(“caption”属性为“部门需求”)控件的“click”事件中添加如下代码:
do form 部门需求表
thisform.release
在“comm.and5”(“caption”属性为“设备采购”)控件的“click”事件中添加如下代码:
do form 设备采购表
thisform.release
在“comm.and6”(“caption”属性为“显示报表”)控件的“click”事件中添加如下代码:
do form 显示报表
thisform.release
在“form1”的属性里选择“autocenter”设置为“.T.-真”,同时将“backcolor”
设置为“255,255,255”,“windowstate”设置为“0-普通”。
添加“form1”的“init”事件的代码如下:
set directory to c:\仓库管理\
*将程序的默认的路径指向资源所在的文件夹
该表单设计结果如图所示:
2.2 设备入库模块的设计
在设备入库模块中将实现设备数据的添加和入库等功能。本模块设计采用先用向导生成表单,然后修改的方法实现。
首先在项目管理器的文档视图下单击“新建”按钮,
在接下来的向导中,“数据库和表”选择“仓库管理”以及“设备入库表”,这是前面定义好的数据库和表。
由于设备入库需要显示所有的字段,因此我们将可用字段全部移至选定字段,如图所示,单击“下一步”按钮,
在表单样式中,选择“阴影式”以及“图片按钮”,如图所示。左上角的窗口提供了表单样式的预览功能,图片按钮和文本按钮的区别在于显示的时候是以图片来表达功能还是文字来表达,实现功能的函数没有区别。选择“上一步”按钮可以跳回上一个界面对表单中显示的字段进行修改。
单击“下一步”按钮后,向导进行到“步骤3-排序次序”,如图所示,选择
“设备号”为索引,并选择升序排列。最后预览表单,核对每项的设置,完成表单向导,如图所示。
值得注意的是,在结束表单向导前,可选择“保存表单以备将来使用”,“保存并运行表单”,或者“保存表单并用表单设计器修改表单”。由于Visual FoxPro6.0向导生成的表单只具有普遍性,对于当前设计的仓库管理系统还需要一定的改变,因此以我们选择“保存表单并用表设计器修改表单”。
单击“完成”按钮系统提示保存表单,将表单保存为“设备入库表.scx”,存于c:\仓库管理目录下。然后打开表单修改器生成的表单,如图所示。
在修改BUTTONSET时,可以通过属性窗口的下拉列表选定单个按钮,调整其位置和其它属性。如图所示。
根据功能需求,把“cmdprint”、“”cmdexit、“cmdDelete”和“cmdedit”
的Visible属性都设为“.F.-假”。添加2个命令按钮,Caption属性分别设为“修改库存”和“回主界面”。
在“回主界面”命令按钮的click事件中添加代码如下:
thisform.release
do form 仓库管理
在修改库存命令按钮的click事件中添加代码如下:
select 现有库存表
getid=thisform.设备号1.text1.value
set order to 设备号
seek getid
if found()
getnum=thisform.入库数量1.text1.value
update 现有库存表 set 现有库存=(现有库存+getnum) where (设备号=getid)
else
insert into 现有库存表 (设备号,现有库存,最大库存,最小库存); value (thisform.设备号1.text1.value,thisform.入库数量
1.text1.value,1000,10)
endif
insert into 操作日志表(操作员,操作内容,操作时间);
values (thisform.采购员1.text1.value,'设备入库',date())
保存后运行表单,界面如图所示:
2.3设备出库模块的设计:
在设备出库模块中将实现设备出库数据的添加和修改库存等功能。该模块的功能和设备入库的功能相似。具体操作可以参考设备入库模块的设计,设计最终的界面如图所示。
在表单的左上角加上了显示当前时间的功能,添加标签label2的caption属性设为“当前时间”;添加label3的caption属性设为空;为当前表单的label3init事件添加如下代码:
this.caption=dtoc(date())
该模块具体实现过程不再一一详细说明。下面列出了表单中所用到控件的属性值。
(1)Form1控件的主要属性:
(2)ButtonSet1控件的主要属性:
下面时设备出库表单中“修改库存”命令按钮的click事件的代码: select 现有库存表
*先在该表单的数据环境中添加现有库存表 getid=thisform.设备号1.text1.value set order to 设备号 seek getid
*在现有库存表中查找设备号等于getid的纪录 if found()
getnum=thisform.出库数量1.text1.value update 现有库存表;
set 现有库存=(现有库存-getnum) where (设备号=getid) *如果库存表中有该项设备,则更新库存表
insert into 操作日志表(操作员,操作内容,操作时间);
values (thisform.领取人1.text1.value,'设备出库',date()) else
messagebox("出错",1,"错误的设备号") endif
2.4 设备还库模块的设计
在设备还库模块中将实现设备还库数据的添加和修改库存等功能,按照前面介绍的步骤设计设备还库表。 2.5 设备需求模块的设计
在设备需求模块中将实现设备需求数据的添加和保存日志等功能。首先通过Visual Foxpro的表单向导生成所需的设备需求表单,选择部门需求表的所有可用字段,然后为保持程序风格的一致,继续采用表单的阴影式和图片按钮的风格。在“步骤3-排序次序”时。选择设备号的升序排列。最后单击“完成”按钮,把表单保存在“c:\仓库管理\”目录下,名为“设备需求.scx”。
通过表单向导生成的表单如图所示,我们可以调节控件的位置,修改表单中控件的属性,最后结果所下图所示:
相关的属性设置如下图所示: (1)Form1控件的主要属性:
(2)ButtonSet1控件的主要属性:
在表单设计器中,双击“保存日志”命令按钮。添加click事件代码如下: insert into 操作日志表 (操作员,操作内容,操作时间) values (username,'设备需求',date())
双击回主界面命令按钮,添加click事件代码如下: thisform.release do form 仓库管理 保存对表单所作的修改。 2.6 设备采购模块的设计
在设备采购模块中将实现设备采购数据的添加和保存日志等功能。 (1)由数据表生成表单
通过Visual Foxpro的表单向导,生成设备采购计划表单。在选择数据库和表时,选择仓库管理数据库和设备采购计划表。在选择字段时,选择所有可用字段,选择阴影式和图片按钮作为设备采购计划表的样式。选择计划采购时间的升序排列作为设备采购计划表的索引。 (2)为窗体修改和添加命令按钮
添加2个命令按钮“保存日志”和“回主界面”。设置表单中控件的属性。下面的表列出了需要修改的控件的名称以及属性值。
(1)Form1控件的主要属性:
(2)ButtonSet1控件的主要属性:
(3)为按钮添加click事件代码:
在表单设计器中,双击保存日志命令按钮。添加click事件代码如下: insert into 操作日志表 (操作员,操作内容,操作时间) values (username,"设备需求",date())
*把设备需求写入操作日志表中
双击回主界面按钮,添加click事件代码如下:
thisform.release *释放本表单 do form 仓库管理 *运行仓库管理界面
保存对表单所作的修改,表单运行效果如图所示:
2.7 显示报表模块的设计
在该模块中,一共要显示3个报表,分别提供库存不足,库存过多和操作日志等信息。
1. 设计显示报表表单
在项目管理器的文档视图下选择“新建”,然后选择新建表单,如图所示。
在如图所示的空白表单中添加一个页框控件,并按照下表设置页框的属性,同时在数据环境里添加现有库存表和操作日志表。
分别为每个page添加一个表格grid1,如图所示:
库存过多表 库存不足表
操作日志表
设置表格控件的属性,如表所示: grid1控件的主要属性表:
2. 代码设计
定义Pageframe1.Page1.grid1的init事件
运行“显示报表”表单,界面所图所示: local Custs1
select 设备号,最大库存,现有库存 from 现有库存表 where (现有库存>最大库存) into cursor Custs1
thisform.页框.库存过多.库存过多表.recordsource="Custs1" 定义Pageframe1.Page2.grid1的init事件 local Custs2
select 设备号,最小库存,现有库存 from 现有库存表 where (现有库存<最小库存) into="" cursor="">最小库存)>
thisform.页框.库存不足.库存不足表.recordsource="Custs2" 定义Pageframe1.Page3.grid1的init事件 local Custs3
select * from 操作日志表 into cursor Custs3
thisform.页框.操作日志.操作日志表1.recordsource="Custs3" 运行“显示报表”表单,界面如图所示。
2.8 开发中的难点和解决技巧
为了快速开发高效的软件,本设计中的多数表单的设计采用利用表单设计向导生成,然后在生成的表单的基础上修改。
数据库软件用来管理数据的优势在于可以迅速从成千上万的数据中找到我们需要的数据,而查询功能的设计也是数据库应用软件设计过程中的重点也是难点。本设计过程中利用表单向导强大的功能,轻松完成了数据的查询功能。而且表单向导生成的查询功能非常强大,完全可以满足数据库应用软件的需要。 三、 系统的编译和发行
3.1 设置主文件
用主图标标记的文件是用户在启动.app或者.exe时被调用的文件。它可以是一个表单、菜单或者程序,建议使用程序作为主文件。 3.2 构造主文件
如果主文件是一个程序,它将调用应用程序框架中的各个功能组件,然后由这些组件调用应用程序的其余部分。
如果要建立一个简单的主程序,可以按下列步骤进行。 (1) 现设置应用环境界面。 (2) 建立初始用户界面。 (3) 建立事件循环。
(4) 恢复环境,退出应用程序。 四、小结
一个完整的仓库管理系统到此就制作完成了。在本例中详细的讲述了从创建数据库到系统设计和各模块的创建、面向对象的表单的设计、基本功能如查询的实现、主程序的编写。 五、致谢
在本次毕业设计的过程中,我的指导老师给了我很大的指导和帮助。不仅使我在规定的时间内完成了系统的设计,同时还使我学到了很多有益的经验。在此, 我谨向他表示最衷心的感谢。
同时,学校给了我这次毕业设计的机会,使我得到了很好的锻炼,在此,我也向学校的各位老师表示最诚挚的感谢。 六、附录:主要参考文献
作者. 书名. 出版社. 出版日期
1.李加福《Visual FoxPro6.0》北京清华大学出版社 1999年6月
2.周建成《FoxPro2.5命令与函数专辑》北京人们邮电出版社 1994年7月 3.梁杰、效英、殷咸青《Foxpro 2.6 for windows使用详解》西安电子科技大学出版社1995年5月
范文三:java酒店管理毕业设计源代码
酒店管理系统 C++源代码 ----仅供参考学习,切勿用于任何商业用途
# include # include # include # include # include # include # include # include # include //***************************************************************** //***************************************************************** // CLASS NAME : MENU // DETAILS 一 需求分析 (1)顾客 1 查看房间信息(空房号,等级,床位数) 2 入住(房号,姓名,身份证) 3 退房(结账) (2) 管理员 1 查看房间信息(空房号,房间状态,等级,床位数) 2 入住(房号,改变房间状态,登记人) 3 退房(结账,登记人) 二 实体 1 房间:: 号码 c_room 等级 c_dank 床数 c_nbed 状态 c_statds 价格 c_rate 2 顾客:: 身份证 id 人数 m 要求等级 r 入住房间 room //这个时候不知道是设计类还是功能模块 三 程序流程 1. 管理员登陆 2. 选择功能 1. 登记入住 void check_in(); 2. 退房 void check_out(); 3. 定房 void book(); 4. 订房 3. 管理员退出 四 功能模块 1 顾客模块 1)登记入住 1 输入人数 m 和房间等级要求 r 2 按 r 搜索空房 再按 m 搜索 3 如果有符合条件的显示 4 如果没有则给出优化方案 5 选择房间 6 给出每个人每天要付的费用 dayrent 7 登记个人信息 8 改变房间状态 2)退房 1 计算每人应付费用和总共费用 2 改变房间状态 3)订房 1 输入人数 m 房间等级要求 r 2 按 r 搜索空房 再按 m 搜索 3 如果有符合条件的显示 4 如果没有则给出优化方案 5 选择房间 2 管理员模块 1)登录系统 1 输入用户名和密码 2 检验密码 3 通过/重新输入 2)登记入住(同上) 3)退房(同上) 4)订房(同上) 5)房间信息管理 1 显示空房及对应的等级空房 2 显示已订房号码及开始入住日期 : IT CONTROLS OVER ALL THE FUNCTIONS //***************************************************************** class menu { public : void main_menu(void); void startup(void); void box(void); void line_hor(int, int, int, char); void line_ver(int, int, int, char); }; //***************************************************************** // CLASS NAME : HKEEP // DETAILS : IT CONTROLS OVER ALL FUNCTIONS // RELATED TO HKEEP //***************************************************************** class hkeep { public : hkeep(void); ~hkeep(void); void add(void); void modify(void); void deletion(void); void display_list(void); private : void display_record(int); int found_record(int); void delete_record(int); void modify_record(int); int recordno(int); int last_code(void); int code; char name[20],roomno[10],order[99]; }; //***************************************************************** // CLASS NAME : MENU // FUNCTION NAME : LINE_HOR // DETAILS : IT ACCEPTS THE ROWS AND COLUMNS AND // DRAWS HORIZONTAL LINES //***************************************************************** void menu :: line_hor(int column1, int column2, int row, char c) { for(column1;column1<> { //gotoxy(column1,row); cout<> } } //***************************************************************** // CLASS NAME : MENU // FUNCTION NAME : LINE_VER // DETAILS : IT ACCEPTS ROWS AND COLUMNS AND // DRAWS THE VERTICAL LINE //***************************************************************** void menu :: line_ver(int row1, int row2, int column, char c) { for(row1;row1<> { gotoxy(column, row1); cout <> } } //***************************************************************** // CLASS NAME : MENU // FUNCTION NAME : STARTUP // DETAILS : IT CREATES THE STARTING SCREEN //***************************************************************** void menu :: startup(void) { // clrscr(); int i,j,s; char a[] = char b[] = for(i=0;i<> line_ver(1,25,i,179); // gotoxy(1,11);clreol(); gotoxy(1,13);clreol(); j = 63; s = 100; for(i=1;i<=43;i++)>=43;i++)> sound(s); s = s+20; delay(50); gotoxy(1,12); clreol(); gotoxy(i,12); cout // nosound(); delay(100); char ch = 219; s = 500; for(i=0;i<=79;i++)>=79;i++)> sound(s); s =s+10; gotoxy(i,10); cout nosound(); delay(200); ch = 219; s = 1290; for(i = 79; i>=1;i--) { sound(s); s = s- 10; gotoxy(i,14); cout nosound(); delay(1000); 附录 Base.Dlg.cpp 程序 : #include #include #include #include #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CBaseDlg dialog CBaseDlg::CBaseDlg(CWnd* pParent /*=NULL*/) : CDialog(CBaseDlg::IDD, pParent) { //{{AFX_DATA_INIT(CBaseDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CBaseDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CBaseDlg) DDX_Control(pDX, IDC_TAB_BASE, m_oTabBase); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CBaseDlg, CDialog) //{{AFX_MSG_MAP(CBaseDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CBaseDlg message handlers BOOL CBaseDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_oTabBase.AddPage( return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE CallDlg.cpp 程序: #include #include #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCallDlg dialog extern CMyPosApp theApp; CCallDlg::CCallDlg(CWnd* pParent /*=NULL*/) : CDialog(CCallDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCallDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CCallDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCallDlg) DDX_Control(pDX, IDC_EDIT_CALLBILLID, m_oCallbillid); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCallDlg, CDialog) //{{AFX_MSG_MAP(CCallDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCallDlg message handlers void CCallDlg::OnOK() { if(dowhat== { theApp.scallid= m_oCallbillid.GetWindowText(theApp.scallid); } if(dowhat== m_oCallbillid.GetWindowText(dowhat); CDialog::OnOK(); } BOOL CCallDlg::OnInitDialog() { if(dowhat== m_oCallstatic.SetWindowText( return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } CheckDlg.cpp 程序: #include #include #include #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCheckDlg dialog extern CMyPosApp theApp; CCheckDlg::CCheckDlg(CWnd* pParent /*=NULL*/) : CDialog(CCheckDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCheckDlg) //}}AFX_DATA_INIT void CCheckDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCheckDlg) DDX_Control(pDX, IDC_EDIT_CONSUME, m_oConsume); DDX_Control(pDX, IDC_EDIT_CDISCOUNT, m_oCdiscount); DDX_Control(pDX, IDC_EDIT_RECEIVE, m_oReceive); DDX_Control(pDX, IDC_EDIT_CHANGE, m_oChange); DDX_Control(pDX, IDC_EDIT_TOTALM, m_oTotalm); DDX_Control(pDX, IDC_COMBO_PAYMODE, m_oCombopay); DDX_Control(pDX, IDC_LIST_CHECKLIST, m_oChecklist); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCheckDlg, CDialog) //{{AFX_MSG_MAP(CCheckDlg) ON_BN_CLICKED(IDC_BUTTON_CHECKOK, OnButtonCheckok) ON_EN_CHANGE(IDC_EDIT_RECEIVE, OnChangeEditReceive) ON_NOTIFY(NM_CLICK, IDC_LIST_CHECKLIST, OnClickListChecklist) ON_EN_CHANGE(IDC_EDIT_CDISCOUNT, OnChangeEditCdiscount) ON_BN_CLICKED(IDC_BUTTON_RF, OnButtonRf) ON_BN_CLICKED(IDC_BUTTON_HANG, OnButtonHang) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCheckDlg message handlers BOOL CCheckDlg::OnInitDialog() { CDialog::OnInitDialog(); //设置 list 控件的文字和背景颜色 m_oChecklist.SetBkColor(RGB(255,255,255)); m_oChecklist.SetTextBkColor(RGB(161,223,212)); //清空 list 控件的数据 for(int delcolumn=100;delcolumn>=0;delcolumn--) m_oChecklist.DeleteColumn(delcolumn); //设置 list 对话框的列 DWORD dwStyle; RECT rect; LV_COLUMN lvc; dwStyle = m_oChecklist.GetStyle(); dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS ; m_oChecklist.SetExtendedStyle(dwStyle); m_oChecklist.GetClientRect(&rect); lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT; lvc.fmt=LVCFMT_LEFT; lvc.iSubItem = 0; lvc.pszText = _T( lvc.cx = 110; m_oChecklist.InsertColumn(1,&lvc); lvc.iSubItem = 1; lvc.pszText = _T( lvc.cx = 90; m_oChecklist.InsertColumn(2,&lvc); lvc.iSubItem = 2; lvc.pszText = _T( lvc.cx = 90; m_oChecklist.InsertColumn(3,&lvc); lvc.iSubItem = 3; lvc.pszText = _T( lvc.cx = 60; m_oChecklist.InsertColumn(4,&lvc); lvc.iSubItem = 4; lvc.pszText = _T( lvc.cx = 90; m_oChecklist.InsertColumn(5,&lvc); //Add paymode to combobox. _RecordsetPtr m_pRecordset; CString sql= try { m_pRecordset.CreateInstance( m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),a dOpenStatic,adLockOptimistic,adCmdText); while(!m_pRecordset->adoEOF) { m_oCombopay.AddString((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect( } m_pRecordset->Close(); m_oCombopay.SetCurSel(0);//Select the 1st string of combobox. } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); } //Read class consume to list. ReadtoList(theApp.scallid); //Sum bill Items money from database. CString stotal; float ftotal=0; sql= try { m_pRecordset.CreateInstance( m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),a dOpenStatic,adLockOptimistic,adCmdText); if(vtemp.dblVal>0) ftotal=(float)m_pRecordset->GetCollect( else ftotal=0; stotal.Format( m_oTotalm.SetWindowText(stotal); m_oConsume.SetWindowText(stotal); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CCheckDlg::OnButtonCheckok() { CString stotal,sbilltotal,spayID,sql,spaymode,snowtime; long lpayID; _RecordsetPtr m_pRecordset; m_oConsume.GetWindowText(stotal); m_oTotalm.GetWindowText(sbilltotal); int nselect=m_oCombopay.GetCurSel(); m_oCombopay.GetLBText(nselect,spaymode); spayID.Format( if(fchange<> return; //得到系统时间 CTime now=CTime::GetCurrentTime(); snowtime=now.Format(_T( sql= +stotal+ try { _variant_t RecordsAffected; theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); return; } //output the checkout time and paymode to the print. theApp.snowtimep=snowtime; theApp.spaymodep=spaymode; theApp.sconsume=stotal; theApp.sactsum=sbilltotal; CString sclass,scontotal,sdiscount,sacttotal,svaltotal; int nItemCount=m_oChecklist.GetItemCount();//表项总数 for(int i=0;i<> { sclass=m_oChecklist.GetItemText(i,0); scontotal=m_oChecklist.GetItemText(i,1); sdiscount=m_oChecklist.GetItemText(i,3); sacttotal=m_oChecklist.GetItemText(i,4); float fvaltotal=atof(scontotal)-atof(sacttotal); svaltotal.Format( sql= values(' try { _variant_t RecordsAffected; theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); return; } } LRESULT Res=::SendMessage(theApp.pWnd, WM_CHECKOUT, 0, 0); CDialog::OnOK(); } long CCheckDlg::GetPaymodeID(CString payname) { long paymodeID; _RecordsetPtr m_pRecordset; CString sql= try { m_pRecordset.CreateInstance( m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),a dOpenStatic,adLockOptimistic,adCmdText); paymodeID=(long)m_pRecordset->GetCollect( } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); } return paymodeID; } void CCheckDlg::OnChangeEditReceive() // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. CString sreceive,schange,stotal; m_oChange.SetWindowText( m_oReceive.GetWindowText(sreceive); m_oTotalm.GetWindowText(stotal); fchange=atof(sreceive)-atof(stotal); if(fchange>=0) { schange.Format( m_oChange.SetWindowText(schange); } } void CCheckDlg::ReadtoList(CString sbillid) { _RecordsetPtr m_pRecordset; //Must define it in function!!!! CString sql,sclassname,sclassname1,sctotal; long lclassid; float fctotal=0; sql= //删除所有 list 中的数据。 m_oChecklist.DeleteAllItems(); int numline=0; try { m_pRecordset.CreateInstance( m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),a dOpenStatic,adLockOptimistic,adCmdText); LV_ITEM lvitem; lvitem.pszText= lvitem.mask=LVIF_TEXT; lvitem.iSubItem=0; while(!m_pRecordset->adoEOF) { lvitem.iItem=numline; m_oChecklist.InsertItem(&lvitem); //读出数据写入到 list 中 lclassid= (long)m_pRecordset->GetCollect( sclassname=GetClassName(lclassid); sclassname1=sclassname.Left(sclassname.GetLength()-4); m_oChecklist.SetItemText(numline,0,sclassname1);//Read class name to 0 column. fctotal=(float)m_pRecordset->GetCollect( sctotal.Format( m_oChecklist.SetItemText(numline,1,sctotal);//Read class consume total to 1st column. if(sclassname.Right(1)== m_oChecklist.SetItemText(numline,2, else m_oChecklist.SetItemText(numline,2,sctotal); m_oChecklist.SetItemText(numline,4,sctotal);//Read class consume act total to 4th column. numline++; m_pRecordset->MoveNext(); } m_pRecordset->Close(); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); return; } } CString CCheckDlg::GetClassName(long lclassid) { _RecordsetPtr m_pRecordset; //Must define it in function!!!! CString sql,sclassid,sname,sdiscount; sclassid.Format( sql= try { m_pRecordset.CreateInstance( m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),a dOpenDynamic,adLockOptimistic,adCmdText); if(!m_pRecordset->adoEOF) { sname=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect( sdiscount=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect( } } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); } return sname; } void CCheckDlg::OnClickListChecklist(NMHDR* pNMHDR, LRESULT* pResult) { //得到当前选中的行 POSITION pos = m_oChecklist.GetFirstSelectedItemPosition(); //如果选中一行 if(pos) { int nItem = m_oChecklist.GetNextSelectedItem(pos); CString sdiscount=m_oChecklist.GetItemText(nItem,3); m_oCdiscount.SetWindowText(sdiscount); } } void CCheckDlg::OnChangeEditCdiscount() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. CString sdiscountsum,sdiscount,ssum; float fdiscountsum,fsum; long ldiscount; LV_ITEM lvitem; lvitem.pszText= lvitem.mask=LVIF_TEXT; //得到当前选中的行 POSITION pos = m_oChecklist.GetFirstSelectedItemPosition(); //如果选中一行 if(pos) { int nItem = m_oChecklist.GetNextSelectedItem(pos); sdiscountsum=m_oChecklist.GetItemText(nItem,2); fdiscountsum=atof(sdiscountsum); m_oCdiscount.GetWindowText(sdiscount); ldiscount=atol(sdiscount); if(ldiscount>100||ldiscount<> { MessageBox( return; if(ldiscount<> { CString temp; temp.Format( return; } fsum=ldiscount*fdiscountsum/100; ssum.Format( if(fdiscountsum==0)//If the class could not be discount. { sdiscountsum=m_oChecklist.GetItemText(nItem,1); ssum=sdiscountsum; } lvitem.iItem=nItem; m_oChecklist.InsertItem(&lvitem); m_oChecklist.SetItemText(nItem,3,sdiscount); m_oChecklist.SetItemText(nItem,4,ssum); } float ftotal=0; int nItemCount=m_oChecklist.GetItemCount();//表项总数 for(int i=0;i<> { sdiscountsum=m_oChecklist.GetItemText(i,4); fdiscountsum=atof(sdiscountsum); ftotal=ftotal+fdiscountsum; } CString stotal; m_oTotalm.SetWindowText(stotal); } void CCheckDlg::OnButtonRf() { CString sql; if(!theApp.VerifyPower( { AfxMessageBox( return; } //得到系统时间 CTime now=CTime::GetCurrentTime(); CString snowtime=now.Format(_T( sql= try { _variant_t RecordsAffected; theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); } //When the check button is click down,send a message(WM_CHECKOUT) to the CPosDlg. LRESULT Res=::SendMessage(theApp.pWnd, WM_CHECKOUT, 0, 0); EndDialog(1);//Close the dialog. } void CCheckDlg::OnButtonHang() { if(!theApp.VerifyPower( { AfxMessageBox( return; } CString sql; sql= try { _variant_t RecordsAffected; theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); return; EndDialog(1);//Close the dialog. } long CCheckDlg::VerifyDicsount() { CString sql; _RecordsetPtr m_pRecordset; long ldiscount; sql= try { m_pRecordset.CreateInstance( m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),a dOpenStatic,adLockOptimistic,adCmdText); if(!m_pRecordset->adoEOF) ldiscount=(long)m_pRecordset->GetCollect( } catch(_com_error e)///捕捉异常 { CString temp; temp.Format( AfxMessageBox(temp); return -1; } return ldiscount; ClassDlg.cpp 文件代码: #include #include #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CClassDlg dialog extern CMyPosApp theApp; CClassDlg::CClassDlg(CWnd* pParent /*=NULL*/) : CDialog(CClassDlg::IDD, pParent) { //{{AFX_DATA_INIT(CClassDlg) m_classname = _T( m_radiodiscount = -1; m_tempid = 0; //}}AFX_DATA_INIT } void CClassDlg::DoDataExchange(CDataExchange* pDX) { //{{AFX_DATA_MAP(CClassDlg) DDX_Control(pDX, IDC_RADIO1_DISCOUNT, m_oRadiodiscount); DDX_Control(pDX, IDC_EDIT_CLASSNAME, m_oClassname); DDX_Control(pDX, IDC_TREE_CLASS, m_oTreeclass); DDX_Text(pDX, IDC_EDIT_CLASSNAME, m_classname); DDX_Radio(pDX, IDC_RADIO1_DISCOUNT, m_radiodiscount); DDX_Text(pDX, IDC_TEMPID, m_tempid); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CClassDlg, CDialog) //{{AFX_MSG_MAP(CClassDlg) ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_CLASS, OnSelchangedTreeClass) ON_BN_CLICKED(IDC_BUTTON_ADDSAME, OnButtonAddsame) ON_BN_CLICKED(IDC_BUTTON_ADDSUB, OnButtonAddsub) ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel) ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CClassDlg message handlers void CClassDlg::OnSelchangedTreeClass(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; CString sql; CString curtext; 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于java的小额支付管理平台的设计与实现 毕业设计(论文)要求及原始数据(资料): 1(综述小额支付管理平台的设计背景以及人们对于该平台的需求性; 2(深入了解实现小额支付管理平台的jsp技术,数据库等; 3(熟练掌握小额管理平台的应用与分析,训练开发此类平台的能力; 4(设计并实现便于用户操作的小额管理平台,并设立管理员权限,使其完 成对客户信息的一系列的操作; 5(深入分析小额管理系统中需要用到的关键技术与编写语言; 6(训练检索文献资料和利用文献资料的能力; 7(训练撰写技术文档与学位论文的能力。 第2页 毕业设计(论文)主要内容: 1(综述小额支付管理平台对用户管理自己账户所带来的便利 2(了解小额支付管理平台的相关技术; 3(熟悉小额支付管理平台的开发环境; 4(设计小额支付管理平台对用户提供的功能,大致分为五个模块: a) 客户及管理人员模块 b) 后台系统模块 c) 跨行转账模块 d) 发放工资模块(用于企事业单位可以向员工账户发放工资) e) 记录模块 5. 深入分析实现小额管理平台的的关键技术与编写语言java的具体方法; 6(熟练掌握基于java的小额支付管理平台代码编写; 7(设计与实现可供用户使用和管理员管理的小额支付管理平台。 学生应交出的设计文件(论文): 1(内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文; 2(包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。 第3页 主要参考文献(资料): [1] 李刚. 疯狂Java讲义[M].北京:电子工业出版社, 2012: 57~399 [2] 郝玉龙,姜韡等. Java EE编程技术[M] .北京:清华大学出版社,北京交通大学出版社,2013:46~67 [3] Bruce Tate.Bitter Java.Manning Publications,2002:103~239 [4] 刘荣辉,刘光昌著.小额支付系统的开发设计[J].计算机工程与应用,2004,1(54):107~108 [5] 李炜,韦安健,林秀勤著.小额支付系统建设中相关问题探讨[J].电信科学,2004(9):17~18 [6] 郑阿奇.SQL Server实用教程[M].北京:电子工业出版社,2002:78~89 [7] 王诚梅.JSP案例开发集锦[M].北京:电子工业出版社,2003:79~81 [8] David Flanagan. JavaScript The Definitive Guide[M].New York:O’REILLY,2011: 90~126 [9] 李建中,王珊著.数据库系统原理(第二版)[M].北京:电子工业出版社,2004:75~88 [10] (美)埃克尔著,陈昊鹏译.Java编程思想[M].北京:机械工业出版社, 2007:90~154 专业班级 软件班 学生 要求设计(论文)工作起止日期 2014年3月17日~2014年6月27日 指导教师签字 日期 2014年3月17日 教研室主任审查签字 日期 系主任批准签字 日期 编号: 毕业设计管理系统 题目类型: 需求分析 题 目: 毕业设计管理系统 院 (系): 专 业: 通信3G 学生姓名: 韩琳 孙雅琦 孙乔乔 学 号: G100102075 G100102062 指导教师: 职 称: 实验研究 2012 年 5 月 22 日 引言 编写目的 编写本需求的目的是明确本系统的详细需求,供使用单位确认系统的功能和性能,并作为软件设计人员的设计依据和使用单位的验收标准。 项目背景 开发软件名称:毕业设计管理系统。 项目开发者: 运城职业技术学院电子信息工程系“毕业设计管理系统” 开发小组: 韩琳(G100102075号,组长) ,孙雅琦(G100102062号) , 孙乔乔(G100102087号) ,李慧珍(G100102061号) ,张露(G100102097号) ,王艳娇(G100102089号) 。 用户单位:运城职业技术学院 参考资料 《移动通信J2EE 框架详解》、 《sqlserver2000教程》、 《软件工程》、 《移动通信web 方面的开发》 一.系统简介 系统开发背景 随着计算机及计算机网络的普及和全国各院校的校园网络的日益完善、健全,各种工作的计算机网络化将逐步取代繁重的传统办公模式。毕业设计作为大学生四年学习的重要环节,也有必要实行计算机网络化管理,从而减轻设计指导老师的承重负担,简化立题、选题、评分等过程,让繁冗的课题设计信息采用计算机数据库统筹管理。因此,设计一种毕业设计综合管理系统是我校教学管理发展的一项任务,也是各院校教学发展的趋势。该系统为学生、教师、教务处提供一个交互的接口,大大的方便了学生、老师及教务处的管理人员。 系统工作流程描述 在设计前期,由各个指导教师在各个院系规定的时间内进行网上立题(对应到各院系专业),立题的项目主要有课题名称、课题主要内容、立题次数、难易程度等。随后由所属院系教务审核人员对课题进行审核,审核的结果分为适用,和不适合;需要修改的课题在规定的时间内进行修改,审核人员对其进行第二次审核,审核通过的,该课题则可被学生选择,若不通过,则指出原因,教师可以查看审核结果。下一步是学生的选题阶段,学生在规定的时间内提交个人的信息,进入系统后,学生可对通过审核的题目按专业进行选择(对应到各院系专业)。各指导教师在学生自主选题的基础上对选择其所立课题的学生进行最后的选择确认。学生可以查看最后的选择结果。在教师选择结束后如果个别的学生没有课题,则与所在院系联系,系里可以根据课题的选择情况将学生调剂到学生人数相对较少的课题上。在进行课题设计的过程中,若对所选课题或指导老师有什么意见则可通过本系统提供的留言板进行反馈。设计进入尾声阶段时,指导老师可在网上对其所带学生进行打分,学生可在网上直接看到自己的成绩等。分管教务的人员可以查询和统计学生的设计成绩。 系统操作流程图 通过以上的描述,画出系统的操作流程图如下: ? 图 毕业设计管理系统操作流程图 二. 开发工具简介 网站整体设计工具的选择 系统开发工具用MyEclipse ,MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse )是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE 的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率[10]。它是功能丰富的J2EE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML ,Struts ,JSF ,CSS ,Javascript ,SQL ,Hibernate 。 在结构上,MyEclipse 的特征可以被分为7类: (1) J2EE模型 (2) WEB开发工具 (3) EJB开发工具 (4) 应用程序服务器的连接器 (5) J2EE项目部署服务 (6) 数据库服务 (7) MyEclipse整合帮助 对于以上每一种功能上的类别,在Eclipse 中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse 结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。 简单而言,MyEclipse 是Eclipse 的插件,也是一款功能强大的J2EE 集成开发环境,支持代码编写、配置、测试以及除错[11]。 图片处理工具的选择 Photoshop CS3 是用于设计、优化和集成 Web 图形的完备解决方案。经由专业化的控制、更为快捷的性能以及完美的集成,自如地掌控图形开发。 后台开发环境 JDK (Java Development Kit ,Java 开发包,Java 开发工具) 是一个写Java 的applet 和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java 语言写的applet 和应用程序所需的工具组成。 JDK(Java Development Kit)是Sun Microsystems针对Java 开发员的产品。自从Java 推出以来,JDK 已经成为使用最广泛的Java SDK(Software development kit )。 JDK 包含的基本组件包括: ● javac – 编译器,将源程序转成字节码 ● jar – 打包工具,将相关的类文件打包成一个文件 ● javadoc – 文档生成器,从源码注释中提取文档 ● jdb – debugger ,查错工具 JDK 中还包括完整的JRE (Java Runtime Environment,Java 运行环境),也被称为private runtime 。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL 库。 数据库开发环境 SQL Server 2000是一种高性能的关系型数据库管理系统,在SQL Server 7.0 的基础上大大扩展了系统的性能、可靠性和易用性,逐渐成为OLTP (在线事务进程)、数据仓库和e 商务应用最好的数据库平台。SQL Server 2000的特点: ● 简便的操作方式 ● 以Client/Server为设计结构 ● 支持多个不同的开发平台 ● 支持企业级的应用程序 ● 支持XML ● 数据仓库支持 ● 用户自定义函数 三.系统分析 系统分析介绍 技术可行性 本系统采用微软的JSP 技术,Microsoft 的Java Sever Pages(JSP)是服务器端脚本编写环境,使用它可以创建和运行动态、交互的WEB 服务器应用程序。使用JSP 可以组合HTML 页、脚本命令和ActiveX 组建以创建交互的Web 页和基于Web 的功能强大的应用程序。JSP 应用程序很容易开发和维护。 经济可行性 本系统由于本身并不复杂,采用先进的JSP 技术后,不需要投入太多的人力、物力,从而开发所需要的资金投入也不会很大,在经济上是完全可行的。 操作可行性分析 随着校园网的建成与发展,正是此系统大显身手的好机会,且此系统是在校园内部网上运行的。 通过以上方面的分析得出结论:基于校园网的毕业论文管理系统符和软件开发的要求,可以实现。 系统的综合要求 本系统的开发采用B/S模式,即浏览器/服务器模式,是一种从传统的二层C/S模式发展起来的新的网络结构模式,其本质是三层结构的C/S模式。B/S是在用户和数据库之间加入一个Web 服务器从而较圆满的克服了传统的C/S模式的缺点。 主要表现在: 1. 由于客户端软件为浏览器,B/S模式提供了一致的用户界面,且实现客户端的零配置和客户端平台无关。 2. 系统开发维护和升级都集中在服务器端,因而易于升级扩展和集成。B/S模式基于开放的TCP/IP协议,具有良好的开放性,扩展性。 3. B/S模式提供灵活的信息交流和信息发布。 4. B/S模式具有很好的经济性且易于推广。 系统功能要求 (1) 方便强大的资料管理功能,良好的界面;尽量避免字和长字符串的人工重复输入。 (2) 灵活,方便的查询性能快速实现符合关键条件的查询。 (3) 应有较强的可扩充性。 (4) 教师完成课题申报,修改,选择学生,成绩评定;管理员完成审核;;提供综合查询等功能。 系统运行要求 本系统使用环境分为服务器和客户端。 (1) 服务器环境如下: CPU :Pentium II及其以上CPU 机器 硬盘:不少于1GB 内存:64MB 以上 软件:Windows98/2000/NT 4.0+IIS 4/5.0或PWS 3/4.0,数据库采用Microsoft sqlserver,浏览器 IE4.0或Netscape4.0以上的版本。 (2) 客户端环境如下: CPU :Pentium II及其以上CPU 机器 硬盘:不少于640MB 内存:32MB 以上 软件:Win 2000/xp +浏览器 IE4.0或Netscape4.0以上的版本。 四.系统总体设计 系统的综合要求 1. 应具有方便,强大的资料管理和良好的人机界面,使用户易于操作,便于浏览。 2. 系统的健壮性,扩展性良好。系统具有对数据备份和日志记录的功能。 3. 系统的安全性好,通过密码和权限的管理是用户的数据不受到侵害。 4. 系统的动态信息交互功能强,系统根据不同的用户的权限开放不同的处理权限;不同的用户可以通过留言板进行信息的沟通。 5. 系统尽量给用户提供一个良好的操作环境。 系统结构 根据功能分为教师,学生的前台操作和系教务人员的综合管理。 系统有三个主要的角色组成:学生. 教师. 管理人员。 1. 教师完成的操作: 个人信息的管理,课题的申报、修改、选择学生,设计期间与学生的交流与辅导、成绩的评定。 2. 学生完成的操作: 注册自己的个人信息,选择课题,设计期间利用留言板和教师进行交流。 3. 管理人员: 对教师,学生的信息查询,添加和删除;课题审核,对数据库进行备份和恢复,完成数据的初始化;网站的设置与管理。 系统功能模块图 系统主界面 ? ? ? ? ? 主界面主要分为三个部分: 学生 教师 管理员 不同人员点击各自相应的链接进行操作 图 登录界面 登陆界面的参考代码: width ="90%"> style ="width :100%; height :100%; overflow :auto " > 学生 教师 管理员 <> 运城职业技术学院 联系人:韩琳| QQ:1823568863| 邮箱:1823568863@qq.com 1. 学生模板 ? 学生通过点击界面左侧的按键可以完成个人信息,密码修改,课题选择,成绩查询,留言等操作。 图 学生模块预览效果图 学生模块参考代码: ' target="right">选题 学生个人信息 成绩查询 注销 2. 教师模板 ? 教师通过点击界面中部的按键,可进行个人信息,密码修改,上传课题,选择学生,录入学生成绩,留言等功能 图 教师模块预览效果图 教师模块参考代码: ' target="right">上传课题 确定选课学生 学生成绩录入 注销 3. 管理员模板 管理员可以管理学生和教师信息,查看和选择毕业课题,管理留言信息等。 图 管理员模块预览效果图 管理员模块参考代码: 学生管理 添加学生 删除学生 查看学生信息 教师管理 添加教师 删除教师 查看教师信息 成绩管理 查看成绩 课题管理 添加课题 课题信息修改 查看课题信息 删除课题 留言管理 发表留言 删除留言 注销 五.数据库需求分析 通过系统功能分析,针对一般论文信息管理的需求,分析总结出如下需求信息: ● 学生对个人信息的维护 ● 学生可以选题,提交,查看成绩 ● 学生可以查看留言板以及留言 ● 老师个人信息的维护 ● 教师可以上传课题,评分 ● 教师可以查看留言板以及回复留言 ● 管理员可以审核课题,添加课题,查看成绩 ● 管理员可以查看留言板以及回复留言,管理数据库 学生信息表 student 教师信息表teacher 选题信息表 sc 课题信息表 course 评分信息表 grade 留言板信息表 message 六.网站测试与性能分析 测试的目的 软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。软件测试的目的是为了检验软件系统是否满足需求。 测试的方法 1 基本数据的测试 在数据测试的过程中,主要测试了登陆数据,用户权限等。防止用户越权操作。对一些信息从数据库中取出来并输出页面,开始老出现SQL 异常。测试发现:用ODBC 可以正常连接并取出数据。 2 系统的测试 在测试系统整个流程的过程中,针对系统的主要流程,进行用户的模拟操作。针对系统各个功能模块,对照功能的流程图,对每一个操作都进行了分析,得出了各种可能出现的情况,并对各种情况的不同处理进行了测试,包括正常情况和错误处理情况。 3 其他测试 由于测试的过程中,时间比较少,在测试的方法和测试用例的选择方面可能还存在各种不足之处,系统的某些方面难免存在不足或者漏洞,只能在现有的水平上来解决所有这些现有的问题。不过,系统的可维护性还是很高的,如果以后发现新的问题,应该可以及时解决。 在测试系统的整个流程的过程中,针对系统的不同分支结构,不同功能模块,都发现了或大或小的问题,例如,退出窗口提示数据保存信息,以及一些逻辑顺序错误。在改正这些错误的同时,对整个系统的结构又进行了比较完善的修改,尽量做到了没有系统错误,没有异常退出等情况出现。 总结 本系统是一个毕业设计管理信息系统,具有一定实用性的数据库信息管理系统。它主要完成毕业设计中的双向选题、互动交流、毕业资格审查、系统管理等功能。本系统采用当前流行的开发工具—MyEclipse 来完成整个系统的设计,在数据库的设计上利用了SQL 的便利性和实用性,所以很好的满足了数据的独立性和共享特性。不过程序的测试是一项相当庞大的系统工程,不是像我们那样经过普通的测试一些数据就能够说明的;由于对数据库的修改操作都是相当即时的,所以本项目数据的一致性是能够得到保障的。 在这几个月中,我付出了许多也得到了许多,对以前所学的专业知识进行了再次的巩固,更好的掌握了所学知识,随着计算机信息管理系统技术的日趋成熟,加之毕业设计管理信息系统给学校毕业设计管理带来的便捷性、高效性,相信本系统必将受到高校的青睐。 由于本人知识水平和能力有限,无论是所作的系统还是论文都难免会有不足之处和缺点存在,恳请老师予以批评指正。 范文四:java小额支付管理平台毕业设计任务书
范文五:java毕业设计管理系统需求分析
毕业设计管理系统
用户名: 密码: type ="reset" value =" 取消" />
' target="right">密码修改
' target="right">留言板
教师个人信息
' target="right">密码修改
' target="right">留言板