书刊维护管理系统(共33页).doc
精选优质文档-倾情为你奉上书刊维护管理系统报告 学院: 专业: 年级: 组员:摘要 随着计算机及网络的飞速发展,以及社会的不断前进,对信息自动化的要求越来越高,书刊维护作为一个与人文环境构造密切相关的工作环节,书刊种类、维护工作日渐繁琐因此,需要开发出一个操作简单而且方便实用的书刊维护管理系统。 本系统使用Visual FoxPro开发工具,主要使用SQL语句,结合SQL SERVER 2000数据库、DATA控件和ADO控件来实现数据库的操作。 书刊维护管理系统主要对书刊管理日常工作中遇到的实际问题,例如书籍信息、读者信息、借阅信息、能够实现以下任务:书刊信息维护、读者信息维护、书刊借阅维护、书刊在库维护及管理员系统维护等。关键词:书刊,读者,借阅,维护一、系统设计需求分析(一)系统设计目的、意义 书刊阅读是人类获取知识、阅历最普遍的方式,是教师和学生获取知识的重要来源,由于书刊维护管理涉及大小图书馆中所有馆藏的储存和流通。所以,一直以来,计算机软硬件在书刊维护管理中得到了广泛的应用。 书刊作为一个查阅资料的重要来源,由于数据处理手工操作工作量大,出错率高,出错后不易更改,就要求可以使用计算机对其进行自动化的管理,因此,开发一个书刊维护管理系统尤为重要。 由于目前还处在VF初识阶段,对其性能的实现把握有所欠缺,因而只能够设计一个比较简单的书刊维护管理数据库,该数据库包括了图书信息、读者信息、书刊在库检索等一些简单的基本功能的实现,其框架采用VISUAL FOXPRO语言编写,可以较为理想的实现数据路系统。 本维护管理系统围绕书刊的维护管理操作流程为主要考量因素,以方便图书馆管理人员实现对图书馆馆藏的借阅、在库信息的方便、快速查询为主要目的,综合考虑各阶层图书馆的使用,设计了本系统,以提高系统的可适性,操作性。(二)系统设计的需求分析 书刊维护管理系统的开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强.数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析如此情况,我们使用微软公司的VISUAL FOXPRO开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,下面对各个模块的功能介绍如下:1. 书刊信息维护:包括新增、修改、查询等操作,可以实现对书刊编码、书号、书名、作者、图书类别、出版社和出版时间等信息管理维护。2. 读者信息维护:拥有完善的读者信息管理功能,对读者信息进行新增、修改、查询、打印和导出等操作。3. 书刊借阅维护:包括书刊借阅记录和书刊丢失记录两大版块。其中读者借阅记录系统可以完整的记录结束日期、到期日期以及续借次数等信息,随时添加实时更新;书刊丢失记录系统则对丢失的书刊做类似的记录。4. 书刊在库维护:实现对在库图书相关信息的记录,包方便读者按照图书类别等相应的索引到指定的图书室及甚至书架进行快速准确的借阅。5. 管理员系统维护:对管理员相关信息进行管理维护。 二、系统设计实现 (一)系统结构书刊维护管理系统书刊在库维护管理员系统维护书刊信息维护读者信息维护书刊借阅维护丢失书刊记录权限设置查询读者信息书刊借阅记录修改读者信息查询书刊信息修改书刊信息修改密码重新登录书刊丢失记录新添读者信息添加书刊信息(二)书刊维护管理系统数据库1.丢失书刊记录表2. 读者登记表3. 读者借阅表4. 管理员登记表5.书刊信息表6.书刊在库维护表(三) 系统功能实现1. 系统管理1.1 欢迎界面TIMER 代码:do form 登陆界面 this.enabled=.f. Thisform.release1.2 登陆界面表单代码 use 管理员登记表 locate for(alltrim(管理员编号)=alltrim(thisform.text1.value) and alltrim(登录密码)=alltrim(thisform.text2.value) if not found() messagebox("用户名或密码错误",5+64+0,"提示") else i=0 yh=alltrim(thisform.text1.value) thisform.release do form 管理界面 endif use 确定按钮:public yh public i取消按钮:thisform.release CLEAR EVENTS1.3 主界面激活代码:thisform.refresh do 管理界面主菜单.mpr with this,.T.INIT 代码:do 管理界面主菜单.mpr with this,.T.2. 功能模块2.1 书刊信息维护新增:do form 新增书刊信息修改:do form 修改书刊信息查询:do form 书刊信息查询刷新:thisform.list1.refreshThisform.refresh删除:x=messagebox("确认删除?",1+64+256,"提示")if x=1 delete pack thisform.list1.refreshendif 导出:do form 导出打印:do form 书刊信息打印2.1.1 文件导出确定按钮的代码:if thisform.optiongroup1.value=1COPY TO alltrim(thisform.text1.value) sdfmessagebox("已将文件保存到D:书刊维护管理系统",0+64+256,"提示")thisform.releaseelse COPY TO alltrim(thisform.text1.value) xlsmessagebox("已将文件保存到D:书刊维护管理系统",0+64+256,"提示")thisform.releaseEndif取消:Thisform.release2.1.2 书刊信息查询查询按钮:do casecase bo1.displayvalue="图书编码"locate for 图书编码=alltrim(thisform.text1.value)if found()thisform.text2.value=书名thisform.text3.value=图书编码thisform.text4.value=书号thisform.text5.value=作者thisform.text6.value=图书类别thisform.text7.value=出版社thisform.text8.value=出版时间thisform.text9.value=单价thisform.text10.value=入库时间thisform.text11.value=书架编号thisform.text12.value=能否借阅elsemessagebox("没有查找到满足条件的记录",0+64,"提示")endifcase bo1.displayvalue="书名"locate for 书名=alltrim(thisform.text1.value)if found()thisform.text2.value=书名thisform.text3.value=图书编码thisform.text4.value=书号thisform.text5.value=作者thisform.text6.value=图书类别thisform.text7.value=出版社thisform.text8.value=出版时间thisform.text9.value=单价thisform.text10.value=入库时间thisform.text11.value=书架编号thisform.text12.value=能否借阅elsemessagebox("没有查找到满足条件的记录",0+64,"提示")endifcase bo1.displayvalue="作者"locate for 作者=alltrim(thisform.text1.value)if found()thisform.text2.value=书名thisform.text3.value=图书编码thisform.text4.value=书号thisform.text5.value=作者thisform.text6.value=图书类别thisform.text7.value=出版社thisform.text8.value=出版时间thisform.text9.value=单价thisform.text10.value=入库时间thisform.text11.value=书架编号thisform.text12.value=能否借阅elsemessagebox("没有查找到满足条件的记录",0+64,"提示")endifcase bo1.displayvalue="图书类别"locate for 图书类别=alltrim(thisform.text1.value)if found()thisform.text2.value=书名thisform.text3.value=图书编码thisform.text4.value=书号thisform.text5.value=作者thisform.text6.value=图书类别thisform.text7.value=出版社thisform.text8.value=出版时间thisform.text9.value=单价thisform.text10.value=入库时间thisform.text11.value=书架编号thisform.text12.value=能否借阅elsemessagebox("没有查找到满足条件的记录",0+64,"提示")endifotherwiselocate for 图书编码=alltrim(thisform.text1.value)messagebox("请选择查询条件",0+64,"提示")endcase下一条按钮:continue if eof() messagebox("记录已到末尾",0+64,"提示") else thisform.text2.value=书名 thisform.text3.value=图书编码 thisform.text4.value=书号 thisform.text5.value=作者 thisform.text6.value=图书类别 thisform.text7.value=出版社 thisform.text8.value=出版时间 thisform.text9.value=单价 thisform.text10.value=入库时间 thisform.text11.value=书架编号 thisform.text12.value=能否借阅 Endif2.1.3书刊信息打印确定按钮:public aa1 public aa2 public aa3 SELECT 0 use 管理员登记表 locate for alltrim(管理员编号)=yh thisform.管理员.value=管理员姓名 thisform.text2.value=date() Use取消按钮:Thisform.release2.1.4 新增书刊信息确定按钮:x=messagebox("确认添加?",1+64+256,"提示") if x=1 append blank if empty(thisform.text2.value) or empty(thisform.text3.value) or empty(thisform.text5.value); or empty(thisform.text7.value) or empty(thisform.text9.value) or empty(thisform.text11.value); or empty(thisform.text1.value) or empty(thisform.text4.value) or empty(thisform.text6.value); or empty(thisform.text8.value) or empty(thisform.text10.value) messagebox("不能为空,请输入数据",0+64,"提示") dele pack thisform.text2.setfocus returnendif replace 图书编码 with alltrim(thisform.text2.value) replace 书号 with thisform.text3.value replace 书名 with thisform.text5.value replace 作者 with thisform.text7.value replace 图书类别 with thisform.text9.value replace 书架编号 with thisform.text11.value replace 出版社 with thisform.text1.value replace 出版时间 with thisform.text4.value replace 单价 with thisform.text6.value replace 入库时间 with thisform.text8.value replace 能否借阅 with thisform.text10.valuethisform.releaseelsethisform.releaseEndif取消:thisform.release2.1.5 修改图书信息确定按钮:replace 图书编码 with thisform.text2.value replace 书号 with thisform.text3.value replace 书名 with thisform.text5.value replace 作者 with thisform.text7.value replace 图书类别 with thisform.text9.value replace 书架编号 with thisform.text11.value replace 出版社 with thisform.text1.value replace 出版时间 with thisform.text4.value replace 单价 with thisform.text6.value replace 入库时间 with thisform.text8.value replace 能否借阅 with thisform.text10.value replace 备注 with thisform.text12.value messagebox("确认修改?",1+64+256,"提示") thisform.release取消按钮:thisform.release 2.2 读者信息维护代码:select 1 use 读者登记表 excl 新增:do form 新增读者信息 修改:do form 修改读者信息 查询:do form 读者信息查询 打印:do form 读者信息打印 导出:do form 导出 刷新:do form 刷新 删除:do form 删除2.2.1 读者信息查询查询按钮:select 1 do case case bo1.displayvalue="姓名" locate for 姓名=alltrim(thisform.text1.value) if found() thisform.text2.value=姓名 thisform.text3.value=借书卡号 thisform.text4.value=性别 thisform.text5.value=联系电话 else messagebox("没有查找到该记录",0+64,"提示")endif case bo1.displayvalue="借书卡号" locate for 借书卡号=alltrim(thisform.text1.value) if found() thisform.text2.value=姓名 thisform.text3.value=借书卡号 thisform.text4.value=性别 thisform.text5.value=联系电话else messagebox("没有查找到该记录",0+64,"提示")endifEndcase下一个按钮:continue if eof() messagebox("记录已到末尾",0+64,"提示")else thisform.text2.value=姓名 thisform.text3.value=借书卡号 thisform.text4.value=性别 thisform.text5.value=联系电话endif2.2.2 读者信息打印确定按钮:REPORT FORM 读者登记表.frx to print preview bb1=thisform.读者信息.value bb3=thisform.text2.value bb2=thisform.管理员.value取消按钮:Thisform.relea2.2.3 新增读者信息确定按钮:x=messagebox("确认添加?",1+64+256,"提示")if x=1 append blank if empty(thisform.text2.value) or empty(thisform.text3.value) or empty(thisform.text5.value); or empty(bo1.value) or empty(bo2.value) or empty(thisform.text1.value); or empty(thisform.text4.value) or empty(thisform.text10.value) messagebox("不能为空,请输入数据",0+64,"提示") dele pack thisform.text2.setfocus returnendifreplace 姓名 with thisform.text2.valuereplace 学号 with thisform.text3.valuereplace 借书卡号 with thisform.text5.valuereplace 性别 with bo1.valuereplace 联系电话 with thisform.text10.valuethisform.releaseelsethisform.releaseEndif取消按钮:thisform.release2.2.4 修改读者信息确定:replace 姓名 with thisform.text2.valuereplace 借书卡号 with thisform.text5.valuereplace 联系电话 with thisform.text10.valuemessagebox("确认修改?",1+64+256,"提示")thisform.release取消:thisform.release2.3 书刊借阅维护添加按钮的代码:do form 新增读者借阅记录Thisform.release2.3.1 读者借阅记录新增读者借阅记录确定:if empty(thisform.text4.value) or empty(thisform.text1.value) or empty(thisform.text3.value) or empty(thisform.text2.value) or empty(thisform.text5.value)messagebox("请输入数据",1+16,"提示")elsex=messagebox("确认?",1+64,"提示")if x=1insert into 读者借阅记录表 values(alltrim(thisform.text1.value),alltrim(thisform.text2.value),alltrim(thisform.text3.value),thisform.text4.value,thisform.text5.value)use 图书信息表 excllocate for alltrim(书号)=alltrim(thisform.text2.value)deletpackusemessagebox("添加成功",0+64,"提示")thisform.releaseendifEndif取消:Thisform.release 2.3.2 新增丢失书刊记录确定:if empty(thisform.text2.value) or empty(thisform.text3.value) or empty(thisform.text1.value) or empty(thisform.text4.value) or empty(thisform.text5.value)messagebox("请输入数据",1+16,"提示")elsex=messagebox("确认?",1+64,"提示")if x=1insert into 丢失书刊记录表values(alltrim(thisform.text4.value),alltrim(thisform.text5.value),alltrim(thisform.text2.value),thisform.text1.value,thisform.text3.value)use 图书信息表 excllocate for alltrim(书号)=alltrim(thisform.text5.value)deletpackusemessagebox("添加成功",0+64,"提示")thisform.releaseendifEndif取消:thisform.release2.4 书刊在库维护2.5 管理员系统维护2.5.1 权限设置确定if empty(thisform.text2.value) or empty(thisform.text3.value) or empty(thisform.text1.value) or empty(thisform.text4.value) or empty(thisform.text5.value)messagebox("请输入数据",1+16,"提示")elseinsert into 管理员登记表 values(alltrim(thisform.text2.value),alltrim(thisform.text1.value),alltrim(thisform.text3.value),thisform.text4.value)messagebox("管理员授权成功",0+64,"提示")thisform.releaseEndif取消:Thisform.release2.5.2 修改密码确定:use 管理员登记表locate for 管理员编号=yhif alltrim(管理员编号)=alltrim(thisform.text1.value) and alltrim(登录密码)=alltrim(thisform.text2.value) if alltrim(thisform.text3.value)=alltrim(thisform.text4.value) replace 登录密码 with thisform.text3.value messagebox("密码修改成功",0+64,"提示") thisform.release else messagebox("密码两次输入不一致",5+16,"错误") endif else messagebox("用户名或密码不正确",5+16,"错误")endifUse取消:thisform.release2.5.3 重新登录确定: use 管理员登记表 locate for(alltrim(管理员编号)=alltrim(thisform.text1.value) and alltrim(登录密码)=alltrim(thisform.text2.value) if not found() messagebox("用户名或密码错误",5+64+0,"提示") else i=0 yh=alltrim(thisform.text1.value) thisform.release do form 管理界面 endif use 取消:thisform.release三、 系统设计总结 (一) 逻辑结构设计管理员(用户名,密码)书刊信息维护(图书编码,书号,书名,作者,图书类别,暑假编号,出版社,出版时间,单价)读者信息维护(借书卡号,姓名,性别,联系电话)书刊借阅维护(读者借阅记录:借书卡号,书号,借书日期,到期日期,续借次数;书刊丢失记录:图书编码,书号,借书卡号,丢失日期,罚款金额,类别编码)书刊在库维护(图书类别,类别编码,图书室编码,暑假编码)(二)总结 经过一个学期的学习,我们从对从一窍不通到现在可以说是略懂皮毛,收获还是蛮大的啊。通过本次的设计,我们基本掌握了设计一个数据库的方法。由于之前对于数据库的知识积累不够,尤其是在数据库与VF连接上存在很大漏洞,是的本次课程设计遇到了许多困难。但正是伴随着这些困难的一个个解决,我们学到了很多知识,每次解决一个问题都会收获不少的知识,第一次感受到数据库与编程语言的结合时那么的有魅力。本次课程设计让我们有机会对以前所学知识进行系统的串联,尤其是对数据库的建立与操作都上了一个台阶,包括怎么建立一个好的数据库,怎么建立完备的数据库系统,怎样对数据库结构模型的设计,主键的定义,更重要的是前期对于模型的概念,也就是E-R模型的规划。这让我深刻体会到了前期工作的重要性,只有正确详尽的对系统进行分析以后,才能更高效率的完成系统的开发。 数据库的设计还是比较顺利的,利用SQL server建立正确的数据库在以前实验做过,所以并不是太陌生。然后就是VF,不好明白,经过了查找资料和反复运行还是找到了一些头绪。在VF中怎样布置各窗体中的各单元还是要思考一番。最难受的是编写代码,尤其是如何将表联系起来。通过自学,再建一窗体,利用一定代码,就能实现联系。 在这次设计中,我们体会了专注地工作的滋味。翻遍学籍,搜遍资源,不断地请教别人,循序渐进,一边做设计其实一边学习到了设计之外的东西。凡事要耐心专心,只要这样,没有事情做不好的。由于我对编程的不熟悉,在这方面遇到了不少问题。由于自己知识的不足,在设计数据库时出现了不少大大小小的问题。一个小小的、不经意的错误都可以让你百思不得其解。这就要求我们在做课程设计时一定要小心又小心,千万不能有一丝的马虎。一个在几周的努力和同学的帮助下,我们基本成功的完成了这次课程设计。 总之,这次实验不仅让我更加认识了数据库技术的作用,而且还学习了VF的知识。在实验中,遇到问题并解决问题的过程才是最重要的。无论在以后有怎样的课程设计,我都充满信心。就是不断地摸索,不断地学习,不断地交流,最后做出属于自己的东西。专心-专注-专业