ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:345.35KB ,
资源ID:4516172      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4516172.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库期末作品设计分析报告Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数据库期末作品设计分析报告Word文档格式.docx

1、 2.5 图书类型窗口编程 18 2.6 查找窗口编程 19 2.7 用户窗口编程 25 2.8图书信息窗口编程 26 2.9 记录信息窗口编程 28 2.10 数据显示控件编程 313 实训心得 331 数据库设计熟悉PowerBuilder数据库开发技术实训环境,熟练掌握数据库、表、窗口界面的设计、图形按钮的添加、数据库的链接及函数的创建与应用,确立数据库创建的方向,对图书管理系统进行分析并设计系统实现需要哪几张表以及各表结构,确立数据库创建的要求,优化数据库界面的设计。1.1需求分析书籍是人类不可缺少的精神食粮,对学校来说,显得尤为重要。所以图书馆管理系统应该是能够为读者提供充足的信息和

2、快捷的查询手段的一种方式。但一直以来人们都是使用传统的人工方式来管理图书,这就给图书馆的管理和图书信息的查阅带来了很大的不便,使得图书管理的效率低下、保密性差,时间一长,还容易造成文件和数据的丢失,给查找、更新和维护带来了很大的困难。图书管理工作繁琐,借阅频繁,包含大量的信息数据,因此就需要一个完善的图书管理系统来实现对这些数据的有效管理。从而达到对图书、读者、员工、借阅信息、查询进行统一管理,满足各类用户的需求。随着计算机信息技术的发展,数据库作为信息技术的一部分也在飞速的发展着。使用数据库对图书资源进行管理具有着手工管理无法比拟的优点,它检索迅速、查找方便、可靠性高、存储量大、成本低,所以

3、数据库成为了图书馆管理最主要的选择。1.2 数据库设计内容利用PowerBuilder开发一个基于SQL Anywhere数据库的小型图书管理系统。该图书管理系统主要具有如下五个功能:图书类型信息的查询和编辑,图书信息的查询和编辑,用户信息的查询和编辑,借还书记录的生成和查询,指定用户借还书记录的查询。其中前三个功能是必须实现的功能,后两个功能为选做。此外,可根据思考题(见群共享中压缩文件PB0520)中的要求优化图书管理系统的功能,也可自行对系统进行功能的优化。1.3 概念设计概念设计是在需求分析上的,用概念数据模型来表示数据以及数据之间的相互联系,从上述的分析中规划处图书馆管理系统的实体有

4、图书信息实体、图书类型实体、用户实体、借书记录实体。用户实体E-R图图书信息表作者图书编号图书名称类型编号出版社 图书信息实体E-R图 图书类型实体E-R图借书记录表记录编号用户编号借出日期归还日期 借书记录实体E-R图1.4 逻辑设计 数据库逻辑设计是整个设计的前半段,包括所需的实体和关系,实体规范化等工作,在图书馆管理系统的数据库设计中,实体与实体之间通过关系得到了很好的连接,主要体现在一对一的关系、一对多的关系、多对多的关系。一个1:n联系可以转换为一个独立的关系模式1联系可以转换为一个独立的关系模式一个n:1.5 窗体界面设计以及控件的添加 窗口设计和控件的添加是数据库开发必不可少的步

5、骤之一,在图书馆管理系统数据库中也是如此,图书馆管理系统的窗口设计采用的是普通方式和继承方式并存的方法。如下图所示: 图11 登录窗口 图1-2 查找窗口 图1-3 记录窗口 图1-4 祖先窗口(数据显示窗口)设置好祖先窗口后,就要进行四个子孙窗口的设置分别是:图书类型窗口、图书信息窗口、用户信息窗口、记录信息窗口。在完成窗口和控件的设置之后,我们就要对控件 create datawindow的 dataobject 属性进行设置,使其与之相关的表格进行关联。 图1-5操作窗口 图1-6 系统树窗口1.6 表的设计以及表中数据的添加 在数据库中表的设计以及表中数据的添加都是至关重要的,此次实训

6、设计中的表格以及数据如下图所示: 图1-7 图书信息表 图1-8 借书记录表图1-9 图书类型表 图1-10 用户信息表2 数据库编程无论是采用哪种开发工具开发应用程序,编写代码是必不可少的。编写代码的过程也就是平常所说的编程,在 PowerBuilde 中采用的是Powerscript语言,它简单易学,编写程序的格式比较自由,用Powerscript语言编程能够更好、更快捷、更方便的创建数据库,更加准确的添加数据及其实现数据库一系列的功能。2.1 数据库链接代码应用对象的open事件SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm=C

7、onnectString=DSN=mybook;UID=caowei;PWD=7077 connect using SQLCA;if SQLCA.SQLCode0 then messagebox(连接失败,原因:+sqlca.sqlerrtext,stopsign!)halt closeend ifopen(dljm)2.2 操作界面编程(1)界面设置代码如下:w_main的closequery事件string wtitle=if not cb_type.enabled then wtitle=图书类型elseif not cb_book.enabled then图书信息elseif not

8、cb_user.enabled then用户信息elseif not cb_log.enabled then借书记录elseif not cb_query.enabled then记录查询if wtitle thenmessagebox(系统提示, 请先关闭【+wtitle+】窗口!,exclamation! return -1(2) 窗口关闭代码如下:cb_close的clicked事件close(parent)2.3 数据显示窗口编程(祖先窗口代码编辑)(1) 数据读取代码如下所示:dw_base的open事件this.x=w_main.x+w_main.widththis.y=w_mai

9、n.ythis.tag=this.title/保存窗口的标题dw_1.settransobject(SQLCA)/连接事务对象dw_1.retrieve()/读取数据dw_1.object.datawindow.readonly=truedw_1.setrowfocusindicator(hand!)/设置行指示标记(2) 函数设置代码如下:1) dw_base的closequery事件string msg=部分数据被改动!是否存盘?if this.titlethis.tag thenchoosecasemessagebox(提示,msg,question!,yesnocancel!,1)ca

10、se 1cb_save.event clicked()case 2 return 0case 3return 1 end choose end if2) f_checkempty自定义函数string msgdw_1.setcolumn(col_name)/设置当前列if dw_1.gettext()= msg=+col_title+值不能为空!请修改.,msg,exclamation! return -1 else return 13) f_resetitem自定义函数string org_valueinteger i,cols/i为计数变量,col存放列总数long currow/记录当前

11、行currow=dw_1.getrow()/获得当前行的行号choose case dw_1.getitemstatus(currow,0,primary!) case new!,newmodified!/new表示新插入行,还没设任何值 dw_1.deleterow(0)/直接删除该行case datamodified!/如果数据被修改过则进行恢复cols=integer(dw_1.object.datawindow.column.count)for i=1 to cols/采用循环方式恢复所有数据列的值if dw_1.getitemstatus(currow,i,primary!)=dat

12、amodified! then org_value=dw_1.getitemstring(currow,i,primary!,true)dw_1.setitem(currow,i,org_value)nextend choose4) f_setstatus自定义函数long currow /存放当前记录行的行号f_setstart()dw_1.object.datawindow.readonly=viewmodecb_add.enabled=viewmodecb_del.enabled=viewmodecb_find.enabled=viewmodecb_reload.enabled=view

13、modecb_close.enabled=viewmodeif viewmode then /若是浏览状态 cb_edit.text=编辑 cb_save.text=保存 dw_1.tag=/清除数据窗口控件保存的当前记录行的行号 else cb_edit.text=取消 cb_save.text=确定 /设置数据窗口控件的初始编辑状态 currow=dw_1.getrow()/获得当前行的行号 dw_1.tag=string(currow) dw_1.scrolltorow(currow)/滚屏,确保当前行可见 dw_1.selectrow(currow,false)/去掉加亮 dw_1.s

14、etfocus()/将输入焦点移到数据窗口控件中 dw_1.setcolumn(1)/将第一列设为当前列 dw_1.selecttext(1,len(dw_1.gettext()f_setend()(5)dw_1的losefocus事件:this.accepttext()/数据窗口控件失去输入焦点时接收悬浮数据dw_1的itemfocuschanged事件long editrow /存放当前记录行的行号if this.tag then /若为编辑状态,见f_setstatus函数editrow=long(this.tag)/获得当前正在编辑的记录行号if editrowrow then/判断是

15、否是当前行号this.setrow(editrow)/不是则修改当前行号this.scrolltorow(editrow)/让当前行可显示2.4 窗口按钮编程(1) cb_add(添加)按钮:long newrownewrow=dw_1.insertrow(0)/插入新行到最后dw_1.setrow(newrow)/将新行设为当前行f_setstatus(false)调用f_setstatus函数将窗口设为编辑状态(2) cb_del(删除)按钮:是否删除当前记录?请确定.dw_1.selectrow(dw_1.getrow(),true)/加亮显示要删除的行if messagebox(,ms

16、g,Question!,YesNo!,2)=1 thendw_1.deleterow(0)/删除当前行elsedw_1.selectrow(dw_1.getrow(),false)/取消行的加亮显示(3) cb_edit(编辑)按钮:if this.text=f_setstatus(false)/若文本为“编辑”设为编辑状态f_setstatus(true)/若文本为“取消”设为浏览状态f_resetitem()/恢复原始数据值(4) cb_save(保存)按钮:integer rtnrtn=dw_1.update()/更新操作if rtn=1 then/更新成功 COMMIT USING S

17、QLCA;/提交语句else/更新失败ROLLBACK USING SQLCA;/回滚语句parent.title=parent.tag/让窗口的title恢复为原始title(5) cb_close(关闭)按钮:(6)cb_reload(重载)按钮:dw_1.retrieve()2.5 图书类型窗口编程(1) w_type窗口的close事件w_main.cb_type.enabled=true(2) cb_save的clicked事件 if f_checkempty(id编号)=-1 then returnif f_checkempty(title名称f_setstatus(true)/退

18、出编辑状态parent.title=parent.tag+(*)/用户进行了编辑且未保存,修(3) 主窗口cb_type按钮的clicked事件:open(w_type)this.enabled=false其执行结果如下图2-1所示2.6 查找窗口编程(1) w_find窗口的编程:定义shared variables:dw_base pwin/注意祖先窗口名(2) w_find的open事件this.width=3000this.height=1200pwin=parentwindow()choose case pwin.classname() case w_typeddlb_1.addit

19、em(“编号*id”) ddlb_1.additem(“类型 *titlew_user ddlb_1.additem(“编号*id ddlb_1.additem(姓名*namew_book编号*id类型*typeid书名*title作者*author出版社*companyw_log记录编号*idddlb_1.additem(图书编号*bookid用户编号*userid借出日期*borrow归还日期*returnddlb_1.selectitem(1)ddlb_2.selectitem(1)ddlb_2.enabled=false/按记录行查找时禁止选择查找关系cb_next.tag=1/存放查

20、找记录的起始行cb_next.enabled=false/开始时不能操作“下一个”按钮sle_1.tag=string(pwin.dw_1.rowcount()/存放总的记录行数sle_1.text=sle_1.setfocus()(3) find的deactivate事件if this.widthlong(sle_1.tag) then【记录行】的范围是1- + sle_1.tag+ ! sle_1.setfocus() return frow=long(sle_1.text) pwin.dw_1.scrolltorow(frow) pwin.dw_1.selectrow(frow,true

21、) parent.width=300 parent.height=100 cb_close.setfocus()/以便按enter键关闭w_find窗口 return/不再执行后续代码borrowreturn/查找日期型数据fstr=string(+fstr+,yy-mm-dd)+ddlb_2.text+sle_1.text+ fstr+= cb_find.tag=fstr/查询条件保存到cb_find.tag cb_next.tag=/设置查询起始行 cb_next.event clicked()(6) cb_find窗口中cb_next按钮的clicked事件:string fstr,msglong srow,erow,frowfstr=cb_find.tag/获得查询条件srow=long(cb_next.tag) erow=long(sle_1.tag) frow=pwin.dw_1.find(fstr,srow,erow)if frow=0 then没找到满足条件的记录!请重新设置条件. cb_find.tag=/清除存放在cb_find.tag中的查找条件即fstr s

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2