免费预览已结束,剩余34页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录目录11. 绪论21.1 课题研究的背景和意义21.2 系统介绍21.3 开发工具及运行环境32. 系统分析52.1 需求分析52.2 可行性分析53. 系统设计63.1 设计目标63.2 数据库设计63.2.1 概念结构设计63.2.2 逻辑结构设计83.3.1 项目规划103.3.2 系统功能结构图104. 系统主要功能模块实现114.1 登录界面114.2 主控制界面114.3 图书信息维护124.4 出版社信息管理144.5 图书借阅界面145. 设计总结186. 参考文献197. 致 谢208. 附录201. 绪论1.1 课题研究的背景和意义随着社会的进步与发展,资源高效利用提高效率越来越受到人们的关注.图书管理也提出这样的要求,因此图书管理的数字化越来越受到大众的青睐.传统图书管理方式存在一些弊端,比如需要人员较多,工作量很大,管理资料保存查询不方便等.图书管理系统是现代图书管理工具中的重要组成部分.现代化的图书管理需要有现代化的管理系统,采用计算机管理信息系统已成为图书管理科学化和现代化的一个重要特征,给图书管理带来极大的便利.近年来图书事业的发展,以及软件开发的逐步成熟,图书管理系统使得原来繁重而易出错的图书管理变得简单而有条理,我所开发这一图书管理系统的目的在于能够节省大量的人员成本,使得管理变得方便可靠。它广泛应用于图书馆管理,力求开发出一套严谨、可靠、功能完整的管理系统。使用图书管理系统能够很好的解决了传统图书管理的问题.人员需求能够减少,工作效率明显提高,管理更加便利.1.2 系统介绍此图书管理系统主要采用的是visualstudio2008做为前台开发工具以及sql server 2005做为后台支持。以操作便捷、界面友好、灵活、实用为出发点,设计采用了模块化设计方法。系统实现了以下基本功能:图书借阅:此功能实现图书的借阅。图书查询:可以实现图书的查询。归还图书:实现图书的归还。系统管理:实现了对读者的管理。出版社管理:完成对出版社的管理。图书管理系统具有如下一些特点:方便性:读者以及工作人员能够及时了解图书情况,以便完成需要的工作。稳定性:系统性能稳定。操作性强:由于系统及面简洁,使用容易很便于用户操作。1.3 开发工具及运行环境所用到的开发工具有:microsoft visual studio2008(c#) 和sql server 2005。 visual c#是功能最为强大可视化开发工具,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。因此visual c#又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。 visual c#具有的优点:提供了面向对象的应用程序框架mfc(microsoft foundation class),简化了程序员的编程工作,提高了模块的可重用性;提供了基于case技术的可视化软件的自动生成和维护工具visual studio等,实现了直观、可视的程序设计风格,方便地编写和管理各种类,维护程序的源代码。visual c#中可用的数据访问对象接口有三种:odbc(open database connectity,开发数据库连接)、dao(data access objects,数据访问对象)及ole db(ole data base,ole数据库)。1odbc(open database connectivity,开放数据库连接) odbc提供了应用程序接口(api),使得任何一个数据库都可以通过odbc驱动器与指定dbmc相联,用户的程序就可以通过调用odbc驱动管理器中相应的驱动程序达到管理数据库的目的。作为microsoft windows open standards architecture(wosa,windows开放式服务体系结构)的主要组成部分,odbc一直沿用至今。2.dao(data access objects,数据访问对象) dao 提供了一种通过程序代码创建和操纵数据库的机制。多个dao 对象构成了一个体系结构,在这个结构里,各个dao 对象协同工作,通过 microsoft jet 数据库访问数据库中的数据和数据库的结构定义。可以访问的数据库类型主要有:microsoft jet 数据库、odbc 数据源、可安装的isam数据库。dao 是我们可以通过程序访问和操纵本地的或远程的数据和数据定义,管理数据库中的对象或结构。dao 支持两种不同的数据库环境称为工作区(workspace). microsoft jet workspace 这是一种使用microsoft jet 数据库引擎来访问数据源的工作区。odbc direct workspace 这是一种使用 odbc direct 来直接访问一个odbc 数据源,并绕过microsoft jet 数据库引擎的工作区。可通过odbc访问数据库服务器,而无须安装microsoft jet 数据库引擎。3ole db(ole data base,ole数据库)。ole db试图提高一种统一的数据访问接口,并能处理除了标准的关系型数据库中的数据之外,还能处理包括邮件数据、web上的文本或图形、目录服务(directory services),以及主机系统中的ims和vsam数据。ole db提供一个数据库编程com(组件对象模型)接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。这个com接口与odbc相比,其健壮性和灵活性要高的多。但是,由于ole db的程序比较复杂,因而对于一般用户来说使用odbc和dao方式已能满足一般数据库处理的需要。开发及运行环境包括硬件与软件平台。硬件平台:cpu:p41.8ghz。内存:256mb以上。软件平台:操作系统:windows xp/ windows 2000。数据库:sql server 2005。分辨率:最佳效果1024768像素。2. 系统分析2.1 需求分析通过调查,要求系统需要有以下功能:系统登录用户管理图书管理 图书借阅图书查询 出版社管理 系统退出。2.2 可行性分析图书管理系统使图书管理走上了科学化、系统化管理道路。(1)经济可行性 使用图书管理系统能够极大的节约图书管理工作的运行成本。主要体现在:使用图书管理系统能够减少工作人员数量,从而降低人力成本;实用图书管理系统可以减少对管理资料维护的成本(2)技术可行性 目前国内外软硬件产品和技术发展迅速.服务器,操作系统等相关资源技术容易获得并有较大的选择余地,而且在本系统软硬件要求适中,因此现有条件在技术层面上完全可以满足要求。3. 系统设计3.1 设计目标本系统是针对图书管理工作过程进行设计的,主要实现如下目标:合法用户可以登录此系统;读者可以查询、借阅、归还图书等; 工作人员可以对读者、图书进行管理。3.2 数据库设计3.2.1 概念结构设计将从需求分析中得到的数据信息抽象为概念模型,经分析可得到数据库的e-r模型。如图所示。 图书名称作者编号出版期价格种类出版社 图1:图书实体er图 出版社电话电子邮件名称地址 图2:出版社实体er图密码 读者姓名编号专业状态借书量年龄性别院系 图3:实体读者er图用户密码类型编号 图4:用户实体er图3.2.2 逻辑结构设计把上面的概念结构转化为关系模型,我们可以得到各实体的关系模式(关系的码用下划线标出):图书(图书编号,图书名称,图书作者,出版社,出版日期,图书价格,图书种类)出版社(出版社编号,出版社地址,出版社电话,电子邮件)读者(读者编号,读者名称,密码,读者电话,电子邮件,借书数量)用户(用户编号,用户密码,用户类型)以下关系模式为读者图书的关系模式:借阅图书(读者编号,图书编号,借阅日期,应还日期,归还日期,是否归还)从以上的关系模式我们可以得到数据库的逻辑结构设计(二维表)。每个表格表示数据库中的一个数据表。为了优化数据表结构,部分字段采用代码形式,以便与数据库中的数据表对应起来。根据以上分析,需要设计五个数据表来存放数据信息,这些表分别为图书表,出版社表,读者表,用户表,借阅表。以下五个表分别是这五个表的结构设计。 表1 图书表编号字段名数据类型说 明备 注1bookidchar(10)图书编号主键2bookwritervarchar(30)图书作者3booknamevarchar(20)图书名称4bookpublishvarchar(50)出版社5bookpublishdatedatetime出版日期6bookpricefloat图书价格7booksortvarchar(20)图书类型 表2 出版社表编号字段名数据类型说 明备 注1publishnamevarchar(50)出版社名称主键2publishaddressvarchar(50)出版社地址3publishphonenovarchar(15)出版社电话4publishemailvarchar(30)电子邮件 表3 读者表编号字段名数据类型说 明备 注1readeridchar(6)读者编号主键2readernamevarchar(20)读者名称3readerpasswordvarchar(10)读者密码4readersexvarchar(15)读者性别5readeragevarchar(50)读者年龄6readerdeptvarchar(15)读者系别7readerzhuanyevarchar(15)读者专业8maxnumberint借阅数量9islostvchar(15)是否超期 表4 用户表编号字段名数据类型说 明备 注1useridchar(10)用户编号主键2userpasswordchar(10)用户密码3usersortvarchar(10)用户类型 表5 借阅表编号字段名数据类型说 明备 注1readeridchar(6)读者编号外键2bookidchar(10)图书编号外键3borrowdatedatetime借书日期4returndatedatetime应还日期5outtimedatetime是否超期3.3 总体设计3.3.1 项目规划图书管理系统是一个典型的数据库应用程序,由应用程序和后台数据库两部分构成。应用程序应用程序主要包括登录,用户信息,读者信息,图书信息管理,借阅图书,综合查询,出版社信息,退出系统几个部分组成。数据库 数据库负责对图书信息,用户信息等数据的管理。3.3.2 系统功能结构图系统功能结构如图所示。 图5 系统功能结构图4. 系统主要功能模块实现4.1 登录界面进入系统必须经过登录,用户输入用户名和密码后,系统会查询数据库中的用户表,如果用户存在且密码正确,则根据用户的类型决定用户可以进行的操作。如果用户类行为”管理员”,此时用户类型为系统用户,那么用户可以使用系统所有的功能。如果用户类型为“借阅者”,此时用户为普通用户,那么登录后用户不能进行用户信息管理等操作。如果用户不存在或密码错误则提示用户名或密码错误,并要求用户重新输入。下图为系统登录界面。 图六 系统登录界面4.2 主控制界面此界面是进入相应功能模块的入口。相应功能是否可用取决于用户的类型。单击用户信息按钮时会弹出用户信息管理对话框,再此对话框中可以完成用户信息的管理。单击其他按钮时也会弹出相应的对话框,以完成相应的工作。每个按钮单击事件下均创建相应窗体的实例,并调用方法showdialog()有模式显示相应界面。下图为主控制界面。 图七 主控制界面4.3 图书信息维护在此界面用户可以对图书信息进行管理,具体包含图书信息的添加、修改、删除等。具体实现代码见附录。单击添加按钮时文本框将变为可用,编辑完以后单击确定按钮会将相应的信息写入到数据库的“book”数据表中。如要要取消编辑的信息可以单击取消按钮。单击修改按钮时,各文本框时可编辑的,编辑好信息后,单击确定按钮,可以将修改后的写入到“book”数据表中;单击取消事会取消当前的操作。单击删除按钮会将当前图书信息从“book”数据表中删除。下图为图书信息维护的界面。 图八 图书信息维护界面查询、删除 图九 图书信息维护界面添加4.4 出版社信息管理 出版社信息管理界面使用户可以完成出版社信息的添加,修改,删除等操作。单击添加按钮以后,文本框将可以编辑,编辑好信息后,单击确定按钮,如信息无误会将信息保存到publishcompany数据表中。注意信息不能为空,如为空会出现错误。修改和删除出版社信息与添加信息相似。以下为出版社信息管理界面: 图十 出版社信息管理界面4.5 图书借阅界面图书借阅界面使用户完成图书借阅归还的操作。用户输入读者编号后单击按钮借书记录即可查询读者的借书信息。此时会查询borrowbook表,将记录显示在数据窗口中。输入图书编号(输入编号要正确)后单击借阅图书按钮即可完成借阅,如果借书成功,此时会在borrowbook表中插入一条新记录;单击归还图书,如果归还成功,会将borrowbook表中相应记录删除即可完成归还图书。以下是读者借书界面。 图11 读者借阅图书界面 图12读者借阅图书界面查询、还书4.6读者信息管理 在读者信息管理界面,可以对读者信息进行添加、修改、删除三种操作。读者信息包含读者编号,读者姓名,读者口令,电子邮件,联系电话,已借书目。单击添加按钮,文本框将可用,编辑完成以后,单击确定,会将在reader数据表中添加相应的记录。修改信息是针对现有读者信息进行修改,修改后会将修改后信息保存到读者数据表。删除信息时会将相应记录从读者数据表中删除。具体实现代码见附录。读者信息管理界面见下图 图12读者信息管理添加 图13读者信息管理删除5. 设计总结本文重点讨论了“图书管理系统”的设计方法和过程。全文分八部分进行叙述:第一部分为绪论,简单的介绍了课题研究的背景和意义、系统介绍、开发工具及用到的一些理论知识;第二部分为系统分析,通过调查得出需求分析,从经济性和技术性两方面对系统的可行性进行了分析;第三部分系统设计,首先提出系统的设计目标,再对系统的数据库进行了具体设计,包括概念结构设计和逻辑结构设计,最后得出项目规划和系统功能结构图即总体设计;第四部分系统主要功能模块实现,介绍了主要模块的操作及实现的功能,加以少量的代码和界面图形,给读者一个清晰的认识;第五部分为设计总结,简要说明了该系统的实现过程,及自己在这次锻炼过程中的感受;第六部分为参考文献,列出了在做该系统过程中所参阅的主要文献;第七部分为致谢;最后是附录,列出了系统实现过程中用到的一些主要代码。在本次设计的全过程中,我对所学的知识有了一个比较系统的认识和理解。在设计中我才知自己掌握的知识还远远不够,将理论知识应用到实践中去,总会出现各种问题,不是理论没掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。把学到的知识应用到实践中去,多做多练,才可以把理论的精华发挥出来。知识不是知道,了解就好,一定让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。而且计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。在设计阶段,通过对课题的深入分析与研究,迫使我对技术有一定的了解。在遇到问题时,得到了指导老师与同学的悉心帮助,使我感受到集体的力量是无穷的。我十分珍惜这次锻炼的机会,我按部就班的完成了自己的设计任务,但由于自己的知识水平有限,设计时间又较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观等问题,都有待进一步改善。对于这些不足之处,恳请老师多多指教!当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,课程设计对我们来说,是一次很好的锻炼,使我们各方面的能力都有了很大的提高,为我们将来踏出校门,走上社会增强了能力与自信!6. 参考文献1sqlserver2005数据库管理与应用m,清华大学出版社,20052宋昆,李严等.sql server数据库开发实例解析m.机械工业出版社.2006,13萨师煊,王珊.数据库系统概论(第三版)m.高等教育出版社.19994王辉,张大治.c#程序设计实用教程m,清华大学出版社. 2007.35(美)jameshuddleston等杨浩译.c#数据库入门经典m.清华大学出版社. 2006.46(美)paulrajponniah 著,译者:韩宏志译,数据库设计与开发教程m.清华大学出版社.2005.17美james foxall,陈秋萍译.visualc#2005入门经典m.人民邮电出版社社.2007.38李维杰,孙乾君.sqlserver2005数据库原理与应用简明教程m.清华大学出版社.2007.59(美)gavinpowell著,沈洁,王洪波,赵恒译. 数据库设计入门经典m.清华大学出版社.2007.310刘大玮,马传宝,孙颖洁.sqlserver数据库项目案例导航m.清华大学出版社.2005.711(美)davidm.kroenke郭平译.数据库原理(第2版)m.清华大学出版社.2005.612李律松,陈少刚,沈刚.visual c#数据库高级教程m.清华大学出版社.2005.67. 致 谢在本次课程设计中,首先要感谢王玉萍老师的悉心指导,给予我许多新的思想和宝贵的意见。王老师严谨的治学态度、勤奋的工作作风和平易近人的处事风范,给我留下了深刻的印象,时时教育着我并使我终身受益!值此论文完稿之际,特此向王老师致以衷心的感谢! 同时,感谢我们计算机科学与技术系的领导和老师们给我提供的良好环境和学习机会,感谢老师和同学们对我的关心和帮助。最后,感谢老师在百忙之中抽出宝贵时间来审阅我的论文,谢谢老师的指导。8. 附录系统登录关键代码 public partial class login : form public string password; /用来存储密码 public login() initializecomponent(); private void button2_click(object sender, eventargs e) application.exit(); / 验证用户是否合法 / 传入用户名、密码、登录类型 / 合法返回 true,不合法返回 false / message 参数用来记录验证失败的原因 private bool yanzhengshuru() password = textbox3.text; if (typename.text.trim() = ) messagebox.show(请选择登录类型, 登录提示, messageboxbuttons.ok, messageboxicon.information); typename.focus(); return false; else if (loginid.text.trim() = ) messagebox.show(请输入用户名, 登录提示, messageboxbuttons.ok, messageboxicon.information); loginid.focus(); return false; else if (password = ) messagebox.show(请输入密码, 登录提示, messageboxbuttons.ok, messageboxicon.information); textbox3.focus(); return false; else return true; private void button1_click(object sender, eventargs e) /userhelper.type = typename.text;/读取用户类型 userhelper.adminid= loginid.text; /用户账号 password = textbox3.text;/用户密码 if (yanzhengshuru() if (typename.text.trim() = 管理员) string sql = string.format(select count(*) from admin where adminid=0 and adminpass=1, loginid.text, password); try / 创建 command 对象 sqlcommand command = new sqlcommand(sql, dbhelper.connection); / 打开数据库连接 dbhelper.connection.open(); / 验证是否为合法用户 int count = (int)command.executescalar(); if (count 1) messagebox.show(用户或密码不存在!); /result = false; else admin admin = new admin(); admin. catch (exception ex) messagebox.show(操作数据库出错!); console.writeline(ex.message); /result = false; finally / 关闭数据库连接 dbhelper.connection.close(); if (typename.text.trim() = 借阅者) userhelper.readerid =convert .tostring (loginid.text); string sql = string.format(select count(*) from reader where readerid=0 and readerpass=1, userhelper.readerid,textbox3.text); try / 创建 command 对象 sqlcommand command = new sqlcommand(sql, dbhelper.connection); / 打开数据库连接 dbhelper.connection.open(); / 验证是否为合法用户 int count = (int)command.executescalar(); if (count 1) messagebox.show(用户或密码不存在!); /result = false; else reader reader = new reader(); reader.show(); catch (exception ex) messagebox.show(操作数据库出错!); console.writeline(ex.message); /result = false; finally / 关闭数据库连接 dbhelper.connection.close();主控制界面实现关键代码 public partial class admin : form public admin() initializecomponent(); private void 退出toolstripmenuitem_click(object sender, eventargs e) this.close(); private void admin_load(object sender, eventargs e) toolstrip1.text=string.format (管理员:登录,userhelper.adminid); private void toolstripbutton2_click(object sender, eventargs e) addbook a = new addbook(); a.show(); private void toolstripbutton4_click(object sender, eventargs e) addreader addreader = new addreader(); addreader.show(); /this.close(); private void toolstripbutton7_click(object sender, eventargs e) publisher a=new publisher(); a.show (); /this.close (); private void toolstripbutton3_click(object sender, eventargs e) adminsearchbook a = new adminsearchbook(); a.show(); private void toolstripbutton6_click(object sender, eventargs e) private void toolstripbutton1_click(object sender, eventargs e) adminborrow a = new adminborrow(); a.show(); private void 添加图书toolstripmenuitem_click(object sender, eventargs e) addbook a = new addbook(); a.show(); private void 删除图书toolstripmenuitem_click(object sender, eventargs e) adminsearchbook a = new adminsearchbook(); a.show(); private void 查询图书toolstripmenuitem_click(object sender, eventargs e) adminsearchbook a = new adminsearchbook(); a.show(); private void 查询学生借阅信息toolstripmenuitem_click(object sender, eventargs e) adminborrow a = new adminborrow(); a.show(); private void toolstripbutton6_click_1(object sender, eventargs e) booksborrow a = new booksborrow(); a.show(); private void 借书信息toolstripmenuitem_click(object sender, eventargs e) adminborrow a = new adminborrow(); a.show(); private void 还书信息toolstripmenuitem_click(object sender, eventargs e) adminborrow a = new adminborrow(); a.show(); private void 查询出版社信息toolstripmenuitem_click(object sender, eventargs e) publisher a = new publisher(); a.show(); / this.close(); private void toolstripbutton5_click(object sender, eventargs e) deletereader a = new deletereader(); a.show(); private void 删除toolstripmenuitem_click(object sender, eventargs e) deletereader a = new deletereader(); a.show(); private void 添加toolstripmenuitem_click(object sender, eventargs e) readerinfo a = new readerinfo (); a.show(); private void 修改信息toolstripmenuitem_click(object sender, eventargs e) private void 关于toolstripmenuitem_click(object sender, eventargs e) about a = new about(); a.show(); private void 修改出版社信息toolstripmenuitem_click(object sender, eventargs e) publisher a = new publisher(); a.show(); private void 打开toolstripmenuitem_click(object sender, eventargs e) this.close(); /application.exit(); 图书信息管理实现关键代码 public adminsearchbook() initializecomponent(); private void button1_click(object sender, eventargs e) try string sql; if (combobox1.text = ) messagebox.show(输入不能为空!); combobox1.focus(); return; if (combobox1.text = 书名) sql = string.format(select bookid,bookname,bookwritter,booktype.booktypename,bookprice,booktype.flow,publisher.publishername,ifborrow from book,booktype,publisher where book.booktypeid=booktype.booktypeid and book.publisherid=publisher.publisherid and bookname = 0, textbox1.text); else if (combobox1.text = 作者) sql = string.format(select bookid,bookname,bookwritter,booktype.booktypename,bookprice,booktype.flow,publisher.publishername,ifborrow from book,booktype,pu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 活动舞台搭建安排服务无偿合同
- 2024年校园安防监控系统合同
- 2024年度医院互联网医疗服务合同5篇
- 2024年公积金支持下的房产买卖合同3篇
- 2025养殖场出租合同范本格式
- 2024山地承包合同范本下载山地资源使用协议3篇
- 2024年智能停车场停车位使用权转移合同协议书3篇
- 2024版典当质押借款合同(含信息披露义务)3篇
- 2024年度四人合伙股份合同范本3篇
- 2024年度房地产买卖合同标的和属性3篇
- DBJ15-22-2021-T 锤击式预应力混凝土管桩工程技术规程(广东省)
- 银行客户经理招聘面试题与参考回答(某大型集团公司)
- 《安全系统工程》期末考试卷及答案
- 数学师范-大学生职业生涯规划书
- 科学阅读材料(课件)二年级上册科学教科版
- 2022年度尾矿库安全风险辨识及分级管控表
- 投标项目进度计划
- 关于发展乡村产业的建议
- 登泰山记-教学课件
- 2024版水电费缴费协议范本
- 北师大版四年级数学上册第五单元《方向与位置》(大单元教学设计)
评论
0/150
提交评论