基于C#的图书馆管理系统报告书.doc

上传人:飞****2 文档编号:51979012 上传时间:2022-10-20 格式:DOC 页数:28 大小:893KB
返回 下载 相关 举报
基于C#的图书馆管理系统报告书.doc_第1页
第1页 / 共28页
基于C#的图书馆管理系统报告书.doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《基于C#的图书馆管理系统报告书.doc》由会员分享,可在线阅读,更多相关《基于C#的图书馆管理系统报告书.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、课程设计报告书题 目:图书馆管理系统同 组 人 员: 王海乐 () 吴昌旺 ()摘要随着社会的发展,人们生活水平的不断提高,物质文化的发展已经远远满足不了人们的需求,精神文明有了飞速的发展,因此图书事业的发展就成为了精神文明进步的一个动力。在迈入二十一世纪的今天,对图书馆的管理显得极其重要,合理的管理不但反映了一个国家的科技水平,而且影响人们对知识掌握的速度和质量。在知识经济时代到来的今天,用计算机管理图书馆的工作由自动化系统运行而完成。这不仅节省了人力,还提高了工作效率和服务质量,而且还加速了图书的流通。本图书馆管理系统是按基本图书馆系统结构开发的,本文重点描述图书添加、图书信息更新、删除图

2、书、图书查询等功能。前言部分论述了图书馆系统的发展以及图书馆用计算机自动化管理的前景。正文论述了图书馆管理系统的特点及图书馆自动化管理的重要性和图书馆管理系统软件需要实现的主要功能,分析图书馆管理系统以及实现软件开发的系统要求,简述了实现图书馆管理系统设计需要,图书馆系统数据库的设计,程序流程图以及详细设计,并陈列了改系统开发所应用的主要参考文献。关键词:理信息系统 图书馆 C# 数据库表 SQL Server2000目录目录1第一章开发环境和开发工具21.1C#语言简介21.2 开发背景21.3 开发环境3第二章 图书馆管理系统的分析与设计32.1 系统需求分析32.2 系统总体设计42.2

3、.1 系统设计目标42.2.2 开发设计思想42.2.3 系统功能模块设计5第三章数据库设计63.1 引入背景63.2 数据库需求分析73.3 数据库概念结构设计83.4 数据库逻辑结构设计9第四章系统详细设计与实现114.1 公共类设计与实现124.2 数据访问层类设计与实现134.3 业务逻辑层类设计与实现194.4 界面设计及实现204.4.1 登陆界面及代码204.4.2 主界面及代码21结 论24心得体会25参考文献261.1 系统需求分析 随着经济全球化的推进以及企业激烈的竞争,各大高校的图书管理系统已经越来越不能够适应读者和图书信息剧增的局面了,所以我们现在需要一个检索迅速、查找

4、方便、易修改功能齐全方便的系统来适应我们的需求。系统采用先进的两层体系结构,Client(客户端)负责提供表达逻辑、显示用户界面信息、基本操作;Server(服务器端)负责实现数据服务。问题的提出:为了减少人工工作量,提高工作效率,使图书馆管理员的工作更加有效地进行。1.2 系统总体设计1.2.1 系统设计目该图书管管理系统的核心思想是实现对图书信息增、删、改、查的管理。根据图书馆日常图书管理工作的需求和图书借阅的管理流程,该系统实施后,应该达到以下目标:1. 充分了解用户需求及当前形式,功能齐备,能完成图书处理;2. 要有详细的设计说明书;3. 每一模块的流程图要很清晰;4. 系统能够正常的

5、运行,能较好的完成预定的功能;5. 系统要有完整的帮助文件,供前台操作员能方便的操作本系统。6. 系统应该具备管理用户的信息,对用户的信息进行管理,实现用户图书的借阅功能。2.2.2 开发设计思想基于以上系统设计目标,本文在开发人事管理信息系统时遵循了以下开发设计思想:(1)采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。(2)尽量达到操作过程中的直观、方便、实用、安全等要求。(3)系统采用C/S体系结构,Clinet(客户端)负责提供表达逻辑、显示用户界面信息、访问数据库服务器;Server(服务器端)则用于提供数据服务。三层体系的应

6、用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是中间层向外提供接口,通过COM/DCOM通讯或者Http等方式与中间层建立连接,再经由中间层与数据库进行交互。当然数据通过中间层的中转无疑是降低了效率,但是它脱离于界面与数据库的完美封装,使得它的缺点显然不值得一提。典型的三层结构分为表示(presentation)层, 领域(domain)层, 以及基础架构(infrastructure)层,而微软的DNA架构定义了三个层:表示层(presentation),业务层(business),和数据存储层(data access)。(4)

7、系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。(5)系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。2.2.3 系统功能模块设计本系统分为普通用户(读者)和管理员,普通用户的职能模块包括查询图书、借阅图书和查询已借图书信息,管理员职能模块包括用户管理、图书管理、借阅管理、登录管理,得到如图系统功能模块:第一章 数据库设计3.1 引入背景图书馆管理系统是一个数据库应用系统,用户及图书的所有信息都保存在数据库中。数据库结构设计是图书馆管理信息系统数据库应用系统开发过程中一个非常重要的环节,设计的好坏将直接对所

8、开发的图书馆管理信息系统的效率以及实现的效果产生影响。好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等等。数据库结构设计主要就是要设计好数据库中各个表的结构,包括信息保存在哪些表格中、各个表的结构如何以及各个表之间的关系。由于数据库设计的重要性,人们提出了许多数据库结构设计的技术。3.2 数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,也是非常重要的一个阶段。在这个阶段主要工作是收集基本数据以及数据处理的流程,为以后进一步设计一打下基础。需求分析主要解决两个问题:(1)内容要求。调查应用系统用户所需要操作的

9、数据,决定在数据库中存储什么数据。(2)处理要求。调查应用系统用户要求对数据库进行什么样的处理,理清数据库中各种数据之间的关系。在数据库需求分析后,得到一个数据字典文档,包括3方面内容:(1)数据项。包括名称、含义、类型、取值范围、长度以及和其他数据项之间的逻辑关系。(2)数据结构。若干个数据项的有意义的集合,包括名称、含义以及组成数据结构的数据项。(3)数据流。指数据中数据的处理过程,包括输入、处理和输出。本系统数据项和数据结构设计如下:(1)图书基本情况。包括的数据项有图书ID、图书名称、图书类别类别、作者、价格、出版社、内容简介、图书指定访问码。(2)图书借阅信息。包括的数据项有图书指定

10、访问码、图书ID、图书名称、图书类别、作者、出版社、借阅者权限、借出时间、用户编号。(3)用户登录信息。包括用户ID、用户名、密码、借阅者权限。3.3 数据库概念结构设计数据库概念结构设计是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。用E-R图是描述数据实体关系的一种直观描述工具,所以本系统采用了E-R图的方法进行数据库概念结构设计。用户实体E-R图:图书实体E-R图:图书借阅实体E-R图:3.4 数据库逻辑结构设计概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用的设计。也就是要将概念上的结构转化为B

11、P数据库系统所支持的实际数据模型。根据需求分析进行数据库设计,数据库名称为 BookManage ,共需要三张表:用户表(UserInfo)、 图书信息表(BookInfo)、图书借阅信息表(BookOut)。用户表存放用户账号的信息,一个用户可以对应一个账户,包括用户名、密码、借阅证号和用户权限。通过用户表查阅用户权限和借阅证号,判断是否是管理员,是否拥有修改图书和用户信息的权限。图书信息表里每条记录都是一本书,包括图书名称、图书类别、作者、价格、内容简介和图书的访问码。通过图书信息表可以获取图书信息。 图书借阅表记录用户借阅图书的信息,包括借阅的图书、借阅时间、借阅人。通过图书借阅信息表可

12、以获取图书借阅的信息。图书借阅情况表:在此三个表的基础上输入数据完成表的创建。第二章 系统详细设计与实现 为实现该系统,建立名为Book的解决方案,建立三层架构,用户访问层(BookUI)、数据访问层(BookDAL)、逻辑业务层(BookBLL)4.1 公共类设计与实现用户访问层用户访问层(BookUI),位于最外层,离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。本系统创建窗口,实现图书信息和用户信息的增、删、改、查操作。实体类Model:Book.cs、User.cs、BookOut.cs, 是关系数据库和对象之间架起一座桥梁,帮助我们完成传递参数功能,实现

13、按某一字段进行查询。如图所示: 4.2 数据访问层类设计与实现 数据访问层(BookDAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。本实例系统的主要操作都需要与数据库发生交互,操作数据库是必不可少的,为了减少 重复代码提高代码的重用性和规范性,把与数据库交互的功能单独放在一个类中,在该类中 实现数据库的增加、删除、修改、查询等通用功能。因此创建databa.cs类,放在BookUtility方案下,实现对数据库的操作,代码如下:namespace BookUtility public class Database private static string _c

14、onnStr = Data Source=.;Initial Catalog=BookManage;Integrated Security=True; private static SqlConnection sqlcon = null; private static void CreateConnection() if (sqlcon = null) sqlcon = new SqlConnection(_connStr); sqlcon.Open(); else if (sqlcon.State = ConnectionState.Closed | sqlcon.State = Conne

15、ctionState.Broken) sqlcon.Close(); sqlcon.Open(); public static SqlCommand Querry(string strsql) try CreateConnection(); SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon); sqlcmd.CommandText = strsql; return sqlcmd; catch return null; /执行Insert/update/delete,不带参数 public static int ExecuteNoQuery(st

16、ring strsql) int i; try CreateConnection(); SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon); i = sqlcmd.ExecuteNonQuery(); sqlcon.Close(); return i; catch return -1; /执行Insert/update/delete,带参数 public static int ExecuteNoQuery(string strsql, params SqlParameter param) int i; try CreateConnection(

17、); SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon); /sqlcmd.Parameters.Add(param); foreach (SqlParameter par in param) /遍历数组将参数对象添加到操作命令中 sqlcmd.Parameters.Add(par); i = sqlcmd.ExecuteNonQuery(); return i; catch return -1; public static DataSet GetDataSet(string strsql) CreateConnection(); SqlDat

18、aAdapter sda = new SqlDataAdapter(strsql, sqlcon); DataSet ds = new DataSet(); try sda.Fill(ds); return ds; catch return null; public static DataSet GetDataSet(string strsql, params SqlParameter param) CreateConnection(); SqlDataAdapter sda = new SqlDataAdapter(strsql, sqlcon); DataSet ds = new Data

19、Set(); foreach (SqlParameter par in param) sda.SelectCommand.Parameters.Add(par); try sda.Fill(ds); return ds; catch return null; public static DataTable GetTable(string strsql) try CreateConnection(); SqlDataAdapter sda = new SqlDataAdapter(strsql, sqlcon); DataSet ds = new DataSet(); sda.Fill(ds,

20、temp); sqlcon.Close(); return ds.Tablestemp; catch return null; public static DataTable GetTable(string strsql, params SqlParameter param) try CreateConnection(); string str = strsql; SqlDataAdapter sda = new SqlDataAdapter(strsql, sqlcon); foreach (SqlParameter par in param) sda.SelectCommand.Param

21、eters.Add(par); DataSet ds = new DataSet(); sda.Fill(ds, temp); sqlcon.Close(); return ds.Tablestemp; catch return null; 数据访问层创建了两个类,BookAccess.cs和UserAccess.cs,分别实现访问存放书籍和用户的信息的功能,代码如下:namespace BookDAL public class BookAccess public DataTable BookQuarry(Book b) string str = select * from BookInfo

22、where BookType= + b.Booktype + or BookName like% + b.Bookname + % or BookAuthor=% + b.Bookauthor + %or BookID= + b.Bookid + ; return Database.GetTable(str); public DataTable QuarryAll() string str = select * from BookInfo; return Database.GetTable(str); public DataTable QuarryMyBook(string id) SqlPa

23、rameter param = new SqlParameter new SqlParameter(UID,id); string str = select BookIssue,BookID,BookName,BookType,BookAuthor,BookPub,BookOutTime from BookOut where UID=UID; return Database.GetTable(str,param); public DataTable QuarryAllOut() string str = select * from BookOut; return Database.GetTab

24、le(str); public SqlCommand QuarryByID(string id) string str = select * from BookInfo where BookID= + id + ; return Database.Querry(str); public int AddBook(Book b) SqlParameter parm = new SqlParameter new SqlParameter(BookID, b.Bookid), new SqlParameter(BookName, b.Bookname), new SqlParameter(BookTy

25、pe, b.Booktype), new SqlParameter(BookAuthor, b.Bookauthor), new SqlParameter(BookPrice, b.Bookprice), new SqlParameter(BookPub, b.Bookpub), new SqlParameter(BookContent, b.Bookcontent), new SqlParameter(BookIssue, b.Bookissue) ; string str = insert into BookInfo values(BookID,BookName,BookType,Book

26、Author,BookPrice,BookPub,BookContent,BookIssue); int i = Database.ExecuteNoQuery(str, parm); return i; public int BookOut(Bookout bo) SqlParameter parm = new SqlParameter new SqlParameter(BookIssue, bo.Bookissue), new SqlParameter(BookID, bo.Bookid), new SqlParameter(BookName, bo.Bookname), new SqlP

27、arameter(BookType, bo.Booktype), new SqlParameter(BookAuthor, bo.Bookauthor), new SqlParameter(BookPub, bo.Bookpub), new SqlParameter(UIdentify, bo.Uidentify), new SqlParameter(BookOutTime, bo.Bookouttime),new SqlParameter(UID, bo.Uid) ; string str = insert into BookOut values(BookIssue,BookID,BookN

28、ame,BookType,BookAuthor,BookPub,UIdentify,BookOutTime,UID); int i = Database.ExecuteNoQuery(str, parm); return i; public int UpdateBook(Book b) SqlParameter parm = new SqlParameter new SqlParameter(BookID, b.Bookid), new SqlParameter(BookName, b.Bookname), new SqlParameter(BookType, b.Booktype), new

29、 SqlParameter(BookAuthor, b.Bookauthor), new SqlParameter(BookPrice, b.Bookprice), new SqlParameter(BookPub, b.Bookpub), new SqlParameter(BookContent, b.Bookcontent), new SqlParameter(BookIssue, b.Bookissue) ; string str = update BookInfo set BookName=BookName,BookType=BookType,BookAuthor=BookAuthor

30、,BookPrice=BookPrice,BookPub=BookPub,BookContent=BookContent,BookIssue=BookIssue where BookID=BookID; int i = Database.ExecuteNoQuery(str, parm); return i; public int DeleteBook(string bookid) string str = delete BookInfo where BookID= + bookid + ; int i = Database.ExecuteNoQuery(str); return i; pub

31、lic DataTable DeleteMybook(string bookissue) SqlParameter param = new SqlParameter new SqlParameter(BookIssue, bookissue) ; string str = delete BookOut where BookIssue=BookIssue; return Database.GetTable(str, param); 4.3 业务逻辑层类设计与实现 业务逻辑层(BookBLL)在体系架构中的位置很关键,负责关键业务的处理和数据传递,它处于数据访问层与表示层中间,起到了数据交换中承上

32、启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。 本管理系统创建BookMessage、UserMessage两个类,实现数据访问层和用户访问层之间的数据传递。4.4 界面设

33、计及实现4.4.1 登录界面及代码本系统的用户分为普通用户(读者)和管理员用户,管理员用户具有系统提供的所有权限,普通用户可以查询图书、借阅图书、查询个人借阅信息。系统登录界面是判断用户身份的一个交互窗体,在其中输入正确的用户名和密码后,单击“确定”按钮,可根据用户角色在主界面中拥有相应的权限。登录界面如图所示:4.4.2 主界面及代码 菜单界面,添加MenuStrip菜单控件,实现各操作界面的连接,本图书馆管理系统有两个菜单界面,管理员窗口和读者窗口,完成不同权限用户的交互操作界面。图书管理窗口,浏览图书信息,实现管理员对图书的增删改查操作。添加图书窗口:完成图书的入库操作管理员有权限可以将

34、图书添加到数据库中,图书入库界面如上图所示。在分组框中添加标签和文本框,用来接收管理员输人的图书信息,以便保存到数据库中。代码如下:public partial class AddBook : Form public AddBook() InitializeComponent(); BookMessage bm = new BookMessage(); Book books = new Book(); private void button1_Click(object sender, EventArgs e) if (textBox1.Text.Trim() = | textBox2.Text

35、.Trim() = | textBox3.Text.Trim() = | textBox4.Text.Trim() = | textBox5.Text.Trim() = | textBox6.Text.Trim() = | textBox7.Text.Trim() = | comboBox1.Text.Trim() = ) MessageBox.Show(信息输入不完整,请重新输入, 确定); else books.Bookid = textBox1.Text.Trim(); books.Bookname = textBox2.Text.Trim(); books.Booktype = com

36、boBox1.Text.Trim(); books.Bookauthor = textBox5.Text.Trim(); books.Bookprice = textBox4.Text.Trim(); books.Bookpub = textBox3.Text.Trim(); books.Bookcontent = textBox7.Text.Trim(); books.Bookissue = textBox6.Text.Trim(); SqlCommand cm = bm.qurryByID(books.Bookid); if (null!=cm.ExecuteScalar() MessageBox.Show(此图书已存在, 确定); else int i = bm.addBook(books); if (i!= 0) MessageBox.Show(添加图书成功, 确定); 查询用户信息界面: 结论本系统

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁