




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图书管理系统论文(vb+sql)目 录内容摘要2引言.2第一章 课题简介.3第二章 需求分析.42.1图书管理现状.42.2数据流程图. 5第三章 系统逻辑和物理设计.83.1数据库的设计.83.2功能模块的实现.9第四章 调试与分析.504.1存在问题及解决方案.504.2进一步改进设想.50第五章 用户操作说明505.1软硬件环境.505.2应用系统安装.505.3操作手册.50小结.51参考文献.52内容摘要图书管理系统是采用visual basic6.0开发的一个数据库管理系统。开发本系统的基本步骤:需求分析、系统概念设计、系统逻辑和物理设计、系统实现和维护。在系统分析中先后用数据字典
2、、数据流程、系统的功能结构图、er图分析了系统所需的各种数据。在系统的设计过程中,我们采用了模块独立设计法,比较详细的展现了各个模块的功能。在库和表的设计当中, 我们力求层次清晰,设计简单实用。在系统具体实行阶段中,我们精心细致的画出了各个窗体并给出了相应的事件和代码,以实现各个窗体的作用。本系统虽然设计简单,但有一定的实用性。系统的功能较为全面,使用简单,基本上可以作为一般大中小学的图书管理系统。关键字:数据库 sql 语言 visual basic6.0 图书 图书管理 窗体 引言当今时代是飞速发展的的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的原因。计算机
3、的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本,表格等纸介质的手工处理,对于图书借阅情况(如借书天数,超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检
4、查进行,对借阅者的借阅权限,以及借阅天数等用人工计算,手抄进行。数据处理工作量大,容易出错。由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基于环境。基于这个问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时,准确,有效的查询和修改图书情况。第一章 课题简介课题:图书管理系统。任务:针对各大中专院校的图书管理现状,设计出适合一般学校的计算机辅助图书管理系统。实现对图书基本信息、
5、读者基本信息进行计算机辅助管理,完成借书和还书有关信息的记录、修改、查询、删除等一系列任务的计算机管理与实现.。开发环境:本图书管理开发系统是在pentyum 4 以上机型的计算机上进行开发并获得通过的,同时方便系统开发,减少开发过程的难度,我们是基于以下的软件环境。以windows 98为操作系统以visual basic6.0为开发工具以microsoft sql server作为后台数据库功能概述:该系统界面完好,操作简便,能完成添加图书信息,修改图书信息,查询图书信息,添加读者类别,修改读者类别,查询读者信息,修改读者信息,添加删除管理员等一系列图书管理功能,开发本系统的总体任务是实现
6、图书管理的系统化和自动化,帮助管理人员更好更高效地完成图书管理工作。本着实用性和介绍性的原则,整个系统由五大模块组成,每个大的模块又包括三至四个小的模块。一、 图书管理部分:包括图书信息管理和类别管理,其功能是实现对各部分数据内容进行添加、修改、查询等操作。二、 借阅管理部分:包括借书管理和还书管理,其功能是实现对各部分数据内容的添加和查询等操作。三、 读者管理部分:包括读者信息管理和读者类别管理,其功能是实现对各部分数据内容的添加和修改等操作。四、 系统管理部分:包括修改系统用户密码和增加新用户两项功能。 五、 帮助部分:显示关于信息。系统具有高效、易操作、易维护等特点,并且系统结构清晰、界
7、面友好,功能较为齐全,能有效地协助管理人员进行图书管工作。如果想真正把它用到图书馆的图书自动化管理中,还需要读者对该系统进行一步的完善工作。第二章 需求分析需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。在这一章里,我将给出系统的数据流图,功能结构图,数据字典,为系统的设计奠定基础。2.1图书管理现状随着计算机技术的飞速发展,其应用方面已渗透到社会生活的各个领域。它已经成为我们学习和工作的得力助手。在学校,尤其是在一些高校,图书是学校的一项重要资源,图书的管理也是学校的一项常规性的重要工作。而长期以来,学生图书管理都是依赖人工进行的。现今,有很多
8、的学校都已经开始使用计算机进行图书信息管理,并且起得良好的效果。近年来我校招生情况越来越好,所以图书管理工作越来越繁重,但由于种种原因,管理人员并没有增加,因此原有的人工管理工作已不能适应现行的工作需要。同时,陈旧的人工管理也不利于推广计算机应用。为使图书管理工作科学化、规范化,就必须采用计算机辅助管理。2.2 数据流程图数据流程图(data flow dfd)是描述实际业务管理系统工作流程的一种图形表示法。它描绘系统的逻辑模型图,其中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流程图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的通信工具。
9、此外,设计数据流程图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点。图书管理系统主要是为了对图书、读者基本信息等进行计算机管理。下面就是功能模块的流程分析:2.2.1 图书管管理系统基本信息流程流程分析:图书基本信息的流动首先是以图书编号为流动方向的依据,来达到添加、修改、记录、删除图书记录。为了数据的一致性,进行这些操作的同时,也对数据库中的记录进行检查,检查是否有重复的记录。如有则不能进行添加。2.2.2 读者信息管理基本信息流程图流程图分析:读者基本信息的流动首先是以读者的编号为依据,来达到添加、修改、查询、删除读者信息的记录。
10、同时,也对数据库中的读者信息表的编号进行检查。 2.2.3借书管理基本信息流程图 流程图分析:借书管理基本信息的流动首先是以借阅编号为流动方向的依据,来达到添加、查询借书记录。为了数据的一致性,进行这些操作的同时,也对数据库中的记录进行检查,检查是否有重复的记录。如没有则可进行添加。2.2.4 还书管理基本信息流程图流程图分析:借阅管理部分是实现对各部分数据内容的添加和查询操作,在借阅信息中包括图书编号、读者编号,系统对借书日期进行自动添加。并通过添加功能来达到借阅信息表的数据的更新,通过查询功能可使管理员很快地了解借阅信息,从而避免书籍的丢失现象产生。通过上面对各个模块流程的分析,那么我们就
11、不难对整个系统的大致流程有一个全面的认识。设计时采用了常用的自顶向下的瀑布式结构化设计方法。这样系统做起来后就便于用户操作。综合上面各个模块的分析,其总体流程图如下: 启动界面登录 连接数据库, 验证管理员密码进入主画面数据管理 记录浏览 借还操作 系统设置 帮助 显示 关于信息 读者 借阅 借阅 归还 添加 删除记录 记录 书籍 书籍 管理员 管理员添 修 删加 改 除第三章 系统逻辑和物理设计3.1数据库的设计根据上面的结构图,现在需要将数据库结构转化为sql server2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。形成数据库中的表格以及各个表格之间的关系。图书管理信息
12、系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。3.1.1图书信息表字段名数据类型说明图书编号文本主键,字段大小4书名文本字段大小10类别文本字段大小10价格货币类型无出版社文本字段大小40入库日期日期/时间无是否借出文本字段大小43.1.2事务信息表字段名数据类型说明借阅编号自动编号无读者编号文本字段大小50图书编号文本字段大小50归还日期日期/时间无出借日期日期/时间无3.1.3读者信息表字段名数据类型说明读者姓名文本字段大小10读者编号文本主键,字段大小4年龄数字无家庭住址文本字段大小103.2功能模块的实现按结构化的程序设计思想,在完成了系统分析、系
13、统设计后,就可以进行系统实现阶段了,系统实现是每指把系统的物理模型转换成实际运行系统的全过程。在打开数据表之前应该先打开数据库,系统中创建了一个模块,该模块的作用是连接数据库以及数据库中数据的提取,因为系统需要频繁的使用数据库中的数据,建立模块可以使程序简单化,模块的代码如下:public cn as adodb.connection定义连接以及取记录的对象public rst as adodb.recordset public function cntodb() as booleanon error goto my_debug设定错误机制,当连接错误时转到my_debug set cn =
14、new adodb.connection with cn设定访问数据库的参数,对象sqlserver,数据库booksys .connectionstring = provider=sqloledb;uid=sa;pwd=;server=. .connectiontimeout = 5 .cursorlocation = aduseclient .open .defaultdatabase = booksys end with cntodb = true exit functionmy_debug:当出错时,取消连接数据库 set con = nothing cntodb = falseend
15、 functionpublic function querydata(byval strsql as string) as boolean on error goto my_debug if cntodb = true then当连接到数据库后才能取得记录 set rst = new adodb.recordset with rst定义取记录的参数 .source = strsql .activeconnection = cn .cursorlocation = aduseclient .cursortype = adopendynamic .locktype = adlockoptimist
16、ic .open end with querydata = true end if exit function my_debug: set rst = nothing querydata = falseend functionpublic function getrs(byref rst as adodb.recordset, byval strsql as string) as booleanon error goto rserr set rst = new adodb.recordset with rst .source = strsql .activeconnection = cn .c
17、ursorlocation = aduseclient .cursortype = adopendynamic .locktype = adlockoptimistic .open end with if rst.state then getrs = true exit function end ifrserr: getrs = false msgbox err.number & err.description, vbcritical + vbokonly, 错误信息end function注意:当程序不再使用数据库时,应该调用connection对象的close方法将其关闭,但此时它还会占用
18、一定的系统资源,完全将资源释放给系统的方法是使用下面的语句:set con=nothing.不过,这两个步骤往往会被省略,因为当程序关闭时,程序所打开的数据也会随之关闭,connection对象所占用的系统资源也会自动释放给系统.登录窗体的实现其代码如下:private sub command1_click()dim uid定义用户名变量dim pwd定义密码的变量 dim strfu as string定义查找用户名的变量 dim strfp as string定义查找密码的变量 strfu = select * from yh where userid= & text1.text & 查找
19、与输入的用户名一致的用户名if querydata(strfu) then如果找到了用户名,则保存记录符合记录的条数uid = rst.recordcountend if strfp = select * from yh where pwd= & text2.text & if querydata(strfp) thenpwd = rst.recordcountend ifif pwd = 1 and uid = 1 then用户名与密码数据表里都有则显示主画面mdiform1.showunload me关闭本窗口else msgbox 您输入的用户名或密码有错误!, vbinformatio
20、n + vbokonly, 登录失败end ifend subprivate sub command2_click()取消按钮的点击事件unload meend subprivate sub form_load()如果没有连上数据库,则显示相应信息if cntodb = false then msgbox 网络未响应!出现此情况可能是与服务器没有物理连接或数据库不在指向的服务器上!, vbcritical + vbokonly, connecting errorend iftext1.text = 加载窗体时清空text1与text2的内容text2.text = end sub注意:工程属性
21、对话框中的”启动选项”用来选取择运行vb时显示的第一个窗体,或者sub main.主窗体中的代码不多,基本上都是实现单击某个菜单选项即弹出相应窗体的语句,这些语句将分别在各个窗体中介绍。单击“帮助” “关于”菜单,系统代码如下:private sub mun_help_about_click()about.showend sub系统主窗体的实现其代码如下:private rs as adodb.recordsetprivate rs1 as adodb.recordsetprivate rs2 as adodb.recordsetprivate strsql as stringprivate
22、sub command1_click()borrow.showend subprivate sub command2_click()reback.showend subprivate sub command4_click()text2.text = if cntodb = false then msgbox 网络未响应!出现此情况可能是与服务器没有物理连接或数据库不在指向的服务器上!, vbcritical + vbokonly, connecting errorend ifon error goto fmerr if querydata(select * from book) = true
23、then set datagrid1.datasource = rst else msgbox 查询失败! end if exit subfmerr: if rst.bof = true and rst.eof = true then msgbox 没有任何记录! end ifend subprivate sub command5_click()delbook.showend subprivate sub image1_click()dim strf as string搜索按钮 strf = select * from book where bookname like % & text2.te
24、xt & %if querydata(strf) then set datagrid1.datasource = rstend ifend subprivate sub mdiform_load()text2.text = if cntodb = false then msgbox 网络未响应!出现此情况可能是与服务器没有物理连接或数据库不在指向的服务器上!, vbcritical + vbokonly, connecting errorend ifon error goto fmerr if querydata(select * from book) = true then set data
25、grid1.datasource = rst else msgbox 查询失败! end if exit subfmerr: if rst.bof = true and rst.eof = true then msgbox 没有任何记录! end if end subprivate sub mun_add_data_recstu_click()addreader.showend subprivate sub mun_borr_giv_click()reback.showend subprivate sub mun_borr_ow_click()borrow.showend subprivate
26、 sub mun_data_add_recbook_click()addbook.showend subprivate sub mun_del_book_click()delbook.showend subprivate sub mun_del_stu_click()delreader.showend subprivate sub mun_exp_borrow_click()booktran.showend subprivate sub mun_exp_stu_click()reader.showend subprivate sub mun_help_about_click()about.sh
27、owend subprivate sub mun_rework_book_click()reworkbook.showend subprivate sub mun_rework_stu_click()reworkreader.showend subprivate sub mun_sys_admin_click()addmange.showend subprivate sub mun_sys_sys_click()delmange.showend sub数据管理的实现当单击数据管理添加书籍记录菜单时,窗体如下:代码如下:private sub command1_click()unload mee
28、nd subprivate sub command2_click()on error goto nore if msgbox(确实要添加吗?, vbyesno + vbquestion, 提示) = vbyes then call upd rst.update msgbox 添加成功 end if exit subnore: msgbox 图书编号重复或者输入错误!, vbokonly + vbcritical, 提示end subprivate sub form_load()text1.text = text2.text = text3.text = text4.text = text5.t
29、ext = text6.text = on error goto fmerr if querydata(select * from book) = true then else msgbox 查询失败! end if exit subfmerr: if rst.bof = true and rst.eof = true then msgbox 没有任何记录! end ifend subprivate sub upd() rst.addnew rst.fields(0).value = text1.text rst.fields(1).value = text2.text rst.fields(
30、2).value = text3.text rst.fields(3).value = text4.text rst.fields(4).value = text7.text rst.fields(5).value = text6.text rst.fields(6).value = text5.text rst.updateend sub当单击数据管理添加读者记录菜单时,弹出如下代码:添加读者的窗体代码如下:private sub command1_click()on error goto error if msgbox(确实要添加吗?, vbyesno + vbquestion, 提示)
31、= vbyes then call upd1 rst.update msgbox 添加成功 end if exit suberror: msgbox 读者编号重复或者输入错误!, vbokonly + vbcritical, 提示end subprivate sub command2_click()unload meend subprivate sub form_load()text1.text = text2.text = text3.text = text4.text = text5.text = on error goto fmerr if querydata(select * from
32、 reader) = true then else msgbox 查询失败! end if exit subfmerr: if rst.bof = true and rst.eof = true then msgbox 没有任何记录! end ifend subprivate sub upd1() rst.addnew rst.fields(0).value = text1.text rst.fields(1).value = text2.text rst.fields(2).value = text3.text rst.fields(3).value = text4.text rst.fie
33、lds(4).value = text5.text rst.updateend sub当单击数据管理修改更改书籍菜单时,窗体如下:代码如下:private sub command2_click()on error goto no call upd2 rst.update rst.movenext if rst.eof or rst.bof then rst.move first end if exit subno: msgbox 修改成功end subprivate sub command3_click()unload meend subprivate sub command5_click()
34、dim strf as string strf = select * from book where bookid like % & text1.text & %if querydata(strf) then text2.text = rst.fields(bookname).value text3.text = rst.fields(booktype).value text4.text = rst.fields(bookprice).value text5.text = rst.fields(bookstate).value text6.text = rst.fields(bookpubli
35、sh).value text7.text = rst.fields(bookintime).value end ifend subprivate sub form_load()text1.text = text2.text = text3.text = text4.text = text5.text = text6.text = text7.text = end subprivate sub upd2() rst.fields(0).value = text1.text rst.fields(1).value = text2.text rst.fields(2).value = text3.t
36、ext rst.fields(3).value = text4.text rst.fields(4).value = text5.text rst.fields(5).value = text6.text rst.fields(6).value = text7.textend sub当单击数据管理修改更改读者菜单时,窗体如下代码如下:private sub command1_click()unload meend subprivate sub command4_click()on error goto no call upd3 rst.update rst.movenext if rst.eo
37、f or rst.bof then rst.move first end if exit subno: msgbox 修改成功end subprivate sub command5_click()dim strf1 as string strf1 = select * from reader where readerid like % & text1.text & % if querydata(strf1) then text2.text = rst.fields(readername).value text3.text = rst.fields(readerage).value text4.
38、text = rst.fields(readercity).value text5.text = rst.fields(email).value end ifend subprivate sub form_load()text1.text = text2.text = text3.text = text4.text = text5.text = end subprivate sub upd3() rst.fields(0).value = text1.text rst.fields(1).value = text2.text rst.fields(2).value = text3.text r
39、st.fields(3).value = text4.text rst.fields(4).value = text5.textend sub当单击数据管理删除删除书籍菜单时,窗体如下代码如下:private sub command1_click()unload meend subprivate sub command2_click()on error goto no call upd2 rst.update rst.movenext if rst.eof or rst.bof then rst.move first end if exit subno: msgbox 修改成功end subp
40、rivate sub command4_click() if rst.eof = true and rst.bof = true then msgbox 没有数据! else rst.delete rst.movefirst if rst.bof or rst.eof then msgbox 没有数据 call txtcls end if call showdb end ifend subprivate sub command5_click()dim strf as string strf = select * from book where bookid like % & text1.tex
41、t & %if querydata(strf) then text2.text = rst.fields(bookname).value text3.text = rst.fields(booktype).value text4.text = rst.fields(bookprice).value text5.text = rst.fields(bookstate).value text6.text = rst.fields(bookpublish).value text7.text = rst.fields(bookintime).valueend ifend subprivate sub
42、form_load() call txtclsend subprivate sub upd2() rst.fields(0).value = text1.text rst.fields(1).value = text2.text rst.fields(2).value = text3.text rst.fields(3).value = text4.text rst.fields(4).value = text5.text rst.fields(5).value = text6.text rst.fields(6).value = text7.textend subprivate sub tx
43、tcls() text1.text = text2.text = text3.text = text4.text = text5.text = text6.text = text7.text = end subprivate sub showdb() text1.text = rst.fields(0).value text2.text = rst.fields(1).value text3.text = rst.fields(2).value text4.text = rst.fields(3).value text5.text = rst.fields(4).value text6.tex
44、t = rst.fields(5).value text7.text = rst.fields(6).valueend sub当单击数据管理删除删除读者菜单时,窗体如下代码如下:private sub command1_click()unload meend subprivate sub command2_click() if rst.eof = true and rst.bof = true then msgbox 没有数据! else rst.delete rst.movefirst if rst.bof or rst.eof then msgbox 没有数据 call txtcls en
45、d if call showdb end ifend subprivate sub command3_click()unload meend subprivate sub command5_click()dim strf1 as string strf1 = select * from reader where readerid like % & text1.text & % if querydata(strf1) then text2.text = rst.fields(readername).value text3.text = rst.fields(readerage).value te
46、xt4.text = rst.fields(readercity).value text5.text = rst.fields(email).value end ifend subprivate sub form_load()txtclsend subprivate sub txtcls() text1.text = text2.text = text3.text = text4.text = text5.text = end subprivate sub showdb() text1.text = rst.fields(0).value text2.text = rst.fields(1).
47、value text3.text = rst.fields(2).value text4.text = rst.fields(3).value text5.text = rst.fields(4).value end sub当单击记录浏览读者记录菜单时,窗体如下代码如下:private sub command1_click()dim strf as stringif combo1.text = 编号 then strf = select * from reader where readerid like % & text1.text & %if querydata(strf) then set datagrid1.datasource = rstend ifend ifif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三百日誓师课件
- 高一化学氯气课件flash
- 离婚协议档案查询及信息保密服务合同
- 高科技企业研发成果转化连带责任担保协议
- 离婚协议书范本:夫妻共同财产分割及子女抚养权归属
- 离婚协议书模板:婚姻终止、财产分割及子女抚养细则
- 智能家居产品售后维修追加服务协议合同范本
- 二手车买卖合同范本含车辆税费及过户流程
- 髂静脉血栓课件
- 喷射式发动机空气滤清器更换方案
- 医院死亡报卡培训课件
- 2025年京东集团招聘笔试指南与面试技巧
- 起重机械定期检查与维护方案
- 2025年新《公司法》知识竞赛题库(附含答案)
- 国际物流运输合同(标准版)
- 动物样品采集培训课件
- 4D厨房区域区间管理责任卡
- 运动场塑胶地面施工方法
- 工程进度款支付申请(核准)表
- 人教版八年级地理上册第一章第一节《疆域》
- 正压式消防空气呼吸器标准(GA124-2004)
评论
0/150
提交评论