资源描述
学年论文(课程设计)
题目: 图书出版发行管理系统
学 院 数学与计算机学院
学科门类 工学
专 业 计算机科学与技术
学 号
姓 名
指导导师
2012年6月15日
河北大学学年论文(课程设计)任务书
(指导导师用表)
学 生 姓 名
指 导 教 师
论文(设计)题目
图书出版发行管理系统
主要研究
(设计)内容
本课程设计主要设计并实现一个简单的图书出版发行管理系统,包括图书信息管理模块、作者信息管理模块、读者信息管理和读者对书评价管理模块,各模块能够完成基本信息的录入,查询和删除的功能,并且具有一定的权限,分为普通用户和管理员用户两类人员,能通过本系统完成图书出版发行管理所需要的基本功能。
研究方法
本课程设计用C#作为系统的开发编程语言,在Microsoft Visual Studio 2005开发平台上,选择SQL Server 2005作为数据库开发工具,通过需求分析、总体功能设计、数据库设计和系统实现等步骤一步步实现图书出版发行管理系统的基本功能。
主要任务
及目标
(1)实现图书信息管理、作者信息管理、读者信息管理和读者对书评价管理的功能。
(2)能实现各模块基本信息的录入,查询和删除功能。
(3)具有一定的权限,分为普通用户和管理员两类用户。
(4)能够与数据库连接,保证数据的安全性,并对完成的系统进行调试改善。
主要参
考文献
[1]数据库系统概论.王珊,萨师煊.高等教育出版社.2007
[2]数据库原理及技术课程设计. 钱雪忠,罗海驰,陈国俊. 清华大学出版社. 2009
[3]Visual C#学习笔记. 缪勇,李新峰,付志涛. 电子工业出版社. 2008
[4]CSDN.
[5]道客巴巴.
进度安排
论文(设计)各阶段名称
日期
布置任务
第13周
整体设计
第14周
编写程序
第15周-第16周
撰写论文
第17周
指导导师签字:
系主任签字:
主管教学院长签字:
河北大学学年论文(课程设计)成绩评定表
学院: 数学与计算机学院
学生姓名
专业 年级
论文(设计)题目
图书出版发行管理系统
论文(设计)内容提要
本论文主要阐述五部分内容:
1.需求分析部分,主要说明本系统用户需求、系统的功能需求、系统的性能需求与系统的软硬件环境;
2.功能设计部分,主要阐述本系统的总体功能结构和各主要功能的处理流程;
3.数据库设计部分,包括数据库系统概念设计、数据库逻辑设计和数据库物理设计;
4.系统实现部分,主要用代码和效果截图阐述数据库连接的实现、用户登录功能的实现和系统各个主要管理功能的实现;
5.总结部分,主要阐述在本次课程设计的完成情况和在设计过程中中遇到的问题及个人的收获和认识。
指导导师评语
成绩: 指导导师(签名): 年 月 日
图书出版发行管理系统
摘 要
本系统是数据库原理课程设计,要求根据题目设计并完成一个图书出版发行管理系统,实现对图书信息和作者信息的管理以及读者对书可以评价等功能。本文针对课程设计题目,按照软件工程的结构化设计思想,经过需求分析、概要设计、详细设计、系统测试等几个阶段,使用E-R图、数据流图、程序流程图等实现了不同用户对于各种信息的管理。
本系统以Microsoft Visual Studio 2005为基本开发平台,配合数据库SQL Server 2005,实现了管理员用户对图书信息的管理、管理员用户对读者信息的管理、读者用户对图书信息的管理及对评价信息的管理等功能。
关键词:数据库 C# 信息管理 图书
目 录
一 需求分析 5
1.1 用户需求 5
1.2 系统功能需求 6
1.3 系统性能需求 6
1.4 系统软硬件环境确定 6
二 系统功能设计 8
2.1 系统功能结构 8
2.2 系统功能处理流程 9
三 系统数据库设计 14
3.1数据库概念设计 14
3.2数据库逻辑设计 14
3.3数据库物理设计 16
四 系统实现 17
4.1数据库连接的实现 17
4.2用户登录功能及新用户注册功能的实现 17
4.3管理员对于图书管理功能的实现 23
4.4管理员对于读者信息管理功能的实现 28
4.5读者对于图书信息管理功能的实现 30
五 小结 31
参考文献 32
一 需求分析
1.1 用户需求
本系统模拟出版社的图书出版发行管理内容,包括图书信息管理、作者信息管理、读者信息管理、读者对图书评价管理等功能模块,用户的主要需求如下:
(1)能分类管理图书、作者的基本信息。
(2)能进行信息的录入、查询、删除操作。
(3)具有一定的权限,分为管理员、读者两种不同用户,读者不可进行图书信息的录入和删除。
1.2 系统功能需求
系统的功能需求有:
(1)在SQL Server中,建立各关系模式对应的库表并初始化各表,确定各表的主键。
(2)能实现图书、作者、评价等基本信息的录入操作。
(3)能明细实现如下各类查询:
①能查询图书的基本信息,能按图书的书名、书号等条件进行查询。
②能查询作者的基本信息,能按作者的姓名、作者号等条件进行查询。
③能查询读者的基本信息,能按读者的读者名、读者号等条件进行查询。
(4)能实现图书、作者、评价等基本信息的删除操作。
(5)用户管理功能,包括用户登录等功能。
1.3 系统性能需求
在出版社图书的规模日益扩增、图书类别日益繁琐、出版社与发行社频繁交易、行业竞争激烈的大环境下,如果还是采用传统的管理方式,将会造成巨大的人力和物力的浪费,所以此系统要做到在性能上满足以下要求:
(1)操作简单易学,不要求过高的计算机技术技能。
(2) 利用数据库保存基本信息,数据储存安全稳定,能够实现信息的添加、查询、删改等功能。
(3)具有一定的访问权限,防止信息被随意篡改。
(4)人机界面友好,功能操作便捷合理
1.4 系统软硬件环境确定
本图书出版发行管理系统在Window 7环境下开发,并保证能够在Windows XP及以上版本中兼容运行。
开发平台:Microsoft Visual Studio 2005。
开发语言:C#。
数据库平台:SQL Server 2005。
二 系统功能设计
2.1 系统功能结构
图书出版发行管理系统的目的是实现图书信息的管理(图书信息的录入、查询和删除)、作者信息的管理(作者信息的录入、查询和删除)、评价信息的管理以及一些其他功能。
评价信息的管理
评价信息录入
评价信息查询
评价信息删除
其他功能
作者信息的管理
作者信息录入
作者信息查询
作者信息删除
图书信息的管理
图书信息录入
图书信息查询
图书信息删除shanchu
图书出版发行管理系统
读者信息的管理
读者信息录入
读者信息查询
读者信息删除
图书出版发行管理系统的用户包括普通用户(读者)和管理员两类,系统的结构图如下所示:
图2-1 系统结构图
2.2 系统功能处理流程
本软件的数据流图如下:
图书出版发行管理系统
管理员
读者
管理员登录
读者登录
信息录入
注册
信息删除
信息查询
信息查询
图2-2 顶层数据流图
用户
反馈
用户
查询
信息
更新数据库
反馈
用户
事务
接收事务
事务
更新数据库
信息
信息
接收事务
事务
录入
信息
更新数据库
事务
事务
删除
信息
更新数据库
反馈
用户
图2-3 整体数据流图
各模块用户权限及操作如下:
(1)图书信息管理模块
① 信息录入部分:用户(只有管理员拥有该权限)将图书的基本信息通过系统录入数据库。
② 信息查询部分:用户(所有成员均有此权限)根据自己所需要的条件查询对应图书的基本信息,可分别按书名、书号等条件进行查询,并给予显示。
③ 信息删除部分:用户(只有管理员拥有该权限)将具备条件的图书信息从数据库中删除。
对应流程图分别如下:
输入需要录入的图书的基本信息
录入程序
系统数据库
显示录
入图书基本信息
事务
图2-4 图书信息录入流程图
输入需要查询的图书的基本信息
查询程序
系统数据库
显示查
询的图
书的基
本信息
事务
图2-5 图书信息查询流程图
输入需要删除的图书的基本信息
删除程序
系统数据库
事务
图2-6 图书信息删除流程图
(2)作者信息管理模块
① 信息录入部分:用户(只有管理员拥有该权限)将作者的基本信息通过本模块录入数据库。
② 信息查询部分:用户(所有成员均有此权限)根据自己所需要的条件查询对应作者的基本信息,可分别按姓名、性别、籍贯等条件进行查询,并给予显示。
③ 信息删除部分:用户(只有管理员拥有该权限)将具备条件的作者信息从数据库中删除。
对应流程图与图书信息流程图类似,不再赘述。
(3)评价信息管理模块
① 信息录入部分:用户(只有读者拥有该权限)将图书评价的基本信息通过本模块录入数据库。
② 信息查询部分:用户(所有成员均有此权限)根据自己所需要的条件查询对应图书评价的基本信息,并给予显示。
③ 信息删除部分:用户(只有读者拥有该权限)将图书评价的基本信息通过本模块从数据库中删除。
对应流程图与图书信息流程图类似,不再赘述。
(4)读者信息管理模块
④ 信息录入部分:用户(只有读者拥有该权限)将自己的基本信息通过本模块录入数据库。
⑤ 信息查询部分:用户(所有成员均有此权限)根据自己所需要的条件查询对应读者基本信息,并给予显示。
⑥ 信息删除部分:用户(只有管理员拥有该权限)将读者的基本信息通过本模块从数据库中删除。
对应流程图与图书信息流程图类似,不再赘述。
三 系统数据库设计
3.1数据库概念设计
为了把用户的数据清楚准确的表达出来,我们要建立一个概念性的数据模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,并脱离在软件系统中的实现方法。
数据模型中包含四种数据:数据对象、数据对象的属性以及数据对象彼此间相互连接的关系。在本系统中,数据对象及其属性如下:
① 图书信息:包括图书ID、书名、作者ID、价格、图书简介。
② 作者信息:包括作者ID、姓名、性别、年龄。
③ 评价信息:包括读者ID、图书ID、评价内容。
④ 读者信息:包括读者ID、读者姓名、读者密码。
⑤ 管理员信息:包括管理员ID、管理员密码。
数据对象的相互关系如下:
图书简介
评价内容
作者
读者
图书
评价
属于
图书ID
书名
价格
作者ID
姓名
性别
年龄
读者ID
读者姓名
管理员
管理
管理
管理
管理员ID
管理员密码
读者密码
图3-1 E-R图
3.2数据库逻辑设计
关系模型的逻辑结构是一组关系模式的集合。而E-R图则是由实体性、实体的属性和实体型之间的联系三个要素组成的。所以将E-R图转换为关系模型实际上就是要将实体型、实体的属性和实体之间的联系转换为关系模式,并确定这些关系模式的属性和码。
把上述E-R图转换为关系模型,关系的主码用下横线标出。本图书出版发行管理系统的关系模型如下:
图书(图书ID,书名,作者ID,价格,图书简介)
作者(作者ID,作者姓名,性别,年龄)
评价(读者ID,图书ID,评价内容)
读者(读者ID,读者姓名,读者密码)
管理员(管理员ID,管理员密码)
本系统共涉及五个表。根据前面做出的一系列分析过程,可以确定出各数据库基表的字段构成。应用SQL Server 2005创建Book、Author、Evaluate、Reader、Administrator五个表,字段名称、数据类型、长度、说明如下:
1.Book表:
表 3-1 Book表
字段名称
数据类型
长度
说明
是否允许为空
BookID
int
4
图书ID(主键)
否
BookName
nvarchar
50
书名
否
AuthorName
nvarchar
50
作者ID
否
BookPrice
real
real
价格
否
BookIntroduction
nvarchar
200
图书简介
是
2.Author表:
表 3-2 Author表
字段名称
数据类型
长度
说明
是否允许为空
AuthorID
int
4
作者ID(主键)
否
AuthorName
nvarchar
50
作者姓名
是
3.Evaluate表:
表 3-3 Evaluate表
字段名称
数据类型
长度
说明
是否允许为空
ReaderID
int
4
读者ID(主键)
否
BookID
int
4
图书ID(主键)
否
Evaluate
nvarchar
200
评价内容
是
4.Reader表:
表 3-4 Reader表
字段名称
数据类型
长度
说明
是否允许为空
ReaderID
int
4
读者ID(主键)
否
ReaderName
nvarchar
50
读者姓名
否
ReaderCode
nvarchar
50
读者密码
否
5. Administrator表:
表3-5 Administrator表
字段名称
数据类型
长度
说明
是否允许为空
AdministratorID
int
4
管理员ID(主键)
否
AdministratorName
nvarchar
50
管理员姓名
否
AdministratorCode
nvarchar
50
管理员密码
否
3.3数据库物理设计
得到系统逻辑模型后,就该进行数据库的物理设计和实施数据库了,物理设计主要是要确定数据库的存储路径、存储结构以及建立索引等,采用的均是系统的默认设置。结合SQL Server2005的特点,可视化的完成了基本表的建立。由于数据库并不是特别大,为保证数据查找的速度并没有建立索引和视图。
四 系统实现
本图书出版发行管理系统将访问人员分为两类:读者和管理员。其中读者访问权限较低,能够查询最基本的图书信息,作者信息和评价信息;管理员得权限较高,不仅能完成包括图书信息、作者信息、评价信息等各种信息的查询功能,也能够实现对图书信息、作者信息的录入及删除功能,还有对读者信息的删除功能;另外读者有一个对图书评价的权限是管理员不具备的。
4.1数据库连接的实现
在本系统中需要多次访问数据库,并对数据进行添加、查询、删除操作,因此可以创建了一个公用的模块,在该模块中实现对数据库的所有访问。
其代码如下:
public static void Start()
{
if (conn.State == ConnectionState.Open)
conn.Close();
ConnectionString = "Integrated security=SSPI;" +
"initial catalog=book;" +
"data source=localhost;";
conn.ConnectionString = ConnectionString;
conn.Open();
}
4.2用户登录功能及新用户注册功能的实现
运行程序后,首先选择登录窗口,分为读者和管理员两项。无论是哪种用户进行选择后都要输入用户ID和密码。输入正确的用户ID和密码后可成功登录,进行后续操作,否则提示错误。不同的用户有不同的权限,权限的设置保证数据库中数据与信息的安全性,防止信息被随意篡改的情况发生。各种人员的登陆界面及重要代码如下所示:
(1)系统登录界面如下:
图4-1 系统登录界面图
(2)管理员用户登录窗口如下:
图4-2 管理员用户登录界面图
登录成功后界面如下:
图4-3 管理员用户操作界面图
若不成功,则提示出错。
图4-4 登录失败界面图
(3)读者用户登录窗口如下:
图4-5 读者用户登录界面图
登录成功后界面如下:
图4-6 读者用户操作界面图
若登录失败,则如图4-4所示,提示出错。
登录模块主要代码如下:
private void button1_Click(object sender, EventArgs e)
{ if (ReaderID.Text == "")
MessageBox.Show("请输入账号");
else
{function.Start();
function.sql = "SELECT * FROM reader " + "where readerid=" + ReaderID.Text + " and readercode='" + ReaderCode.Text + "'";
SqlDataAdapter da = new SqlDataAdapter(function.sql, function.conn);
//创建数据集对象并填充数据
DataSet ds = new DataSet();
try
{da.Fill(ds);
DataTable dt = ds.Tables[0];
if (dt.Rows.Count == 0)
{ MessageBox.Show("账号或密码错误,请重新输入!");
ReaderID.Text = "";
ReaderCode.Text = "";
}
else
{Reader Form = new Reader();
Form.MdiParent = this.MdiParent;
Form.Show();
father = (MainForm)this.MdiParent;
onereader.ReaderId = ReaderID.Text;
this.Close();
father.button1.Visible = false;
father.button2.Visible = false; }}
catch//如果账号数据类型不对会出错!应该有try——catch来抛出错误,防止系统崩溃
{MessageBox.Show("账号应为数字!");
}
}
}
(4)管理员用户是系统规定的,不能任意添加或删除。读者用户是可以随意注册的,在读者登录界面点击“注册新用户”,进入注册界面,如下:
图4-7 读者用户注册界面图
输入账号后可以点击“账号验证”进行账号的检验,若账号已存在则不可用;若不存在,则可用,对应界面如下:
图4-8 注册账号验证失败界面图 图4-9 读者注册账号验证成功界面图
账号、姓名、密码的输入后,如果各项符合条件,则注册成功,系统会给与提示:
图4-10 读者用户注册成功界面图
如果注册失败(已存在此账号或账号、姓名、密码中有未填项),系统会提示出错:
图4-11 读者用户注册失败界面图
账号注册模块主要代码如下:
private void button2_Click(object sender, EventArgs e)
{ if (regiID.Text == "")
MessageBox.Show("请输入账号");
else
{function.Start();
function.sql = "SELECT * FROM reader where readerid=" + regiID.Text;
//适配器
SqlDataAdapter da = new SqlDataAdapter(function.sql, function.conn);
//数据集
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{MessageBox.Show("账号已存在,请重新选择账号!");
regiID.Text = "";
}
else
MessageBox.Show("恭喜您,该账号可以使用!");
}
}
private void btn_Registration_Click(object sender, EventArgs e)
{ if (regiID.Text == "" || regiName.Text == "" || regicode.Text == "")
MessageBox.Show("每一项均为必填项!请检查!");
else
{function.Start();
function.sql = "SELECT * FROM reader where readerid=" + regiID.Text;
//适配器
SqlDataAdapter da = new SqlDataAdapter(function.sql, function.conn);
//数据集
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{ MessageBox.Show("账号已存在,请重新选择账号!");
regiID.Text = "";
}
else
{function.Start();
function.sql = "insert into reader(readerid,readername,readercode)" + "values(" + regiID.Text + ",'" + regiName.Text + "','" + regicode.Text + "')";
function.cmd = new SqlCommand(function.sql, function.conn);
try
{function.cmd.ExecuteNonQuery();
}
catch (SqlException ae)
{
MessageBox.Show(ae.Message.ToString());
return;//出错返回
}
MessageBox.Show("恭喜您,注册成功!");
this.Close();
}
} }
4.3管理员对于图书管理功能的实现
图书的基本信息包括图书ID、作者ID、书名、价格以及图书的简介。此模块提供了图书基本信息录入、查询和删除三个功能。
(1)管理员用户图书管理功能界面如图4-3所示。管理员用户可分别按照图书ID、作者ID、作者姓名、书名、价格进行查询,并给与显示。查询结果(以按作者查询为例)如下图所示:
图4-12 查询结果图
(2)管理员用户拥有最高权限,除了完成信息的查询功能之外,还具有信息的录入和删除功能。管理员的图书信息管理功能(以录入图书基本信息为例)如下所示:
图4-13 管理员图书信息录入功能界面图
在完成信息录入功能时,若信息填写不全(图书ID、作者ID、书名、价格必须填写,简介可不填)或者本图书ID已存在时会有错误提醒:
图4-14 信息保存提示界面图
根据查询结果删除图书信息,删除成功后界面如下所示:
图4-15 信息删除询问界面图 图4-16 信息删除成功界面图
(3)管理员可以查看、删除读者对于图书的评价,界面如下:
图4-17 评价管理界面图
(4)图书信息管理部分主要代码如下:
private void btnsavebook_Click(object sender, EventArgs e)
{try
{if (BookID.Text == "" || AuthorID.Text == "" || AuthorName.Text == "" || BookName.Text == "" || BookPrice.Text == "")
{MessageBox.Show("除简介外均为必填项,请检查!");
}
else
{
function.Start();
function.sql = "select * from book where bookid=" + BookID.Text;
SqlDataAdapter da = new SqlDataAdapter(function.sql, function.conn);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{MessageBox.Show("书号已存在,请检查!"); }
else
{function.sql = "insert into book(bookid,bookname,authorid,bookprice,bookintroduction)values(" +BookID.Text + ",'" + BookName.Text + "'," + AuthorID.Text + "," + BookPrice.Text + ",'" + BookIntroduction.Text + "')"; function.ExecuteSQLStmt(function.sql);
MessageBox.Show("添加新书成功!");//说什么动态扩展,还是得定义足够大啊!定义图书简介为1000字
function.sql = "select*from author where authorid=" + AuthorID.Text;
da = new SqlDataAdapter(function.sql, function.conn);
ds = new DataSet();
da.Fill(ds);
dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{//什么也不做
}
else
{function.sql = "insert into author(authorid,authorname)values(" + AuthorID.Text + ",'" + AuthorName.Text + "')";
function.ExecuteSQLStmt(function.sql);
MessageBox.Show("有新作者,已加入数据库!");
}
}
}
}
catch
{MessageBox.Show("书号和作者号必须为数字!");
}
}
private void btnselectbook_Click(object sender, EventArgs e)
{try
{string buffer = "select bookid,bookname,book.authorid,authorname,bookprice,bookintroduction from book,author where book.authorid=author.authorid";
if (BookID.Text != "")
buffer += " and bookid=" + BookID.Text;
if (AuthorID.Text != "")
buffer += " and book.authorid=" + AuthorID.Text;
if (AuthorName.Text != "")
buffer += " and authorname='" + AuthorName.Text + "'";
if (BookName.Text != "")
buffer += " and bookname='" + BookName.Text + "'";
if (BookPrice.Text != "")
buffer += " and bookprice=" + BookPrice.Text;
function.sql = buffer;//形成完整的查询语句
function.Start();
da = new SqlDataAdapter(function.sql, function.c
展开阅读全文