《软件工程》图书管理系统课程设计_第1页
《软件工程》图书管理系统课程设计_第2页
《软件工程》图书管理系统课程设计_第3页
《软件工程》图书管理系统课程设计_第4页
《软件工程》图书管理系统课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书管理系统课程设计报告 1设计目的 随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛 应用于社会各个行业和领域。目前,我国的科技水平高速发展,计算机作为今 天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会信息 社会的重要支柱。在这样的大背景下,现代图书馆的管理方式,资源建设等方 面都发生了重大变化,这种变化表现在图书馆工作,管理和服务平台发生的变 化,图书馆不再是传统的手工操作,人工管理,而是全面实行计算机管理。 图书馆的正常运营中总是面对大量的读者信息,图书信息以及两者相互作 用产生的借书信息,因此要对读者资源,图书资源,借书信息进行管理。本系 统的开发就是在于提高图书管理的工作效率,加强图书馆的管理,全面实行计 算机管理。 2可行性研究报告 在软件的开发过程中,这一步是十分必要的。如果在定义阶段及早发现将 来可能在开发过程中的问题,及早做出决断,可以避免大量的人力,财力和时 间上的浪费。 1 技术可行性:本组开发成员都具有一定的电脑知识,学习过多种程 序开发语言。特别是在项目确定后对 C#和 SQL Server 数据库的强化学习, 使本系统成功开发成为可能。 2 经济可行性:本系统有其生存空间,成功后有其市场。并且本小组 开发人员基于一种爱好去研究他的,我们有自己的电脑,可以说成本开 支极其有限。 3 现阶段各种各样的图书馆越来越多,图书馆的书也越来越多,图书 的管理工作也越来越复杂。本系统就是为了减轻图书管理人员的工作而 设计的。 4 法律可行性:本系统为我五人开发小组独立完成,不关他人,开发 成功后其所有权归我们五人所有,用户购买后其使用权一同买断,我们 将提供技术支持。 5 基于水平和时间有限,我们的系统还不是十分完善。可扩展的地方 很多,现列举如: 建立图书预约机制 建立读者反馈机制 建立过期催还机制 建立条码扫描机制等。 以现有的人力和时间来衡量,我们只有放弃。 经过以上可行性论证,本系统可以按任务书要求开发。 3项目开发计划书 开发阶段 时间进度 制定开发计划 两天 需求分析 一周 概要设计 一周 详细设计 两周 系统实现 三周 系统测试 一周 编写课程设计报告 两周 4系统需求规格说明书 该过程是个不断认识不断细化的过程。这里所要完成的工作是深入描述软 件的功能和性能,确定软件的设计限制和软件同其他系统元素的接口细节,从 而奠定软件的开发基础。 1性能需求:该系统中,各个模块只有管理人员才能对其进行操作,系统管理 人员要进行身分验证才能进入界面操作。 2功能需求:我们设计的系统要完成的功能模块如下: 登陆模块 管理员管理模块 借阅卡管理模块 书籍管理模块 查询管理模块。 3环境需求:电脑需要安装.net 框架 3.5,安装 SQL Server 2008 数据库,硬 件要求酷睿 i3 双核以上处理器,100G 硬盘空间,1G 以上内存,系统应有 Windows XP,Windows7,或 Windows8 操作系统。 4界面需求:本软件是面向大众,界面友好,操作简单灵活,根据界面上的提 示便可完成一系列动作。 5概要设计说明书 5.1 系统设计流程 (一) 建库; 建立数据库; (二) 设计相应的操作界面; 5.2 功能模块结构图设计 一、软件设计过程 对程序结构、数据结构、过程细节和接口细节逐步细化、评审和编写文档 的过程。从技术角度上,软件设计分成体系结构设计、数据设计、过程设计、 接口设计 4 个方面的工作。从管理角度上讲,软件设计分为概要设计和详细设 计两个阶段。 二、软件设计目标 设计必须实现分析模型中描述的所有显示需求,必须满足用户希望的所有 隐式需求;设计必须是可读、可理解的,使得将来易于编程、易于测试、易于 维护;设计应从实现角度出发,给出数据、功能、行为相关的软件全貌。 三、基本原理和相关概念 抽象化:常用的抽象化手段有过程抽象、数据抽象和控制抽象 过程抽象:任何一个完成明确动能的操作都可被使用者当做单位的实体 看待,尽管这个操作时机上可能由一系列更低级的操作来完成。 数据抽象:与过程抽象一样,允许设计人员在不同层次上描述数据对象 的细节。 与过程抽象和数据抽象一样,控制抽象可以包含一个程序控制机制而无 须规定其内部细节。 自顶向下,逐步细化:将软件的体系结构按自顶向下方式,对各个层次 的过程细节和数据细节逐层细化,知道用程序设计语言的语句能够实现为止, 从而最后确立整个的体系结构。 模块化:将一个待开发的软件分解成若干个小的简单的部分模块, 每个模块可独立地开发、测试,最后组装成完整的程序。这是一种复杂问题的 “分而治之”的原则。模块化的目的是使程序结构清晰,容易阅读,容易理解, 容易测试,容易修改。 控制层次:表明了程序构件(模块)的组织情况。控制层次往往用程序 的层次结构(树形或网型)来表示。 深度:程序结构的层次数,可以反映程序机构的规模和复杂程度。 宽度:同一层模块的最大模块个数 模块的扇出:一个模块调用(或控制)的其他模块数 模块的扇入:调用(或控制)一个给定模块的模块个数 信息屏蔽:将每个程序的成分隐蔽或封装在一个单一的设计模块中,定 义每一个模块时尽可能少的显露其内部的处理,可以提高软件的可修改性,可 测试性和可移植性。 模块独立:每个模块完成一个相对特定独立的子功能,并且与其他模块 之间的联系简单。衡量度量标准有两个:模块间的耦合和模块的内聚。模块独 立性强必须做到高内聚低耦合。 耦合:模块之间联系的紧密程度,耦合度越高模块的独立性越差。耦合 度从低到高的次序为:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦 合、公共耦合、内容耦合。 内聚是指内部各元素之间联系的紧密程度,内聚度越低模块的独立性越 差。内聚度从低到高依次是:偶然内聚、逻辑内聚、瞬时内聚、过程内聚、通 信内聚、顺序内聚、功能内聚。 结构化设计方法,采用类似于结构化分析的“由大到小” 、 “自顶向下,逐 层分解”的基本思想描述(分解)系统。结构化设计方法,首先以数据流图为 基础导出系统模块(功能)结构图。在导出系统模块(功能)结构图的过程中, 以独立性、低耦合性、高内聚性、公共模块作为模块划分的原则。先将系统数 据流图中的加工转换成模块,再将各大模块继续划分为较小的模块,直到每一 模块都是功能单一的模块。 根据系统功能分析和图书馆管理的特点,经过模块化的分析得到如图所示 的图书馆管理系统功能模块结构图。 图书管理系统 管理员 管理 借书卡 管理 书籍管 理 查询管 理 借阅管 理 管理 员维 护 增加 管理 员 增加 借书 卡 借书 卡维 护 新增 书籍 管理 书籍 信息 维护 书籍 信息 查询 超期 图书 查询 借书 管理 还书 管理 5.3 E-R 图 管理员 E-R 图 管理员 用户名 密码 编号 学生 E-R 图 借阅卡 姓名 班级 编号 有效期开始时 间 有效期结束时 间 图书 E-R 图 图书 书名 作者 编号 出版社 出版日期 标识 借阅 E-R 图 借书信息 编号 学生编号 图书编号 书名 借书时间 归还时间 系统整体 E-R 图 管理员 用户名 密码 编号 学生 姓名 班级 编号 有效期开始时 间 有效期结束时 间 借书信息 编号 学生编号 图书编号 书名 借书时间 归还时间 管理 管理 借阅 包含 包含 图书 书名 作者 编号 出版社 出版日期 标识 N N N N N N 1 1 1 1 6详细设计说明书 6.1 数据库设计 根据设计好的各实体 E-R 图创建数据库的逻辑结构,本系统采用了送了 SQL Server 2008 数据库,数据库名称为 BookMgr数据库 BookMgr 包含以下 6 个表:图书信息表 book、图书管理员表 admin、图书类别表 type、借书卡信息 表 card、图书借阅表 lend。 表的具体结构如下: 1)管理员表:用于保存管理员信息,结构如下 /* Object: Table dbo.Users Script Date: 04/26/2015 15:56:26 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.Users( Name nvarchar(50) NULL, Password nvarchar(50) NULL, Type int NULL ) ON PRIMARY GO 2)图书信息表 /* Object: Table dbo.Book Script Date: 04/26/2015 15:56:26 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.Book( Num nvarchar(50) NOT NULL, Name nvarchar(50) NULL, Author nvarchar(50) NULL, Type int NULL, ISBN nvarchar(50) NULL, CBS nvarchar(50) NULL, CBRQ datetime NULL, Status nvarchar(50) NULL, CONSTRAINT PK_Book PRIMARY KEY CLUSTERED ( Num ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO 3)借书卡信息表 /* Object: Table dbo.Card Script Date: 04/26/2015 15:56:26 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.Card( Num nvarchar(50) NOT NULL, Name nvarchar(50) NULL, Class nvarchar(50) NULL, StartTime datetime NULL, EndTime datetime NULL, CONSTRAINT PK_Card PRIMARY KEY CLUSTERED ( Num ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO 4)图书借阅表 /* Object: Table dbo.Lend Script Date: 04/26/2015 15:56:26 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.Lend( CardNum nvarchar(50) NULL, BookNum nvarchar(50) NULL, Time datetime NULL, Status nvarchar(50) NULL ) ON PRIMARY GO 5)图书类型表 /* Object: Table dbo.Type Script Date: 04/26/2015 15:56:26 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.Type( ID int IDENTITY(1,1) NOT NULL, Name nvarchar(50) NULL, CONSTRAINT PK_Type PRIMARY KEY CLUSTERED ( ID ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO 6.2 系统界面设计 登陆界面 / 验证用户 private void okButton_Click(object sender, System.EventArgs e) if (tB_Name.Text = “) MessageBox.Show(“请输入用户名!“, “提示“); return; if (cB_Type.SelectedIndex 0) MessageBox.Show(“请选择登陆身份!“, “提示“); return; string strCommand; strCommand = “select Password from Users where Name = “ + tB_Name.Text + “; SqlCommand command = new SqlCommand(strCommand, DBHelper.Conn); SqlDataReader reader; reader = command.ExecuteReader(); if (reader.Read() string password = reader“Password“.ToString(); / 验证用户 if (password = tB_Password.Text) /MainForm.m_strName = tB_Name.Text; this.DialogResult = DialogResult.OK; this.Close(); else MessageBox.Show(“用户或口令信息不正确!“, “提示“); else MessageBox.Show(“用户不存在!“, “提示“); reader.Close(); 主界面 private void 图书管理ToolStripMenuItem_Click(object sender, EventArgs e) Book dlg = new Book(); dlg.MdiParent = this; dlg.Show(); private void 借书卡管理ToolStripMenuItem_Click(object sender, EventArgs e) Card dlg = new Card(); dlg.MdiParent = this; dlg.Show(); 图书管理 private void Book_Load(object sender, EventArgs e) string sql = string.Format(“select Num 编号,Book.Name 书名,Author 作者 ,Type.Name 类别,ISBN,CBS 出版社,CBRQ 出版日期,Status 出借状态 from Book left join Type on Book.Type=Type.ID“); dataGridView1.DataSource = DBHelper.GetDataSet(sql); private void btnAdd_Click(object sender, EventArgs e) BookAdd dlg = new BookAdd(“); dlg.ShowDialog(); string sql = string.Format(“select Num 编号,Book.Name 书名,Author 作者 ,Type.Name 类别,ISBN,CBS 出版社,CBRQ 出版日期,Status 出借状态 from Book left join Type on Book.Type=Type.ID“); dataGridView1.DataSource = DBHelper.GetDataSet(sql); 借书卡管理 private void Card_Load(object sender, EventArgs e) dataGridView1.DataSource = DBHelper.GetDataSet(“select Num 编号 ,Name 姓名,Class 班级,StartTime 开始时间,EndTime 结束时间 FROM Card“); private void button1_Click(object sender, EventArgs e) CardAdd dlg = new CardAdd(“); dlg.ShowDialog(); dataGridView1.DataSource = DBHelper.GetDataSet(“select Num 编号 ,Name 姓名,Class 班级,StartTime 开始时间,EndTime 结束时间 FROM Card“); 借书界面 private void Lend_Load(object sender, EventArgs e) CardNum.DataSource = DBHelper.GetDataSet(“select * from Card“); CardNum.DisplayMember = “Num“; CardNum.ValueMember = “Name“; CardName.Text = “; BookNum.DataSource = DBHelper.GetDataSet(“select * from Book“); BookNum.DisplayMember = “Num“; BookNum.ValueMember = “Name“; BookName.Text = “; private void button1_Click(object sender, EventArgs e) string sql = string.Format(“insert into lend values(0, 1, 2, 在借) “, CardNum.Text, BookNum.Text, DateTime.Now); DBHelper.GetCommand(sql); sql = string.Format(“update Book set Status=已借出 where Num=0“, BookNum.Text); DBHelper.GetCommand(sql); MessageBox.Show(“借阅成功!“); this.Close(); 还书界面 private void Back_Load(object sender, EventArgs e) CardNum.DataSource = DBHelper.GetDataSet(“select * from Card“); CardNum.DisplayMember = “Num“; CardNum.ValueMember = “Name“; CardName.Text = “; private void button1_Click(object sender, EventArgs e) string sql = string.Format(“update Lend set Status=归还 where BookNum=0 and CardNum=1“, BookNum.Text, CardNum.Text); DBHelper.GetCommand(sql); sql = string.Format(“update Book set Status=未借出 where Num=0“, BookNum.Text); DBHelper.GetCommand(sql); MessageBox.Show(“归还成功!“); this.Close(); 图书查询界面 private void button1_Click(object sender, EventArgs e) string sql = string.Format(“select Num 编号,Name 书名,Author 作者 ,Type 类别,ISBN,CBS 出版社,CBRQ 出版日期,Status 出借状态 from Book where Num like %0% or Name like %0% or Author like %0% or ISBN like %0% or CBS like %0%“, textBox1.Text); dataGridView1.DataSource = DBHelper.GetDataSet(sql); 超期未还图书界面 private void BackTimeout_Load(object sender, EventArgs e) string sql = string.Format(“select C.Num 借书卡号, C.Name 姓名, C.Class 班级, B.Num 书号, B.Name 书名, L.Time 借阅时间 from Lend L left join Book B on L.BookNum=B.Num left join Card C on L.CardNum=C.Num where L.Status=在借 and L.Time0“, DateTime.Now.AddMonths(-1); dataGridView1.DataSource = DBHelper.GetDataSet(sql); 用户管理界面 / 初始化 private void Form_ManagUser_Load(object sender, System.EventArgs e) string strSql = “select Name, Password from Users“; m_dsUser = new DataSet(); m_adapterUser = new SqlDataAdapter(strSql, DBHelper.Conn); m_adapterUser.Fill(m_dsUser, “users“); dG_User.DataSource = m_dsUser; dG_User.DataMember = “users“; / 添加用户 private void button_Add_Click(object sender, System.EventArgs e) string strCommand = string.Format(“INSERT INTO Users(Name, Password, Type) VALUES (0, 1, 2)“, tB_Name.Text, tB_Password.Text, cB_Type.SelectedIndex); SqlCommand command = new SqlCommand(strComman

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论