1、商丘职业技术学院毕业论文格式 2 作者: 日期:2 个人收集整理 勿做商业用途华文行楷,小初单倍行距,段前0磅,段后12磅商丘职业技术学院毕业论文(设计)楷体,小一单倍行距,段前22磅,段后6磅题目:楷体,二号单倍行距字体:楷体,小二号行距:单倍行距字体:楷体,小二号行距:固定值45磅姓 名: 系 别: 专 业: 学 号: 指导教师: XXXX年 XX月XX日目 录引言11 研究现状和设计目标11。1 课题现状11。2 需求分析1在现实生活中11。3 数据流图11.3。1逻辑模型和业务流程11.3。2 系统模型和数据流图11.3。3 功能要求22 应用系统开发工具22.1 PB特点22.2 P
2、B与数据库的连接22.3 PB开发过程及步骤23 数据库结构的设计23.1 数据字典23。2数据结构设计23。2。1逻辑结构23。2.2 物理结构33。3 功能结构设计3参考文献5罗马数字基于PB的图书馆管理系统设计与分析黑体,二号单倍行距摘 要本文主要介绍了系统的开发背景,以及功能实现的主要技术,系统设计的设计思想,开发过程和解决方案.此系统是采用PowerBuilder9.0技术中本地数据库来设计的数据库管理系统,并利用ODBC接口来实现软件和本地数据库的连接。根据图书馆管理人员和读者的需要设计了登录界面,查询窗口,图书借还界面,图书出入库管理窗口。 宋体,三号,加粗单倍行距宋体,三号,加
3、粗单倍行距关键词Powerbuider9。0;数据库管理系统;ODBC罗马数字 I 与一级标题相同引言随着计算机科学与技术的发展,人们通过计算机认识与获取信息也更加快捷方便了。尤其是在图书管理领域中计算机的应用更为突出,计算机逐渐成为大众化的工具,传统的图书管理方式已经不能满足读者的需要,图书种类及数量日益增多也要求计算机对图书进行管理,可以更方便简单地管理图书,从而可以大大提高管理人员的工作效率,并能让读者省去排队等待的时间。正文宋体小四号行距:固定值20磅图书管理系统是典型的信息管理系统,主要包括建立维护后台数据库和开发前端应用两大块。通过建立数据一致结构完整数据安全的后台数据库和前端应用
4、程序.针对图书管理系统普遍性和特殊性提出了一整套科学全面的管理方法,使用户从繁杂的手工记录工作程序解脱出来。通过自学PB设计了这个图书馆信息管理系统,PB是一种数据库应用程序开发软件,因此利用数据库管理系统创建数据库后台是一切程序设计工作的基础.此系统是针对计算机管理图书的需求而设计的,可以完成图书借还,图书查询,图书管理,会员管理,系统修改与维护等功能.1 研究现状和设计目标一级标题宋体三号,加粗单倍行距二级标题宋体四号,加粗单倍行距1。1 课题现状图书馆标题号和内容之间加一空格以下要求相同,二级标题首行不缩进1.2 需求分析在现实生活中1.3 数据流图1。3.1 逻辑模型和业务流程 三级标
5、题和正文相同,首行不缩进1.3.2 系统模型和数据流图由基本系统模型进行逐步细化,得到描绘图书管理信息系统主要功能的数据流图.阿拉伯数字2 应用系统开发工具2。1 PB特点PB具有独立性,事件驱动的工作方式,面向对象,跨平台性,编程语言PowerScript,数据窗口对象等特点。2。2 PB与数据库的连接PB提供了两种数据连接方式,一种是通过ODBC标准接口的方式,一种是通过专用的接口和后台的数据库连接。2。3 PB开发过程及步骤(1)创建数据库 (2)创建工作空间 (3)创建窗口 (4)创建数据窗口 (5)设计菜单 (6)编写脚本代码 (7)调试应用程序 (8)发布应用程序 3 数据库结构的
6、设计3。1 数据字典3.2 数据结构设计3。2.1 逻辑结构根据需求分析,本系统可以设计成5个表:3。2.2 物理结构根据逻辑结构,PB本地数据库来创建数据表3.3 功能结构设计经过长期观察各类图书馆的现状,再反复研究,得到图书馆管理系统功能如下:(1)操作员登录系统,对系统进行初始化设置。(2)根据每日对读者的借还情况,图书的出入库情况录入到图书馆管理系统中。(3)有条件、多条件查询各种信息。(4)读者信息的制定、输入、修改、查询。(5)图书信息的制定、输入、修改、查询。与一级标题相同,宋体三号,加粗单倍行距(6)图书制作成报表后可以进行打印。结束语通过自学PB进行图书馆信息管理系统的设计和
7、分析,其功能基本符合用户需求,能够完成对每一位会员和每一本图书信息的查询,并提供部分系统维护功能,使用户方便地进行数据录入、数据查询和数据删除,对于数据的一致性的问题也通过程序进行了有效的解决.数据库系统设计,是一个复杂系统的过程,需要花费大量的时间和精力来调查图书馆信息管理系统的现状。并且即便是在数据库已经设计完毕的情况下,由于用户的需求发生变化,提出新的要求,也需要对数据库进行重新设计,但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如未做联机帮助文档,用户界面不够美观,出错处理不够完善等多方面问题,这些都有待进一步改善,在未来也将做出品种更多质量更好的数据库软件。答谢辞与
8、一级标题相同参考文献宋体三号1 李国喜,龚京忠,吴宝中。 PB8.0应用开发技术M。 北京:人民邮电出版社,2002.2 张遂芹. PB9.0系统工程开发实例M. 北京:中国水利水电出版社,2005.3 陈华明,郑华。 PowerBuilder应用技巧与常见问题M。 北京:中国水利水电出版社,2003.4 萨师宣,王珊. 数据库系统概论M。 北京: 高等教育出版社,2002.5 田捷。 数字图书馆技术与应用讲稿.北京: 科学出版社, 2002.6 Object Management Group CORBA: Common Object Request Broker Architecture a
9、nd Specification Revision 2 M.2002。7 梁震戈,王文君,杨国福.基于Internet 的高校图书馆集成化信息检索系统J。现代情报,2005.8 王善平.万维网资源整合工具Open URL J.上海交通大学学报,2003(增刊)。9 中国IT认证实验室学习下载频道.http:/PPdownload。DB/OL。10 王文君, 杨国福.基于网络技术的高校图书馆信息管理系统的研究J。现代情报,2006。11 Architectural Overview EB。http:/diligentproject。org/content/ view/ 71/ 99/宋体五号附
10、录4.1 借书还书界面代码如下(1) 借书代码如下:int m,n,i,jlsstring hybh,jb,tsbh/显示特定会员和图书的借阅记录dw_1。settransobject(sqlca)dw_1。setfilter(”会员编号=”+trim(sle_1.text)+”)dw_1。retrieve()dw_2。settransobject(sqlca)dw_2。setfilter(”会员编号=”+trim(sle_1.text)+ and 图书编号=+trim(sle_2.text)+”)dw_2.retrieve()dw_3.settransobject(sqlca)dw_3。se
11、tfilter(”图书编号=”+trim(sle_2.text)+ )dw_3.retrieve()dw_1。insertrow(i+1)dw_1。scrolltorow(i+1)/根据输入会员号判断会员级别hybh=trim(sle_1。text)delete 图书借还表 where 会员编号=:hybh and 还书日期 is not null;/删除还书记录select 级别 into :jb from 级别表 where 会员编号=:hybh;select count() into :jls from 图书借还表 where 会员编号=:hybh and 还书日期 is null;if
12、 jb=普通会员 thenrb_1.checked = true dw_1.object。级别i+1=普通会员if jls =3 thenmessagebox(”警告!,该读者已借满图书!”)return /结束循环end ifelse rb_2.checked = true dw_1。object。级别i+1=”高级会员”if jls =5 thenmessagebox(警告!,”该读者已借满图书!”)return /结束循环end if end if/得到记录的总行书/得到借书记录总行数和图书当前行号if dw_1.retrieve()=1 and dw_3。retrieve()=1 th
13、eni=dw_1。getrow() m=dw_2。rowcount() n=dw_3.getrow()if dw_3.object。库存n0 and dw_1。object。锁定i=”否” then /插入借书记录 dw_2.insertrow(m+1) dw_2。scrolltorow(m+1) dw_2。object.会员编号m+1=sle_1。text dw_2。object。图书编号m+1=sle_2.text dw_2。object。借书日期m+1=date(string(today()) dw_2.object。备注m+1= ”未归还 /库存减1 dw_3.object.库存n=d
14、w_3。object。库存n-1 /更新数据库 if dw_2.update()=1 and dw_3。update()=1 then commit; messagebox(”成功!”,更新数据库成功!) else rollback; messagebox(失败!,更新数据库失败!) end if else /提示用户不能借书的原因 messagebox(错误!”,库存不足或您的卡号被锁定,会员或图书不存在,无法借阅!”,exclamation!,ok!,2)end ifend if(2)还书代码如下:/显示特定会员和图书的借阅记录dw_1.settransobject(sqlca)dw_1。
15、setfilter(”会员编号=+trim(sle_1。text)+)dw_1.retrieve()dw_2.settransobject(sqlca)dw_2。setfilter(会员编号=”+trim(sle_1。text)+”and图书编号=+trim(sle_2.text)+ and 备注=未归还)dw_2。retrieve()dw_3。settransobject(sqlca)dw_3。setfilter(”图书编号=”+trim(sle_2.text)+” )dw_3.retrieve() /判断哪一行为还书记录int nn=dw_2。rowcount()if dw_2。retri
16、eve()=1 or n1 then/找到还书记录后修改记录dw_2。object.还书日期n=date(string(today()))dw_2。object。备注n= 已归还/将会员还的书库存加1int mm=dw_3。getrow()dw_3。object。库存m=dw_3。object.库存m+1/判断会员是所借图书是否超期超期string hybh,jbsle_3.text=string(daysafter(date(dw_2.object。借书日期n),date(dw_2.object.还书日期n)))hybh=trim(sle_1。text)select 级别 into :jb
17、from 级别表 where 会员编号=:hybh;if jb=”普通会员” then rb_1。checked = trueif int(daysafter(date(dw_2.object。借书日期n),date(dw_2.object。还书日期n))30 then sle_4.text=string((daysafter(date(dw_2.object。借书日期n),date(dw_2.object。还书日期n)) 30)*0.1)int qq=dw_1。getrow()dw_1。object.锁定q=是”messagebox(”超期!,”卡号被锁定!”)dw_2。object.备注n
18、= 已归还,超期end ifelse rb_2.checked = trueif int(daysafter(date(dw_2.object.借书日期n),date(dw_2。object.还书日期n)60 then sle_4.text=string(daysafter(date(dw_2.object。借书日期n),date(dw_2。object.还书日期n)) 60)*0.05)int ww=dw_1.getrow()dw_1.object。锁定q=”是”messagebox(”超期!”,卡号被锁定!)dw_2.object.备注n= 已归还,超期”end if end if/更新数
19、据库if dw_1。update()=1 and dw_2。update()=1 and dw_3。update()=1 then commit;messagebox(成功!,”更新数据库成功!)elserollback;messagebox(失败!”,更新数据库失败!”)end ifelsemessagebox(”错误!,”没有借书记录!”)end if4。2 查询窗口主要代码如下:/精确查询模式程序choose case ddlb_1.text case 会员编号 dw_1。setfilter(”会员编号=”+sle_1.text+”) case ”姓名” dw_1。setfilter(姓
20、名=+sle_1.text+”) case 家庭住址 dw_1。setfilter(家庭住址=+sle_1.text+) /模糊查询模式程序 choose case ddlb_1.text case ”会员编号” dw_1。setfilter(会员编号 like+”%+sle_1.text+”) case ”姓名 dw_1.setfilter(”姓名 like+”+sle_1.text+”%) case 家庭住址 dw_1。setfilter(”家庭住址 like”+”+sle_1.text+”%) end choose end choose4.3 组合查询界面代码如下:string zhzh
21、=if trim(sle_1.text)” thenzh=zh+” and +”图书编号=”+trim(sle_1。text)+”end ifif trim(sle_2。text)” thenzh=zh+” and ”+书名=+”+trim(sle_2。text)+”end ifif trim(sle_3。text)” thenzh=zh+ and +”作者=+trim(sle_3.text)+”end ifif trim(sle_4.text)” thenzh=zh+” and ”+出版社=+”+trim(sle_4.text)+”end ifif left(zh,4)=” and” the
22、nzh=mid(zh,6)end ifdw_1。setfilter(zh)dw_1。filter()4。4登录界面代码如下:string use name, pass_word SELECT 操作员表。用户名, 操作员表。密码 INTO :usename, :pass_word FROM 操作员表 WHERE 操作员表。用户名 = :sle_1。text ;if sle_1。text=” or sle_2。text=” thenmessagebox(”错误!”,”用户名或密码不能为空!”)elseif usename=sle_1。text and pass_word=sle_2.text thenopen(index)close(parent)elsemessagebox(”错误!”,”用户名或密码错误,请重新输入!”)end ifend if9