图书管理系统C#课程设计.docx
- 文档编号:25148600
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:29
- 大小:776.88KB
图书管理系统C#课程设计.docx
《图书管理系统C#课程设计.docx》由会员分享,可在线阅读,更多相关《图书管理系统C#课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
图书管理系统C#课程设计
一.绪论
1.1设计背景及意义
图书馆是高等院校的重要组成部门,是教师和学生获取知识的重要场所。
由于图书馆主要从事大量的图书资料的储存和流通,因此图书馆的图书管理是至关重要的。
随着社会的进步,信息技术的广泛应用,数字化管理的优势日趋显著。
图书管理系统也以方便、快捷的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工作人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。
从而使人们有更多时间来获取信息、了解信息、掌握信息。
该图书管理的开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
采用SQLServer2005数据库作为后台数据库、VisualC#编程语言作为前台开发工具,通过对数据库技术进行了较深入的学习和应用,主要完成书目检索、读者管理、借阅管理、图书管理、用户维护等系统功能。
系统运行结果证明,本文所设计的图书管理系统可以满足用户、图书管理员两方面的需要,达到了设计要求。
1.2系统开发工具
系统开发环境:
MicrosoftVisualStudio2008
系统开发语言:
C#
运行平台:
WindowsXP/7/Vista
数据库:
SQLServer2005
MicrosoftVisualStudio2008特点:
1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。
2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。
一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。
对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。
用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。
3、类可视为一个产品模具、一个模块。
在面向对象设计中,类是对象的原型,是对象的制作器。
类的概念是面向对象程序设计最重要的特征。
所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。
4、面向对象设计的核心是类的设计。
例如:
可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。
二.系统需求分析
2.1系统功能要求
为了满足不同用户对图书管理的不同需求,根据实际分析图书管理系统,从而总结出该图书管理系统的主要功能要求。
2.1.1系统功能要求
该系统主要分为两部分:
读者部分和管理员部分。
系统针对读者和管理员分别有不同的需求划分。
读者的主要功能
(1)查询功能:
读者登录系统后可以查询本人信息,查询图书信息。
(2)修改功能:
读者可以修改自己的信息。
(3)预约功能:
读者可以对在馆的图书进行预约。
(4)注销功能:
读者可以注销自己的信息。
管理员的主要功能
(1)管理员管理:
管理员可以对自身信息进行管理,包括查询,修改,删除自身信息,还可以添加新的管理员,对系统进行管理。
(2)读者管理:
管理员可以对已注册的读者信息进行管理,包括查询,修改,删除和添加读者。
(3)图书管理:
管理员可以对图书进行管理,包括查询,修改,删除和添加新的图书信息。
(4)借阅图书:
管理员可以给读者借书。
(5)归还图书:
管理员可以给读者还书。
2.1.2系统安全性要求
安全方面,系统管理员可以对用户、管理员和用户注册的基本信息进行操作,可以修改用户的一些信息,可以添加和删除用户。
用户可以更改自己的密码,其基本原则是用户只能添加、修改、查询自己权限范围内的数据。
而用户的上一级即系统管理员则可以查看用户所有的数据。
系统是在网络上运行的多用户系统,采用了数据库安全性、操作系统安全性、程序安全性三重安全性管理来达到系统要求的安全性。
2.1.3系统运行要求
支持系统运行的系统需要在Windowsxp/7/vista下,数据库管理系统需要安装MicrosoftSQLServer2005。
界面、标准页面要求格式清晰、易操作。
硬件方面要求建立维护和使用制度,在硬件选择时要充分考虑硬件的负载和应用环境要求。
软件方面则要求能对系统进行定期地维护,尽量能够预防各种故障的发生。
2.2可行性分析
可行性分析也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。
本系统的可行性分析包括以下几个方面的内容:
1)经济可行性:
经济可行性主要是对项目的经济效益进行评价,该系统的设计与开发不需要特殊硬件,只要拥有一台电脑并在电脑上安装SQLServer2005,VisualStudio2008即可,使用的软件全部是开源免费,不会产生任何技术专利的问题,同时也不会产生任何经费。
2)技术可行性:
技术上的可行性分析主要分析技术条件能否顺利完成开发工作,软、硬件能否满足开发者的需要等。
本系统采用C#语言开发,代码安全可靠,可维护性强,后台数据库采用数据库管理系统SQL,轻便且功能强大。
系统处理速度快、权限的设置准确,数据的安全性高。
三.系统概要设计
系统总体设计即概要设计。
本节主要介绍本系统各功能模块的设计,数据库结构及各数据表的设计,以及本系统的安全设计等内容。
3.1系统总体架构
根据对本系统的分析,系统分为以下八个模块:
书籍信息管理、预约图书、个人信息查询修改、读者信息管理、书籍信息管理、借阅信息管理、归还信息管理、读者注册。
系统框架图如下:
图3-1系统框架图
(1)书籍信息浏览:
读者登录成功后可浏览在馆图书。
(2)个人信息查询修改:
读者登录成功后可查询修改个人信息。
(3)预约图书:
读者登录后可预约在馆图书。
(4)读者信息管理:
管理员对读者进行管理,包括添加、删除、修改读者信息。
(5)书籍信息管理:
管理员对图书进行管理,包括添加、删除、修改图书信息。
(6)借阅信息管理:
管理员实现对图书的借阅,并管理相关图书。
(7)归还信息管理:
管理员实现对图书的归还,并管理相关图书。
(8)读者注册:
为注册的读者无法进入本系统,因此,在登录前需注册成用户。
3.2系统流程图
四.数据库设计
4.1概念结构设计
数据库的的概念结构设计就是将需求分析得到的用户需求抽象为信息结构,即概念模型。
概念模型作为概念结构设计的表达工具,为数据库提供一个说明性结构,是设计数据库逻辑结构即逻辑模型的基础。
数据库的的概念结构设计就是将需求分析得到的用户需求抽象为信息结构,即概念模型。
概念模型的种类很多,其中最著名、最实用的一种是E-R(实体-联系)模型,它将现实世界的信息结构统一用属性、实体以及他们之间的联系来描述。
下图为本数据库系统E-R模型:
图3-4全局E-R图
4.2逻辑结构设计
4.2.1数据表
数据库的逻辑设计即把得到的满足第三范式的关系转化为特定的数据库管理系统下的数据表。
针对本系统,为满足系统需要,我们设计了T_admin(管理员)表,T_book(图书)表,T_borrowcategory(图书借阅信息)表,T_preoder(图书预约)表,T_reader(用户)表,T_returncategory(图书归还信息)表,T_status(图书状态)表。
1):
T_admin管理员信息表:
管理员编号,姓名,密码,性别,年龄。
2)T_book图书信息表:
图书编号,名称,价格,出版社,作者。
3)T_borrowcategory图书借阅信息表:
借阅编号,图书编号,图书名称,借阅人编号,借阅人姓名,应还时间。
4)T_preoder图书预约表:
预约编号,图书编号,图书名称,预约人编号,预约人姓名,图书状态。
5)T_reader用户表:
用户编号,姓名,年龄,性别,密码,系部,专业。
6)T_returncategory图书归还信息表:
归还编号,图书编号,图书名称,借阅人编号,借阅人姓名,借阅时间,归还时间,是否超期。
7)T_status图书状态表:
状态编号,图书编号,图书名称,图书状态。
4.2.2关系模型
根据以上各实体图和学生信息管理的E-R图,经过转换,可以导出各个关系。
首先每个实体转化为一个关系,需要给出每个关系的关键字:
T_admin表(管理员编号、姓名、密码、性别、年龄)管理员编号为关键字。
T_book表(图书编号、名称、价格、出版社、作者)图书编号为关键字。
T_reader表(用户编号、姓名、年龄、性别、密码、系部、专业)用户编号为关键字。
有属性的联系也应转化为一个关系,需要给出每个关系的关键字:
管理1:
(用户编号、用户姓名)关键字是用户编号。
管理2:
(图书编号、图书名称)关键字是图书编号。
借还:
(借阅编号、归还编号、图书编号)关键字是借阅编号,归还编号。
4.3物理结构设计
完成数据库的逻辑设计后,接下来就是对数据库的物理设计。
本例采用MicrosoftSQLServer2005系统来设计图书管理系统的数据库。
4.3.1数据表的物理设计
建立数据库前,应先对数据进行分析,包括类型、长度等,然后开始着手建立数据库。
本系统数据库中用到的7个数据表,其具体结构如表4.1~4.7所示。
1)管理员信息表:
本表有五个字段,admin_id是主键。
列名
数据类型
长度
完整性约束
说明
admin_id
int
4
NotNull,主键
管理员编号
admin_name
varchar
50
NotNull
管理员姓名
admin_pwd
varchar
50
NotNull
管理员密码
admin_sex
varchar
50
Null
管理员性别
admin_age
int
10
Null
管理员年龄
表4-1管理员信息表
2)图书信息表:
本表有五个字段,book_id是主键。
列名
数据类型
长度
完整性约束
说明
book_id
int
4
NotNull,主键
书籍ID
book_name
varchar
50
NotNull
书籍名
book_writer
varchar
50
NotNull
作者
book_publisher
varchar
50
NotNull
出版社
book_price
int
4
NotNull
价格
book_style
varchar
50
NotNull
类型
book_time
datetime
8
NotNull
入馆时间
book_num
int
4
NotNull
书籍存量
表4-2图书信息表
3)用户信息表:
本表有七个字段,reader_id是主键。
列名
数据类型
长度
完整性约束
说明
reader_id
int
4
NotNull,主键
读者编号
reader_name
varchar
50
NotNull
读者姓名
reader_pwd
varchar
50
NotNull
读者密码
reader_sex
varchar
50
Null
读者性别
reader_age
int
10
Null
读者年龄
reader_prof
varchar
50
Null
读者专业
reader_dept
varchar
50
Null
读者系部
表4-3用户信息表
4)借阅信息表:
本表有六个字段,borrow_id是主键。
列名
数据类型
长度
完整性约束
说明
borrow_id
int
4
NotNull,主键
借阅编号
book_id
int
50
NotNull
书籍编号
book_name
varchar
50
NotNull
书籍名
reader_id
int
50
NotNull
借阅者编号
reader_name
varchar
4
NotNull
借阅者姓名
borrow_time
datetime
8
NotNull
借阅时间
admin_id
int
4
NotNull
操作员编号
表4-4借阅信息表
5)预约信息表:
本表有六个字段,preoder_id是主键。
列名
数据类型
长度
完整性控制
含义说明
Preorder_id
Int
4
NotNull主键
预约编号
Book_id
Int
4
Notnull
图书编号
Book_name
varchar
20
Notnull
图书名称
Reader_id
Int
4
Notnull
用户编号
Reader_name
Varchar
20
Notnull
用户姓名
Status
Varchar
20
Notnull
图书状态
表4-5预约信息表
6)归还信息表:
本表有8个字段,return_id是主键。
列名
数据类型
长度
完整性控制
含义说明
Returnr_id
Int
4
Notnull主键
归还编号
Book_id
Int
4
Notnull
图书编号
Book_name
varchar
20
Notnull
图书名称
Reader_id
Int
4
Notnull
用户编号
Reader_name
Varchar
20
Notnull
用户姓名
Borrow_time
Datetime
Notnull
借书时间
Return_time
Datetime
Notnull
归还时间
Ifexceed
Datetime
Notnull
是否超期
表4-6归还信息表
7)图书状态表:
本表共四个字段,status_id是主键。
列名
数据类型
长度
完整性约束
说明
status_id
int
4
NotNull,主键
编号
book_id
Int
4
NotNull
书籍编号
book_name
varchar
50
NotNull
书籍名
status
varchar
50
NotNull
书籍状态
表4-7图书状态表
4.3.2数据表实体关系图
五.系统详细设计
5.1主窗体的设计
上面的SQL语句在SQLServer2000中查询分析器执行后,将自动产生需要的所有表。
有关数据库结构的所有后台工作已经完成。
现在将通过学生管理系统中各个功能模块的实现,来编写数据库系统的客户端程序。
1.创建空白解决方案
为了在VisualStudio.NET2003中创建应用程序,应当先创建一个空白解决方案,它包括:
●通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
(.sln)。
●记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。
(.suo)。
启动这个空白解决方案后,单击文件|新建|项目菜单,在新建项目中选择VisualC#项目,在模块中选择Windows应用程序,并命名为Adminform,美化后:
图5-1Admin-form
5.2创建公用模块
在VS.NET中可以使用类库模板快速创建能够与其他项目共享的可再次使用的类和组件。
整个工程项目中的任何地方都可以调用公用类库的类和组件,这样可以极大地提高代码的效率。
在项目资源管理器中为项目添加一个类,保存为xjDataBase.cs。
下面就可以开始添加需要的代码。
以下为database中SQLHELP.cs的辅助代码:
publicclasssqlhelp
{
SqlConnectionconn=null;
SqlCommandcmd=null;
SqlDataAdapterda=null;
SqlDataReaderdr=null;
DataTabledt=newDataTable();
publicsqlhelp()
{
conn=newSqlConnection("server=lenovo-2a4b0b4c\\sqlexpress;database=D_library;trusted_connection=yes");
}
///
///executereader以表显示
///
///
///
publicDataTableExecuteReader(stringsql)
{
conn.Open();
cmd=newSqlCommand(sql,conn);
dr=cmd.ExecuteReader();
dt.Load(dr);
returndt;
}
///
///执行插入、删除、修改SQL语句
///
///
///
///
publicintExecuteNonQuery(stringsql,SqlParameter[]para)
{
conn.Open();
intcount;
cmd=newSqlCommand(sql,conn);
cmd.Parameters.AddRange(para);
count=cmd.ExecuteNonQuery();
returncount;
}
///
///用dataset执行查询
///
///
///
///
///
publicDataSetsdu(stringsql,stringtable)
{
da=newSqlDataAdapter(sql,conn);
DataSetds=newDataSet();
da.Fill(ds,table);
returnds;
}
///
///用dataset执行条件查询、插入、删除、更新操作
///
///
///
///
///
publicDataSetudu(stringsql,stringtable,SqlParameter[]para)
{
da=newSqlDataAdapter(sql,conn);
da.SelectCommand.Parameters.AddRange(para);
DataSetds=newDataSet();
da.Fill(ds,table);
returnds;
}
//两个表查询
publicDataSetselect_borrowbookid(stringbook_id)
{
try
{
SqlDataAdapterda=newSqlDataAdapter("selectT_book.book_idas编号,T_book.book_nameas书名,statusas状态fromT_book,T_statuswhereT_book.book_id=T_status.book_idandT_book.book_name=T_status.book_name",conn);
SqlParameter[]para={newSqlParameter("@id",book_id)};
da.SelectCommand.Parameters.AddRange(para);
DataSetds=newDataSet();
da.Fill(ds,"T_book");
returnds;
}
catch(SqlExceptionww)
{
throwww;
}
finally
{
conn.Close();
}
}
}
代码实现与数据库的连接,查询数据库信息代码以及对数据库中的数据进行添加、删除、更新操作。
在database中插入T_book类,代码如下:
publicclassT_book
{
sqlhelphelp=null;
DataTabledt=newDataTable();
publicT_book()
{
help=newsqlhelp();
}
//显示全部图书
publicDataTableselectallbooks()
{
stringsql="selectbook_idas书编号,book_nameas书名,book_writeras作者,book_publisheras出版社,book_priceas价格fromT_book";
dt=help.ExecuteReader(sql);
returndt;
}
//按编号查询图书
publicDataSetselect_bookid(stringbook_id)
{
stringsql="selectbook_idas书编号,book_nameas书名,book_writeras作者,book_publisheras出版社,book_priceas价格fromT_bookwherebook_id=@id";
stringtable="T_book";
SqlParameter[]para={newSqlParameter("@id",book_id)};
DataSetds=newsqlhelp().udu(sql,ta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 C# 课程设计