《数据库》课程设计报告--图书借阅管理系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《SQL Server数据库
课程设计》
题目:图书借阅管理系统的设计与实现
院、系:计算机信息与技术系
学科专业:软件工程
学号: B10060XXX ___
学生姓名: XXXX
指导教师:XX
2012年06月
目录
引言1
第一章需求分析1
一、功能需求1
二、数据需求2
第二章概要设计2
一、系统设计目标2
二、系统功能设计2
三、开发工具的选择3
第三章详细设计5
一。
实体E—R图5
二. 表的设计6
三.界面设计7
第四章软件实现21
一、登录实现21
二、图书管理21
三、图书借阅21
四、图书查询21
五、图书增加21
第五章软件测试21
一、测试方案21
二、测试项目21
三、测试项目及测试内容21
四、测试用例21
五、评价22
第六章课程设计总结24
参考文献25
引言
随着社会的发展,人们对知识的需求也不断地增长。
在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置,如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的发展,因此,开发一套完善的图书馆管理系统就势在必行.图书馆在正常运营中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。
本软件针对图书馆的业务范围及工作特点,设计了图书查询、新增图书、图书借阅书以及图书归还等5个子系统,这5个子系统包括了图书馆的主要业务,可以全面实现对图书馆采购、编目、检索、统计和流通等业务的计算机管理,使图书馆管理水平和业务水平跃上一个新的台阶。
应用本系统可以在计算机上灵活、方便地管理图书,从而大大的提高了处理速率,使管理更加现代化。
本系统是根据实际情况和具体内容,按照一定的要求,科学、合理的进行系统分析、设计,具体包括画面设计、数据输入、查询、新增、删除等设计。
从而使本系统完全能满足经济性、灵活性、系统性及可靠性的要求。
本系统的实现的主要功能有:图书馆图书的查询、新书的入库、图书的借阅和归还等等功能,是一个基本可以满足借阅者和图书馆管理人员的需要的数据库。
第一章需求分析
一、功能需求
根据出版社图书的规模日益扩增,图书类别的日益繁琐,经销商与出版社频繁交易,行业竞争日益激烈。
面对诸多问题时:一款优秀的出版社图书管理软件是每一个从事出版社图书销售与管理的必备的工具。
出版社图书出版管理是一个庞大的任务,传统方式的图书管理将会造成巨大的人力和物力的浪费,因此我们需要设计一个可以使工作人员实现使用计算机管理的系统。
减轻工作量,实现图书出版管理的高效化.
通过本系统,读者可以随时查询图书的信息并对对图书信息进行增加,删除,查询.图书借阅管理系统旨在实现图书管理的现代化,能够很好的利用计算机帮助读者查询各种书籍,也能很好的帮助管理者对书籍的信息有一个及时的了解,极大程度上方便了我们的生活及学习。
二、数据需求
学生基本信息:学号,姓名.
书籍基本信息:图书编号,图书名,作者,出版社,数量.
第二章概要设计
一.系统设计目标
本系统为学校的图书馆信息而设计,实现信息处理的自动化、规范化,主要用于处理图书日常借阅和还书、图书入库、各种查询操作,系统具有以下功能。
(1)完成新书入库、借阅、还书等处理功能
(2) 具有借阅者增加、删除等功能
(3)具有各种查询功能
二.系统功能设计
要求系统实现图书馆日常管理事务最主要的功能,包括图书的借出于还回,图书信息的录入、修改和查询,读者信息的录入、修改和查询,员工信息的录入、修改和查询.实现这些基本功能,组建了图书管理系统的基本框架,根据功能的关联关系和集中分组的原则,将系统细化如图2-1所示的结构图.
图2—1 系统功能结构图
三.开发工具的选择
本系统采用 Microsoft SQL Server2008创建后台数据库,前台开发工具采用的Microsoft SQL Server Management Studio,编程语言为C #。
如图2-2所示.
图2-2
归还图书
借阅图书
图书借阅
图书信息管理
系统设置
新书入库 查询图书信息 删除图书信息
用户密码修改
登录处理
图书馆图书借阅系统
第三章详细设计
一. 实体E-R图
数据库设计使系统开发中非常重要的一个环节,数据库结构设计的好坏将直接影响系统的效率。
在设计数据库之前,要了解用户需求,从而确定数据库结构。
否则,如果在代码实现过程中再修改数据库的结构,将会浪费人力和物力。
同时,在数据库设计中,表的数量不能太多,否则系统的升级和维护将很困难。
由概要设计中系统结构可以得出实体及他们之间的联系.实体具体的描述及其联系E—R图,如图3-1所示:
图3-1 E-R 图
二.表的设计
2。
1图书信息
图书信表:表名为:“图书查询”,用于保存所以图书信息,其结够如图3—2所示。
图3-2 book 表的结构
2。
2读者信息
读者信息表:表名为:“图书借阅",用于保存可以在本馆借书的所有读者信息,其结果如图3-3所示。
管理员信息
电话
管理员编号
管理员姓名
密码
新书 添加
图3—3 reader表的结构
三.界面设计
3.1登录窗体设计
登录窗体作为系统的启动窗体,用于核对用户和密码,只有图书馆工作管理人员才能登录到本系统进行操作。
登录窗体的设计比较灵活,只要能实现用户和密码的验证即可,本系统将其设计成为一个小窗体。
登录窗体文件名设计为“Form1.cs”
3。
1.1界面设计
在该窗体上添加3个Label、2个TextBox、2个Button控件.登录窗体及其主要控件的属性设置如图3—4界面设计
图3-4 登录窗体
3。
1.2代码设计:
using System;
using System。
Collections.Generic;
using ponentModel;
using System.Data;
using System。
Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//添加命名空间
using System。
Data。
SqlClient;
namespace feng
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string strcon = ”Data Source=.;Initial Catalog=图书馆借阅系统;Integrated Security=True";
SqlConnection sqlCon = new SqlConnection(strcon);
sqlCon.Open();
string sql = "select * from 登录 where username=@
form1name and password=@password";
SqlCommand cmd = new SqlCommand(sql, sqlCon);
cmd.Parameters。
Add(”@form1name”, SqlDbType。
NChar, 20); cmd。
Parameters。
Add("@password", SqlDbType.NChar, 20);
cmd。
Parameters[”@form1name”]。
Value = username。
Text; cmd.Parameters[”@password"]。
Value = password.Text; //创建 SqlDataReader,必须调用 SqlCommand 对象的ExecuteReader 方法,而不要直接使用构造函数。
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
dr。
Close();
Formmain formmain = new Formmain();
formmain.Show();
this.Hide();
}
Else
{
MessageBox.Show("密码错误,请重新输入!”);
//name。
Clear();
password。
Clear();
}
sqlCon.Close();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
3。
2图书管理模块设计
图书管理窗体作为系统的功能窗体,用于有以下功能图书查询、图书借阅、图书增加、和退出到登录窗体。
登录窗体文件名设计为“Formmain。
cs”.
3.2。
1界面设计
在该窗体上添加5个Button控件,其中图书管理窗体及其主要控件的属性设置如图3—5所示。
他分别连接到图书查询、图书借阅、图书新增、图书归还和登录窗体。
图3—5 图书管理
3.2.2代码设计:
using System;
using System。
Collections.Generic;
using ponentModel;
using System。
Data;
using System.Drawing;
using System。
Linq;
using System。
Text;
using System。
Windows。
Forms;
namespace feng
{
public partial class Formmain : Form
{
public Formmain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e){
Selectbook selectbook = new Selectbook();
selectbook.Show();
}
private void button3_Click(object sender, EventArgs e){
Addbook addbook = new Addbook();
addbook。
Show();
}
private void button6_Click(object sender, EventArgs e) {
Application.Exit();
}
private void button2_Click(object sender, EventArgs e) {
Borrowbook borrowbook = new Borrowbook();
borrowbook。
Show();
}
private void button4_Click(object sender, EventArgs e) {
Returnbook returnbook = new Returnbook();
returnbook。
Show();
}
}
}
3.3图书借阅窗体设计
图书借阅窗体作为系统的启动窗体,用于借出和还入,其运行界面如图1—13所示。
登录窗体文件名设计为“Form4.cs”.
3.3。
1界面设计
在该窗体上添加2个Label、2个TextBox、2个Button控件,其中图书借阅窗体及其主要控件的属性设置如图3—6所示.
图3—6 图书借阅
3.3。
2代码设计:(关键代码)
namespace feng
{
public partial class Borrowbook : Form
{
public Borrowbook()
{
InitializeComponent();
}
private void label3_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e) {
Formmain formmain = new Formmain();
formmain。
Show();
this。
Hide();
}
private void button1_Click(object sender, EventArgs e) {
string strcon = ”Data Source=BXAIT-PC;Initial Catalog=图书馆借阅系统;Integrated Security=True";
SqlConnection sqlCon = new SqlConnection(strcon);
sqlCon.Open();
string sql = "select * from dbo.借阅信息 where sno=@sno or bookid=@bookid”;
SqlCommand cmd = new SqlCommand(sql, sqlCon);
cmd.Parameters。
Add(”@sno”, SqlDbType.NChar, 10); cmd。
Parameters.Add(”@bookid”, SqlDbType。
NChar, 10); cmd。
Parameters["@sno"].Value = textBox1。
Text;
cmd.Parameters["@bookid”].Value = textBox2。
Text;
SqlDataReader dr = cmd。
ExecuteReader();
if (dr.Read())
{
dr.Close();
string lend = "insert into dbo。
借阅信息 values(@sno,@bookid)";
SqlCommand cmd2 = new SqlCommand(lend, sqlCon);
cmd2。
Parameters。
Add("@sno”, SqlDbType.NChar, 10); cmd2。
Parameters。
Add("@bookid”, SqlDbType.NChar,10);
cmd2.Parameters[”@sno”]。
Value = textBox1。
Text; cmd2。
Parameters[”@bookid"].Value = textBox2.Text; cmd2.ExecuteNonQuery();
MessageBox。
Show(”借书成功!”);
}
else
{
MessageBox.Show(”图书馆没有这本书,请重新输入!");
textBox1.Clear();
textBox2.Clear();
}
sqlCon.Close();
}
}
}
}
3.4图书查询窗体设计
图书查询窗体通过输入图书名称查询出作者,出版社,数量.图书查询窗体文件名设计为“Form2.cs”。
3.4.1界面设计
在该窗体上添加5个Label、5个TextBox、3个Button控件,其中图书查询窗体及其主要控件的属性设置如表3-7所示.
图3-7 图书查询
3。
4。
2代码设计:(关键代码)
namespace feng
{
public partial class Selectbook : Form
{
public Selectbook()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Formmain formmain = new Formmain();
formmain。
Show();
this.Hide();
}
private void button1_Click_1(object sender, EventArgs e){
Borrowbook borrowbook = new Borrowbook();
borrowbook.Show();
}
Privatevoid dataGridView1_CellContentClick(objectsender, DataGridViewCellEventArgs e)
{
}
private void button3_Click(object sender, EventArgs e) {
SqlConnection sqlcon = new SqlConnection("Data
Source=。
;Initial Catalog=图书馆借阅系统;Integrated Security=True”); sqlcon.Open();
string str = ”select * from 查询 where bookid=@bookid or bookname=@bookname or bookauthor=@bookauthor or bookpub=@bookpub or bookstate=@bookstate”;
SqlCommand cmd = new SqlCommand(str, sqlcon);
cmd。
Parameters。
Add(”@bookid", SqlDbType。
NChar, 10); cmd。
Parameters。
Add(”@bookname”, SqlDbType.VarChar,50);
cmd。
Parameters.Add("@bookauthor", SqlDbType。
VarChar, 50);
cmd.Parameters。
Add("@bookpub”, SqlDbType。
VarChar, 50); cmd.Parameters。
Add("@bookstate", SqlDbType。
VarChar, 50);
cmd。
Parameters[”@bookid”]。
Value = this.textBox1。
Text; cmd。
Parameters[”@bookname"].Value = this。
textBox2。
Text;
cmd.Parameters["@bookauthor”].Value = this.textBox3。
Text;
cmd.Parameters[”@bookpub”]。
Value = this。
textBox4.Text;
cmd。
Parameters["@bookstate"]。
Value =
this.textBox5.Text;
this.textBox1。
Text = "NULL";
this。
textBox2。
Text = ”NULL";
this.textBox3。
Text = "NULL”;
this。
textBox4。
Text = ”NULL”;
this。
textBox5。
Text = ”NULL”;
SqlDataReader dr = cmd.ExecuteReader();
while (dr。
Read())
{
this.textBox1.Text = dr[”bookid”].ToString().Trim ();
this。
textBox2.Text = dr["bookname"]。
ToString()。
Trim();
this.textBox3。
Text = dr["bookauthor"].ToString()。
Trim();
this。
textBox4.Text = dr[”bookpub”]。
ToString().Trim();
this。
textBox5.Text = dr["bookstate"]。
ToString()。
Trim();
}
}
}
}
3.5图书新增窗体设计
图书新增窗体作为系统的启动窗体,用于对新书入库,其运行界面如图1-13所示.登录窗体文件名设计为“Form3.cs”。
3。
5.1界面设计
在该窗体上添加4个Label、4个TextBox、2个Button控件,其中图书增加窗体及其主要控件的属性设置如表3-8所示。
图3-8 图书新增
3.5.2代码设计:(关键代码)
namespace feng
{
public partial class Addbook : Form
{
public Addbook()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection(”data
source=.;Initial Catalog=图书馆借阅系统;Integrated Security=True”);
String str = "insert into dbo.新增 values(@bookid,@bookname,@bookauthor,@bookpub)";
sqlcon.Open();
// SqlCommand cmd = new SqlCommand("insert into 新增(bnum,bname,bauthor,bpub,) values('" + textBox1.Text + "','" + textBox2。
Text + "’,’" + textBox3。
Text + ”',’" + textBox4.Text + "’)", sqlcon);
SqlCommand cmd = new SqlCommand(str, sqlcon);
cmd.Parameters。
Add("@bookid", SqlDbType.NChar, 10); cmd.Parameters.Add(”@bookname”, SqlDbType.VarChar, 50);
cmd。
Parameters。
Add("@bookauthor", SqlDbType.VarChar, 50);
cmd.Parameters.Add(”@bookpub”, SqlDbType。
VarChar,50);
cmd。
Parameters["@bookid”].Value = textBox1.Text;
cmd.Parameters["@bookname”]。
Value = textBox2。
Text; cmd.Parameters["@bookauthor"]。
Value = textBox3.Text; cmd.Parameters["@bookpub”]。
Value = textBox4。
Text;
cmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox。
Show(”——添加成功!——");
this。
textBox1.Clear();
this。
textBox2。
Clear();
this。
textBox3.Clear();
this.textBox4。
Clear();
}
private void button2_Click(object sender, EventArgs e)
{
Formmain formmain = new Formmain();
formmain.Show();
this。
Hide();
}
}
}
3。
6图书归还窗体设计
图书归还窗体作为系统的启动窗体,用于对新书归还,其运行界面如图1-13所示。
登录窗体文件名设计为“Form5。
cs"。
3。
6.1界面设计
在该窗体上添加2个Label、2个TextBox、2个Button控件,其中图书增加窗体及其主要控件的属性设置如表3-9所示。
图3-9 图书归还
3.6.2代码设计:(关键代码)
namespace feng
{
public partial class Returnbook : Form
{
public Returnbook()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Formmain formmain = new Formmain();
formmain.Show();
this.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection(”data
source=localhost;Initial catalog=图书馆借阅系统;Integrated
security=sspi;");
string str = ”delete from dbo.借阅信息 where sno=@sno and bookid=@bookid”;
sqlcon.Open();
SqlCommand cmd = new SqlCommand(str, sqlcon);
cmd.Parameters。
Add("@sno”, SqlDbType.NChar, 10); cmd。
Parameters。
Add("@bookid", SqlDbType.NChar, 10);
cmd.Parameters["@sno”].Value = textBox1.Text;
cmd.Parameters[”@bookid"].Va lue = textBox2.Text;
cmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("还书成功!");
this.textBox1.Clear();
this。
textBox2.Clear();
}
}
}
第四章软件实现
首先用SQL Server 2008建立数据库的两个表,将图书信息,读者用户名和密码建立。
然后用Microsoft Visual Studio 2010建立五个窗体。
用代码实现窗体与数据库的连接和窗体与窗体之间的连接。
第一个窗体为登录界面,分别设有登录按钮。
通过登录按钮进入第二个窗体进行图书管理,再进入第三个图书借阅,再进入第四个图书查询,最后可以对新入库的图书做增加,进入第五个窗体。
一、登录实现(见图3-4)
二、图书管理(见图3-5)
三、图书借阅(见图3-6)
四、图书查询(见图3—7)
五、图书新增(见图3—8)
六、图书归还(见图3-9)
第五章软件测试
一、测试方案
采用黑盒测试方法。
对功能进行逐一测试,在输入合理及不合理的数据后测试系统的正常运作情况。
二、测试项目
1。
读者登陆测试
2.读者进行信息查询测试
3。
图书信息管理测试
三、测试项目及测试内容
测试1:
名称:读者登陆测试
目的:测试系统操作界面
内容:用户名密码输入、合理性检查、合法性检查,系统操作界面显示控制。
测试2:
名称:图书信息查询测试
目的:测试系统信息查询功能
内容:输入关键字,进行图书信息查询.
测试3:
名称:图书信息管理测试
目的:测试系统信息增加、删除、修改、查询功能。
内容:输入有效信息,进行图书信息增加、删除、修改、查询。
四、测试用例
表4-1系统登录测试表
步骤及操作:运行系统,转到登陆界面,输入用户名及密码,测试登录功能。
允许偏差:不允许任何偏差.
五、评价
此次测试可将系统各功能模块进行逐一的检查,对各项功能进行排查,对系统实现各功能的正常运行做充分的测试,输入合理及不合理的测试数据检验功能的运行及出错处理情况。
但由于功能模块较多,采用功能测试设计的测试用例比较多,测试需要花费一定的时间。
第六章课程设计总结
首先诚挚的感谢老师的指导。
老师悉心的教导使我得以开发这个系统,从以前的理论上升到实践,真正做到学有所用。
虽然在设计中我遇到了不少问题,而且往往一个小小的问题都会使我花很多的时间和精力去寻找和修正,但在老师竭尽全力的帮助下和自己的努力下,最终还是一一克服了。
通过这次设计,使我学到了很多东西,收益非浅,我感觉理论到实践是一个艰难的过程,必须勤动手,才能发现问题,使自己得到真正的提高.经过了这次的设计使我学到了很多知识,给我今后在工作和学习上也提供了不少宝贵的经验。
并且通过这次设计也使我也发现了自己在学习上的不足,主要是动手能力的不足,我会努力在以后的工作道路上继续充实自我,完善自我。
但在这次毕业设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维
方法,以及与同学们之间相互帮助的精神。
经过一周的课程设计,图书管理信息系统基本开发完毕。
其功能基本符合用户需求,能够完成管理主界面与登录程序设计,系统管理模块,图书信息管理模块,还借信息管理模块等。
并提供部分系统测试功能,使用户方便进行数据添加、数据查询、数据修改。
由于时间较短和本人水平所限,该系统必然会存在一些缺陷和不足。
但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。
相信本图书管理信息系统是一套学校在日常管理中必不可少的管理软件。
参考文献
[1] 杨学全主编。
SQL Server实例教程(第二版)[M]。
北京: 电子工业出版社. 2007年9月
[2]于国防,李剑.C#语言Windows程序设计[M]。
北京:清华大学出版社.2010年9月
[3]史济民,顾春华,李昌武, 苑荣编著. 软件工程-—原理、方法与应用[M]。
北京: 高等教育出版社. 2004年1月.
[4]张海藩编著. 软件工程导论[M]. 北京:清华大学出版社. 2005年10月。
[5] 张奇,李律松,卫建伟等编著. Visual C#数据库项目案例导航[M]. 北京: 清华大学出版社. 2005年6月.
[6] 邹建峰等,C#企业级开发案例精解[M]。
北京:人民邮电出版社.2006年1月.
[7] Kouresh Ardestani著,张哲峰译.高效掌握[M]。
北京:清华大学出版社。
2003年3月.
[8]明峻峰,路璐。
浅谈数据库的理论教学与工程实践相结合[J]。
广东工业大学学报:社会科学版。
2008. 第B07期: 2。