C#课程设计图书管理系统含需求.docx
《C#课程设计图书管理系统含需求.docx》由会员分享,可在线阅读,更多相关《C#课程设计图书管理系统含需求.docx(34页珍藏版)》请在冰豆网上搜索。
C#课程设计图书管理系统含需求
设计要求:
1.进行需求分析,编写数据字典。
2.设计E-R图。
3.实现新进图书的数据录入。
4.实现对所有购进图书的分类查询和分类统计。
5.能够按书名、作者等分类查询现有图书的数量。
6.记录借阅者的个人资料和所借图书的书名、书号数据等。
2程序的主要功能
2.1添加功能
添加一本图书的基本信息,包括书名、书号、名作者(译者)、出版社和图书简介。
添加图书借阅的基本信息,包括书号,借书证号,借书日期,应还书日期。
2.2删除功能
删除一本图书的基本信息,删除读者的基本信息,删除图书借阅基本信息。
2.3显示功能
显示所有图书信息,包括图书代码,图书名称,作者,出版社和简介。
显示所有借阅信息,包括读者号,图书号,借书日期,应还书日期。
2.4查找功能
图书信息查找,可以更具图书代码,图书名称,作者,出版日期和出版社进行查找。
读者信息查找,可更具读者姓名,读者编号,年龄,性别和所在系进行查找。
借阅信息查询,可更具图书编号和读者编号进行查询。
2.5修改功能
对图书和读者的信息进行修改。
3程序运行平台
VS2008(C#)
SQLServer2005
WindowsXp(sp3)
4系统总体框架图
图4.1系统总体框架图
5数据库设计说明
5.1、需求分析
1.1信息需求
在数据库Library中需要设计如下所示的数据字段和数据表:
图书信息表---dbo.libary,包括:
图书编号、图书名称、作者、出版日期、出版社和简介。
借阅登记表---dbo.jy,包括:
读者编号、图书编号、借书日期、应还书日期。
系统用户表---dbo.manage,包括:
密码、用户名。
读者表----dbo.reader,包括:
读者编号、读者姓名、性别、所在系、年龄。
1.2处理需求
此数据库系统应用于图书馆的图书基本信息管理、读者信息管理、图书借阅管理等主要功能。
具体功能如下:
1.2.1.基本信息管理
一、图书信息
图书信息管理部分:
主要包括图书信息的添加、修改、删除和查询。
此功能为图书的分类管理提供依据。
图书信息管理部分:
主要包括图书基本信息的添加、修改、删除和查询。
退出系统。
二、读者信息
读者信息管理部分:
主要包括读者信息的添加、修改、删除和查询。
此功能为读者信息管理提供依据。
读者管理部分:
主要包括读者的基本信息的添加、修改、删除和查询。
退出系统。
三、借阅信息
借阅信息管理部分:
主要包括借阅信息的添加、查询。
此功能为借阅信息管理提供依据。
读者管理部分:
主要包括读者的基本信息的添加、和查询。
退出系统。
1.2.2图书借阅管理
图书借阅管理部分:
主要包括图书借阅、和借阅查询。
1.2.3系统用户管理
用户管理部分:
只有Admin系统用户有权限进入图书管理系统并对相应信息进行管理。
5.2、数据库的概念设计
5.2.1数据库E-R模型设计
实体列表
实体
描述
读者
所有借阅者,查阅者,由读者编号标识
书籍
图书馆所有图书,由图书编号标识
借阅
图书编号、读者编号、借阅日期、应归还日期等属性,由方式标识
系统管理员
系统维护人员
(说明:
1、本系统牵涉到的内容比较少,在复杂的数据库应用系统中,可能会存在很多需要处理的对象,并且这些对象关系复杂。
2、有关数据库设计方面的内容,请参考ACCP3.0Sem2《SQLServer数据库设计和实现》有关数据库设计方面的内容。
)
5.22数据流程图
数据流程图1-1
5.2.3数据库E-R图
通过上面对系统的总体分析,可以得到大概的实体—关系模型(E-R模型),如下:
2.1.图书基本信息E-R图
图书基本信息:
{图书编号、图书名称、作者、出版日期、出版社和简介。
}
2.2借阅信息类型E-R图
借阅信息类型:
{读者编号、图书编号、借书日期、应还书日期}
2.3用户信息E-R图
用户信息:
{用户名,密码}
2.4读者信息E-R图
读者信息:
{读者编号、读者姓名、性别、所在系、年龄}
2.5图书管理系统系E-R总图
5.3、数据库物理设计
3.1创建数据库
(1)在服务器资源管理器中的任一节点右击。
(2)执行快捷菜单中的“新建数据库”命令,并在打开的“创建数据库”对话框中输入数据库名Library。
(3)单击“确定”按钮,则新建的数据库就会出现在服务器上。
3.2创建数据表
创建数据库后,为Library数据库添加数据表,步骤如下。
(1)在服务器资源管理器中右击数据库Library下的“表”文件夹。
在弹出的快捷菜单中执行“新建表”命令,出现表设计器。
(2)添加表的字段和其他详细资料。
各表数据结构如下表所示。
表名
列名
数据类型
长度
主键
是否可以为空
图书信息
图书编号
nrchar
10
Yes
否
图书名称
nrchar
20
是
作者
nchar
10
是
出版日期
smalldatetime
是
出版社
nchar
20
是
简介
nchar
10
是
读者信息
读者编号
nchar
10
Yes
否
读者姓名
nchar
10
否
性别
char
1
否
所在系别
nchar
20
否
年龄
int
是
借阅信息
图书编号
char
10
Yes
否
读者编号
char
10
Yes
否
借阅日期
smalldatetime
是
应归日期
smalldatetime
是
管理者信息
用户名称
nchar
10
是
密码
nchar
10
Yes
否
表2.1图书管理系统各表数据结构
3.3物理文档
/*----------创建数据库----------*/
createdatabaselibary
onprimary
(
name=libary,
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\libary.mdf',
size=100MB,
maxsize=200MB,
filegrowth=20MB
)
logon
(
name=libary,
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\libary.ldf',
size=60MB,
maxsize=200MB,
filegrowth=20MB
)
go
/*----------创建基本表----------*/
use[libary]
go
/*创建图书信息表*/
CREATETABLEdbo.jy(
Lnonchar(10)Primarykey,
Lnamenchar(20)NULL,
Wrnchar(10)NULL,
LdatesmalldateNULL,
Lpreesnchar(20)NULL
Lbznchar(20)NULL
)
GO
/*创建读者信息表*/
CREATETABLEdbo.reader(
Rnonchar(10)Primarykey,
Rnamenchar(10)NOTNULL,
Rsexnchar
(1)NOTNULL,
Rdepnchar(20)NOTNULL
RageintNULL
)
GO
/*创建借阅信息表*/
CREATETABLEdbo.jy(
Rnonchar(10)Primarykey,
Lnonchar(10)Primarykey,
datasmalldateNULL,
LdatasmalldateNULL
)
GO
/*创建用户表*/
CREATETABLEdbo.manage(
Pwdnchar(10)Primarykey,
Idnchar(10)NULL,
)
GO
5.4、数据库的逻辑设计
5.4.1系统关系模型
该设计以概念结构设计中的E-R图为主要依据,设计出相关的整体逻辑结构。
根据总E-R图了解有四个实体,四个关系模式如下:
图书信息表(图书编号,图书名称,作者,出版日期,出版社,简介)
读者信息表(读者编号,姓名,性别,系别,年龄)
用户表(密码,账号)
借阅信息表(图书编号,读者编号,结束日期,应还书日期)
5.4.2逻辑结构设计
主键及关系说明:
表dbo.manage中Pwd为主键
表dbo.libary中Lno为主键
表dbo.reader中Rno为主键
表dbo.jy中Lno为主键,Lno受表dbo.libary中Lno约束,Rno受表dbo.reader中Rno约束
5.4.3表设计:
数据库对应的表设计如下图(字段采用英文表示):
5.4.4、视图对象设计
5.4.4系统数据库表结构
数据库表索引
编号
表名
中文名
1
dbo.jy
借阅信息表
2
dbo.libary
图书信息表
3
dbo.manage
系统用户表
4
dbo.reader
读者信息表
5.4.5数据字典
数据库由以下四个数据表组成:
第一个是借阅信息表,命名为dbo.jy
;第二个是图书基本信息表,命名为dbo.libary;第三个是系统用户表,命名为dbo.manage;第四个是读者表,命名为dbo.reader,下面设计它们的具体字段。
4.1借阅登记表
表1-1为借阅登记表。
图书类型表记录了图书借阅记录,用于用于管理员进行管理。
该表主要包括了类别号和类别名称等数据。
表1-1dbo.jy——借阅登记表
编号
字段名称
数据结构
说明
1
Rno
nchar(10)
读者编号
2
Lno
nchar(10)
图书编号
3
Data
smalldate
结束日期
4
Ldata
smalldate
应还书日期
4.2图书基本信息表
表1-2为图书基本信息表。
图书基本信息表记录了图书馆藏书的基本资料,可供查询。
该表主要包括了图书编号、图书名称、作者、出版社、出版日期、简介。
表1-2dbo.libary——图书信息表
编号
字段名称
数据类型
说明
1
Lno
nchar(10)
图书编号
2
Lname
nchar(20)
图书名称
3
Wr
nchar(10)
作者
4
Ldate
smalldate
出版日期
5
Lprees
nchar(20)
出版社
6
Lbz
nchar(10)
简介
4.3用户信息表
表1-7为用户信息表。
用户信息表记录了系统用户的用户名,该表包括用户名和密码,保存用户信息。
表1-3dbo.manage——管理员信息表
字段名称
数据类型
长度
具体说明
Pwd
nchar
10
密码
Id
nchar
10
用户名
4.4读者信息表
表1-4为读者信息表。
读者信息表记录了所有读者的基本资料,包括读者编号、读者姓名、性别、所在系,年龄。
表1-4dbo.reader——读者信息表
编号
字段名称
数据类型
说明
1
Rno
nchar(10)
读者编号
2
Rname
nchar(10)
读者姓名
3
Rsex
char
(1)
性别
4
Rdep
nchar(20)
所在系
5
Rage
int
年龄
5.4.6、系统功能模块
5.4.7安全保密设计
数据库只被少数授权用户访问,必须提供用户名和正确的密码。
数据库文件加密,以防止直接打开数据库进行数据修改,只有少数人有权直接打开数据库文件进行修改信息和记录。
数据库的安全策略,遵从SQLServer2000的安全策略事项。
6模块分析
6.1系统管理模块
系统帮助:
让用户知道使用该系统的操作方法。
系统退出:
安全的退出系统,以方便再次进入,否则再次进入系统肯能会出错,
如图6.1
图6.1系统管理
代码:
namespace登陆
{
partialclassHelp
{
///
///Requireddesignervariable.
///
privateSystem.ComponentModel.IContainercomponents=null;
///
///Cleanupanyresourcesbeingused.
///
///trueifmanagedresourcesshouldbedisposed;otherwise,false.
protectedoverridevoidDispose(booldisposing)
{
if(disposing&&(components!
=null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#regionWindowsFormDesignergeneratedcode
///
///RequiredmethodforDesignersupport-donotmodify
///thecontentsofthismethodwiththecodeeditor.
///
privatevoidInitializeComponent()
{
this.label1=newSystem.Windows.Forms.Label();
this.label2=newSystem.Windows.Forms.Label();
this.label3=newSystem.Windows.Forms.Label();
this.label4=newSystem.Windows.Forms.Label();
this.SuspendLayout();
//
//label1
//
this.label1.AutoSize=true;
this.label1.Font=newSystem.Drawing.Font("宋体",14.25F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));
this.label1.Location=newSystem.Drawing.Point(154,29);
this.label1.Name="label1";
this.label1.Size=newSystem.Drawing.Size(123,19);
this.label1.TabIndex=0;
this.label1.Text="图书管理系统";
//
//label2
//
this.label2.AutoSize=true;
this.label2.Font=newSystem.Drawing.Font("宋体",12F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));
this.label2.Location=newSystem.Drawing.Point(34,78);
this.label2.Name="label2";
this.label2.Size=newSystem.Drawing.Size(368,32);
this.label2.TabIndex=1;
this.label2.Text="打开SQLServer企业管理器,启动SQL相关服务,\r\n连接数据库。
\r\n";
//
//label3
//
this.label3.AutoSize=true;
this.label3.Font=newSystem.Drawing.Font("宋体",12F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));
this.label3.Location=newSystem.Drawing.Point(34,140);
this.label3.Name="label3";
this.label3.Size=newSystem.Drawing.Size(400,64);
this.label3.TabIndex=2;
this.label3.Text="鼠标右键点击【数据库】->【附加(A)...】,然后\r\n单击【...】按钮,选择本程序所在文件夹下的中的\r\nDataBase文件夹下的Library.mdf文"+
"件,其他采用默认设\r\n置,然后单击【确定】按钮";
//
//label4
//
this.label4.AutoSize=true;
this.label4.Font=newSystem.Drawing.Font("宋体",12F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));
this.label4.Location=newSystem.Drawing.Point(34,233);
this.label4.Name="label4";
this.label4.Size=newSystem.Drawing.Size(272,16);
this.label4.TabIndex=3;
this.label4.Text="如需帮助请登";
this.label4.Click+=newSystem.EventHandler(this.label4_Click);
//
//Help
//
this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,12F);
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;
this.BackColor=System.Drawing.Color.Olive;
this.ClientSize=newSystem.Drawing.Size(472,349);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Name="Help";
this.Text="Help";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
privateSystem.Windows.Forms.Labellabel1;
privateSystem.Windows.Forms.Labellabel2;
privateSystem.Windows.Forms.Labellabel3;
privateSystem.Windows.Forms.Labellabel4;
}
}
6.2图书信息模块
图书信息模块包含图书入库和图书查询两个子模块
图书入库:
添加新的图书并保存信息。
图书查询:
可按图书代码,图书名称,作者,出版日期,出版社五项进行查询,可删除一些废弃图书的信息,并将修改后的数据入库保存,如图6.2。
图6.2图书信息
代码:
namespace登陆
{
classLibraryManage
{
privateSqlConnectionsqlConnection1=null;
privateSqlCommandsqlCommand1=null;
privatestringstrSql=null;
publicLibraryManage()
{
this.sqlConnection1=newSqlConnection(dbconnection.connection);
this.sqlCommand1=newSqlCommand();
this.sqlCommand1.CommandType=CommandType.Text;
this.sqlCommand1.Connection=this.sqlConnection1;
//TODO:
在此处添加构造函数逻辑
//
}
publicvoidLibrary_add(stringLno,stringLname,stringWr,stringLpress,stringLbz)
{
DateTimeLdate=Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-ddHH:
mm:
ss"));
this.strSql="insertintoLibrary(Lno,Lname,Wr,Ldate,Lpress,Lbz)"+
"values('"+Lno+"','"+Lname+"','"+Wr+"','"+Ldate+"','"+Lpress+"','"+Lbz+"')";
this.sqlCommand1.CommandText=this.strSql;
try
{
this.sqlConnection1.Open();
this.sqlCommand1.ExecuteNonQuery();
//Lno_ad