数据库原理及应用课程设计
一、课程设计的目的
《数据库原理及应用》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《数据库原理及应用》课程后进行的一次全面的综合练习。本课程设计主要在于加深学生对数据库基础理论和基本知识的理解,掌握数据库应用系统设计开发的基本方法,达到进一步使学生综合运用所学知识和增强实际动手能力的目的。
二、课程设计的任务与要求
要求学生根据自身对题目的理解情况,从给定的设计题目中选择一个,以MS SQL Server作为后台数据库平台,以PowerBuilder作为前台开发工具,完成一个小型数据库应用系统的系统的分析、设计和开发。
三、课程设计说明书
仓储管理系统
对于一个以生产或经营产品为主要业务的单位来说,仓库管理系统至关重要。高效方便的仓库管理系统,可以为生产经营提供坚强的后盾和有力的支持。效率低下甚至是混乱不堪的仓库管理系统,无疑会成为企业健康发展的拖累甚至是枷锁。使企业发展动力不足。本次数据库设计实现了仓库管理的高效化、电子化。通过本系统可以方便地实现仓库管理中的货物登记、出库入库等操作,使仓库管理井井有条。
1系统需求分析
1.1系统功能需求分析
仓库管理系统主要实现对库存商品的管理,对商品出库、入库的管理,和对仓库管理系统维护的功能。具体要实现的功能包括:
1)库存商品管理
查看数据库中商品的名称、编号、单价等信息。
2)商品出库、入库管理
入库、出库单纪录本次入库、出库的货物名称、数量,入库、出库的时间、商品单价以及总价,入库、出库的经手人等。
3)商品的查询
输入商品的编号或者商品的名称查询信息
4)用户管理
用户可以修改登录密码
1. 2数据需求分析
1.员工(ID ,姓名,密码,权限)
2.商品(商品名,商品编号,所属类,单价)
3.出货表(商品名,商品编号,数量,总价,经手人)
4.入货表(商品名,商品编号,数量,总价,经手人)
5.查询(商品名,商品编号,数量,单价)
根据上面的关系我们需要的数据基本上就上面所列出的数据。
2 系统总体设计
1)库存商品管理
查看数据库中商品的名称、编号、单价等信息。
2)商品出库、入库管理
入库、出库单纪录本次入库、出库的货物名称、数量,入库、出库的时间、商品单价以及总价,入库、出库的经手人等。
3)商品的查询
输入商品的编号或者商品的名称查询信息
4)用户管理
用户可以修改登录密码
2.1系统总体结构设计
2.2.1 E-R图
2.2.2 关系模式
1.员工(ID ,姓名,密码,权限)
2.商品(商品名,商品编号,所属类,单价)
3.出货表(商品名,商品编号,数量,总价,经手人)
4.入货表(商品名,商品编号,数量,总价,经手人)
5.查询(商品名,商品编号,数量,单价)
2.2.3 数据表
“员工信息表”“商品信息表”“出货单”“进货单”的主键分别是:ID、商品编号、商品编号、商品编号。
员工信息表
商品信息表
出货单
进货单
3.系统实施
工作界面PB9.0,以下是我制作过程和运行中的一些截图:
首先建立PB与SQL的数据链接:如果链接不成功,返回对以话框“数据库连接错误,经检查后再试!”
然后点Preview选项会弹出如下窗口:
一、 工作界面截图:
分别建有:workspace、application、windows、dw_、da_等。
工作时检测连接数据库是否正常的程序代码:
// Profile q
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=仓库;UID=;PWD='"
connect;
open(w_enter)
二、 运行结果的截图:
这个是我运行后的第一个用户界面,在界面中输入管理员ID和密码。我的管理员ID 和密码分别为 1,123.点击确定进入menu下一界面。
若ID和密码分别输入1,1234,则跳出以下界面:
确定按钮所对应的代码如下:
//定义两个变量
string password,userid
password=sle_2.text
//检索用户名和密码记录
SELECT "员工信息表". "ID",
"员工信息表"."密码"
INTO :userid,
:password
FROM "员工信息表"
WHERE "员工信息表"."ID" =:sle_1.text and "员工信息表"."密码" =:sle_2.text;
//判断用户输入的用户名是否正确
if sqlca.sqlcode<>0 then
messagebox("错误!","ID或密码错误,请重新输入!",exclamation!,ok!,2)
else
messagebox("通过验证!","ID和密码正确,欢迎您使用本系统!",Information!,ok!,2)
open(w_main)
close(w_enter)
end if
取消按钮所对应的代码如下:
close(parent)
//关闭登录窗口
三、 menu界面的截图:
在本界面中我们通过点击菜单栏上的不同管理按钮来实现管理和操作的功能。
进货—进货单
出货—出货单
库存—蔬菜类
—水产类
—肉类
系统维护—修改密码
查询
四、 进货的截图如下:
在本界面中,操作员可以输入进货信息
五、 进货的截图如下:
在本界面中,操作员可以输入出货信息
六、本界面是实现用户更改自己的密码的界面
用户在登陆后根据上面的提示可以更改自己的密码。
程序代码如下:
string oldid
string oldp
string newp1
string newp2
oldid=trim(sle_1.text)
oldp=trim(sle_2.text)
newp1=trim(sle_3.text)
newp2=trim(sle_4.text)
if len(oldp)=0 or isnull(oldp) then
oldp=space(10)
end if
if len(newp1)=0 or isnull(newp1) then
newp1=space(10)
end if
if len(newp2)=0 or isnull(newp2) then
newp2=space(10)
end if
select "operator"."password"
into :oldp
from "operator"
where "operator"."password"=:oldp;
if sqlca.sqlcode<>0 then
messagebox("提示","原密码不正确!")
sle_2.text=""
sle_2.setfocus()
return
end if
if newp1<>newp2 then
messagebox("提示","两次新密码输入不同!")
sle_4.text=""
sle_4.setfocus()
return
end if
Update "operator"
set "password"=:newp1
where "operator"."operator_id"=:oldid;
if sqlca.sqlcode<>0 then
rollback;
messagebox("提示","密码更正错误! 请重设!")
return
end if
gs_password=newp1
commit;
messagebox("提示","密码修改成功!")
七、本操作可以看仓库里的商品并可对其进行插入和删除
八、从仓库查询所需要的商品
4 系统评价
系统的功能基本上已经实现,但是还是不够完善。但是在使用的时候还是能给用户带来一定的方便的。仓库的进货和出货在本系统中能直观的以表格形式反映出来,便于操作员的使用和决策者的管理。
4.1 系统特色
本系统要求用户进行验证之后才能进入相应的界面。有利于保护数据库的安全,不被非法登陆使用。对于仓库内货物的进出管理要求严格,即进出货时必须填写相应的进出货单据。便于企业管理查看账目,保障了企业的稳定运行。通过本系统可以方便地实现仓库管理中的货物登记、出库入库等操作,使仓库管理井井有条。在查看数据库时可以方便的删除数据库中冗余的信息和添加新的信息。
4.2 系统不足及改进
这个系统基本上实现了一些简单的对系统所涉及表的更新、增加和删除的功能。也实现对用户登陆的安全上有了一定的限制,只有在正确输入ID和密码的时候才能进入系统。远没有达到大型公司的仓储物资管理的要求,所创建的数据库框架比较简单,各表之间的联系也过于简单,没有添加外键相互约束,用POWER BUILDER做出来的系统过于简单、单调,需要进一步深入的调整优化,将各表之间的关系紧密联系起来,相互制约,保证数据库中数据的添加、删除、更新,安全有序。操作窗口还需要进一步的进行美化,使用户在使用中更赏心悦目。
5 课程设计心得
这次课程设计的主要目的是掌握数据库应用系统分析设计的基本方法,基本掌握PowerBuilder,进一步提高分析解决问题的综合能力。通过这次课程设计,我基本掌握了以上要求。但只有两周的课程设计时间,时间比较仓促,所以开发的系统不是很完善,有一些功能未实现,但是仓库管理的基本功能均已实现。以前对数据库的很多知识认识都不深刻,做过这次课程设计之后,我对数据库的知识有了一个比较系统的了解;比如:对表内一些字段的约束,关系等的运用已经比较熟练。这个课程设计使我巩固了数据库的知识。
对于PowerBuilder也有了一定的了解,由于用的不多,所以运用的不是很熟练。刚开始的时候,对于PowerBuilder的语法,用法等一系列知识都不熟悉。当我基本完成此系统开发的时候,我发现其实也没有那么难,在未做之前我还害怕做不出来。经过对这个系统的开发,在开发过程中遇到但也解决了很多问题,所以说我们不能惧怕有困难而不去接触认识它,我们要知难而上,只有这样我们才能成长,才能有所发展。
这认为最难的一部分是用户查看数据库时通过插入删除按钮对数据库的更改,因为我们在文本框中输入的数字是被默认为字符型的,我在其中使用了integer(string)这个函数把字符型的进行了转换,但是在使用的过程中并不能像我所想像的那样有用。因为时间有限,所以这个问题还没有完全的解决。
通过这次数据库课程设计加深我对数据库基础理论和基本知识的理解,掌握数据库应用系统设计开发的基本方法,达到进一步使我综合运用所学知识和增强实际动手能力的目的。
我会继续学习数据库的知识,学习PowerBuilder的知识,只有通过不断的学习充实自己,才能让自己有所得。只有了知识的积淀,才能为自己的发展铺平道路!
可以参考一下啊,最终还是要自己做的吧。。仅供参考。
Ⅱ 如何在UG系统中建立用户自定义刀具库
1、进入加工界面,点击最上方的创建刀具命令。
Ⅲ 如何把别人的UG文件里的刀具库,输入到自己的刀具库里
一、创建刀具几何结构参数数据库
在实际加工应用中,需要对一个工件或多个工件编制加工工艺及程序时,都有可能用到多种
规格、不同类型的加工刀具。如果我们在编制程序时,每次都要重新创建并设置这些刀具参
数,包括刀具的几何结构、材料等,效率必将大大下降,而且所完成的也只是些简单的重复
劳动。
在UG系统的 CAM模块中,我们可以通过在Create Tool对话框中选择 Retrieve Tool按钮,直
接调用UG刀具库中定义的30多种不同类型的刀具,如图1和图2所示。但UG库中的刀具多数并
不是我们需要的规格尺寸的刀具,因此我们希望可以一次性地定义好需要的刀具几何结构参
数,在以后的操作中能够像调用UG库中刀具一样,直接使用。
在UGⅡ系统中,刀具几何结构参数库主要存放在 ${UGⅡ_BASE_DIR}\Mach\resource\
library\tool\ 目录下,主要由以下几个文件构成:ASCⅡ子目录下Dbc_tool_ ascⅡ.def、
Dbc_tool_ascⅡ.tcl和English或Metric 子目录下的Dool_ database.dat。 文件
Dbc_tool_ascⅡ.def 定义了刀具库必要的刀具几何结构参数变量及库的类型层次结构;文件
Dbc_tool_ascⅡ.tcl则包含了各个刀具库操作事件处理器,它们主要用于UG与刀具库的连接
。在文件Tool_database.dat中存放的就是我们最关心的东西,所有的刀具几何结构参数和材
料信息都在其中。
用户定义新的刀具,可以直接修改Tool_database.dat文件中的刀具记录。另外,也可以在
UG中先定义好刀具的几何结构参数,然后通过执行Shop Documentation,选择最后一个输出
模板Export Tool Library to ASCⅡ datafile,把刀具参数输出到一个文件。接下来,需要
做的工作就是把输出到这个文件中的刀具记录添加到Tool_database.dat文件中。
至此,应该说,基本可以达到最初的目的了。但在实际使用中,随着自定义的刀具不断增多
,用户自己也不清楚到底定义了多少、定义了哪些种类的刀具,从库里调用刀具时,更需要
搞清楚要调用的刀具究竟属于UG刀具库中哪个类型的刀具,如图2所示。通过深入研究,发现
在Dbc_tool_ascⅡ.def文件中对刀具库的类型层次结构定义时,UGⅡ系统用CLASS MILLING、
CLASS DRILLING和CLASS TURNING定义了刀具库的三个主类,在这三个主类下又定义了30多个
子类。在Tool_database.dat文件中的每条刀具记录,都以DATA开头,都包含有T和ST数据,
实际上它们就是此条记录定义的刀具主类TYPE和子类SubType信息。
在向文件Dbc_tool_ascⅡ.def中加入主类代码时,注意前后“{}”的位置,并跟系统定义的
CLASS MILLING、CLASS DRILLING和CLASS TURNING主类结构保持平行,嵌入在CALSS TOOL的
定义中。其中定义的主类类型值不能重复。在每个主类下,可以根据主类自行定义相关的子
类,即用SubType 代替 QUERY "[DB(Type)] = = [01]"中的 Type,并且类型代码值也可以重
新排序。
完成了刀具库自定义类型层次结构的定义,需要从库中检索刀具,还得修改刀具几何结构参
数数据库(Tool_database.dat)中的刀具记录,即修改记录中的T和ST对应的值,则该条记
录进入相应的主类和子类检索,得到如图4所示检索结果。要建立一个完整的刀具几何结构参
数库,类型层次结构定义是基础,后续要做的就是不断地把相应的刀具记录添加到数据库文
件Tool_database.dat中,形成用户自定义的刀具库。
二、创建自定义刀具材料库、零件材料库以及刀具切削参数库
通过以上工作所建立的刀具库,笔者称为刀具几何结构参数库,它主要由刀具的几何结构数
据组成。对于编程人员来说,创建一个Operation,生成可以使用的刀位程序,还需要设置刀
具的相关切削用量参数,包括主轴转速、切削深度、进给速度等。在UG系统的CAM模块中,执
行Feeds and Speeds对话框中的Reset from Table,系统可以根据切削深度、刀具材料、零
件材料及切削方法,自动从库中调用并计算出相应的切削用量值。
除切削深度需要手动设定外,用户从相应的库中可以直接调用不同的切削方法、零件材料和
刀具材料。其中刀具材料,我们也可以在创建刀具时从刀具几何结构参数库中直接得到,关
键是在建立刀具几何结构参数库时,刀具记录中包含了正确刀具材料信息MATREF,即引用刀
具材料库的某一材料参考信息。在UG系统中,切削方法、零件材料、刀具材料都以库参考值
存在,分别对应于CUT_METHODS. DAT、PART_MATERIALS.DAT、TOOL_MATERIALS.DAT文件中的
LIBRF值。系统执行Reset from Table,根据各库参考值和切削深度,在切削参数库
FEEDS_SPEEDS.DAT文件中进行检索,引用被检索出记录的数据,如Surface Speed、
Feed_per_Tooth等的值,进而计算出相应的主轴转速、进给速度等。
因此,在建立刀具材料库、零件材料库时,应系统规划,统一标准,避免混乱,而建库本身
就比较简单了,可以参照UGⅡ系统相应的库,增加或修改以DATA开头的记录。建立刀具切削
参数库的工作就要烦琐得多。一般来说,在实际加工中,要根据不同刀具材料、零件材料,
以及不同的切深和切宽,选择不同的刀具切削用量。一个成熟的工艺技术人员,可根据长期
积累的经验,并参照刀具商提供的参数,结合加工实际状况,选择合适的切削用量,也可以
反过来根据实际加工情况,修正经验值,完成经验的不断积累。创建自定义刀具切削参数库
,就是把用户的经验积累起来,并予以数值化提供给其他技术人员。
三、创建刀具几何图形库
谈到建立刀具库,不能不涉及到刀具几何图形库的使用。创建刀具几何图形库,主要目的就
是在最新的Unigraphics NX2.0 系统中进行刀位机床仿真时,可以调用用户构建的刀具计算
机三维几何模型,如图6所示。没有用户自定义的刀具几何图形库,或者调用UG系统自带的刀
具模型,显然达不到机床仿真的目的。
系统刀具几何图形库,由${UGⅡ_BASE_DIR}\Mach\resource\ library\tool\graphics 目录
下一系列刀具的实体模型文件构成,包含用于显示刀具装配的信息。构建用户自定义的刀具
装配模型,推荐在非主模型文件中,将用户自定义刀具、刀柄及相关部件进行装配。对于钻
削或铣削的刀具,在模型装配时,刀具轴应与X轴正方向一致,坐标系零点在刀柄夹持点(
Tool Tracking Point)。另外,构建的刀具非主模型文件名应与刀具几何结构参数库
tool_database.dat文件中DATA记录的LIBRF值相同。这样,按照以上原则,系统进行刀位机
床仿真或需要显示刀具时,才能够按照刀具的库参考值,调出刀具装配模型,并以系统缺省
方向和位置显示出用户自定义的刀具模型。
四、在创建自定义刀具库过程中需要注意的几个问题
(1)建立刀具库时,在dbc_tool_ascⅡ.def文件中定义刀具主类或子类时,UI_NAME 后面可以
采用中文字串。另外,库中所有记录的刀具描述、材料描述都可以采用中文字串。但目前不
建议刀具库记录中的LIBRF值采用中文。
(2)建立刀具几何结构参数库、刀具材料库、零件材料库及切削参数库过程中,应保持每个库
中的LIBRF值的唯一性,原因在于它是作为系统其他库引用和系统内部识别的标识。
(3)调用刀具库创建刀具时,为增加检索查询项目,可以在dbc_tool_ascⅡ.def文件内,相应
刀具主类或子类定义的“DIALOG libref Diameter”行中,加入需要增加的刀具查询参数。
当然,要提高CAD/CAM系统效率,以及工艺制造技术人员的快速反应能力,本文所涉及到的仅
仅是系统里很小的一个环节。更多的工作还需要技术人员不懈的努力,脚踏实地地收集和积
累制造系统中的各个基础数据,结合现代新技术不断完善和健全,从而提高系统整体的协作
水平和工作效率