数据库应用开发课程设计-PowerBuilder图书管理系统.doc_第1页
数据库应用开发课程设计-PowerBuilder图书管理系统.doc_第2页
数据库应用开发课程设计-PowerBuilder图书管理系统.doc_第3页
数据库应用开发课程设计-PowerBuilder图书管理系统.doc_第4页
数据库应用开发课程设计-PowerBuilder图书管理系统.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆邮电大学2010/2011学年第 一 学期“ 数据库应用开发”课程大型作业学号 2009214406 姓名uranus成绩 说明:本程序为独立完成。得 分评阅人一、概述(共10分)图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。使用该系统之后,图书馆管理人员可以管理读者的登记、图书的购入、借出、归还以及注销等;还可以查询某位读者、图书的借阅情况,对当前借阅情况给出一些统计,给出统计图,以全面掌握图书的流通情况。功能结构图:得 分评阅人二、 需求分析(共20分) 项目需求:根据图书馆工作的需要,图书管理系统应具备读者的登记、图书的购入、借出、归还以及注销;查询某位读者、图书的借阅情况;对当前借阅情况给出统计图;出版社信息的管理;系统权限的设置;证件挂失、注销;系统帮助等功能,以方便图书馆的日常管理。根据上述分析,设计程序功能如下。 系统功能:(1) 图书信息的录入和删除;(2) 出版社信息管理;(3)图书的检索(包括按作者姓名、出版时间、出版社名称、图书类别、书名、关键字等);(4)图书的租借(包括借书登记、限借数量控制、还书登记、过期罚款计算等);(5)借书证件的管理(包括办新证件,挂失、注销等)(6)系统设置(主要是不同类型证件的可借书的总量和借书时间等)(7)权限设置(包括登录权限,账号密码管理等)(8)统计资料(包括惜出数量与库存数量的比例,各类图书数量与总数量的比例,热门图书统计数据等各种信息资料的统计);(9)图书测览(包括对图书摘要的测览和新书测览);(10)帮助信息。得 分评阅人三、建模(共20分)用例图:借/还书:书籍的借阅管理查询图书信息:根据作者、出版信息等方式查找图书新书入库:录入新书信息旧书销毁:从数据库删除图书信息证件管理:管理借书证的相关信息信息汇总:将借阅信息等内容生成图表,方便了解流通情况出版社信息管理:录入、删除出版社相关信息权限管理:设置登录权限,修改账号密码;设置不同证件的借书量、借书期限等。 得 分评阅人四、数据库分析(共10分)(一)e-r图:(二)表的定义数据库中,部分表的结构见表1表5。存放图书信息的表bookinfo的结构见表1。其中图书编号具有惟一性,8位编码中最高2位为图书类型代码,例如电子类、计算机类等,通过表4“bookclass”表进行图书类型的管理,其余6位为图书顺序号。表1 bookinfo表字段名意义数据类型宽度nullprimarykeybookid图书编号numberic8noisbnisbn书号char30ysetitle书名char40ysepublish出版日期charyseauthor作者char30ysewords字数(千字)integerysepublisherid出版社idnumeric4ysenumber印刷册数integeryseprice定价moneyysekeyword关键字char30yseabstract摘要varchar400yse表2 publisherlnfo表字段名意义数据类型宽度nullprimarykeypublisherid出版社idnumberic4nopublisher出版社名称char30yesaddress出版社地址char0yestel电话char16yesfax传真char16yespostcode邮政编码numberic6yeshttp网址char16yes出版社id是代表出版社的代码,它与图书信息表(表1 bookinfo表)相关联。图书租借表(表 3 loan表)记录了图书租借情况,借书证书id与借书证表(表5 certificateinfo表)相关联。表3 loan表字段名意义数据类型宽度nullprimarykeybookid图书编号numric2nocert_id借书证书idnumric5noloandates借书日期dateyesreturndates还书日期dateyesflag标记tinyintyes表 4 bookclass 字段名意义数据类型宽度nullprimarykeyclassid图书分类代号numric2noclassname图书分类名称char30yes 表 5 certificateinfo字段名意义数据类型宽度nullprimarykeycert_id借书证书idnumric5nocert_name证件名称char10yescert_value证件号码numric18yesname姓名char8yesdepart所在部门char20yesflag标记tinyintyes得 分评阅人五、界面设计和代码实现(共30分)(1)程序主界面运行程序后,见到如下界面:各模块功能已在图中标注出。(2)系统登录 在主界面上点击“系统登录”图标,打开如下登陆界面:本系统将用户权限分为三种:普通用户、系统终端和系统管理员。普通用户只具备最基本的查询权限;系统终端可进行新书入库,旧书注销,图书租借,证件管理,出版社信息管理等操作;系统管理员拥有最高权限,可进行包括上述功能在内的所有操作。当用户做出超出当前权限的操作时,系统会给出越权提示。下面以系统管理员的身份进行程序功能的说明。(3)新书入库点击主界面上的新书入库图标或从图书管理菜单中选取,打开新书入库界面如下:将新书信息录入后点击保存即可将信息保存至数据库。点击新建将在打开新的录入界面的同时保存当前信息。上方的控制按钮可用于一次性录入多本书籍信息时的查看及修改。以下为保存按钮的关键代码:insert into bookinfo (bookid,title,author,isbn,publish,words,publisher,number,price,keyword,abstract,class)/向bookinfo表中插入新信息values(:book_amount+1,:sle_title.text,:sle_author.text,:sle_isbn.text,:sle_publish.text,:sle_words.text,:sle_publisher.text:sle_number.text,:sle_price.text,:sle_keyword.text,:mle_abstract.text:ddlb_1.text);if sqlca.sqlcode0 thenmessagebox(保存失败,数据库错误代码:+string(sqlca.sqldbcode)&+rn数据库错误信息:+sqlca.sqlerrtext)/若保存出错给出提示rollback;end if其中红色部分为保存时的错误提示,程序中涉及数据库操作的部分多处使用该段代码,下文中将略去该段代码。(4)旧书销毁从图书管理菜单中选择旧书销毁功能,打开界面如下:数据窗口输入要删除的书籍id后,点击删除记录按钮即可注销该书信息。也可先查询得到书籍id后再进行删除操作。以下为“删除记录”按钮的关键代码:delete from bookinfo/从bookinfo表删除信息where bookid=:sle_delete.text;操作完成后系统会进行相应提示。(5)出版社信息管理图书管理系统中应有出版社信息管理的功能,包括出版社信息的查询,录入等功能,故设计界面如下:如图所示,该界面既可用以录入出版社信息,也可用以查找出版社信息,上方按钮与新书入库界面按钮功能相似。保存按钮代码:insert into publisherinfo/向publisherinfo表添加信息(publisherid,publisher,address,tel,fax,postcode,http) values(:publisher_amount+1,:sle_publisher.text,:sle_address.text,:sle _tel.text,:sle_fax.text,:sle_postcode.text,:sle_http.text); 新建按钮代码为在保存的基础上增加清空输入框的代码。(6)书籍查询图书管理系统最重要的功能之一即为书籍信息的查询功能,要求能以多种方式查询书籍信息,如书名查找,作者查找等方式。同时还要求能够实现模糊查询。查询界面如下:通过查询方式下拉框可实现查询条件的设置,描述文本框中则输入具体的查询信息。点击开始查找按钮查询结果将显示在上方的数据窗口中。从图中可见已实现模糊查找功能。当查询条件为日期时,若输入的数据格式与日期类型不符则会给出提示。双击查询结果可打开该书的详细信息。若查询结果为空则给出提示。当查询条件为出版时间段时,主要代码如下:dw_1.setsqlselect(ls_oldsql+where+temp+between+sle_describe.text+ and +sle_end_date.text+)/设置查询条件 dw_1.settransobject(sqlca)/设置事务对象 dw_1.retrieve()其中ls_oldsql由getsqlselect()得到。实现模糊查询的代码如下:dw_1.setsqlselect(ls_oldsql+where+temp+like%+sle_describe.text+%) dw_1.settransobject(sqlca) dw_1.retrieve()其他查询条件代码与以上类似,不一一例举。双击查看书籍信息的代码:if row 0 thentitle_temp=dw_1.getitemstring(row,title)/得到点击行对应书名open(w_detail)end if其中title_temp为该行对应书名。(7)图书租借图书租借作为图书管理系统最重要的一个部分,应当具有以下功能:1. 图书租借信息的记录2. 证件有效性的验证3. 超期罚款的缴纳本程序的图书租借界面如下:借书与还书操作共用一个界面。输入借书证号后,系统会判断该证件是否存在,是否挂失或有超期书目未归还,若有超期书目未归还则无法进行租借操作。若证件有效则证件信息会显示在右边方框中,借书记录中则会显示出该证件上还未归还的书籍信息,同时会检验是否达到管理员规定的数量上限。输入图书编号及借书/还书日期后(日期由系统自动获取)点击确认即可实现借/还书操作。若有超期未还的书籍需先在还书界面中缴纳罚款方可继续借书。相关关键代码:if mark=1 then/判断证件是否有效messagebox(提示,该证件已挂失)elseif mark=2 and gb_title.text=借书信息 thenmessagebox(提示,该证件有超期书籍未归还)elseselect name,depart/查询证件信息into :sle_name.text,:sle_depart.textfrom certificateinfowhere cert_id=:sle_cert_id.text;if sle_name.text= and sle_cert_id.text thenmessagebox(提示,无效的证件号)end ifif mark=0 and sle_name.text then/判断证件状态sle_flag.text=正常elseif mark=1 thensle_flag.text=挂失elseif mark=2 thensle_flag.text=超期未还forfeit=day_forfeit*daysafter(loandates,today)messagebox(图书超期未还,须缴纳+string(forfeit)+元罚款)end ifif sle_cert_id.text thendw_1.setsqlselect(select bookinfo.bookid,bookinfo.title,bookinfo.author,bookinfo.publisher,loan.loandates from bookinfo,loan where bookinfo.bookid=loan.bookid and loan.returndates is null and loan.cert_id=+sle_cert_id.text)/设置查询条件dw_1.settransobject(sqlca)dw_1.retrieve()if dw_1.rowcount()=book_limit and dw_1.rowcount()0 and gb_title.text=借书信息 then/计算数据窗口中行数messagebox(提示,该借阅证最多只可借阅+string(dw_1.rowcount()+本书)end ifend ifend if(8)阅读导航阅读导航包括阅读摘要和新书预览两项功能,分别实现书籍摘要阅览及查看近半年出版的新书信息的功能。效果如下:新书预览实际上使用了查询界面的时间段查询功能。打开查询窗口的同时自动设置查询时间段为最近半年,其余部分与前面相同。下面主要给出摘要界面的代码:if row 0 thentitle_temp=dw_1.getitemstring(row,title)/获得点击行对应标题select abstract/查询摘要信息into :mle_abstract.textfrom bookinfowhere title=:title_temp;end if(9)统计资料该菜单主要实现的功能为数据的统计汇总,包括各类图书比例,借出与库存比例,热门书统计功能。通过使用游标等方式获取相关数据并将之显示为饼状图或柱状图,相当直观。具体实现效果如下:实现上述功能的关键代码为:gr_graphic.graphtype=pie3d!/设置图表样式int class,num,temp,ord=1select count(distinct class)/查询不同书的总数into :classfrom bookinfo;declare book_cur cursor for/将每种书的数量存入数组select count(class)from bookinfogroup by bookinfo.class;open book_cur;fetch book_cur into :temp;do while sqlca.sqlcode=0numord=tempord=ord+1fetch book_cur into :temp;loopclose book_cur;string temp2,nameord=1declare book_cur2 cursor for/将每种书的借出数量存入数组select distinct classfrom bookinfo;open book_cur2;fetch book_cur2 into :temp2;do while sqlca.sqlcode=0nameord=temp2ord=ord+1fetch book_cur2 into :temp2;loopclose book_cur2;gr_graphic.addseries()for ord=1 to class/将数据传递给图表控件gr_graphic.addcategory(nameord)gr_graphic.adddata(1,numord,nameord)next通过游标的使用统计数据能够实现实时更新,显示出最新的统计结果。(10)权限设置该操作必须具备系统管理员权限方可进行。其功能为管理账户信息,设置不同类型证件可借阅的数量及超期罚款等。相关功能主要由两个数据窗口实现,如下图:其中新增按钮的代码为:temp=dw_2.rowcount()dw_2.insertrow(temp+1)/新增一行确定按钮代码为:dw_1.update()/作出修改dw_2.update()if sqlca.sqlcode0 thenmessagebox(保存失败,数据库错误代码:+string(sqlca.sqldbcode)&+rn数据库错误信息:+sqlca.sqlerrtext)rollback;elsecommit;messagebox(修改成功,所作修改已成功存储)close(parent)end if(11)证件管理图书管理系统中需要有借书证信息管理功能,此处即为实现该功能。此界面能实现新证件的等级,证件的挂失、注销以及证件信息的查找功能。查询的代码为:if ddlb_condition.text=借书证号 then/判断查询条件select cert_id,cert_name,cert_value,name,depart,flaginto :sle_cert_id.text,:sle_cert_name.text,:sle_cert_value.text,:sle_name.text,:ddlb_depart.text,:sle_flag.textfrom certificateinfowhere cert_id=:sle_condition.text;/查询证件信息elseif ddlb_condition.text=身份证号 thenselect cert_id,cert_name,cert_value,name,depart,flaginto :sle_cert_id.text,:sle_cert_name.text,:sle_cert_value.text,:sle_name.text,:ddlb_depart.text,:sle_flag.textfrom certificateinfowhere cert_value=:sle_condition.text;end ifif sle_flag.text=0 then/显示证件状态sle_flag.text=正常elseif sle_flag.text=1 thensle_flag.text=挂失elseif sle_flag.text=2 thensle_flag.text=超期未还end if挂失的代码为:update certificateinfo/更改certificateinfo表中对应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论