书店租赁管理系统 2.docx
《书店租赁管理系统 2.docx》由会员分享,可在线阅读,更多相关《书店租赁管理系统 2.docx(26页珍藏版)》请在冰豆网上搜索。
书店租赁管理系统2
数据库课程设计报告
设计题目:
书店租凭管理系统
学生姓名:
系别:
专业:
班级:
功能模块:
同组同学:
学号:
指导教师:
目录
第一章问题描述4
1.1问题描述4
2.1可行性研究4
第二章需求分析6
2.1功能需求6
2.2数据流图7
2.3数据字典8
2.4书店租赁管理系统的性能需求10
2.5书店租赁管理系统的运行需求11
第三章概要设计12
3.1系统模块划分12
3.2书店租赁管理系统层次结构图13
3.3模块之间的接口设计13
第四章书店租赁管理系统详细设计15
4.1书店租赁管理系统数据库的设计15
4.1.1书店租赁管理系统E-R模型15
4.1.2书店租赁管理系统数据库表的结构16
4.2书店租赁管理系统主要模块的程序流程图19
4.2.1“会员借书”程序流程图19
4.2.2“会员还书”程序流程图21
4.2.2“查询会员个人借书情况”程序流程图22
4.3档案管理模块界面23
4.3.1“会员个人借书情况”界面23
4.3.2“会员借书”界面23
4.3.2“会员还书”界面24
第五章书店租赁管理系统编码26
5.1核心代码(管理员增删改查操作)26
第六章档案管理模块测试43
6.1“会员借书”单元测试43
第七章总结45
参考资料46
第一章问题描述
1.1问题描述
在当今社会,随着计算机的发展及网络技术的应用,计算机应用在全球范围内的普及。
当今社会正快速向信息化社会前进,信息自动化的作用也越来越大。
而在日常生活中信息技术的不断融入,在技术越来越先进的同时,我们应该从以前繁琐的事务中解放出来,来提高了我们的工作效率。
而目前在在一些中小型书店中,工作大部分还是进行着手工管理,工作起来效率很低,并且不能及时了解书店各类图书的库存,读者比较需求的图书难以在短时间里找到、图书的入库和更新比较麻烦等等,不便于动态及时调整图书结构。
由于不可避免的人为因素,造成数据的遗漏、误报。
为了更好的适应当前读者的借阅需求,缓解手工管理存在的许多弊端,计算机信息化管理有着储存信息量大,速度快、便于管理等特点,提供给我们的处理信息及时快捷,在工作中不仅减缓了压力,同时提高了我们工作人员的自身素质。
因此我们利用计算机提供给我们信息,及时的调整书店图书结构,并且对读者的借阅过程形成一整化动态的管理。
2.1可行性研究
任何一个系统或一项工程,在建立之前,必须首选进行可行性分析,可行性分析包括两层含义,一是可能性,二是必要性。
可能性指开发信息系统的条件是否具备,必要性是指客观上是否真正需要,通过可行性研究,可避免盲目投资,减少政治性要的损失。
下面从四方面来讨论:
2.1.1 经济可行性
主要是只指算一个新的系统开发所需要的投资费用和运算费用,并与估计的新系统收益进行比较,看是否有利。
本系统所需的软硬件成本比较低,投资小,具有一定的通过性,因此,在经济上是可行的。
2.1.2 时间可行性
主要包括系统在目前环境下能否正常运行,运行后所引起的各方面,以及这些变化对社会或人的因素所产生的影响。
本系统对人事的管理比较全面,可长期使用。
2.1.3 技术可行性
利用现有的设备,软件及技术人员,新系统的目标能否达到,这也是可行性研究中需要考虑的一个问题。
关系型数据库的高速发展使管理信息系统具备了良好的开发环境。
本系统使用的Delphi普及性好,操作简单,用户可以很快掌握使用方法,因此,在技术上是完全可行的。
2.1.4 社会可行性
人类社会文明的发展已进入信息化的高速发展时期,传统的手工方式支持下的管理模式,已经不能满足各方面的需要。
开发本系统的目标不仅是提高工作效率,减轻劳动强度,而且减少出错率,具有很好的社会意义。
第二章需求分析
2.1功能需求
在本系统中管理员应该完成如下操作:
1.对会员信息,图书信息,借阅信息,收入信息的添加、修改和删除操作。
2.利用关键字对会员个人借阅情况和书籍信息进行查询操作。
3.对会员和非会员进行借书和还书管理。
4.对过期会员进行自动检索,并进行处理。
2.2数据流图
图1.书店租赁系统整体数据流图
2.3数据字典
(1)会员编号数据项定义
数据项定义
数据项编号:
1有关编码的说明:
数据项名称:
会员编号XXXXX
简介:
本书店会员编号会员类别编号
类型及宽度:
char
长度:
5
实例:
A0001
表1.会员编号数据项定义
(2)会员借书信息数据流定义
数据流定义
数据流名称:
会员借书信息数据流编号:
FD-1
简述:
对会员借书进行登记
数据流来源:
管理员
数据流去向:
数据库
数据流组成:
店内编号
会员号
已借册数
允许借书
借出日期
表2.会员借书信息数据流定义
(3)会员信息表数据存储定义
数据存储定义
名称:
会员信息表编号:
D1
简述:
书店会员的基本信息有关数据流:
D1P1
数据存储组成:
会员号
会员姓名
会员性别
会员类型
到期日期
表3.会员信息表数据存储定义
2.4书店租赁管理系统的性能需求
为了保证系统能够长期安全、稳定、可靠、高效的运行,书店租赁管理系统应该满足以下的性能需求:
1.系统处理的准确性和及时性
由于书籍的借出与归还等对书租赁管理系统的修改及查询功能有影响,以致于对于整个系统的功能和性能完成有举足轻重的作用。
作为系统的很多数据来源,会员过期等又影响到书店的管理及收益,其准确性很大程度上决定了书店租赁管理系统的成败。
在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性。
2.系统的易用性和易维护性
书店租赁管理系统是直接面对使用人员的,而使用人员往往对计算机并不非常熟悉。
这就要求系统能够提供良好的用户接口,易用的人机交互界面。
要求系统应该尽量使用用户熟悉中文信息的界面;针对用户可能出现的使用问题,提供足够的帮助,缩短用户对系统熟悉的过程。
2.5书店租赁管理系统的运行需求
(1):
硬件配置
个人计算机:
PⅢ500MHz以上/128M内存/10G硬盘
(2):
软件配置
操作系统:
WindowsXP
数据库服务器:
MicrosoftSQLServer2000
前端开发软件:
MicrosoftVisualStudio2005C#
第三章概要设计
3.1系统模块划分
1.信息管理模块:
会员信息,图书信息,借阅信息,收入信息的添加、修改和删除操作。
2.查询模块:
利用相应关键字对会员个人借阅情况和书籍信息进行查询操作。
3.图书借阅模块:
对会员和非会员进行借书和还书管理。
4.过期会员管理模块:
对过期会员进行自动检索,并进行处理。
3.2书店租赁管理系统层次结构图
图2.书店租赁管理系统层次结构图
3.3模块之间的接口设计
1.在书店租赁管理系统中,系统需调用数据维护、查询、借阅管理、过期会员四个模块;
2.查询模块要调用数据维护模块中会员信息子模块和借阅信息子模块。
3.借阅管理模块要调用数据维护模块中所有的子模块信息。
4.过期会员模块中要用到数据维护模块中会员信息子模块的会员编号这个参数。
5.同时,各个模块的子模块都被它的上层模块调用。
6.数据维护各模块对应相应的数据库表,都是相互独立的模块。
第四章书店租赁管理系统详细设计
4.1书店租赁管理系统数据库的设计
4.1.1书店租赁管理系统E-R模型
图3.书店租赁管理系统E-R模型
4.1.2书店租赁管理系统数据库表的结构
会员信息表(MemberInfo)
列名
含义
数据类型
备注
会员编号
会员编号
char
主码
姓名
姓名
char
工作单位
工作单位
char
联系电话
联系电话
char
性别
性别
char
会员类别
权限分类
char
到期日期
会员到期日期
datetime
已借册数
已在书店借的册数
char
允许借书
是否允许借书
char
表4.会员信息表
书籍信息表(BookInfo)
列名
含义
数据类型
备注
书号
图书ISBN编号
char
主码
书名
图书名称
date
定价
图书价格
mumeric
所属丛书
图书分类
char
出版社
出版社
char
出版日期
出版日期
datetime
作者
图书作者
char
责任编辑
图书责任编辑
char
引进册数
书店购买的册数
numeric
目前库存量
目前图书库存量
numeric
关键字
图书内容关键字
char
表5.书籍信息表
书号_店内编号表(BookID_InsideID)
列名
含义
数据类型
备注
书号
图书ISBN号
char
主码
店内编号
图书店内编号
char
主码
是否借出
图书是否借出
char
表6.书号_店内编号表
收入表(Income)
列名
含义
数据类型
备注
日期
收入日期
datetime
主码
类别
收入类别
char
金额
收入金额
numeric
表7.收入表
借阅信息表(BorrowInfo)
列名
含义
数据类型
备注
会员编号
会员编号
char
主码
店内编号
图书店内编号
char
主码
借出日期
图书借出日期
datetime
归还日期
图书归还日期
datetime
是否归还
图书是否归还
char
押金
押金
numeric
表8.借阅信息表
4.2书店租赁管理系统主要模块的程序流程图
4.2.1“会员借书”程序流程图
图4.“会员借书”程序流程图
4.2.2“会员还书”程序流程图
图5.“会员还书”程序流程图
4.2.2“查询会员个人借书情况”程序流程图
图6.“查询会员个人借书情况”程序流程图
4.3档案管理模块界面
4.3.1“会员个人借书情况”界面
图7.“会员个人借书情况”界面
4.3.2“会员借书”界面
图8.“会员借书”界面
4.3.2“会员还书”界面
图9.“会员还书”界面
第五章书店租赁管理系统编码
5.1核心代码(管理员增删改查操作)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespacemyBookStore
{
publicpartialclassAdminForm:
Form
{
privateDataSetdataset=newDataSet();
privateSqlDataAdapterdataAdapter;
publicAdminForm()
{
InitializeComponent();
}
privatevoidtsmiAddMemberInfo_Click(objectsender,EventArgse)
{
AddMemberInfoFormaddMemberInfoForm=newAddMemberInfoForm();
addMemberInfoForm.Show();
}
privatevoidbtnSearchMember_Click(objectsender,EventArgse)
{
if(txtSearchMemberId.Text==""&&txtSearchName.Text=="")
{
MessageBox.Show("请输入要查找的会员Id或会员姓名!
");
//txtSearchMemberId.Focus();
}
elseif(txtSearchMemberId.Text!
="")
{
//dataset.Tables["MemberInfo"].Clear();
stringsql=string.Format("select*fromMemberInfowhereMemberId={0}",txtSearchMemberId.Text);
SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
SqlDataReaderdataReader;//定义一个DataReader对象
DBHelper.connection.Open();
dataReader=command.ExecuteReader();//执行查询用户命令
//lvSearchMember.Items.Clear();//清除ListView中所有项
//如果没有要找的数据项,提示
if(!
dataReader.HasRows)
{
MessageBox.Show("没有找到你要查询的会员Id,请重新输入!
");
dataReader.Close();
DBHelper.connection.Close();
}
else
{
dataReader.Close();
DBHelper.connection.Close();
FillListView1();
}
}
else
{
stringsql=string.Format("select*fromMemberInfowhereNamelike'%{0}%'",txtSearchName.Text);
SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
SqlDataReaderdataReader;//定义一个DataReader对象
DBHelper.connection.Open();
dataReader=command.ExecuteReader();//执行查询用户命令
//lvSearchMember.Items.Clear();//清除ListView中所有项
//如果没有要找的数据项,提示
if(!
dataReader.HasRows)
{
MessageBox.Show("没有找到你要查询的姓名,请重新输入!
");
dataReader.Close();
DBHelper.connection.Close();
}
else
{
dataReader.Close();
DBHelper.connection.Close();
FillListView2();
}
}
}
privatevoidFillListView1()
{
//查询语句
stringsql=string.Format("select*fromMemberInfowhereMemberId={0}",txtSearchMemberId.Text);
dataAdapter=newSqlDataAdapter(sql,DBHelper.connection);
dataAdapter.Fill(dataset,"MemberInfo");
dgvInFrom.DataSource=dataset.Tables["MemberInfo"];
}
privatevoidFillListView2()
{
//查询语句
stringsql=string.Format("select*fromMemberInfowhereNamelike'%{0}%'",txtSearchName.Text);
dataAdapter=newSqlDataAdapter(sql,DBHelper.connection);
dataAdapter.Fill(dataset,"MemberInfo");
dgvInFrom.DataSource=dataset.Tables["MemberInfo"];
}
privatevoidFillListView3()
{
//查询语句
stringsql=string.Format("select*fromBookInfowhereBookNum={0}",txtBookNum.Text);
dataAdapter=newSqlDataAdapter(sql,DBHelper.connection);
dataAdapter.Fill(dataset,"BookInfo");
dgvInFrom.DataSource=dataset.Tables["BookInfo"];
}
privatevoidFillListView4()
{
//查询语句
stringsql=string.Format("select*fromBookInfowhereBookNamelike'%{0}%'",txtBookName.Text);
dataAdapter=newSqlDataAdapter(sql,DBHelper.connection);
dataAdapter.Fill(dataset,"BookInfo");
dgvInFrom.DataSource=dataset.Tables["BookInfo"];
}
privatevoidbtnClear_Click(objectsender,EventArgse)
{
dataset.Tables["MemberInfo"].Clear();
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
DialogResultresult=MessageBox.Show("确定要将修改保存到数据库吗?
","操作提示",
MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
if(result==DialogResult.OK)
{
//自动生成用于修改的Command命令
SqlCommandBuilderbuilder=newSqlCommandBuilder(dataAdapter);
//将数据集中的member表的数据提交给数据库更新
dataAdapter.Update(dataset,"MemberInfo");
}
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
foreach(DataGridViewRowrindgvInFrom.SelectedRows)
{
if(!
r.IsNewRow)
{
dgvInFrom.Rows.Remove(r);
}
}
}
privatevoidbtnSearchBookInfo_Click(objectsender,EventArgse)
{
if(txtBookNum.Text==""&&txtBookName.Text=="")
{
MessageBox.Show("请输入要查找的书籍Id或书籍名称!
");
//txtSearchMemberId.Focus();
}
elseif(txtSearchMemberId.Text!
="")
{
//dataset.Tables["MemberInfo"].Clear();
stringsql=string.Format("select*fromBookInfowhereBookNum={0}",txtBookNum.Text);
SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
SqlDataReaderdataReader;//定义一个DataReader对象
DBHelper.connection.Open();
dataReader=command.ExecuteReader();//执行查询用户命令
//lvSearchMember.Items.Clear();//清除ListView中所有项
//如果没有要找的数据项,提示
if(!
dataReader.HasRows)
{
MessageBox.Show("没有找到你要查询的会员Id,请重新输入!
");
dataReader.Close();
DBHelper.connection.Close();
}
else
{
dataReader.Close();
DBHelper.connection.Close();
FillListView3();
}
}
else
{
stringsql=string.Format("select*fromBookInfowhereBookNamelike'%{0}%'",txtBookName.Text);
SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
SqlDataReaderdataReader;//定义一个DataReader对象
DBHelper.connection.Open();
dataReader=command.ExecuteReader();//执行查询用户命令
//lvSearchMember.Items.Clear();//清除ListView中所有项
//如果没有要找的数据项,提示
if(!
dataReader.HasRows)
{
MessageBox.Show("没有找到你要查询的姓名,请重新输入!
");
dataReader.Close();
DBHelpe