《C#课程设计图书管理系统【含需求】.doc》由会员分享,可在线阅读,更多相关《C#课程设计图书管理系统【含需求】.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、设计要求:1.进行需求分析,编写数据字典。2.设计E-R图。3.实现新进图书的数据录入。4.实现对所有购进图书的分类查询和分类统计。5.能够按书名、作者等分类查询现有图书的数量。6.记录借阅者的个人资料和所借图书的书名、书号数据等。2程序的主要功能2.1添加功能添加一本图书的基本信息,包括书名、书号、名作者(译者)、出版社和图书简介。添加图书借阅的基本信息,包括书号,借书证号,借书日期,应还书日期。2.2删除功能删除一本图书的基本信息,删除读者的基本信息,删除图书借阅基本信息。2.3显示功能显示所有图书信息,包括图书代码,图书名称,作者,出版社和简介。显示所有借阅信息,包括读者号,图书号,借书
2、日期,应还书日期。2.4查找功能图书信息查找,可以更具图书代码,图书名称,作者,出版日期和出版社进行查找。读者信息查找,可更具读者姓名,读者编号,年龄,性别和所在系进行查找。借阅信息查询,可更具图书编号和读者编号进行查询。2.5修改功能对图书和读者的信息进行修改。3 程序运行平台VS 2008(C#) SQL Server 2005Windows Xp (sp3)4系统总体框架图登 录输入用户名和密码YesN系统管理图书信息借阅信息读者信息系统退出系统帮助图书入库图书查询借阅情况借阅查询信息简介信息查询图4.1 系统总体框架图5 数据库设计说明5.1、需求分析1.1信息需求在数据库Librar
3、y中需要设计如下所示的数据字段和数据表:图书信息表-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图
6、通过上面对系统的总体分析,可以得到大概的实体关系模型(E-R模型),如下: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)添加表的字段和其他详细资料。
8、各表数据结构如下表所示。表 名列 名数据类型长 度主 键是否可以为空图书信息图书编号nrchar10Yes否图书名称nrchar20是作者nchar10是出版日期smalldatetime是出版社nchar20是简介nchar10是读者信息读者编号nchar10Yes否读者姓名nchar10否性别char1否所在系别nchar20否年龄int是借阅信息图书编号char10Yes否读者编号char10Yes否借阅日期smalldatetime是应归日期smalldatetime是管理者信息用户名称nchar10是密码nchar10Yes否表2.1 图书管理系统各表数据结构3.3物理文档/*-创建
9、数据库-*/create database libaryon primaryname=libary,C:Program FilesMicrosoft SQL ServerMSSQLDatalibary.mdf,size=100MB,maxsize=200MB,log onname=libary,C:Program FilesMicrosoft SQL ServerMSSQLDatalibary.ldf,size=60MB,maxsize=200MB,go/*-创建基本表-*/use libarygo/*创建图书信息表*/CREATE TABLE dbo.jy (Lno nchar(10) Pr
10、imary key ,Lname nchar(20) NULL ,Wr nchar(10) NULL ,Ldate smalldate NULL ,Lprees nchar(20) NULL Lbz nchar(20) NULLGO/*创建读者信息表*/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 NULLGO/*创建借阅信息表*/CREATE TABLE dbo.jy (
11、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.manage系统用户表
13、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结束日期4Ldatasmal
14、ldate应还书日期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.manage管理员信息
15、表字段名称数据类型长度具体说明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 2000的安全策略事项。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.
19、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.Drawi
20、ng.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.Drawi
21、ng.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.Size = new
23、 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.FontStyle.Regular,
24、 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_Cli
25、ck); / 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); th
26、is.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
27、.Windows.Forms.Label label4;6.2图书信息模块图书信息模块包含图书入库和图书查询两个子模块图书入库:添加新的图书并保存信息。图书查询:可按图书代码,图书名称,作者,出版日期,出版社五项进行查询,可删除一些废弃图书的信息,并将修改后的数据入库保存,如图6.2。图书信息图书入库图书查询添加重置查询删除重置退出 图6.2 图书信息代码:namespace 登陆 class LibraryManage private SqlConnection sqlConnection1 = null; private SqlCommand sqlCommand1 = null; pri
28、vate 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(str
29、ing 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
30、.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.
31、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); this.sqlCom
33、mand1 = 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.To
34、DateTime(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.
35、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.sql
36、Command1.ExecuteNonQuery();catch(System.Exception E)Console.WriteLine(E.ToString();finallythis.sqlConnection1.Close();6.4 读者信息模块读者信息模块包含了读者信息和读者信息查询两个子模块读者信息:添加新读者的读者号,姓名,性别,所在系,年龄并将修改后的信息入库保存读者信息查询:可按照读者号,姓名,性别,所在系,年龄五种类型进行查询,可删除读者的信息并将修改后的信息保存,如图6.4。读者信息添加重置查询重置全部删除退出读者信息读者信息查询 图6.4 读者信息代码: namesp
37、ace 登陆 class duzhe private SqlConnection sqlConnection1 = null; private SqlCommand sqlCommand1 = null; private string strSql = null; public duzhe() this.sqlConnection1 = new SqlConnection(dbconnection.connection); this.sqlCommand1 = new SqlCommand(); this.sqlCommand1.CommandType = CommandType.Text; this.sqlCommand1.Connection = this.sqlConnection1; / TODO: 在此处添加构造函数逻辑 public void dz_add(string Rno, string Rname, string Rsex, string Rdep, int Rage) /DateTime Ldate = Convert.ToDateTime(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss); this.strSql = insert into Reader (Rno,Rname,Rsex,Rdep,Rage) +
限制150内