欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据库课程设计报告图书管理和查询系统.doc

    • 资源ID:853993       资源大小:1.50MB        全文页数:35页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库课程设计报告图书管理和查询系统.doc

    1、 目录一、实验目的2二、实验工具2三、实验内容和要求.2四、数据库设计21、ER模型.42、流程图.5五、应用程序设计.91、系统结构设计.92、功能模块设计10六、总结17附录.18图书管理和查询系统一、实验目的(1)培养综合应用PowerBuilder进行应用程序设计和解决实际问题的能力;(2)加深对PowerBuilder编程环境和编程方法的理解;(3)发挥各人的想像能力和分析能力,拓展思维空间;(4)掌握应用程序设计的基本方法;(5)巩固已经学到的编程技术,学会在编程中学习编程。二、实验工具SQL Server 2005和PowerBuilder三、实验内容和要求题目:图书管理和查询系

    2、统功能:(1)图书信息的录入和删除,出版社信息管理等;(2)图书的检索(包括按作者姓名、出版时间、出版社名称、图书类别、书名、关键宇等);(3)图书的租借(包括借书登记、限借数量控制、还书登记、过期罚款计算等);(4)借书证件的管理(包括办新证件,挂失、注销等)(5)系统设置(主要是不同类型证件的可借书的总量和借书时间等)要求:(1)按照应用程序设计的4个阶段进行,熟悉每个阶段需要解决的问题以及解决的方法;(2)使用SQL Server设计数据库和数据表,注意把握数据库的设计原则;(3)要求应用程序有菜单栏,操作方便;(4)必须完成功能1-5。强调一点:在借书输入证件ID时,首先检索是否在“黑

    3、名单”和“挂失表”中,后再校验证件的真伪。在借、还书时要显示本证件已借书的量和图书信息;证件注销时数据的参照完整性问题。在系统设置中可随机设置不同借书书证件(如教师和学生)的可借书数量和借书的时间。(5)应用程序界面和风格不作具体要求,各人按照自己的思路去做,发挥自己的创造。四、数据库设计 本数据库名称为Book,数据库中包括:图书信息表(BookInfo)借书信息表(Loan)证件信息表(CertificateInfo)系统设置信息表(System_setup)。各表的数据结构如下:表一:图书信息表(BookInfo)字段名意义数据类型宽度NullPrimaryKeyBookID图书编号Nu

    4、mberic8NoISBNISBN书号Char30YseTitle书名Char40YsePublish出版日期DatetimeYseAuthor作者Char30YseWords字数(千字)IntegerYsePublisherID出版社IDNumberic4YseNumber印刷册数IntegerYsePrice定价MoneyYseKeyword关键字Char30YseAbstract摘要Varchar400YseFlag标记TinyintYes表二:借书信息表(Loan)字段名意义数据类型宽度NullPrimaryKeyBookID图书编号Numric18NoCert_ID借书证书IDNum

    5、ric18NoLoandates借书日期DateYesReturn还书日期DateYesFlag标记(还、没还)TinyintYesNum标识IntYes 表三:证件信息表(CertificateInfo)字段名意义数据类型宽度NullPrimaryKeyCert_ID借书证IDNumric5NoCert_name证件名称Char10YesCert_value证件号码Numric18YesName姓名Char8YesDepart所在部门Char20YesFlag标记TinyintYesFlag1标记TinyintYes表四:系统设置信息表(System_setup)字段名意义数据类型宽度Nul

    6、lPrimaryKeyCert_type借书证类型Char20NoNumber_limit书本限制Numric18NoDate_limit借书期限Char10NoFlag标记TinyintNo1、ER模型 根据实验目的,我们设计规划出的实体有如下:书籍信息实体、证件信息实体、借书表信息实体、系统表信息实体,各实体的E-R图描述如下:书籍信息实体 图书编号ISBN编号书名出版日期出版社ID作者字数印刷次数定价关键字摘要标记(有没有借出)借书证信息实体标记(有效,挂失)借书证ID证件名称姓名所在部门证件号码标记(学生,教职工借书证)借书表信息实体借书证ID图书编号借书时间还书时间标记(借书,还书)

    7、标记种子系统表信息实体证件类型书本限制借书期限标记(证件类型)2、流程图(1)图书管理模块新书入库模块给变量赋值开始判断部分控件是否缺少数据判断出版社格式正确否判断图书编号重复否将新书信息录入数据库结束yesyesyesnonono旧书注销模块注销开始判断图书编号缺少否该图书存在否结束开始yesnoyesno按图书编号注销注销开始判断书名缺少否该图书存在否结束开始yesnoyesno按书名注销(2)图书检索模块查询开始判断图书编号缺少否该图书存在否结束开始yesnoyesno按图书编号查询查询开始判断书名缺少否该图书存在否结束开始yesnoyesno按书名查询(3)证件管理模块办理新证模块 挂

    8、失模块给变量赋值开始判断该借书证ID是否已存在办理新证件结束yesno挂失开始判断借书证号缺少否判断该借书证ID存在否结束开始yesnoyesno挂失判断该证件是否已处于挂失状态yesno注销模块取消挂失开始判断借书证号缺少否判断该借书证ID存在否结束开始yesnoyesno取消挂失判断该证件是否不处于挂失状态yesno注销开始判断该借书证存在不判断该证件是否还有书未还结束开始yesnoyesno(4)系统设置模块开始判断数据库中有无该类型的设置结束开始yesno直接录入数据库修改原有的设置(5)图书租借模块借书模块开始判断信息填写完整否判断该借书证存在不判断该借书证有效否判断图书馆中有这本书

    9、没该借书证有借书记录没判断有书超期没判断借书数量是否已满借书将借书信息录入数据库中的Loan表中,并且修改BookInfo表中的标记位Flag.结束nononononoyesyesnonoyesyesyesyesyes还书模块开始判断图书编号是否缺少判断该图书编号存在不判断是否超期还书将还书时间录入Loan表,修改BookInfo、Loan表的Flag的值结束罚款yesnonoyesyesno五、应用程序设计1、系统结构设计 本图书管理和查询系统主要实现6大功能:图书管理、图书检索、图书租借、证件管理、系统设置、帮助。每个模块又分成多个详细的功能子模块。详情如下图所示:功能表图书管理图书检索图

    10、书租借证件管理系统设置帮助新书入库旧书销毁按图书编号查询按图名查询借书还书办理新证证件挂失证件注销学生系统设置教职工系统设置系统功能介绍2、功能模块设计主菜单(功能表) 图书管理主界面新书入库模块 录入数据库BookInfo表中的新书信息旧书销毁模块数据库中BookInfo表中的信息变化图书查询模块 办理新证件模块数据库中CertificateInfo表中录入的新借书证信息挂失证件模块数据库中相应的变化挂失状态(Flah=0)取消挂失后,有效状态(Flag=1)注销证件模块注销证件实例(注销失败有未还的书)数据库CertificateInfo中的数据变化系统设置模块数据库中System_set

    11、up表中的信息图书租借模块借书数据库中Loan表中的信息还书数据库中Loan表中的信息改变 帮助 六、总结这次课设,可以说是我最喜欢的一次,因为我本身对数据库这门课很感兴趣,考试时取得了不错的成绩,这给了我更大的动力去好好做课设。我们这次做的是图书管理和查询系统。之前,我们只是去图书馆借书还书,但都没有注意图书馆的管理系统。这是我觉得作为一个计算机科学与技术(软件方向)的学生很惭愧。我对于本专业不够敏感,不能从生活的点点滴滴中去发现有关专业的东西。这是我最大感触之一。我想通过这次教训后,以后,我会都加留心。其次,我们之前有做过数据库的实验,所用的工具都是一样的,只是这次的项目更庞大一些,也带有

    12、一点点的难度,很多情况都是我们要考虑的。当然,这次课设让我复习了窗口控件中关于选项卡控件的有关内容,有关数据窗口对象的内容,以及有关数据窗口控件的内容,进一步加深对数据窗口的了解,熟悉数据窗口画板的使用和数据窗口对象属性的调整方法,加深对数据窗口类型、各种类型数据窗口的特点以及使用方法的认识。同时掌握选项卡控件的使用和编程方法,也掌握数据窗口各种类型数据检索程序的设计方法。其实,一开始课设时,我并没有及早下手去做。我初步构思了一下,自己要走什么风格,做的界面是什么样子,都有什么功能。之后,我每天都给自己一个小任务。我很赞同老师的看法,他提的这个方法和我所想的一样。经过这三周的时间,证明,我们俩

    13、是对的。我没有把自己弄得手忙脚乱,可以说我很轻松的完成了。但我有一点小遗憾,我的界面是黑白的,看其他同学做的界面很漂亮,让人看得很舒服。这次课设,有时候也很让人头疼。第一,说实话,我并不是什么非常细心的人,尽管很多人都认为挺细心的,但他们不知道,那是我曾经犯过的错,所以,帮他们处理起来很容易。有时候,我因为插入语句中少了一个逗号,在那检查、调试,可就是录入不到数据库中,真的很让人崩溃。然后经过一段想抓破脑子的痛苦后,忽然间,发现自己少了一个逗号,真的很想去疯掉。想想一个这么大的人啦,却拜倒在一个小小的逗号身上。无奈啊第二,这里面又很情况要考虑。有时候觉得自己考虑的挺周全的,没问题的,心里还带着

    14、点小得瑟。可是吧,跟别人一交流,就发现自己有多么的傻。也发现大家都是半斤八两,在将自己的思路时,却都是很拽的样子。想想很傻。再有就是,自己在运行时,一不小心输错了,然后就发现,即使错了,他依旧执行,瞬间感觉这系统很强悍。然后就开始拼命的修改。直到,所有的情况都考虑全了。虽然,有点考脑子,但我很喜欢,因为,我们已经长大了,在现实生活中,我们做任何事都得尽可能的考虑周全,不能再像小孩子一样我行我素。这是我这次课设的又一重要收获。第三,课设,使我们更加学会与人沟通。特别是在他(她)写了好几个小时的代码,修改一个错误好几个小时后,该怎么与他沟通,给他建议。千万不能吼,很可能一触即发,一场惊天动地的谈论

    15、就此上演。第四,我认为计划真的很重要。我知道大家都在暗中比拼,有的同学上午在机房做一上午,中午不睡觉,继续奋战,下午继续,直到深夜,我们都睡觉了他还在奋战。我很佩服这样的同学,但是我并不喜欢。人的大脑会疲惫的,而且一天到晚都面对一堆奇形怪状的字符。我每天按自己的小计划走,只要我今天完成了我给自己制定的任务,我就可以休息、玩。如果,我还有精力,我会提前做一些东西,来减轻明天的任务。这个习惯,让我很顺利的按期做完了我的系统。第五,心态、战略也很重要。遇到问题,特别是那种大家都看不出的错误,千万不要叨叨个不停,去干点其他事,过会再来看他。有时候就是我们潜意识的作用,过会再来处理,可能一下就修改好了。

    16、其实,我不怕他出错,因为,很多知识都是在有错之后尽心去处理时学会的。总结一下,做课设一定要细心,有计划,有自己的想法,要沉下心来一步一步做,不要以完实验为目的,遇到问题错误,试着去研究它错的根源在哪里,我感觉这样做实验才更有价值。附录(1)新书入库的代码Long ll_BookID,ll_ISBN,ll_PublisherID,ll_i=0,ll_jdate ld_Publishstring ls_Title,ls_Author,ls_Keyword,ls_Abstractinteger li_Words,li_Number,li_Price,li_Flag=1/图书编号检验if sle_bo

    17、okid.text= OR isNull(sle_bookid.text) thenmessagebox(缺少数据,请输入图书编号!)sle_bookid.setfocus()returnend if/书名检验if sle_title.text= OR isNull(sle_title.text) thenmessagebox(缺少数据,请输入书名!)sle_title.setfocus()return end if/出版日期检验if sle_publish.text AND not isNull(sle_publish) thenif isDate(sle_publish.text)then

    18、ld_publish=date(sle_publish.text)elsemessagebox(输入数据错误,请输入“年-月-日”的日期格式!)sle_publish.setfocus()return end ifend if/作者检验if sle_author.text= OR isNull(sle_author.text) thenmessagebox(缺少数据,请输入作者姓名!)sle_author.setfocus()return end if/关键字检验if mle_keyword.text= OR isNull(mle_keyword.text) thenmessagebox(缺少

    19、数据,请输入关键字!)mle_keyword.setfocus()return end ifll_BookID=long(trim(sle_bookid.text)/检查图书编号有无重号select BookInfo.BookIDinto:ll_ifrom BookInfowhere BookInfo.BookID=: ll_BookID;if ll_i0 thenmessageBox(错误信息,图书编号+string(ll_i)+号重号!请改正。)sle_bookid.setfocus()returnend if/SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是

    20、移除字首或字尾的空白。ll_ISBN=long(trim(sle_isbn.text)ls_Title=trim(sle_title.text)ld_Publish=date(trim(sle_publish.text)ls_Author=trim(sle_author.text)li_Words=integer(trim(sle_words.text)ll_PublisherID=long(trim(sle_publisherid.text)li_Number=integer(trim(sle_number.text)li_Price=integer(trim(sle_price.text)

    21、ls_Keyword=trim(mle_keyword.text)ls_Abstract=trim(mle_abstract.text)/向数据库的BookInfo写入数据insert into BookInfo(BookID,ISBN,Title,Publish,Author,Words,PublisherID,Number,Price,Keyword,Abstract,Flag)values(: ll_BookID, : ll_ISBN, : ls_Title, : ld_Publish, : ls_Author, : li_Words, : ll_PublisherID, : li_Nu

    22、mber, : li_Price, : ls_Keyword, : ls_Abstract, : li_Flag );/数据写入数据库后,请输入控件全部置空sle_bookid.text=sle_isbn.text=sle_title.text=sle_publish.text=sle_author.text=sle_words.text=sle_publisherid.text=sle_number.text=sle_price.text=mle_keyword.text=mle_abstract.text=sle_bookid.setfocus()/将光标放到“图书编号”输入栏(2)旧书销

    23、毁的代码按图书编号销毁string ll_BookIDlong ll_i=0,ll_j=0ll_BookID=trim(sle_bookid.text)select BookInfo.BookIDinto:ll_ifrom BookInfowhere BookInfo.BookID=: ll_BookID;if ll_BookID= thenMessagebox(数据不全,请输入带查询的图书编号。)sle_bookid.setfocus()elseif ll_i=0 thenmessageBox(错误信息,不存在该图书编号!)sle_bookid.setfocus()elsedw_bookid

    24、.retrieve(ll_BookID)/删除 delete from BookInfo where BookInfo.BookID=:ll_BookID; /检查图书编号是否还存在 select BookInfo.BookID into:ll_j from BookInfo where BookInfo.BookID=: ll_BookID; if ll_j0 then messageBox(错误信息,删除不成功!) sle_bookid.setfocus() else messageBox(正确信息,删除成功!) sle_bookid.text= sle_bookid.setfocus()

    25、return end ifend ifsle_bookid.setfocus()按书名注销string ls_Title,ll_ilong ll_j=0ls_Title=trim(sle_title.text)select BookInfo.Titleinto:ll_ifrom BookInfowhere BookInfo.Title=: ls_Title;if ls_Title= thenMessagebox(数据不全,请输入带查询的书名!)sle_title.setfocus()elseif ll_i= thenmessageBox(错误信息,不存在该书!)sle_title.setfoc

    26、us()elsedw_title.retrieve(ls_Title)/删除 delete from BookInfo where BookInfo.Title=:ls_Title; /检查图书编号是否还存在 select BookInfo.Title into:ll_j from BookInfo where BookInfo.Title=: ls_Title; if ll_j0 then messageBox(错误信息,删除不成功!) sle_title.setfocus() else messageBox(正确信息,删除成功!) sle_title.text= sle_title.set

    27、focus()return end ifend ifsle_title.setfocus()(3)办理新证件的代码long ll_cert_value,ll_Flag=1,ll_i=0,ll_Flag1string ls_Name,ls_Cert_name,ls_Departstring ll_Cert_IDll_Cert_ID=trim(sle_cert_id.text)ls_Name=trim(sle_name.text)ls_cert_name=trim(ddplb_cert_name.text)ls_Depart=trim(ddplb_depart.text)ll_Cert_value

    28、=long(trim(sle_cert_value.text)if rb_student.checked=true thenll_Flag1=1else ll_Flag1=0end if/检查借书证ID是否已存在select CertificateInfo.Cert_IDinto:ll_ifrom CertificateInfowhere CertificateInfo.Cert_ID=: ll_Cert_ID;if ll_i0 thenmessageBox(错误信息,借书证ID+string(ll_i)+已存在!请改正。)sle_cert_id.setfocus()else/向数据库的Cer

    29、tificateInfo写入数据 insert into CertificateInfo (Cert_ID, Cert_name, Cert_value, Name, Depart, Flag, Flag1 ) values(: ll_Cert_ID, : ls_Cert_name, : ll_Cert_value, : ls_Name, : ls_Depart, : ll_Flag, : ll_Flag1 ); /数据写入数据库后,请输入控件全部置空 sle_cert_id.text= sle_cert_value.text= sle_name.text= ddplb_depart.text

    30、=ddplb_cert_name.text= sle_name.setfocus()/将光标放到“借书证ID”输入栏 dw_list_1.retrieve(ll_Cert_ID)/messagebox(正确信息,办理成功!)end if(4)挂失证件挂失string ls_Cert_IDlong ll_i=0,ll_j,ll_zls_Cert_ID=trim(sle_cert_id_1.text)/取出证件号CertificateInfo.Cert_IDselect CertificateInfo.Cert_IDinto:ll_ifrom CertificateInfowhere Certif

    31、icateInfo.Cert_ID=: ls_Cert_ID;/取出证件号CertificateInfo.Flag(Flag=1 有效 Flag=0 挂失)select CertificateInfo.Flaginto:ll_jfrom CertificateInfowhere CertificateInfo.Cert_ID=: ls_Cert_ID;/判断该证件号存在不if ll_i=0 thenmessageBox(错误信息,借书证ID+string(ll_i)+不存在!请校验。)sle_cert_id_1.setfocus()/判断该证件号是否已处于挂失状态elseif ll_j=0 t

    32、henmessagebox(错误信息,该证件已处于挂失状态!)else /修改Flag的值(Flag=1 有效 Flag=0 挂失) update CertificateInfo set Flag=0 where Cert_ID=:ls_Cert_ID; messagebox(正确信息,该证件挂失成功!) /刷新该证件的信息(Flag) dw_list_2.retrieve(ls_Cert_ID) / sle_cert_id_1.text=end if取消挂失string ls_cert_idls_cert_id=trim(sle_cert_id_1.text)/取出证件号Certificat

    33、eInfo.Cert_IDlong ll_i=0select CertificateInfo.Cert_IDinto:ll_ifrom CertificateInfowhere CertificateInfo.Cert_ID=: ls_Cert_ID ;if ll_i=0 thenmessagebox(提示,该证件不存在!请教正。)returnend iflong ll_jselect CertificateInfo.Flaginto:ll_jfrom CertificateInfowhere CertificateInfo.Cert_ID=: ls_Cert_ID ;if ll_j=1 th

    34、enmessagebox(提示,该证件不属于挂失状态!请教正。)return end if/修改Flag的值(Flag=1 有效 Flag=0 挂失)update CertificateInfoset Flag=1where Cert_ID=:ls_Cert_ID;messagebox(正确信息,该证件消除挂失成功!)/刷新该证件的信息(Flag)dw_list_2.retrieve(ls_Cert_ID)/sle_cert_id_1.text=sle_cert_id_1.setfocus()/将光标放到“借书证ID”输入栏(5)注销string ls_Cert_ID, ll_Flag=1lo

    35、ng ll_i=0,ll_a=0,ll_j=0,ll_z,ls_b=0ls_Cert_ID=trim(sle_cert_id_2.text)/取出证件号CertificateInfo.Cert_IDselect CertificateInfo.Cert_IDinto:ll_ifrom CertificateInfowhere CertificateInfo.Cert_ID=: ls_Cert_ID;/判断该证件号存在不if ll_i=0 thenmessageBox(错误信息,该借书证ID不存在!请校验。)sle_cert_id_2.setfocus()else dw_logout.retri

    36、eve(ls_Cert_ID)/判断该证件是否已经还完书 select Loan.BookID into :ls_b from Loan where Loan.Cert_ID=:ls_Cert_ID and Flag=1; if ls_b0 then messagebox(提示,该证件还没有还完书!) dw_list.retrieve(ls_Cert_ID,ll_Flag) else/删除要注销的证件信息 delete from CertificateInfo where Cert_ID=:ls_Cert_ID; end if/检索该证件信息是否还存在于CertificateInfo表中 se

    37、lect CertificateInfo.Cert_ID into:ll_a from CertificateInfo where CertificateInfo.Cert_ID=: ls_Cert_ID; if ll_a=0 then messageBox(正确信息,借书证ID已注销成功!) sle_cert_id_2.text=return else messageBox(错误信息,借书证ID注销失败!) sle_cert_id_2.setfocus()return end if end if(6)系统设置string ls_Cert_type1,ls_Cert_type0,ls_Date

    38、_limit,ls_Cert_typeinteger ll_Flag, li_Flag1=1,li_Flag0=0long ll_Number_limit/学生借书证 OR 教职工借书证if rb_student.checked=true thenls_Cert_type=学生借书证ll_Flag=1else ls_Cert_type=教职工借书证ll_Flag=0end if/给变量赋值ll_Number_limit=long(trim(sle_number_limit.text)ls_Date_limit=trim(sle_date_limit.text)/查看System_setup表中

    39、有没有值select System_setup.Cert_typeinto :ls_Cert_type1from System_setupwhere System_setup.Flag=:ll_Flag;if ls_Cert_type1 thenupdate System_setupset Number_limit=:ll_Number_limitwhere System_setup.Flag=:ll_Flag;update System_setupset Date_limit=:ls_Date_limitwhere System_setup.Flag=:ll_Flag;sle_number_limit.text= sle_date_limit.text=messagebox(正确信息,设置成功!) dw_1.retrieve(ls_Cert_type1) else/将学生的系统设置信息录入System_setup表中 insert into System_setup (Cert_type, Number_limit, Date_limit,Flag ) values (:ls_Cert_type, :ll_Number_limit, :ls_Date_limit, :


    注意事项

    本文(数据库课程设计报告图书管理和查询系统.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922