1、设计要求:1.进行需求分析,编写数据字典。2.设计E-R图。3.实现新进图书数据录入。4.实现对全部购进图书分类查询和分类统计。5.能够按书名、作者等分类查询现有图书数量。6.统计借阅者个人资料和所借图书书名、书号数据等。2程序关键功效2.1添加功效添加一本图书基础信息,包含书名、书号、名作者(译者)、出版社和图书介绍。添加图书借阅基础信息,包含书号,借书证号,借书日期,应还书日期。2.2删除功效删除一本图书基础信息,删除读者基础信息,删除图书借阅基础信息。2.3显示功效显示全部图书信息,包含图书代码,图书名称,作者,出版社和介绍。显示全部借阅信息,包含读者号,图书号,借书日期,应还书日期。2
2、.4查找功效图书信息查找,能够更具图书代码,图书名称,作者,出版日期和出版社进行查找。读者信息查找,可更具读者姓名,读者编号,年纪,性别和所在系进行查找。借阅信息查询,可更具图书编号和读者编号进行查询。2.5修改功效对图书和读者信息进行修改。3 程序运行平台VS (C#) SQL Server Windows Xp (sp3)4系统总体框架图登 录输入用户名和密码YesN系统管理图书信息借阅信息读者信息系统退出系统帮助图书入库图书查询借阅情况借阅查询信息介绍信息查询图4.1 系统总体框架图5 数据库设计说明5.1、需求分析1.1信息需求在数据库Library中需要设计以下所表示数据字段和数据表
3、:图书信息表-dbo.libary,包含:图书编号、图书名称、作者、出版日期、出版社和介绍。借阅记录表-dbo.jy,包含:读者编号、图书编号、借书日期、应还书日期。 系统用户表-dbo.manage,包含:密码、用户名。 读者表-dbo.reader,包含:读者编号、读者姓名、性别、所在系、年纪。 1.2处理需求 此数据库系统应用于图书馆图书基础信息管理、读者信息管理、图书借阅管理等关键功效。具体功效以下:1.2.1.基础信息管理一、图书信息图书信息管理部分:关键包含图书信息添加、修改、删除和查询。此功效为图书分类管理提供依据。图书信息管理部分:关键包含图书基础信息添加、修改、删除和查询。退
4、出系统。二、读者信息读者信息管理部分:关键包含读者信息添加、修改、删除和查询。此功效为读者信息管理提供依据。读者管理部分:关键包含读者基础信息添加、修改、删除和查询。退出系统。三、借阅信息借阅信息管理部分:关键包含借阅信息添加、查询。此功效为借阅信息管理提供依据。读者管理部分:关键包含读者基础信息添加、和查询。退出系统。1.2.2图书借阅管理图书借阅管理部分:关键包含图书借阅、和借阅查询。1.2.3系统用户管理用户管理部分:只有Admin系统用户有权限进入图书管理系统并对对应信息进行管理。5.2、数据库概念设计5.2.1数据库E-R模型设计 实体列表实 体描 述读 者全部借阅者,查阅者,由读者
5、编号标识书 籍图书馆全部图书,由图书编号标识借 阅图书编号、读者编号、借阅日期、应归还日期等属性,由方法标识系统管理员系统维护人员(说明:1、本系统牵涉到内容比较少,在复杂数据库应用系统中,可能会存在很多需要处理对象,而且这些对象关系复杂。2、相关数据库设计方面内容,请参考ACCP3.0 Sem2SQL Server数据库设计和实现相关数据库设计方面内容。)5.22数据步骤图 图书馆管理员P0图书管理系统读者读者管理信息图书管理信息图书借阅信息图书借阅统计图书信息查询图书借阅书目信息 数据步骤图 115.2.3数据库E-R图经过上面对系统总体分析,能够得到大约实体关系模型(E-R模型),以下:
6、2.1 图书基础信息E-R图图书基础信息:图书编号、图书名称、作者、出版日期、出版社和介绍。图 书编 号图书名称图书编号作 者出版日期简 介出 版 社2.2借阅信息类型E-R图借阅信息类型:读者编号、图书编号、借书日期、应还书日期借阅信息图书编号应还书日期借书日期读者编号2.3用户信息E-R图用户信息:用户名,密码用 户 名用户密 码2.4读者信息E-R图读者信息:读者编号、读者姓名、性别、所在系、年纪读者信息读者编号性 别年 龄所在系读者姓名2.5图书管理系统系E-R总图NNQ借阅信息M还 期借 期借 还性 别年 龄 读者编号所 在 系读者姓名读者信息出 版 社简 介出版日期作 者图书编号图
7、书名称编 号图 书1图书编号管 理管理员管 理读者编号O15.3、数据库物理设计3.1创建数据库(1)在服务器资源管理器中任一节点右击。(2)实施快捷菜单中“新建数据库”命令,并在打开“创建数据库”对话框中输入数据库名Library。(3)单击“确定”按钮,则新建数据库就会出现在服务器上。3.2创建数据表创建数据库后,为Library数据库添加数据表,步骤以下。(1)在服务器资源管理器中右击数据库Library下“表”文件夹。在弹出快捷菜单中实施“新建表”命令,出现表设计器。(2)添加表字段和其它具体资料。各表数据结构以下表所表示。表 名列 名数据类型长 度主 键是否能够为空图书信息图书编号n
8、rchar10Yes否图书名称nrchar20是作者nchar10是出版日期smalldatetime是出版社nchar20是介绍nchar10是读者信息读者编号nchar10Yes否读者姓名nchar10否性别char1否所在系别nchar20否年纪int是借阅信息图书编号char10Yes否读者编号char10Yes否借阅日期smalldatetime是应归日期smalldatetime是管理者信息用户名称nchar10是密码nchar10Yes否表2.1 图书管理系统各表数据结构3.3物理文档/*-创建数据库-*/create database libaryon primary(name
9、=libary,filename=C:Program FilesMicrosoft SQL ServerMSSQLDatalibary.mdf,size=100MB,maxsize=200MB,filegrowth=20MB)log on(name=libary,filename=C:Program FilesMicrosoft SQL ServerMSSQLDatalibary.ldf,size=60MB,maxsize=200MB,filegrowth=20MB)go/*-创建基础表-*/use libarygo/*创建图书信息表*/CREATE TABLE dbo.jy (Lno nch
10、ar(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 TA
11、BLE 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 ,) GO5.4、数据库逻辑设计5.4.1系统关系模型该设计以概念结构设计中E-R图为关键依据,设计出相关整体逻辑结构。依据总E-R图了解有四个实体,四个关系模式以下:图书信息表(图书编号,图书名称,作者,出版日期,出版
12、社,介绍)读者信息表(读者编号,姓名,性别,系别,年纪)用户表(密码,账号)借阅信息表(图书编号,读者编号,结束日期,应还书日期)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系统数据库表结构 数据库表索引编号表名汉字名1dbo.jy借阅信息表2dbo.libary图书信息表3dbo
13、.manage系统用户表4dbo.reader读者信息表5.4.5数据字典数据库由以下四个数据表组成:第一个是借阅信息表,命名为dbo.jy;第二个是图书基础信息表,命名为dbo.libary;第三个是系统用户表,命名为dbo.manage;第四个是读者表,命名为dbo.reader,下面设计它们具体字段。 4.1 借阅记录表表1-1为借阅记录表。图书类型表统计了图书借阅统计,用于用于管理员进行管理。该表关键包含了类别号和类别名称等数据。表1-1 dbo.jy借阅记录表编号字段名称数据结构说明1Rnonchar(10)读者编号2Lnonchar(10)图书编号3Datasmalldate结束日
14、期4Ldatasmalldate应还书日期4.2图书基础信息表表1-2为图书基础信息表。图书基础信息表统计了图书馆藏书基础资料,可供查询。该表关键包含了图书编号、图书名称、作者、出版社、出版日期、介绍。表1-2 dbo.libary图书信息表编号字段名称数据类型说明1Lnonchar(10)图书编号2Lnamenchar(20)图书名称3Wrnchar(10)作者4Ldatesmalldate出版日期5Lpreesnchar(20)出版社6Lbznchar(10)介绍4.3用户信息表表1-7为用户信息表。用户信息表统计了系统用户用户名,该表包含用户名和密码,保留用户信息。表1-3 dbo.ma
15、nage管理员信息表字段名称数据类型长度具体说明Pwdnchar10密码Idnchar10用户名4.4读者信息表表1-4为读者信息表。读者信息表统计了全部读者基础资料,包含读者编号、读者姓名、性别、所在系,年纪。表1-4 dbo.reader读者信息表编号字段名称数据类型说明1Rnonchar(10)读者编号2Rnamenchar(10)读者姓名3Rsexchar(1)性别4Rdepnchar(20)所在系5Rageint年纪5.4.6、系统功效模块图书借阅管理系统图书借阅管理图书基础信息管理读者信息管理系统管理借阅查询借阅情况图4.1 图书借阅管理系统功效模块示意图图书入库图书查询读者信息查
16、询读者信息系统帮助系统退出图4.2 用户管理功效集合模块关系图系统用户信息管理登陆系统对图书和读者信息进行管理暂无功效实现Admin用户一般用户5.4.7安全保密设计数据库只被少数授权用户访问,必需提供用户名和正确密码。数据库文件加密,以预防直接打开数据库进行数据修改,只有少数人有权直接打开数据库文件进行修改信息和统计。数据库安全策略,遵从SQL Server 安全策略事项。6 模块分析6.1 系统管理模块系统帮助:让用户知道使用该系统操作方法。系统退出:安全退出系统,以方便再次进入,不然再次进入系统肯能会犯错,图6.1系统管理系统帮助系统退出 图6.1 系统管理代码:namespace 登陆
17、 partial class Help / / Required designer variable. / private System.ComponentModel.IContainer components = null; / / Clean up any resources being used. / / true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) if (disposing & (components !=
18、null) components.Dispose(); base.Dispose(disposing); #region Windows Form Designer generated code / / Required method for Designer support - do not modify / the contents of this method with the code editor. / private void InitializeComponent() this.label1 = new System.Windows.Forms.Label(); this.lab
19、el2 = 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.Draw
20、ing.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.
21、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企业
22、管理器,开启SQL相关服务,rn连接数据库。rn; / / 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.S
23、ize = new System.Drawing.Size(400, 64); this.label3.TabIndex = 2; this.label3.Text = 鼠标右键点击【数据库】【附加(A).】,然后rn单击【.】按钮,选择本程序所在文件夹下中rnDataBase文件夹下Library.mdf文 + 件,其它采取默认设rn置,然后单击【确定】按钮; / / label4 / this.label4.AutoSize = true; this.label4.Font = new System.Drawing.Font(宋体, 12F, System.Drawing.FontStyl
24、e.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.
25、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(th
26、is.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;
27、private System.Windows.Forms.Label label4; 6.2图书信息模块图书信息模块包含图书入库和图书查询两个子模块图书入库:添加新图书并保留信息。图书查询:可按图书代码,图书名称,作者,出版日期,出版社五项进行查询,可删除部分废弃图书信息,并将修改后数据入库保留,图6.2。图书信息图书入库图书查询添加重置查询删除重置退出 图6.2 图书信息代码:namespace 登陆 class LibraryManage private SqlConnection sqlConnection1 = null; private SqlCommand sqlCommand1
28、= 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 Li
29、brary_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 + ); thi
30、s.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= + +
31、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 借阅信息模块图书信息模块包含借阅情况和借阅查询两个子模块。借阅情况:添加新借阅信息,将读者号,图书号,借书日期和应还书日期保留。借阅查询:可更具读者号和图书编号
32、进行查询,还书时在此模块中删除该读者借阅信息,并将修改后信息保留,图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); t
33、his.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
34、= 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); ca
35、tch (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;trythis.sqlConnection1.Open();this.sqlCommand1.ExecuteNonQuery();catch(System.Exception E)Console.WriteLine(E.ToString();finallythis.sqlConnection1.Close();