数据库系统原理课程设计-图书馆管理系统.doc_第1页
数据库系统原理课程设计-图书馆管理系统.doc_第2页
数据库系统原理课程设计-图书馆管理系统.doc_第3页
数据库系统原理课程设计-图书馆管理系统.doc_第4页
数据库系统原理课程设计-图书馆管理系统.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

摘 要在数字化、网络化的今天,社会信息量与日俱增,作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。在计算机日益普及的今天,对个人而言若采用一套行之有效的图书借阅管理系统来管理自己的书籍,会方便许多,这也充分应用硬件资源;对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理更为需要有效的图书管理软件。 图书馆是学校的文献信息中心,是为全校教学和科学研究服务的学术性机构,是学校信息化的重要基地。图书馆的工作是学校教学和科学研究工作的重要组成部分,是全校师生学习和研究的重要场所。为了更好地适应这种网络数字化信息的环境,需开发设计一种扎根于准、新、全数字资源的图书借阅管理系统。除此之外,由于图书馆陈旧的管理手段给读者和图书馆管理员带来的很多操作上的不方便,同时为了提高工作效率、服务质量和管理水平,并使图书馆管理人员从繁琐的工作中解脱出来,从而使我们下定决心开发该系统。关键词:图书馆;ado.net;c#,sql目 录第1章 系统定义1第2章 需求分析12.1 系统综合需求1第3章 系统设计13.1 概念结构设计13.2 逻辑结构设计23.3 子模块划分及功能概述4第4章 详细设计64.1开发平台及工具64.2 存储过程及触发器64.3程序设计74.4界面设计8第5章 课程设计总结10参考文献11附录(程序代码)12第1章 系统定义在数字化、网络化的今天,社会信息量与日俱增,作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。在计算机日益普及的今天,对个人而言若采用一套行之有效的图书借阅管理系统来管理自己的书籍,会方便许多,这也充分应用硬件资源;对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理更为需要有效的图书管理软件。 图书馆是学校的文献信息中心,是为全校教学和科学研究服务的学术性机构,是学校信息化的重要基地。图书馆的工作是学校教学和科学研究工作的重要组成部分,是全校师生学习和研究的重要场所。为了更好地适应这种网络数字化信息的环境,需开发设计一种扎根于准、新、全数字资源的图书借阅管理系统。除此之外,由于图书馆陈旧的管理手段给读者和图书馆管理员带来的很多操作上的不方便,同时为了提高工作效率、服务质量和管理水平,并使图书馆管理人员从繁琐的工作中解脱出来,从而使我们下定决心开发该系统。第2章 需求分析2.1 系统综合需求1) 本图书借阅管理系统主要针对的用户是中学或大学图书馆,藏书的种类和数量较大,但是读者的数量和来源可能在局部上受到一定的限制。其相应的需求有: 图书室有各种图书一万多册。2) 每种图书都有书名、书号(isbn)、一名或多名作者(译者)、出版社、定价和内容简介。3) 每种图书有多个副本。4) 系统分为:图书管理员、读者和普通用户。图书管理员负责读者信息的管理,读者凭用户名密码登陆系统可以借阅图书,普通用户可以注册成为读者,若不注册只能网上查看图书信息。5) 读者信息包括读者的姓名、所在单位、职业等。6) 每个读者在借的图书不能超过8本。否则要罚款。借书期限最长为30天。7) 读者可以续借图书。8) 图书管理员模块:对用户的管理和新进图书的数据录入。9) 读者和普通用户的公共模块:图书的分类查询。10) 读者模块:借书,修改个人信息,在借图书的信息、罚款信息查询。第3章 系统设计3.1 概念结构设计系统e-r图如图3-1所示。 图3-1 系统e-r图3.2 逻辑结构设计系统数据表如表3-1表3-7所示。表3-1图书信息表图 书 信 息 表 book字段名类型null其他备注b_idintnpk,fk图书编号b_namenvarchar(50)n图书名称b_authornvarchar(50)n图书作者b_author1nvarchar(50)y图书作者b_author2nvarchar(50)y图书作者b_author3nvarchar(50)y图书作者b_translatenvarchar(50)n图书译者b_translate1nvarchar(50)y图书译者b_translate2nvarchar(50)y图书译者b_translate3nvarchar(50)y图书译者b_pressnvarchar(50)n图书出版社b_pricefloatn图书定价b_contentnvarchar(max)n图书简介表3-2读者信息表读 者 信 息 表 reader字段名类型null其他备注r_idintnpk,fk读者编号r_namenvarchar(50)n用户名r_jobnvarchar(50)n读者职务r_telnvarchar(20)n读者电话r_worknvarchar(50)n读者工作r_passwordnvarchar(20)n登录密码表3-3管理员信息表管 理 员 信 息 表 admin字段名类型null其他备注a_idintn管理员编号a_namenvarchar(20)n管理员用户名a_passwordnvarchar(20)n管理员密码表3-4借阅图书记录表借 阅 图 书 信 息 表 borrow字段名类型null其他备注id_bintnfk借阅图书编号idbigintypk编号,自增id_rintyfk借阅者编号timesmalldatatimey借阅日期dateinty到期时间moneyfloaty逾期罚款部分表关系图如图3-2所示:图3-2 部分表关系图3.3 子模块划分及功能概述系统层次结构图如图3-3所示。图3-3 系统层次结构图图3-3 系统层次结构图第4章 详细设计4.1开发平台及工具l 开发工具microsoft visualstudio 2012 l dbms:microsoft sql server 2005l 建模工具:microsoft visio4.2 存储过程及触发器作为数据库应用系统,数据的一致性需要得到保证,通过单纯的手工编码方式,工作烦琐,容易出错,而且不易于扩展。采用dbms的外码约束,unique约束,自增序列来实现对数据库简单快捷的访问l 读者注册的存储过程use librarygoset ansi_nulls ongoset quoted_identifier ongoalter procedure dbo.addreaderid int ,name nvarchar(50), password nvarchar(20), job nvarchar(50), work nvarchar(50), tel intas insert into reader (r_id,name,password,r_job,r_work,r_tel)values (id,name,password,job,work,tel)l 读者借阅存储过程use librarygoset ansi_nulls ongoset quoted_identifier ongoalter procedure dbo.insertborrowbid int,rid bigint,time int,data smalldatetime,bname nvarchar(50),rname nvarchar(50)as insert into borrow (id_b,id_r,time,data,name_b,name_r) values (bid,rid,data,time,bname,rname)l 按图书名称查找存储过程use librarygoset ansi_nulls ongoset quoted_identifier ongoalter procedure dbo.selectbookname nvarchar(50)asselect * from bookwhere b_name=namel 按类型查找存储过程use librarygoset ansi_nulls ongoset quoted_identifier ongoalter procedure dbo.selecttypeasselect b_type from bookgroup by b_type4.3程序设计1.在操作过程中利用多种方式连接数据库,通过microsoft visualstudio 2012对c#窗体应用程序的开发控件与数据库操作命令的共同使用,来达到更好的设计效果;2. 很多数据需要通过列表框来显示,因此利用datagridview控件和相关代码,能够更加全面的将所需要的信息列出来;3.在程序中调用存储过程,极大的简化了代码的复杂度,使得程序变得更加简洁易懂;4.4界面设计欢迎界面(如图4-1所示):图4-1登录界面游客界面(如图4-2所示):图4-2游客界面l 按类型查找(如图4-3所示):图4-3按类型查找l 按书名查找(如图4-4所示):图4-4按书名查找主界面l 注册界面(如图4-5所示):图4-5注册界面l 登陆界面(如图4-6所示)图4-6登录界面l 读者界面(如图4-7所示)l 图4-5读者界面第5章 课程设计总结经过长时间的奋斗制作,设计总算作完了,系统实现对学校图书信息的经营管理的维护,主要实现了数据的输入、查询、修改、删除、统计等一系列功能,再功能方面,包括添加或删除用户,保存信息,更新信息等。 系统完全采用图形户用户操作界面,能让用户很容易了解和掌握系统的使用方法。这使得系统具备了很好的交互性和可操作性。在功能的界面实现方面,系统采用菜单式操作和命令按钮操作相结合的方式,使操作非常的简单、方便。系统在安全性方面的控制管理员登陆窗口,使非管理人员不能进入系统。从而保证了系统的安全性。 第一、我对系统的整个需求分析和整体设计作了详细的分析和设计。在这个环节中,我感受最深的就是对系统需求的分析。可以说对一个软件的需求分析是这个系统开发的最根本的基础。 第二、对于一个数据库软件的开发,用sql sever来进行是最适合不过的了,sql sever对数据库的操作真的是很方便的。它提供的事件编程方法正适应了目前软件开发领域面向对象编程思想的需要,让人毫不费力的就体会到了面向对象编程方法的优越性。 第三、这次的设计是我进行的第一个完整软件的设计,经验方面的欠缺使得设计难免会出现许多不足,但我始终相信:没有做不到的,只有想不到的。我将在今后的程序设计生涯中不断提高我的软件设计水平,丰富我的软件开发经验。 我在这次设计后深深的感受到“一分耕耘,一分收获”。设计的过程是辛苦的,但当设计完成时会有一种满足感,而且自己也收获不少。通过这次设计,我发觉我学到了很多东西,把学到的东西都派上了用场。参考文献1何炜等.visual c+ .net 2003程序设计m.冶金工业出版社, 20052 萨师煊等.数据库系统概论(第三版)m.高等教育出版社,20043美 everett n. mckay著.windows用户界面开发m.北京大学出版社,20044常州vc编程网.用visual c+开发数据库应用程序. /,2006附录(程序代码)1. 游客界面using system;using system.collections.generic;using system.componentmodel;using system.data;using system.data.sqlclient;using system.drawing;using system.linq;using system.text;using system.windows.forms;namespace library public partial class form2 : form string connstr = server=nb100-pcsqlexpress;database=library;trusted_connection = true; public form2() initializecomponent(); private void form2_load(object sender, eventargs e) sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtext = selecttype;/存储过程 cmd.commandtype = commandtype.storedprocedure; cmd.connection = conn; sqldatareader sdr = cmd.executereader(); while (sdr.read() toolstripcombobox1.items.add(sdr0); sdr.close(); conn.close(); this.booktableadapter.fill(this.librarydataset.book); private void toolstripbutton1_click(object sender, eventargs e) sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); string type = toolstripcombobox1.text.substring(0); cmd.commandtext = selecttypebook;/带参数存储过程 cmd.commandtype = commandtype.storedprocedure; cmd.parameters.addwithvalue(type,type); cmd.connection = conn; sqldatareader sdr = cmd.executereader(); sdr.close(); sdr = cmd.executereader(); bindingsource bs = new bindingsource(); bs.datasource = sdr; look.datasource = bs; sdr.close(); conn.close(); private void toolstripbutton2_click(object sender, eventargs e) try sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); string name = toolstriptextbox1.text.substring(0); cmd.commandtext = selectbook;/带参数存储过程 cmd.commandtype = commandtype.storedprocedure; cmd.parameters.addwithvalue(name, name); cmd.connection = conn; sqldatareader sdr = cmd.executereader(); /填充datagridview1 sdr.close(); sdr = cmd.executereader(); bindingsource bs = new bindingsource(); bs.datasource = sdr; look.datasource = bs; sdr.close(); conn.close(); catch (exception) messagebox.show(没有找到需要的图书); throw; private void exit_click(object sender, eventargs e) application.exit(); private void login_click(object sender, eventargs e) login m1 = new login(); this.hide(); m1.showdialog(); private void toolstripbutton3_click(object sender, eventargs e) regist m1 = new regist(); this.hide(); m1.showdialog(); 2. 注册界面:namespace library public partial class regist : form string connstr = server=nb100-pcsqlexpress;database=library;trusted_connection = true; string a, b, c, d; int x; public regist() initializecomponent(); private void button2_click(object sender, eventargs e) form2 m1 = new form2(); this.hide(); m1.showdialog(); private void button1_click(object sender, eventargs e) if (validateinput() = true) using (sqlconnection conn = new sqlconnection(connstr) string sql = insert into reader values( + a + , + b + , + c + , + d + , + x + ); sqlcommand cmd = new sqlcommand(sql, conn); conn.open(); int i=cmd.executenonquery(); if (i 0) messagebox.show(添加成功); login m1 = new login(); this.hide(); m1.showdialog(); else messagebox.show(添加失败); private bool validateinput() if (textbox1.text.trim() = ) messagebox.show(请输入用户名, 提示, messageboxbuttons.ok, messageboxicon.information); textbox1.focus(); return false; else if (textbox2.text.trim() = | textbox3.text.trim() = | textbox2.text != textbox3.text) messagebox.show(请输入密码或两次输入密码不一致, 提示, messageboxbuttons.ok, messageboxicon.information); textbox2.focus(); return false; else if (textbox4.text.trim() = ) messagebox.show(请输入工作单位, 提示, messageboxbuttons.ok, messageboxicon.information); textbox4.focus(); return false; else if (textbox5.text.trim() = ) messagebox.show(请输入职务, 提示, messageboxbuttons.ok, messageboxicon.information); textbox5.focus(); return false; else if (textbox6.text = ) messagebox.show(请输入电话号码, 提示, messageboxbuttons.ok, messageboxicon.information); textbox6.focus(); return false; else a = textbox1.text; b = textbox2.text; c = textbox4.text; d = textbox5.text; x = int.parse(textbox6.text); return true; private void regist_load(object sender, eventargs e) textbox1.focus(); 3. 读者界面using system;using system.collections.generic;using system.componentmodel;using system.data;using system.data.sqlclient;using system.drawing;using system.linq;using system.text;using system.windows.forms;namespace library public partial class reader : form public login reader; string connstr = server=nb100-pcsqlexpress;database=library;trusted_connection = true; int i; string sum; int time = 30; public reader() initializecomponent(); private void reader_load(object sender, eventargs e) / todo: 这行代码将数据加载到表“librarydataset3.borrow”中。您可以根据需要移动或删除它。 this.borrowtableadapter1.fill(this.librarydataset3.borrow); / todo: 这行代码将数据加载到表“librarydataset2.borrow”中。您可以根据需要移动或删除它。 this.borrowtableadapter.fill(this.librarydataset2.borrow); / todo: 这行代码将数据加载到表“librarydataset4.borrow”中。您可以根据需要移动或删除它。 this.borrowtableadapter2.fill(this.librarydataset4.borrow); button1.enabled = false; button2.enabled = false; button3.enabled = false; toolstriplabel1.text = userhelper.loginid; this.booktableadapter.fill(this.librarydataset1.book); #region 读取数据库图书列表 sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtext = selecttype;/存储过程 cmd.commandtype = commandtype.storedprocedure; cmd.connection = conn; sqldatareader sdr = cmd.executereader(); while (sdr.read() toolstripcombobox1.items.add(sdr0); sdr.close(); conn.close(); /this.booktableadapter.fill(this.librarydataset.book); #endregion #region 读取读者借阅列表 sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); /string name = toolstriptextbox1.text.substring(0); string name = toolstriplabel1.text; cmd.commandtext = selectborrow;/带参数存储过程 cmd.commandtype = commandtype.storedprocedure; cmd.parameters.addwithvalue(name, name); cmd.connection = conn; sqldatareader sdr = cmd.executereader(); /填充datagridview1 sdr.close(); sdr = cmd.executereader(); bindingsource bs = new bindingsource(); bs.datasource = sdr; datagridview1.datasource = bs; sdr.close(); conn.close(); #endregion #region 判断借书数量 sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtext = select count(*) from borrow where name_r = +toolstriplabel1.text+; cmd.connection = conn; sum = cmd.executescalar().tostring(); messagebox.show(您已借阅图书+sum+本); conn.close(); if (int.parse(sum.tostring() 0) button2.enabled = true; button3.enabled = true; #endregion private void toolstripbutton1_click(object sender, eventargs e) private void toolstripbutton2_click(object sender, eventargs e) private void exit_click(object sender, eventargs e) private void toolstripbutton1_click_1(object sender, eventargs e) sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); string type = toolstripcombobox1.text.substring(0); cmd.commandtext = selecttypebook;/带参数存储过程 cmd.commandtype = commandtype.storedprocedure; cmd.parameters.addwithvalue(type, type); cmd.connection = conn; sqldatareader sdr = cmd.executereader(); /填充datagridview1 sdr.close(); sdr = cmd.executereader(); bindingsource bs = new bindingsource(); bs.datasource = sdr; look.datasource = bs; sdr.close(); conn.close(); private void toolstripbutton2_click_1(object sender, eventargs e) try sqlconnection conn = new sqlconnection(connstr); conn.open(); sqlcommand cmd = new sqlcommand(); string name = toolstriptextbox1.text.substring(0); cmd.commandtext = selectbook;/带参数存储过程 cmd.com

温馨提示

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

评论

0/150

提交评论