图书管理系统C#报告_第1页
图书管理系统C#报告_第2页
图书管理系统C#报告_第3页
图书管理系统C#报告_第4页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、四川工商职业技术院学 生 实 训 报 告实 训 课 程winforms 高级应用开发开课实验室机房 10 系部信息工程系年 级 2008 级专业班 计算机 08318 小组成员:学 生 姓 名徐伟学号 28 学 生 姓 名刘毅学号学 生 姓 名杨星学号 23 学 生 姓 名胡然学号 47 学 生 姓 名王娇学号 14 学 生 姓 名冯通学号开 课 时 间 2010 至2011 学年第 一 学期目录一、概述 . 31.1项目名称 . 31.2背景 . 3二、项目任务说明. 32.1系统实现的目标. 32.2总体功能需求与关键信息需求 . 32.3图书管理系统的可行性分析. 42.4 用户环境 .

2、 52.5 其他要求 . 5三、需求分析 . 53.1系统需求 . 53.2 实现功能 . 5(1)系统用例图 . 5(2)功能清单 . 73.3用例说明 . 8四、系统设计 . 93.1 模块设计 . 93.2 类图 . 93.3 时序图 . 11 五、数据库设计. 12 4.1 逻辑设计 . 12 4.2 表设计 . 13 六、界面设计 . 15 5.1、主界面实现. 15 5.2、用例界面实现 . 16 七、系统维护和改进. 19 6.1 运行维护 . 19 6.2系统的改进与提高. 20 八、代码 . 20 九、总 结 . 29一、概述1.1 项目名称图书管理系统1.2 背景当今时代是

3、飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。图书管理系统(电子阅览室)主要提供网上的电子图书阅览平台,读者可以通过该系统阅览丰富的电子资源。在图书管理系统中,读者可以方便地对书目进行检索和阅览,足不出户便可尽览群书。图书管理系统主要提供网上的图书阅览平台。电子阅览室可提供24 小时的在线服务, 最大限度的利用了当前互联网的各种优势,使得您无论身在何处,只要能接入互联网就可以享受到它

4、所提供的方便,快捷的服务。它既具有传统图书馆的大部分功能,像图书的查阅及阅览,又新增了基于现有网络技术的许多实用的功能,像用户注册, 书签,书评等。它充分的利用了互联网资源,使商家和用户都能从中获得益处。二、项目任务说明2.1 系统实现的目标图书管理系统的开发主要要实现的目标有以下几个方面:(1) 界面设计友好、美观。(2) 数据存储安全、可靠。(3) 信息分类清晰、准确。(4) 强大的查询功能,保证数据查询的灵活性。(5) 实现对图书借阅和归还过程的全程数据信息跟踪。(6) 提供图书借阅排行榜,为图书管理员提供了真实的数据信息。(7) 提供灵活、方便的权限设置功能,使整个系统的管理分工明确。

5、(8) 具有易维护性和易操作性。2.2 总体功能需求与关键信息需求根据图书管理系统的实际需求,可以将图书管理系统划分为系统设置、图书管理、读者管理、图书借还、系统查询。(1) 系统设置模块:添加删除管理员、设置管理员的权限、说明图书存放书架信息添加删除书架信息。(2) 读者管理模块:添加删除不同类型的读者及注明可借图书的数量、添加删除读者的档案。(3) 图书管理模块:添加删除不同类型的的图书及注明图书可借的天数库存数量、添加删除图书的档案。(4) 图书借还模块:可查询读者借阅和归还图书的信息及图书的现有库存量。(5) 系统查询模块:可根据不同的条件(条形码、书名、类别、作者、书架、出版社)查询

6、读者需要的图书、读者可根据不同的条件(图书条形码、图书名称、读者编号、读者名字、到期时间)查询自己借阅图书信息。2.3 图书管理系统的可行性分析本次毕业设计题目: “学校图书管理系统的开发”主要目的是利用数据库软件编制一个管理软件, 用以实现图书、读者以及日常工作等多项管理。同时对整个系统的分析、设计过程给出一个完整论证。图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。本系统的设计主要从以下几方面做起:系统业务流程分析、 系统的功能设计、系统的数据库结构设计等。作这些工作需对数

7、据库知识有足够认识,并深入的了解visual c#的使用和管理系统的相关知识。在信息时代的今天,人类需要对在政治、经济、军事、文化、科研、教育等领域产生的大量信息进行管理, 并对数据进行加工处理,数据库技术则是信息管理与数据处理的先进技术。随着信息量的不断增加,作为计算机的三大主要应用(科学计算、过程控制和数据处理)之一的数据处理, 已迅速上升为计算机应用主要方面,数据库技术则成为人们日常生活中处理数据不可缺少的有力工具, 并且现代的信息管理系统几乎都以数据库技术作为核心。现在大多数的图书管理方式为手工处理,重复劳动多, 劳动强度大, 而且容易出错,新系统的使用能否可以很好的解决这些问题要看系

8、统的可行性,可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。系统的可行性分析有以下几个方面:(1) 技术可行性:处理速度快、准确通过权限的设置,数据的安全性好、方便查询、借阅管理等。(2) 经济可行性:系统建设不需要很大的投入、可缩减人力投入。(3) 运行上可行性:本系统作为一个小型的图书馆信息管理系统,所耗费的资源非常的小。(4) 从各种社会因素可行性分析:可降低工作人员工作强度,提高效率,会得到学校工作人员的一致同意的。综上所述通过可行性分析认为新系统的开发方案切实可行,可进行开发。2.4 用户环境平台: .net framwwork 1.1,visual studi

9、o.net 2005 数据库: sql server 2000及其他客户端:浏览器2.5 其他要求绘制 uml所需要的rational xde 绘制 e-r 图所需要的powerdesigner三、需求分析3.1 系统需求随着互联网的爆炸性发展,人们越来越习惯于利用网络来实现所需的服务。传统的图书馆不能满足一部分现代人的需要,而电子阅览室, 由于其不受时间与空间的限制同时又具有传统图书馆的大部分功能,能够满足各类用户的常规与特殊需求,而且其方便快捷,实现技术又比较成熟,因此受到当代人的喜爱。3.2 实现功能(1) 系统用例图 1 借阅者请求服务的用例图用例图说明:(1)serch for bo

10、ok:书籍查询用例。(2)reserve the book:书籍预订用例。(3)logon the system:登陆系统。(4)query info:查询借阅信息。(5)borrow the book:借阅书籍。(6)return the book:归还书籍。(7)return with fine:还书时交纳罚金。如果借阅者所借书籍超过借阅期限未还,还书的时候就要交纳一定的罚金。2. 图书馆管理员处理借书、还书等的用例图用例图说明:(1) get book :借阅书籍(2) get with fine:书籍预定处理(3) lend book :归还书籍(4) check user accou

11、nt:查询用户账户信息(5) remove reservation :删除预定信息3. 系统管理员进行系统维护的用例图用例图说明:(1) remove book:删除书籍(2) add book:增加书籍(3) remove or update title:删除或更新书目(4) add title:增加书目(5) query book info:查询图书信息(6) query borrower info:查询借阅者信息(7) remove or update borrower:删除或更新借阅者账户(8) add borrower :添加借阅者账户(2) 功能清单功能编号功能名称备注01 登陆系

12、统02 退出登陆03 管理员登录04 借书处理05 还书处理06 添加图书07 修改密码08 查询个人信息09 查询图书信息10 删除图书11 借阅图书12 返还图书13 系统管理员登陆即超级管理员14 读者信息管理15 图书信息管理16 图书资料管理3.3 用例说明用例 01:用户登录a.用例图b.描述用户进行登录已拥有操作系统的权限。c.参与者管理员、普通用户用例 02:退出登录a.用例图b.描述用户退出登录 c.参与者普通用户、管理员查找图书 a 、用例图b、描述在功能主页上,点击图书信息管理,再点击此图书链接,可进行图书查询。输入图书名称、作者或描述后,点击确定按钮,进行图书查找。系统

13、要验证用户是否登陆,如果没登陆,则不能阅读此书。 c 、参与者普通用户查询用户基本信息 a 、用例图 b、描述功能主页上,点击登陆按钮,输入个人账号、密码登陆,进入个人主页,点击基本信息进行查询,查询后显示用户户基本信息。 c 、参与者普通用户四、系统设计4.1 模块设计1. 用户登录模块:填写已分配的用户名称,填写正确的密码,进入主控制页面。2. 图书查询模块:图书分类,按类型逐级显示。3. 图书搜索模块:提供多种查询条件,可按需要进行查询。4. 管理员模块:显示书评列表和一条书评内容,添加书评。5. 图书入库模块:为喜爱的图书投票,显示投票结果,选出认为最值得一看的图书。6. 权限管理模块

14、:分配用户名和密码,设定用户的级别。同时,还要给图书资源进行分级,以确定哪些级别的用户可以阅读。4.2 类图1. 图书档案管理类、设置图书类型类、设置出版社类、图书注销类之间相互关系2. 读者档案管理类、读者类型设置类等之间的关系3. 图书借阅管理相关类关系4.3 时序图(1) 系统管理员添加书籍(2) 图书管理员处理借书 : item : administrator : maintenance window : title1: add item( )4: create(integer, title)check if correspondingtitle exist2: find(string

15、)3: return true(3) 系统管理员删除书目五、数据库设计5.1 逻辑设计图书管理系统的系统e-r 图如图5.2 表设计书管理员基本信息表tb_admin ,如表 1 所示表 1 tb_admin (管理员)表字段名数据类型长度主键描述adm_id varchar 50 是管理员编号adm_name varchar 50 否姓名adm_password varchar 30 否密码读者详细信息表tb_reader ,如表 2 所示。表 2 tb_reader( 读者信息 )表字段名数据类型长度主键描述reader_id varchar 30 是读者编号reader_name var

16、char 50 否读者名称sex char 4 否性别rea_type varchar 50 否读者类型birthday smalldatetime 4 否生日papertype varchar 20 否证件类型papernum varchar 30 否证件号码telephone varchar 20 否电话email varchar 50 否e-mail createdate smalldatetime 4 否注册日期remark text 16 否备注borrownum int 4 否借阅次数图书详细信息表tb_book ,如表 3 所示 。表 3 tb_bookkifo (图书信息)表字

17、段名数据类型长度主键描述book_code varchar 30 是图书条形码book_name varchar 50 否图书名称book_type varchar 50 否图书类型autor varchar 50 否作者translator varchar 50 否译者pubname varchar 100 否出版社price money 8 否价格page int 4 否页码bcase varchar 50 否书架storage bigint 8 否存储数量intime smalldatetime 4 否入馆时间borrownum int 4 否被借次数图书借阅和归还信息表tb_borro

18、w_back ,如表 4 所示 。表 4 tb_borrowandback(图书借阅和归还信息)表权限信息表tb_purview,如表 5 所示 。表 5 tb_purview (权限信息)表字段名数据类型长度主键描述pur_id varchar 50 是用户编号systemset bit 1 否系统设置readset bit 1 否读者管理bookset bit 1 否图书管理borrowback bit 1 否图书借还systemaquery bit 1 否系统查询六、界面设计6.1、主界面实现字段名数据类型长度主键描述bor_id varchar 30 是借书编号rea_id varch

19、ar 20 否读者编号book_code varchar 30 否图书条形码borrowtime smalldatetime 4 否借书时间ygbacktime smalldatetime 4 否应该还书时间sjbacktime smalldatetime 4 否实际还书时间borrowoper varchar 30 否借书操作backoper varchar 30 否还书操作isback bit 1 否是否归还6.2、用例界面实现(1)管理员登陆用例(2)管理员添加读者用例(3)添加管理员用例(4)添加图书用例(5)修改密码用例(6)图书搜索用例(7)借书用例(8)还书用例七、系统维护和改进

20、7.1 运行维护本网站的维护主要包括以下内容:1权限维护管理员需要对用户的用户名、密码和权限进行维护,给每位读者分配享用的用户名和密码,确定阅读级别。2书目管理书目需要经常进行更新,在书目信息表中更改、增加各相应的数据信息。3书目类别管理书目的更新操作,引起书目类别信息表的更改,管理员就需要及时调整书目类别。7.2 系统的改进与提高由于各种原因,本系统有许多缺点。针对本系统的一些缺点,在二期开发时主要在以下方面进行改进:1、 加强后台管理页面的建设本系统只是面向用户,对书目的管理只靠人工在后台操作,费时又费力。加强后台管理系统的建设,各项操作由程序执行,方便、准确,又节省人工。2、图书查询页面

21、功能应该加强例如:图书查询功能可以加入查询条件,方便读者查看符合要求的图书。3、各模块之间的联系比较混乱。八、代码下面就是该系统的主要功能及主要代码:(1)登录界面:publicpartialclassloginform : formpublicstaticstring uacc; publicstaticstring upsw; publicstaticstring uname; publicstaticstring usex; publicstaticstring upart; publicstaticstring uright; public loginform() initialize

22、component(); privatevoid loginbtn_click(object sender, eventargs e) if ( this .useracctxt.text.trim() = & this .pswtxt.text = ) messagebox .show( 请输入您的用户名和密码!, 提示! ); return ; try string sql; sql = select * from tb_user where uacc=+ this .useracctxt.text + and upsw=+ this .pswtxt.text + ; oledbd

23、atareader dr = dbhelp .olereader(sql); dr.read(); if (dr.hasrows) uacc = this .useracctxt.text; upsw = this .pswtxt.text; uname = druname.tostring(); usex = drusex .tostring(); upart = drupart.tostring(); uright = druright.tostring(); mainform af = new mainform( this ); this .hide(); this .useracctx

24、t.clear(); this .pswtxt.clear(); af.show(); else messagebox .show( 账号或密码错误!, 提示! ); this .useracctxt.clear(); this .pswtxt.clear(); this .useracctxt.focus(); catch ( exception ) messagebox .show( 数据库无法连接!, 警告! ); privatevoid cancelbtn_click(object sender, eventargs e) application.exit(); privatevoid

25、 loginform_closing(object sender, formclosingeventargs e) application.exit(); 2. 添加图书界面publicpartialclassnewbook : form public newbook() initializecomponent(); privatevoid retbtn_click(object sender, eventargs e) this .hide(); privatevoid savebtn_click(object sender, eventargs e) if ( this .booknotx

26、t.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( this .booknametxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( this .classtxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( this .isbntxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( this .bookc

27、osttxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( this .bookwritertxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( this .bookpubtxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( this .numtxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; if ( thi

28、s .notetxt.text = ) messagebox .show( 请输入图书的信息! , 提示! ); return ; /string pat3 = u4e00-u9fa5+$;/全为汉字/string pat4 = (u4e00-u9fa5+|a-za-z+)$;/汉字或字母/string pat5 = u4e00-u9fa52,4$;/两到四位汉字string pat1 = (d-*)9dxx$; / 图书的 isbn号格式 x-xxxx-xxxx-x 或x-xxx-xxxxx-x (x为数字,以图书实际isbn号为准)string pat2 = +?1-90-9*$; / 正

29、整数string pat3 = (0|1-90-9*)(.0-92)?$; / 双精度浮点数bool m1 = program.match( this .isbntxt.text, pat1); bool m2 = program.match( this .numtxt.text, pat2); bool m3 = program.match( this .bookcosttxt.text, pat3); if (!m1) messagebox .show( 图书的 isbn号格式为 x-xxxx-xxxx-x 或x-xxx-xxxxx-x (x为数字,以图书实际 isbn号为准)! , 提示

30、! ); this .isbntxt.text = ; return ; if (!m2) messagebox .show( 图书购买数量应为大于0的整数! , 提示! ); this .numtxt.text = ; return ; if (!m3) messagebox .show( 图书价格应为 xx.xx元! , 提示! ); this .bookcosttxt.text = ; return ; int num; num = convert .toint32(this .numtxt.text); for ( int i = 1, k = convert .toint32(thi

31、s .booknotxt.text); i = num; i+, k+) string sql; sql = insert into tb_book(bno,bname,bclass,bisbn,bcost,adder,adddate,bauthor,bpub,bstate,bnote) + values( + k.tostring() + , + this .booknametxt.text + , + this .classtxt.text + , + this .isbntxt.text + , + this .bookcosttxt.text + , + loginform .unam

32、e + , + datetime.now.tostring() + , + this .bookwritertxt.text + , + this .bookpubtxt.text + ,在库 , + this .notetxt.text + ); datatable dt = dbhelp.exeolecommand(sql); messagebox .show( 注册成功! , 恭喜! ); this .hide(); privatevoid rebtn_click(object sender, eventargs e) this .isbntxt.clear(); clears(); p

33、rivatevoid clears() this .booknametxt.clear(); /this.isbntxt.clear(); this .bookcosttxt.clear(); this .bookwritertxt.clear(); this .bookpubtxt.clear(); this .notetxt.clear(); this .numtxt.clear(); privatevoid newbook_load(object sender, eventargs e) string sql; sql = select top 1 bno from tb_book or

34、der by bno desc; datatable dt = dbhelp.exeolecommand(sql); int k; for ( int i = 0; i 1; i+) if (dt.rows00.tostring() = ) k = 10000001; else k = convert .toint32(dt.rows00.tostring(); k+; this .booknotxt.items.add(k.tostring(); this .booknotxt.selectedindex = 0; this .classtxt.selectedindex = 0; priv

35、atevoid findbtn_click(object sender, eventargs e) if ( this .isbntxt.text = ) messagebox .show( 请输入图书的 isbn号! , 提示! ); return ; string sql; sql = select * from tb_book where bisbn= + this .isbntxt.text + ; oledbdatareader dr = dbhelp .olereader(sql); dr.read(); if (dr.hasrows) this .booknametxt.text

36、 = drbname.tostring().trim(); this .classtxt.text = drbclass.tostring().trim(); this .bookcosttxt.text = drbcost.tostring().trim(); this .bookwritertxt.text = drbauthor.tostring().trim(); this .bookpubtxt.text = drbpub .tostring().trim(); this .notetxt.text = drbnote .tostring().trim(); messagebox .

37、show( 找到匹配图书信息,自动填充基本信息,请填充余下信息! , 提示!); this .numtxt.enabled = true ; else clears(); messagebox .show( 未找到匹配图书信息!, 提示! ); this .booknotxt.enabled = true ; this .booknametxt.enabled = true ; this .classtxt.enabled = true ; this .bookcosttxt.enabled = true ; this .bookwritertxt.enabled = true ; this

38、.bookpubtxt.enabled = true ; this .numtxt.enabled = true ; this .notetxt.enabled = true ; 3. 图书信息管理publicpartialclassbookmanage : form public bookmanage() initializecomponent(); string bookisbn; privatevoid bookmanage_load( object sender, eventargs e) this .checkbox.selectedindex = 0; this .classbox

39、.selectedindex = 0; privatevoid checkbtn_click(object sender, eventargs e) fillgrid(); privatevoid cell_click(object sender, datagridviewcelleventargs e) fillinfo(); privatevoid nobtn_click(object sender, eventargs e) this .close(); privatevoid okbtn_click(object sender, eventargs e) if ( this .name

40、txt.text = string .empty) messagebox .show( 执行操作前,请先选择图书! , 提示! ); return ; / 修改同 isbn图书信息string sql2= string.empty; sql2 += update tb_book set bisbn= + this .isbntxt.text + ,bname= + this .nametxt.text + ,bclass= + this .classtxt.text + ,bcost= + this .costtxt.text + ,bauthor= + this .writertxt.tex

41、t + ,bpub= + this .pubtxt.text + ,adder= + this .addertxt.text + ,bnote= + this .notetxt.text + ; sql2 += where bisbn= + this .bookisbn + datatable dt2 = dbhelp.exeolecommand(sql2); string sql5 = string.empty; sql5 += update tb_borrow set bname= + this .nametxt.text + ,bisbn = + this .isbntxt.text +

42、 ; sql5 += where bisbn= + this .bookisbn + ; datatable dt5 = dbhelp.exeolecommand(sql5); messagebox .show( 该类图书信息修改成功! , 提示! ); this .checktxt.text = ; fillgrid(); fillinfo(); privatevoid fillgrid() if ( this .checkbox.text = string.empty) messagebox .show( 请输入你要使用的检索条件! , 提示! ); return ; if ( this

43、.classbox.text = string.empty) messagebox .show( 请输入你要查找的图书类型! , 提示! ); return ; string sql = string.empty; sql += select bid as id号, bno as 图书编号 , bname as 图书名称 ,bauthor as 作者 , bclass as 类别 , bisbn as isbn号, bcost as 价格 ,bpub as 出版社 , adder as 记录员 , adddate as 入库日期 ,bnote as 内容简介 ,bstate as 状态 fro

44、m tb_book; if ( this .checktxt.text != ) string c = this .checkbox.selectedindex.tostring(); switch (c) case 0 : / 图书名称if ( this .checktxt.text != string.empty) sql += where bname like % + this .checktxt.text + % ; break ; case 1 : / 图书编号if ( this .checktxt.text != string.empty) sql += where bno lik

45、e % + this .checktxt.text + % ; break ; case 2 : / 作者if ( this .checktxt.text != string.empty) sql += where bauthor like % + this .checktxt.text + % ; break ; case 3 : /isbn号if ( this .checktxt.text != string.empty) sql += where bisbn like % + this .checktxt.text + % ; break ; case 4 : / 出版社if ( thi

46、s .checktxt.text != string.empty) sql += where bpub like % + this .checktxt.text + % ; break ; default: break ; if ( this .classbox.selectedindex.tostring() != 0 ) sql += and bclass= + this .classbox.text + ; else if ( this .classbox.selectedindex.tostring() != 0 ) sql += where bclass= + this .class

47、box.text + ; sql += order by bno asc; datatable dt = dbhelp.exeolecommand(sql); this .datagridview1.datasource = dt; privatevoid fillinfo() this .label3.text = this .datagridview11, this .datagridview1.currentcell.rowindex.value.tostring().trim(); this .isbntxt.text = this .datagridview15, this .datagridview1.currentcell.rowindex.value.tostring().trim(); this .nametxt.text = this .datagridview12, this .datagridview1.currentcell.rowindex.value.tostring().trim(); this .classtxt.text =

温馨提示

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

评论

0/150

提交评论