资源描述
设计要求:
1.进行需求分析,编写数据字典。
2.设计E-R图。
3.实现新进图书数据录入。
4.实现对全部购进图书分类查询和分类统计。
5.能够按书名、作者等分类查询现有图书数量。
6.统计借阅者个人资料和所借图书书名、书号数据等。
2程序关键功效
2.1添加功效
添加一本图书基础信息,包含书名、书号、名作者(译者)、出版社和图书介绍。
添加图书借阅基础信息,包含书号,借书证号,借书日期,应还书日期。
2.2删除功效
删除一本图书基础信息,删除读者基础信息,删除图书借阅基础信息。
2.3显示功效
显示全部图书信息,包含图书代码,图书名称,作者,出版社和介绍。
显示全部借阅信息,包含读者号,图书号,借书日期,应还书日期。
2.4查找功效
图书信息查找,能够更具图书代码,图书名称,作者,出版日期和出版社进行查找。
读者信息查找,可更具读者姓名,读者编号,年纪,性别和所在系进行查找。
借阅信息查询,可更具图书编号和读者编号进行查询。
2.5修改功效
对图书和读者信息进行修改。
3 程序运行平台
VS (C#)
SQL Server
Windows Xp (sp3)
4系统总体框架图
登 录
输入用户名和密码
Yes
N
系统管理
图书信息
借阅信息
读者信息
系统退出
系统帮助
图书入库
图书查询
借阅情况
借阅查询
信息介绍
信息查询
图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.0 Sem2《SQL Server数据库设计和实现》相关数据库设计方面内容。)
5.22数据步骤图
图
书
馆
管
理
员
P0
图书
管理
系统
读
者
读者管理信息
图书管理信息
图书借阅信息
图书借阅统计
图书信息查询
图书借阅
书目信息
数据步骤图 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总图
N
N
Q
借阅信息
M
还 期
借 期
借 还
性 别
年 龄
读者编号
所 在 系
读者姓名
读者信息
出 版 社
简 介
出版日期
作 者
图书编号
图书名称
编 号
图 书
1
图书编号
管 理
管理员
管 理
读者编号
O
1
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物理文档
/*----------创建数据库----------*/
create database libary
on primary
(
name=libary,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\libary.mdf',
size=100MB,
maxsize=200MB,
filegrowth=20MB
)
log on
(
name=libary,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\libary.ldf',
size=60MB,
maxsize=200MB,
filegrowth=20MB
)
go
/*----------创建基础表----------*/
use [libary]
go
/*创建图书信息表*/
CREATE TABLE dbo.jy (
Lno nchar(10) Primary key ,
Lname nchar(20) NULL ,
Wr nchar(10) NULL ,
Ldate smalldate NULL ,
Lprees nchar(20) NULL
Lbz nchar(20) NULL
)
GO
/*创建读者信息表*/
CREATE TABLE dbo.reader (
Rno nchar(10) Primary key ,
Rname nchar(10) NOT NULL ,
Rsex nchar(1) NOT NULL ,
Rdep nchar(20) NOT NULL
Rage int NULL
)
GO
/*创建借阅信息表*/
CREATE TABLE dbo.jy (
Rno nchar(10) Primary key ,
Lno nchar(10) Primary key ,
data smalldate NULL ,
Ldata smalldate NULL
)
GO
/*创建用户表*/
CREATE TABLE dbo.manage (
Pwd nchar(10) Primary key ,
Id nchar(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-1 dbo.jy——借阅记录表
编号
字段名称
数据结构
说明
1
Rno
nchar(10)
读者编号
2
Lno
nchar(10)
图书编号
3
Data
smalldate
结束日期
4
Ldata
smalldate
应还书日期
4.2图书基础信息表
表1-2为图书基础信息表。图书基础信息表统计了图书馆藏书基础资料,可供查询。该表关键包含了图书编号、图书名称、作者、出版社、出版日期、介绍。
表1-2 dbo.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-3 dbo.manage——管理员信息表
字段名称
数据类型
长度
具体说明
Pwd
nchar
10
密码
Id
nchar
10
用户名
4.4读者信息表
表1-4为读者信息表。读者信息表统计了全部读者基础资料,包含读者编号、读者姓名、性别、所在系,年纪。
表1-4 dbo.reader——读者信息表
编号
字段名称
数据类型
说明
1
Rno
nchar(10)
读者编号
2
Rname
nchar(10)
读者姓名
3
Rsex
char(1)
性别
4
Rdep
nchar(20)
所在系
5
Rage
int
年纪
5.4.6、系统功效模块
图书借阅管理系统
图书借阅管理
图书基础信息管理
读者信息管理
系统管理
借阅查询
借阅情况
图4.1 图书借阅管理系统功效模块示意图
图书入库
图书查询
读者信息查询
读者信息
系统帮助
系统退出
图4.2 用户管理功效集合模块关系图
系统用户信息管理
登陆系统
对图书和读者信息进行管理
暂无功效实现
Admin用户
一般用户
5.4.7安全保密设计
数据库只被少数授权用户访问,必需提供用户名和正确密码。
数据库文件加密,以预防直接打开数据库进行数据修改,只有少数人有权直接打开数据库文件进行修改信息和统计。
数据库安全策略,遵从SQL Server 安全策略事项。
6 模块分析
6.1 系统管理模块
系统帮助:让用户知道使用该系统操作方法。
系统退出:安全退出系统,以方便再次进入,不然再次进入系统肯能会犯错,
图6.1
系统管理
系统帮助
系统退出
图6.1 系统管理
代码:namespace 登陆
{
partial class Help
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(154, 29);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(123, 19);
this.label1.TabIndex = 0;
this.label1.Text = "图书管理系统";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(34, 78);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(368, 32);
this.label2.TabIndex = 1;
this.label2.Text = " 打开SQL Server企业管理器,开启SQL相关服务,\r\n连接数据库。\r\n";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(34, 140);
this.label3.Name = "label3";
this.label3.Size = new System.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 = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.Location = new System.Drawing.Point(34, 233);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(272, 16);
this.label4.TabIndex = 3;
this.label4.Text = "如需帮助请登";
this.label4.Click += new System.EventHandler(this.label4_Click);
//
// Help
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Olive;
this.ClientSize = new System.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
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
}
}
6.2图书信息模块
图书信息模块包含图书入库和图书查询两个子模块
图书入库:添加新图书并保留信息。
图书查询:可按图书代码,图书名称,作者,出版日期,出版社五项进行查询,可删除部分废弃图书信息,并将修改后数据入库保留,图6.2。
图书信息
图书入库
图书查询
添加
重置
查询
删除
重置
退出
图6.2 图书信息
代码:namespace 登陆
{
class LibraryManage
{
private SqlConnection sqlConnection1 = null;
private SqlCommand sqlCommand1 = null;
private string strSql = null;
public LibraryManage()
{
this.sqlConnection1 = new SqlConnection(dbconnection.connection);
this.sqlCommand1 = new SqlCommand();
this.sqlCommand1.CommandType = CommandType.Text;
this.sqlCommand1.Connection = this.sqlConnection1;
// TODO: 在此处添加结构函数逻辑
//
}
public void Library_add(string Lno, string Lname, string Wr, string Lpress, string Lbz)
{
DateTime Ldate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
this.strSql = "insert into Library (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_add(Lno);
}
catch (System.Exception E)
{
Console.WriteLine(E.ToString());
}
finally
{
this.sqlConnection1.Close();
}
}
public void ts_del(string Lno)
{
this.strSql = "delete from Library where Lno= " + "'" + Lno + "'";
this.sqlCommand1.CommandText = this.strSql;
try
{
this.sqlConnection1.Open();
this.sqlCommand1.ExecuteNonQuery();
}
catch (System.Exception E)
{
Console.WriteLine(E.ToString());
}
finally
{
this.sqlConnection1.Close();
}
}
}
}
6.3 借阅信息模块
图书信息模块包含借阅情况和借阅查询两个子模块。
借阅情况:添加新借阅信息,将读者号,图书号,借书日期和应还书日期保留。
借阅查询:可更具读者号和图书编号进行查询,还书时在此模块中删除该读者借阅信息,并将修改后信息保留,图6.3。
借阅信息
添加
重置
查询
重置
全部
删除
退出
借阅情况
借阅查询
图6.3 图书信息
代码:namespace 登陆
{
class jieyue
{
private SqlConnection sqlConnection1 = null;
private SqlCommand sqlCommand1 = null;
private string strSql = null;
public jieyue()
{
this.sqlConnection1 = new SqlConnection(dbconnection.connection);
this.sqlCommand1 = new SqlCommand();
this.sqlCommand1.CommandType = CommandType.Text;
this.sqlCommand1.Connection = this.sqlConnection1;
// TODO: 在此处添加结构函数逻辑
//
}
public void Jieyue_add(string Rno, string Lno)
{
DateTime Date = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
DateTime Redate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
this.strSql = "insert into jy (Rno,Lno,Date,Redate) " +
"values('" + Rno + "','" + Lno + "','" + Date + "','" + Redate + "')";
this.sqlCommand1.CommandText = this.strSql;
try
{
this.sqlConnection1.Open();
this.sqlCommand1.ExecuteNonQuery();
//Lno_add(Lno);
}
catch (System.Exception E)
{
Console.WriteLine(E.ToString());
}
finally
{
this.sqlConnection1.Close();
}
}
public void jieyue_del(string Lno)
{
this.strSql = "delete from jy where Lno=" + "'" + Lno + "'";
//this.strSql = "delete from jy where Rno= " + "'" + Rno + "'";
this.sqlCommand1.CommandText=this.strSql;
try
{
this.sqlConnection1.Open();
this.sqlCommand1.ExecuteNonQuery();
}
catch(System.Exception E)
{
Console.WriteLine(E.ToString());
}
finally
{
this.sqlConnection1.Close();
}
展开阅读全文