图书借阅管理系统实验报告.docx
- 文档编号:28549062
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:28
- 大小:283.29KB
图书借阅管理系统实验报告.docx
《图书借阅管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
图书借阅管理系统实验报告
面向对象课程设计报告
——图书借阅管理系统
班级:
学号:
姓名:
一、课程设计题目
图书借阅管理系统
二、需求分析
1.图书借阅管理系统的概述
科学技术的进步和生产的发展使人类知识总量的增长不断加快,生产社会化趋势的扩大和社会对产品需求的多样性使得组织在营运活动中所涉及的内部和外部信息量迅速地膨胀起来。
面对激烈的市场竞争,人们对这些信息进行收集、加工、传递等过程的时间性和准确性提出了更高的要求。
这一切使得传统的手工作业为基础的信息系统陷入了机构日益庞大,效率日益降低的困境。
电子计算机的出现为摆脱这种困境找到了出路。
计算机用于管理信息处理的突出优点是迅速、准确、可靠、具有很大的存储能力,适应于管理信息量大、面宽的特点,适合于管理信息处理及时、准确的要求。
图书借阅管理系统是一个由人和计算机等组成的能够提供信息以支持一个组织机构内部的作业、管理、分析和决策职能的系统。
图书借阅管理系统利用计算机的硬件和软件,手工规程、分析、计划、控制和决策用的模型,以及数据库对信息进行收集、传输、加工、保存和使用。
因此,图书借阅管理系统是一个图书信息处理系统。
图书管理系统需要满足来自图书馆工作人员、普通用户和借阅者三方面人员的需求。
图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认,还可通过图书编号、借阅者证号等查询相应的借阅情况及查看已归还的图书信息(即历史信息);普通用户的需求是查询图书馆所存的图书的相关情况;图书借阅者的需求是查看自己的相关信息及查询自己的借阅情况。
图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。
一般情况下.图书借阅者只应该查询和维护本人的借书情况和个人信息.若查询和维护其他借阅者的借书情况和个人信息.就要知道其他图书借阅者的借书证号和密码。
本功能实现对馆内图书信息的查询。
可以通过图书名称、作者的名字和出版社来查询相应的图书信息,此查询可模糊查询也可精确查询。
所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。
2.系统开发的目的与意义
图书借阅管理系统开发的目的是为图书管理单位提供图书信息管理和提高图书借阅管理工作的效率。
图书借阅管理系统是一个图书借阅单位不可缺少的部分,它的内容对于图书借阅单位的决策者和管理者来说都至关重要,所以图书借阅管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式数据信息,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对图书借阅信息进行管理,具有手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高图书借阅管理工作的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
本系统是由MicrosoftVisualStudio2010开发软件工具下分析、设计、开发图书借阅管理系统的过程。
通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库编程实践,在指导老师的帮助下,已经基本上成功地实现了设计要求。
使得我们设计的数据库系统能够实现用户管理,员工信息管理,客户信息管理,供货商信息管理,图书信息管理,图书借阅管理等功能。
该系统基本上满足了用户在图书采购借阅过程中的需求,用户界面友好。
图书馆工作人员有对图书借阅者借书和还书记录进行操作的权限,所以需对工作人员登陆本模块进行更多的考虑。
在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并生成相应的报表给用户查看和确认。
图书馆工作人员可以浏览、查询、统计、添加借阅图书的基本信息及删除已归还的图书的基本信息,但不能删除和修改已经借阅的图书相关信息,当删除某条图书借阅的基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。
本功能实现对图书信息的管理和统计。
图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。
本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。
图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行。
但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除,并且还应具有生成催还图书报表.并打印输出的功能。
3.系统分析的概况
系统分析是指在图书借阅管理系统开发的生命周期中系统分析阶段的各项活动和方法,应用系统思想和系统科学的原理进行分析工作的方法与技术。
系统分析阶段的目的,就是按照系统规划所定的某个开发项目范围内明确系统开发的目标和用户的信息需求,提出系统的逻辑方案。
系统分析在整个系统开发过程中,是要解决“做什么”的问题,即根据系统规划所确定的范围,对现行系统进行详细调查,尽可能弄清楚用户对信息的需求,调查原信息系统的资源,输入,处理和输出,描述现行系统的业务流程,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,也即提出新系统的逻辑模型,为下一阶段进行物理方案设计,解决“怎么做”提供依据。
因此,这个阶段又称逻辑设计阶段。
系统分析阶段的主要活动有:
系统初步调查、可行性研究、系统详细调查、新系统逻辑方案的提出。
4.可行性分析
4.1技术可行性
技术往往是系统开发过程中难度最大的工作,这其中必须进行风险分析、资源分析和技术分析,开发人员必须在给定的约束条件下,判断是否能在预定的计划顺利完成任务,但这些因素很难把握好,因为在开发的过程中往往会发生一些意外因素,综合各方面的困素,我们选择的是技术方面熟练VB和SQL2000,在windowxp环境下操作,并且都是组员熟悉的语言,即使遇到部分困难,也可以从丰富的参考书中找到解决方案网络能够正常运行,开发人员熟练掌握了面向过程或者是面向对象的开发工具,所以,在技术上实现系统是可行的。
4.2经济可行性
校园局域网可有效的利用,在加上学校领导对图书管理系统开发也表现出大力支持。
开发资金需求也较低,成熟的软硬件环境、目标系统并不是十分复杂,同时开发周期较短,人员经济支出有限。
开发完成运行后,为使用者带来便利,为系统的进一步推广创造了条件。
从经济角度考虑,此系统开发可行。
由于整个系统是自行开发,自行使用,所以系统本身不存在版权争议,符合国家各种政策法规。
可见,图书管理系统的开发是可行的。
4.3系统运行的可行性
各管理员熟练计算机的应用方法,掌握计算机的基本操作技能,而且对开发新图书管理系统提出相当好的建议。
该系统工作量小,一般情况下不会由于信息量大而造成麻烦。
因为这只是提供给管理员操作的简单软件,管理员同一时间只能做有限的事情。
有关数据库的存储量,就目前而言,客户的藏书量不是很大。
如果日后有所扩大,可以在原有基础上可作相应的扩充,这在SQL中是很容易办到的。
5.背景简述
随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。
目前,我国的科技水平高速发展,计算机作为今天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会——信息社会的重要支柱。
在这样的大背景下,现代图书借阅管理系统的开发就是在于提高图书管理的工作效率,加强图书馆的管理,全面实行计算机管理。
本实验针对当前我国图书管理多数采用人工管理的现状以及即使采用了计算机图书管理系统却不能完全满足本单位图书管理借还图书操作、书库维护操作等现状,对图书管理系统进行完善,基本上实现了简单实用的图书借阅管理。
三、概要设计
3.1.处理流程
采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。
这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。
采用dataset的连接模式
采用datareader的连接模式
3.2需求规定
主要输入输出项目:
图书信息:
(书名,ISBN,定价,出版社,数量,是否可借)
用户信息:
(ID,姓名,年龄,性别,开户时间,余额)
借阅信息:
(ID,ISBN,数量,借出日期,押金)
3.3运行环境
硬件环境:
CPU:
Intel(R)Core(TM)i5-5200UCPU@2.20GHz,内存4G,
软件环境:
VisualStudio2010
SQLServer2008R2
.NETFramework2.0
3.4基本设计概念和处理过程
3.5SC结构
3.6图书管理系统总体设计示意图
3.7系统出错处理设计
3.7.1出错信息
输入用户名不存在:
说明数据库没无此用户名,需开户。
密码错误:
说明用户名和密码不匹配。
弹出警告信息后需重新输入密码.
由于管理员没有及时保存数据造成的数据丢失:
可通过数据还原,还原成最近的数据备份。
3.7.2补救措施
故障出现后可能采取的变通措施,包括:
后备:
使用附加存储设备备份数据。
备份频率为每日一次。
需手动备份。
恢复及再启动:
如果数据造成丢失,可使用备份数据还原。
四、详细设计
系统采用三层架构设计
1.登陆模块
1.1.登陆界面
1 数据访问层
publicUserDoLogin(Useruser)
{
//实例化用户对象
Useru=newUser();
u.Password="";
stringsql="selectuserId,userName,[password]fromUserInfowhereuserName='"+user.UserName+"'";
DataTabledt=newDBHeper().Get(sql);
if(dt.Rows.Count>0)
{
u.UserId=Convert.ToInt32(dt.Rows[0][0]);
u.UserName=dt.Rows[0][1].ToString();
u.Password=dt.Rows[0][2].ToString();
}
returnu;
}
2 业务逻辑层
publicUserDoLogin(Useruser)
{
returnnewUserDAO().DoLogin(user);
}
3 表现层
stringuserName=this.txtUserName.Text.Trim();
stringuserPassword=this.txtPassword.Text.Trim();
Useruser=newUser();
user.UserName=userName;
this._user=newUserServices().DoLogin(user);
if(this._user.Password.Equals(userPassword))
{
returntrue;
}
else
{
MessageBox.Show("用户名或密码错误!
?
","提?
示?
",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
returnfalse;
2.系统设置
2.1.用户设置
//跳转到主界面
privatevoidtsmiUserS_Click(objectsender,EventArgse)
{
frmUserPopedomfup=newfrmUserPopedom();
fup.ShowDialog();
}
2.1.1添加用户
① 数据访问层
publicBooleanAdd(Useruser,UserPopedomup)
{
stringsql1=string.Format("INSERTINTOUserInfo(userName,[password])VALUES('{0}','{1}')",user.UserName,user.Password);
stringsql2=string.Format("INSERTINTOUserPopedom(userId,userSz,bookManage,readerManage,bookBorrow,bookBack,bookXj,gsjg,dzzx,addBook,addReader,bookQuery,readerQuery,borrowQuery,jrsj,zjtj,bpm,rpm)VALUES(@@identity,{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16})",up.UserSz,up.BookManage,up.ReaderManage,up.BookBorrow,up.BookBack,up.BookXj,up.Gsjg,up.Dzzx,up.AddBook,up.AddReader,up.BookQuery,up.ReaderQuery,up.BorrowQuery,up.Jrsj,up.Zjtj,up.Bpm,up.Rpm);
stringsql=sql1+sql2;
returnnewDBHeper().ZSG(sql);
}
② 业务逻辑层
publicBooleanAdd(Useruser,UserPopedomup)
{
returnnewUserDAO().Add(user,up);
}
③ 表现层
privatevoidbtnAddUser_Click(objectsender,EventArgse)
{
this.BtnZSG();
TextBoxReadOnlyF();
flag=1;
this.txtUserName.Focus();
ListViewItemlvi=newListViewItem("-");
this.lvwUserList.Items.Add(lvi);
}
2.2.修改密码
①数据访问层
publicBooleanUpdatePwd(Useruser)
{
stringsql=string.Format("updateuserInfoset[password]='{0}'whereuserId={1}",user.Password,user.UserId);
returnnewDBHeper().ZSG(sql);
}
②业务逻辑层
publicBooleanUpdatePwd(Useruser)
{
returnnewUserDAO().UpdatePwd(user);
}
③ 表现层
privatevoidbtnOk_Click(objectsender,EventArgse)
{
if(string.IsNullOrEmpty(this.txtOldPwd.Text))
{
MessageBox.Show("原密码不能为空!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
if(this.txtOldPwd.Text.Length<6)
{
MessageBox.Show("原密码必须大于6位!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
if(string.IsNullOrEmpty(this.txtNewPwd.Text))
{
MessageBox.Show("新密码不能为空!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
if(this.txtOldPwd.Text.Length<6)
{
MessageBox.Show("新密码必须大于6位!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
if(string.IsNullOrEmpty(this.txtNewPwd_.Text))
{
MessageBox.Show("确认密码不能为空!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
if(!
this.txtNewPwd_.Text.Trim().Equals(this.txtNewPwd.Text.Trim()))
{
MessageBox.Show("确认密码和新密码必须相同!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
Useruser=newUser();
user.UserId=this._user.UserId;
user.Password=this.txtNewPwd_.Text.Trim();
if(newUserServices().UpdatePwd(user))
{
MessageBox.Show("修改成功!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}else
{
MessageBox.Show("修改失败!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
3.数据管理
3.1.图书管理
添加图书
③ 表现层
Bookbook=newBook();
BookServicesbs=newBookServices();
book=this.CheckInputIsNotNull();
② 业务逻辑层
publicBooleanAdd(Bookbook)
{
returnnewBookDAO().Add(book);
}
① 数据访问层
publicBooleanAdd(Bookbook)
{
stringsql=string.Format("INSERTINTObookInfo(BookName,TypeId,Author,Press,PressDate,PressAddress,Sumarry,Price,Page,[Language],photo,NowNum,BookNum,AddDate,ByCount,Remark,BookStatus)"+
"VALUES('{0}',{1},'{2}','{3}','{4}','{5}','{6}',{7},{8},"+
"'{9}','{10}',{11},{12},default,0,'{13}',0)",book.BookName,book.BookType.TypeId,book.Author,book.Press,book.PressDate,book.PressAddress,book.Sumarry,book.Price,book.Page,book.Language,book.Photo,book.BookNum,book.BookNum,book.Remark);
returnnewDBHeper().ZSG(sql);
}
3.2.读者管理
① 数据访问层
publicBooleanAdd(Readerreader)
{
stringsql=string.Format("INSERTINTOReaderInfo(readerNo,readerName,sex,birthDate,photo,phone,numberID,[address],registerDate,readerCount,readerStatus,typeId)VALUES('{0}','{1}',{2},'{3}','{4}','{5}','{6}','{7}',DEFAULT,0,0,{8})",reader.ReaderNo,reader.ReaderName,reader.Sex,reader.BirthDate,reader.Photo,reader.Phone,reader.NumberID,reader.Address,reader.ReaderType.TypeId);
returnnewDBHeper().ZSG(sql);
}
② 业务逻辑层
publicBooleanAdd(Readerreader)
{
returnnewReaderDAO().Add(reader);
}
③ 表现层
if(newReaderServices().Add(reader))
{
MessageBox.Show("添加成功!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.Clear();
flag=1;
}
4.基本操作
4.1.图书借阅
① 数据访问层
publicvoidBorrowBook(Borrowborrow)
{
stringsql1=string.Format("INSERTINTOBorrowInfo(bookId,readerId,borrowTime,shouldTime,mortgageMoney,borrowState)VALUES({0},{1},GETDATE(),DATEADD(DAY,{2},GETDATE()),{3},0)",borrow.Book.BookId,borrow.Reader.ReaderId,borrow.Reader.ReaderType.BorrowDay,borrow.MortgageMoney);
stringsql2=string.Format("UPDATEbookInfoSETnowNum=nowNum-1WHEREbookId={0}",borrow.Book.BookId);
stringsql3=string.Format("UPDATEbookInfoSETbyCount=byCount+1WHEREbookId={0}",borrow.Book.BookId);
stringsql4=string.Format("UPDATEReaderInfoSETreaderCount=readerCount+1WHEREre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 借阅 管理 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)