图书馆管理系统-详细(有图片的插入).doc_第1页
图书馆管理系统-详细(有图片的插入).doc_第2页
图书馆管理系统-详细(有图片的插入).doc_第3页
图书馆管理系统-详细(有图片的插入).doc_第4页
图书馆管理系统-详细(有图片的插入).doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

北京联合大学实验(实习、实训)报告课程(项目)名称: 图书馆管理系统 学 院: 特殊教育学院 专 业:计算机应用技术班 级: 09年级 学 号:2009061243109姓 名: 许华杰 成 绩: 2011年12月29日 图书馆管理系统 09计应 许华杰 系统资料室的藏书量较小,一般从几千册到几万册不等,读者人数也较少,大多数单位都没有购买了昂贵的大型管理软件,往往又很难充分应用其所有功能,从而造成经济与资源上的浪费。因此,我利用VFP数据库管理系统软件设计一套适合资料的图书馆管理系统。1、 需求分析需求分析是数据库设计的第一步,是整个设计的基础,准确了了解和分析用户的需求,用户包括图书管理员及读者,想要设计出功能强大的图书馆管理系统。 2、 概念结构设计阶段概念结构设计就是现实世界具体数据的首次抽象,是对用户的需求和功能的要求来完成的,因此,我采用了Xmind软件来建立图书馆管理系统概念模型的E-R 图联系模型补,模块结构:3、 逻辑结构设计阶段将概念结构转化为DBMS(数据库管理系统)支持的数据模型,概念结构模型可转换网状模型,层次模型,关系模型。目前,数据库系统普通采用关系模型。将概念设计阶段得到的概念模型转换成关系模型,如表1,2,3 所示: 表1,读者信息姓名读者证号借书状态当前借量失效日期 表2,借阅信息读者证号书号还书日期 表3,图书信息书号书名作者出版社出版日期价格注销4、 数据库物理设计阶段一)、表与数据库的具体设计1、表的设计读者信息表:读者信息:索引:读者证号主索引 表4,读者信息表借阅信息表:借阅信息:索引:书号普通索引;读者证号普通索引 表5,借阅信息表图书信息表:图书信息:索引:书号主索引 表6,图书信息用户表:2、 数据库的设计建立“图书馆管理系统数据库”,添加表,并建立表间的关联,如图:3、 目录设计建立“图书馆管理系统”文件夹,在文件夹内建立form、database、images、report、menu、bak子文件夹,分别用于存放表单、数据库和表、图像、报表、菜单、备份文件。4、 读者信息管理设计读者查询 表单的init事件:thisform.Label1.visible=.f.thisform.text1.visible=.f.thisform.text1.setfocus()mand1.visible=.f.thisform.grid1.readonly=.t.选项按钮组(optiongroup1)的click事件:do case case this.value=1 thisform.text1.visible=.t. thisform.label1.visible=.t. mand1.visible=.t. thisform.label1.caption=请输入按读者证号查询: thisform.text1.value= thisform.text1.setfocus() case this.value=2 thisform.text1.visible=.t. thisform.label1.visible=.t. mand1.visible=.t. thisform.label1.caption=请输入按姓名查询: case this.value=3 thisform.text1.visible=.f. thisform.label1.visible=.f. mand1.visible=.f. set filter to go top thisform.grid1.refreshEndcase“查看”按钮(command1)的click事件:do casecase thisform.optiongroup1.value=1 set filter to 读者证号=alltrim(thisform.text1.value)case thisform.optiongroup1.value=2 set filter to 姓名=alltrim(thisform.text1.value)endcasethisform.grid1.refresh“查询打印”按钮(command3)的click事件:report form report读者信息.frx preview设计“读者信息”报表,样式如图下:“退出”按钮(command2)的click事件:thisform.release。读者信息编辑功能要求:图书管理员向系统数据库中录入读者信息,删除或修改读者信息。表单界面如图下:Form1的init事件:thisform.text1.value=读者信息.读者证号thisform.text2.value=读者信息.姓名thisform.text3.value=读者信息.借书状态thisform.text4.value=读者信息.当前借量thisform.text5.value=读者信息.失效日期第一个按钮组包括第一个,上一个,下一个,最后一个,它们的代码和“用户管理”的代码是一样。第二个按钮组里有四个,分别是添加,修改,删除,退出。“添加”按钮(command1)的click事件:if alltrim(mand1.caption)=添加mand1.caption=保存mand2.caption=取消mand3.enabled=.mand1.enabled=.mand2.enabled=.t.store to thisform.text1.value,thisform.text2.value,thisform.text3.value,thisform.text4.value,thisform.text5.value mand1.caption=添加mand2.caption=修改mand3.enabled=.t.a1=alltrim(thisform.text1.value)a2=alltrim(thisform.text2.value)a3=alltrim(thisform.text3.value)a4=alltrim(thisform.text4.value)a5=alltrim(thisform.text5.value)select * from 读者信息 where 读者证号=a1 order by 读者证号 into cursor tt1if reccount()=0insert into 读者信息 values(a1,a2,a3,a4,a5)messagebox(数据保存完毕!,48,操作成功!)elsenAnswer=messagebox(信息已修改,确定要保存吗?,4+32,重要提示)do casecase nAnswer=6update 读者信息 set 读者证号=a1,姓名=a2,借书状态=a3,当前借量=a4,失效日期=a5 where 读者证号=a1messagebox(数据保存完毕!,48,操作成功!)endcaseendifselect 读者信息thisform.initendif“修改”按钮的代码和“用户管理”的代码一样if alltrim(mand2.caption)=修改mand1.caption=保存mand2.caption=取消mand3.enabled=.mand1.caption=添加mand2.caption=修改mand3.enabled=.t.thisform.initendif“删除”按钮(command3)的click事件:j1=recno()a1=alltrim(thisform.text1.value)nAnswer=messagebox(确定要删除吗?,4+32,重要提示)if nAnswer=6delete from 读者信息 where 读者证号=a1use database读者信息 exclusivepackif j1=reccount()go j1elsego bottomendifthisform.initmessagebox(删除完毕,48,操作成功!)thisform.refreshendif“退出”按钮(command4)的click事件:thisform.release。读者统计功能要求:根据按选择的统计类别,对读者信息进行分类统计。如图下:此图片里有一个选项按钮组(optiongroup1)里有两个按钮,分别是借书状态和全部显示。按钮组里的”借书状态“按钮(option1)的click事件:thisform.grid1.recordsourcetype=4thisform.grid1.recordsource=sele 借书状态,count(*) as 人数 from 读者信息 group by 借书状态 into curs p1按钮组里的”全部显示“按钮(option2)的click事件:thisform.grid1.recordsourcetype=4thisform.grid1.recordsource=sele * from 读者信息 into curs p2还有”退出“按钮(command1)的click事件:thisform.release5、 图书信息管理设计图书查询:功能要求:从系统中检查出相关图书,实现图书的快速检索,查询,表单界面如图下:Form1的load事件:public aa=0Optingroup1的init事件:this.value=0Ojption1的click事件:a=1Option2的click事件:a=2Command1的click事件:close all use database图书信息 bh=trim(thisform.text1.value) do case case a=1 browse for at(bh,书名)0 case a=2 browse for at(bh,作者)0 endcase UseCommand2的click事件:thisform.release图书编辑:功能要求:图书管理人员向系统数据库中录入新图书和删除已丢失的图书。表单界面如图下:Form1的init事件:thisform.text1.value=图书信息.书号thisform.text2.value=图书信息.书名thisform.text3.value=图书信息.作者thisform.text4.value=图书信息.出版社thisform.text5.value=图书信息.出版日期thisform.text6.value=图书信息.价格第一个按钮组包括第一个,上一个,下一个,最后一个,它们的代码和“用户管理”的代码是一样。第二个按钮组里有四个,分别是添加,修改,删除,退出。“添加”按钮(command1)的click事件:if alltrim(mand1.caption)=添加mand1.caption=保存mand2.caption=取消mand3.enabled=.mand1.enabled=.mand2.enabled=.t.store to thisform.text1.value,thisform.text2.value,thisform.text3.value,thisform.text4.value,thisform.text5.value,mand1.caption=添加mand2.caption=修改mand3.enabled=.t.a1=alltrim(thisform.text1.value)a2=alltrim(thisform.text2.value)a3=alltrim(thisform.text3.value)a4=alltrim(thisform.text4.value)a5=alltrim(thisform.text5.value)a6=alltrim(thisform.text6.value)select * from 图书信息 where 书号=a1 order by 书号 into cursor tt1if reccount()=0insert into 图书信息 values(a1,a2,a3,a4,a5,a6)messagebox(数据保存完毕!,48,操作成功!)elsenAnswer=messagebox(信息已修改,确定要保存吗?,4+32,重要提示)do casecase nAnswer=6update 图书信息 set 书号=a1,书名=a2,作者=a3,出版社=a4,出版日期=a5 where 书号=a1messagebox(数据保存完毕!,48,操作成功!)endcaseendifselect 图书信息thisform.initendif“修改”按钮的代码和“用户管理”的代码一样if alltrim(mand2.caption)=修改mand1.caption=保存mand2.caption=取消mand3.enabled=.mand1.caption=添加mand2.caption=修改mand3.enabled=.t.thisform.initendif“删除”按钮(command3)的click事件:j1=recno()a1=alltrim(thisform.text1.value)nAnswer=messagebox(确定要删除吗?,4+32,重要提示)if nAnswer=6delete from 图书信息 where 书号=a1use database图书信息 exclusivepackif j1=reccount()go j1elsego bottomendifthisform.initmessagebox(删除完毕,48,操作成功!)thisform.refreshEndif“删除”按钮(command3)的click事件:j1=recno()a1=alltrim(thisform.text1.value)nAnswer=messagebox(确定要删除吗?,4+32,重要提示)if nAnswer=6delete from 图书信息 where 书号=a1use database图书信息 exclusivepackif j12use database读者信息locate for alltrim(读者证号)=zhif found() num=当前借量-1 replace 当前借量 with num use database借阅信息 locate for alltrim(读者证号)=zh and alltrim(书号)=tm if found() dele for alltrim(读者证号)=zh and alltrim(书号)=tm pack use messagebox(还书成功!) else messagebox(图书号输入错误,请重新输入!) thisform.text2.setfocus return endif else messagebox(读者证号错误,请重新输入!) thisform.text1.setfocus return endif endif图书借阅:功能要求:图书管理人员能够方便的实现图书借出登记。表单界面如图下:“借阅”按钮的click事件:zh=trim(thisform.text1.value)sh=trim(thisform.text2.value)use database读者信息if found()locate for alltrim(读者证号)=zh if reccount()=0 insert into database借阅信息 values(zh,sh,date()+30) messagebox(借阅成功!) returnelse messagebox(当前借量必须小于5) return endifelse messagebox(借阅失败,请查看借书证号是否合法!) return Endif7、 系统帮助功能 用户管理设计:Form1的init事件:thisform.text1.value=用户表.用户名称thisform.text2.value=用户表.用户密码thisform.list1.value=用户表.用户权限第一个命令按钮组(commandgroup2)里有四个,分别是第一个,上一个,下一个,最后一个。按钮组里的“第一个”按钮(command1)的click事件:go mand1.enabled=.mand2.enabled=.mand3.enabled=.mand4.enabled=.t.thisform.initThisform.refresh按钮组里的“上一个”按钮(command2)的click事件:skip-1thisform.initif bof() messagebox(已是第一个记录,48,信息窗口) mand1.enabled=.f. mand2.enabled=.f. thisform.initelse mand1.enabled=.t. mand2.enabled=.t.endif mand3.enabled=.t. mand4.enabled=.t.Thisform.refresh按钮组里的”下一个“按钮(command3)的click事件:if eof() messagebox(已是最后一条记录,48,管理窗口) skip-1 thisform.init mand1.enabled=.t. mand2.enabled=.t. mand3.enabled=.f. mand4.enabled=.f. else skip thisform.init if eof() messagebox(已是最后一条记录,48,管理窗口) skip-1 thisform.init mand3.enabled=.f mand4.enabled=.f. else mand3.enabled=.t. mand4.enabled=.t. endif mand1.enabled=.t. mand2.enabled=.t. endif thisform.refresh按钮组里的”最后一个“按钮(command4)的click事件:go mand3.enabled=.mand4.enabled=.mand1.enabled=.mand2.enabled=.t.thisform.initThisform.refresh第二个命令按钮组(commandgroup1)里有四个,分别是添加,修改,删除,退出。按钮组里的”添加“按钮(command1)的click事件:if alltrim(mand1.caption)=添加mand1.caption=保存mand2.caption=取消mand3.enabled=.mand1.enabled=.mand2.enabled=.t.store to thisform.text1.value,thisform.text2.value,mand1.caption=添加mand2.caption=修改mand3.enabled=.t.a1=alltrim(thisform.text1.value)a2=alltrim(thisform.text2.value)a3=alltrim(thisform.list1.value)select * from 用户表 where 用户名称=a1 order by 用户名称 into cursor tt1if reccount()=0insert into 用户表 values(a1,a2,a3)messagebox(数据保存完毕!,48,操作成功!)elsenAnswer=messagebox(信息已修改,确定要保存吗?,4+32,重要提示)do casecase nAnswer=6update 用户表 set 用户名称=a1,用户密码=a2,用户权限=a3 where 用户名称=a1messagebox(数据保存完毕!,48,操作成功!)endcaseendifsele 用户表thisform.initendif按钮组里的”修改“按钮(command2)的click事件:if alltrim(mand2.caption)=修改mand1.caption=保存mand2.caption=取消mand3.enabled=.mand1.caption=添加mand2.caption=修改mand3.enabled=.t.thisform.initEndif按钮组里的”删除“按钮(command3)的click事件:j1=recno()a1=alltrim(thisform.text1.value)nAnswer=messagebox(确定要删除吗?,4+32,重要提示)if nAnswer=6delete from 用户表 where 用户名称=a1use database用户表 exclusivepackif j1=reccount()go j1elsego bottomendifthisform.initmessagebox(删除完毕,48,操作成功!)thisform.refreshendif按钮组里的”退出“按钮(command4)的click事件:thisform.release密码修改设计:Form1的init事件:thisform.text1.value=cnamethisform.text1.enabled=.f.thisform.text2.setfocus“修改”按钮(command1)的click事件:pass1=alltrim(thisform.text2.value)sele 用户表loca for 用户名称=cnameif 用户密码pass1messagebox(您输入的原密码不对,请重新输入,48,友好提示)thisform.text2.value=thisform.text2.setfocuselsep1=alltrim(thisform.text3.value)p2=alltrim(thisform.text4.value)set exact onif p1p2messagebox(您两次输入的原密码不一致,请重新输入,48,友好提示)thisform.text3.value=thisform.text4.value=thisform.text3.setfocuselseupdate 用户表 set 用户密码=p1 where 用户名称=cnamemessagebox(密码修改成功!,48,友好提示)endifEndif“退出”按钮(command2)的click事件:thisform.release。关于本系统:实训目的是:设计”系统介绍“表单,对系统进行介绍,如图下:”确定“按钮:command1的click事件:thisform.release8、 ”文件“管理设计工具栏:实训目的:设计系统工具栏,通过单击工具栏中的命令按钮可以进入相应的表单。设计工具栏的过程:新建表单,添加命令按钮控件,以“工具栏“为名存入form文件夹中。设计工具栏界面如图下:”图书查询“按钮(command1)的click事件:do form form图书查询”读者查询“按钮(command2)的click事件:do form form读者查询剩下的各按钮的click事件:do form form相应的表单名数据备份:实现目标:可以实现对用户表,读者信息表等数据表的备份,备份文件名中应含有系统日期。设计”数据备份“的过程:建立表单,添加控件,设置其基本属性,以”数据备份“存放入form文件夹中。”数据备份“界面,样式如图下:设计”用户表备份“按钮(command1)的click事件:dat=right(dtoc(date(),2)+left(dtoc(date(),2)+substr(dtoc(date(),4,2)select 用户表copy to bak用户表&datmessagebox(备份完毕!,48,友好提示)设计”读者信息表备份“按钮(command2)的click事件:dat=right(dtoc(date(),2)+left(dtoc(date(),2)+substr(dtoc(date(),4,2)select 读者信息copy to bak读者信息&datmessagebox(备份完毕!,48,友好提示)还有两个按钮和上面按钮的代码差不多,只是数据表的名字不一样。退出系统。9、 “登录界面”表单设计实现目标:这是程序启动的第一个画面,设计的功能要求是:输入用户名和用户名密码,当用户名和密码均正确后才能进入启动界面,用户输入显示提示信息,系统在三次错误提示后会自动退出。设计登录界面的过程:建立表单,添加控件,将表单以“登录界面”为存在form文件中,设计界面的如图下:表单的load的事件: public ii=0表单的init事件:application.visible=.f.close all“登录”按钮(command1)的click事件:public cnameuse database用户表cname=alltrim(thisform.text1.value)if alltrim(thisform.text1.value)= messagebox(未填写用户名!)else locate all for alltrim(用户名称)=alltrim(thisform.text1.value) and alltrim(用户密码)=alltrim(thisform.text2.value) if found() if 用户权限=1 manager=1 else manager=2 endif do form form启动界面 thisform.release else i=i+1 if i case js=2 thisform.label3.caption=正在加载用户设置 case js=3 _screen.application.visible=.t. do menu图书馆管理系统.mpr do form form工具栏.scx thisform.release Endcase 11、菜单的设计 将读者查询表单,图书查询表单,图书管理表单等各种功能表单,通过菜单有机的联系在一起。菜单设计是通过菜单设计器来完成,只要按照菜单设计器的提示就能设计出理想的菜单。此菜单布局如表7所示: 表7,菜单布局文件读者管理图书管理图书服务系统帮助退出工具栏读者查询图书查询图书归还用户管理数据备份读者编辑图书编辑图书借阅密码修改退出系统读者统计图书统计关于本系统快捷键:文件:alt+w;读者管理:alt+d;图书管理:alt+t;图书服务;alt+f;系统帮助:alt+x;退出:alt+q。为菜单或菜单栏单项任务: 创建菜单系统时,需要考虑系统访问的简便性,必须为菜单和菜单项指定所执行的任务,如指定菜单访问键,添加键盘快捷键,显示表单等。菜单选项的任务可以是子菜单,命令过程。菜单任务对应的命令必须明确指定,对应的过程必须输入相应的过程代码。 如表8所示,在“菜单设计器”中为各菜单项添加命令。菜单标题菜单项名称结果结果框的内容文件工具栏命令d

温馨提示

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

评论

0/150

提交评论