资源描述
成
绩
课程设计(论文)
课程名称 数据库课程设计
题目名称__图书馆藏书管理系统__
学生学院 计算机学院
专业班级 网络工程开发和管理2班
学 号___ _ ___
学生姓名__ _刘郁阳 _
指导老师
年12 月 20日
目录
1.引言 5
2.需求分析 5
2.1数据需求 5
2.2功效需求 5
2.3功效层次图 5
3.相关技术 6
4.概念结构设计 6
4.1数据实体描述及分ER图 6
4.2整体ER图 8
5.逻辑结构设计 10
5.1数据库逻辑结构设计 10
5.2完整性设计 10
5.3具体逻辑模型设计: 10
6.数据库实施 11
6.1创建数据库及数据库对象 11
6.2用户界面设计和实现、应用程序编码 16
7.系统功效测试 23
7.1登录界面测试 23
7.2数据操作 24
8.总结 26
1.引言
图书借阅管理系统是智能办公系统关键组成部分。现在,图书借阅管理系统正以方便、快捷优点慢慢渗透大家生活,将传统图书管理方法根本解脱出来,提升管理效率,减轻管理人员工作量,减小犯错概率,使读者能够花更多时间在选择图书上。从而使大家有更多时间来获取信息、了解信息、掌握信息。采取数据库技术生成图书管理系统将会极大方便借阅者并简化图书馆管理人员劳动,使管理人员从繁忙、复杂工作进入到一个简单、高效工作中。基于这个问题,开发了图书管理系统。系统实现了借还书方便性、高效性、有效性和立即性。
2.需求分析
2.1数据需求
有图书信息,出版社信息,读者信息和借阅信息四大部分,其中图书信息包含图书号、书名、类型、出版社名、数量、位置、作者;出版社信息包含出版社名、电话、地址、邮编、联络人;读者信息包含学号、姓名、班级、电话、学院;借阅信息包含图书号、学号、结束日期、还书日期。
2.2功效需求
1)在读者信息管理部分,能够查询读者信息,能够对读者信息进行添加、修改及删除操作;
2)在书籍信息管理部分,能够浏览书籍信息,能够对书籍信息进行维护,包含添加、修改及删除操作;
3)在借阅信息管理部分,能够浏览借阅信息,能够对借阅信息进行可修改维护及操作。
2.3功效层次图
图书藏书管理系统
学生信息管理
书籍管理
借阅者信息
统计借还书
增加
还书
统计
删除
查找
借书
3.相关技术
此次课程设计使用Microsoft SQL Server 和Microsoft Visual Studio 中Visual C#进行开发试验工作。首先在SQL Server中建立好数据库并加入数据,然后使用Visual C#窗体应用程序进行数据库连接,完成多种操作。
4.概念结构设计
4.1数据实体描述及分ER图
4.1.1图书信息实体
图书信息
图书号
书名
类型
作者
出版社名
位置
数量
4.1.2出版社实体
出版社信息
出版社名
电话
联络人
邮编
地址
4.1.3借阅者信息实体
借阅者信息
学号
姓名
学院
电话
班级
4.1.4借还登记信息实体
借还登记信息
图书号
结束日期
学号
还书日期
4.2整体ER图
出版设
书籍
借阅者
出版
借阅
出版社名
电话
邮编
地址
联络人
图书号
社名
书名
类型
数量
位置
作者
结束日期
还书日期
学号
姓名
班级
学院
电话
1
N
N
M
5.逻辑结构设计
5.1数据库逻辑结构设计
为了完成需求分析中确定基础功效和概念设计中模块划分,经过基于3NF数据库设计方法(经过分析,各数据表已达第三范式),结构了4张基础表。另外,在基础表上定义了部分约束条件,包含基础表上数据类型和数据长度限制和是否许可为空或表内是否取值唯一限定。
5.2完整性设计
完整性包含实体完整性,参考完整性,用户定义完整性。
实体完整性是系统自行定义,要求各关系关键字不能为空值而且不反复。
参考完整性属于表间规则。
(1)定义出版社表:出版社名是主关键字,电话、地址、邮编、联络人不许可为空。
(2)定义读者表:其中学号为主关键字,属性还包含姓名、班级、电话、学院。
(3)定义借还书时间表:书号和学号是主关键字。
(4)定义现有图书表:书号是主关键字,类型、作者、位置不许可为空,出版社名列为外部关键字。
5.3具体逻辑模型设计:
借阅者信息表
字段名
字段类型
长度
主外键约束
约束条件
学号
字符型
10
主键
唯一,不能为空
姓名
字符型
20
不能为空
班级
字符型
20
不能为空
电话
字符型
15
唯一,不能为空
学院
字符型
60
不能为空
出版社表
字段名
字段类型
长度
主外键约束
约束条件
出版社名
字符型
20
主键
不能为空
电话
字符型
15
唯一,不能为空
地址
字符型
60
不能为空
邮编
字符型
20
不能为空
联络人
字符型
20
不能为空
图书信息表
字段名
字段类型
长度
主外键约束
约束条件
图书号
字符型
10
主键
前2位是英文字母,后5位是数字
书名
字符型
50
不能为空
类型
字符型
20
不能为空
出版社名
字符型
20
外键
参考出版社名
数量
字符型
5
大于等于1,小于等于1000
位置
字符型
50
前1位是英文字母,后3位是数字
作者
字符型
50
不能为空
借还书记录表
字段名称
字段类型
长度
是否主键
约束条件
图书号
字符型
10
复合主键
参考图书信息表
学号
字符型
10
复合主键
参考读书信息表
结束日期
Smalldatetime
外键
不能为空
还书时间
Smalldatetime
外键
不能为空
6.数据库实施
6.1创建数据库及数据库对象
(1)数据库创建:
CREATE DATABASE 图书馆藏书管理系统
ON
(NAME=图书馆藏书管理系统,
FILENAME='F:\X\图书馆藏书管理系统.mdf',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOG ON
(NAME=students_log,
FILENAME='F:\X\图书馆藏书管理系统.ldf',
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB)
(2)四个表建立:
USE 图书馆藏书管理系统
GO
create table 借阅者信息表
(学号 char(10)primary key not null,
姓名 char(20)not null,
班级 char(20)not null,
电话 char(15) unique not null,
学院 char(60)not null
)
USE 图书馆藏书管理系统
GO
create table 出版社表
(出版社名 char(20) primary key not null,
电话 char(15) unique not null,
联络人 char(20) not null,
邮编 char(20) not null,
地址 char(60)not null
)
USE 图书馆藏书管理系统
GO
create table 图书信息表
(图书号 char(10) primary key check (图书号
like '[A-Z][A-Z][0-9][0-9][0-9][0-9][0-9]'),
书名 char(50) not null,
类型 char(20) not null,
出版社名 char(20) foreign key references 出版社表(出版社名)
on delete cascade
on update cascade,
数量 char(20) check(数量>=1 and 数量<=1000) not null,
位置 char(50) check(位置 like '[A-Z][0-9][0-9][0-9]') not null,
作者 char (50) not null
)
USE 图书馆藏书管理系统
GO
create table 借还书记录表
(图书号 char(10) foreign key references 图书信息表(图书号)
on delete cascade
on update cascade,
学号 char(10) foreign key references 借阅者信息表(学号)
on delete cascade
on update cascade,
结束日期 smalldatetime not null,
还书日期 smalldatetime not null,
primary key (图书号,学号)
)
(3)加入数据
use 图书馆藏书管理系统
go
insert into 出版社表 values ('清华大学出版社','','姚老师','100025','北京')
insert into 出版社表 values ('高等教育出版社','','李老师','100025','北京')
insert into 出版社表 values ('长江文艺出版社','','谭老师','403014','武汉')
insert into 出版社表 values ('天津教育出版社','','陈老师','300407','天津')
insert into 出版社表 values ('机械工业出版社','','庄老师','100025','北京')
insert into 出版社表 values ('中央编译出版社','','孙老师','100025','背景')
insert into 出版社表 values ('上海外语出版社','','华老师','01','上海')
insert into 出版社表 values ('广州出版社', '','杨老师','515100','广州')
insert into 出版社表 values ('世界图书出版社','','吴老师','515100','广州')
use 图书馆藏书管理系统
go
insert into 图书信息表 values ('AB10001','数据库应用和设计','信息管理','清华大学出版社','20','S101','崔嵬')
insert into 图书信息表 values ('AB10002','数码单反教程','摄影','高等教育出版社','20','S102','蔡卡花')
insert into 图书信息表 values ('AB10003','希腊神话小说','文艺','长江文艺出版社','20','X101','施瓦步')
insert into 图书信息表 values ('AB10004','时间简史','科技','天津教育出版社','20','S103','霍金')
insert into 图书信息表 values ('AB10005','供给链管理','管理','机械工业出版社','20','G101','王施球')
insert into 图书信息表 values ('AB10006','沉思录','哲学','中央编译出版社','20','C101','奥勒流')
insert into 图书信息表 values ('AB10007','大学英语','外语','上海外语出版社','20','D101','童佳')
insert into 图书信息表 values ('AB10008','老外看广州年','纪实','广州出版社','20','L101','王晓玲')
insert into 图书信息表 values ('AB10009','托业单词','外语','世界图书出版社','20','T101','金莉')
insert into 图书信息表 values ('AB10010','软件工程导论','计算机','清华大学出版社','20','R101','张海潘')
insert into 图书信息表 values ('AB10011','统计学原理','管理','高等教育出版社','20','T101','罗威')
insert into 图书信息表 values ('AB10012','广州一日游','旅游','广州出版社','20','G101','姚铭浩')
insert into 图书信息表 values ('AB10013','我和春天有个聚会','文学','世界图书出版社','20','W101','张志民')
insert into 图书信息表 values ('AB10014','数据库系统设计','计算机','清华大学出版社','20','S104','李春')
use 图书馆藏书管理系统
go
insert into 借阅者信息表 values ('','苏建龙','网络工程班','','计算机学院')
insert into 借阅者信息表 values ('','王国泰','网络工程班','','计算机学院')
insert into 借阅者信息表 values ('','吴林骏','网络工程班','','计算机学院')
insert into 借阅者信息表 values ('','吴潇博','网络工程班','','计算机学院')
use 图书馆藏书管理系统
go
insert into 借还书记录表 values ('AB10001','','-6-11','-6-10')
insert into 借还书记录表 values ('AB10002','','-6-11','-6-10')
insert into 借还书记录表 values ('AB10003','','-6-11','-6-10')
insert into 借还书记录表 values ('AB10004','','-6-11','-6-10')
(4)数据库关系图:
6.2用户界面设计和实现、应用程序编码
(1)登录界面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace RADDataDemo
{
public partial class Form7 : Form
{
public Form7()
{
InitializeComponent();
}
private void Form7_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string name = "admin";
string pass = "0000";
if (name == textBox1.Text.Trim() && pass == textBox2.Text.Trim())
{
Form2 form = new Form2();
form.Show();
this.Hide();
}
else
{
MessageBox.Show("你输入用户名或密码不正确!");
return;
}
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
(2)选择要查看表
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace RADDataDemo
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form4 A = new Form4();
A.Show();
}
private void button2_Click(object sender, EventArgs e)
{
Form5 A = new Form5();
A.Show();
}
private void button3_Click(object sender, EventArgs e)
{
Form1 A = new Form1();
A.Show();
}
private void button4_Click(object sender, EventArgs e)
{
Form3 A = new Form3();
A.Show();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button5_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
(3)进入某个表(出版社表为例)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace RADDataDemo
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
private void 出版社表BindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.出版社表BindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.图书馆藏书管理系统DataSet);
}
private void Form4_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“图书馆藏书管理系统DataSet.出版社表”中。您能够依据需要移动或移除它。
this.出版社表TableAdapter.Fill(this.图书馆藏书管理系统DataSet.出版社表);
}
private void button1_Click(object sender, EventArgs e)
{
Form6 form = new Form6();
form.Show();
this.Close();
}
}
}
(4)查询窗体(出版社表为例)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Reflection;
using System.Collections;
namespace RADDataDemo
{
public partial class Form6 : Form
{
public Form6()
{
InitializeComponent();
}
private System.Data.DataTable MyTable = new System.Data.DataTable();
private void button1_Click(object sender, EventArgs e)
{
MyTable.NewRow();
string mysql = "select * From 出版社表 where (出版社名 like '%" + this.textBox1.Text + "%')";
mysql += "and (电话 like '%" + this.textBox2.Text + "%')";
mysql += "and (联络人 like '%" + this.textBox3.Text + "%')";
mysql += "and (邮编 like '%" + this.textBox4.Text + "%')";
mysql += "and (地址 like '%" + this.textBox5.Text + "%')";
string MySQLConectionString = global::RADDataDemo.Properties.Settings.Default.图书馆藏书管理系统ConnectionString;
SqlConnection MyConnection = new SqlConnection(MySQLConectionString);
MyConnection.Open();
SqlDataAdapter Myadapter = new SqlDataAdapter(mysql, MyConnection);
Myadapter.Fill(MyTable);
this.dataGridView1.DataSource = MyTable;
if (MyConnection.State == ConnectionState.Open)
{
MyConnection.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
Form4 form=new Form4();
form.Show();
this.Close();
}
private void Form6_Load(object sender, EventArgs e)
{
}
}
}
7.系统功效测试
7.1登录界面测试
(1)登录失败
(2)登录成功
跳转到:
7.2数据操作
(1)数据添加
(2)数据删除
(3)数据修改
(4)数据查询
8.总结
此次课程设计让我知道了更多相关数据库知识,系统完成了对数据库连接,对数据有查看、添加、删除、修改功效。在设计过程中,了解到破坏了完整性处理方法,学习到了查询代码使用。但因为时间不够,该系统在借还书籍方面只有少许包含,更多是对数据管理,而且登录用户也只设定了一个。相信有了这次学习经验,对以后这类系统设计会很多帮助。
展开阅读全文