课程设计报告书
项目名称: 图书借阅管理系统
指导老师:
学生姓名:
专 业:
班 级:
日 期:
信息科学与工程系
一、项目计划
(一)项目开发背景及内容
随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。目前,我国的科技水平高速发展,计算机作为今天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会——信息社会的重要支柱。在这样的大背景下,现代图书馆的管理方式,资源建设等方面都发生了重大变化,这种变化表现在图书馆工作,管理和服务平台发生的变化,图书馆不再是传统的手工操作,人工管理,而是全面实行计算机管理。
图书馆的正常运营中总是面对大量的读者信息,图书信息以及两者相互作用产生的借书信息,因此要对读者资源,图书资源,借书信息进行管理。本系统的开发就是在于提高图书借阅管理的工作效率,加强图书馆的管理,全面实行计算机管理。
(二)开发环境
开发环境:Win 7 旗舰版
开发工具:Visualbasic6.0 ACCESS
作图软件:Microsoft Visio 2010
(三)进度安排
该软件应用Microsoft Visio 2010和Visualbasic6.0 ,ACCESS进行编程作图,历时大概两周,最终完成了这个小型图书借阅管理系统。由于时间仓促,该小型图书借阅管理系统并不完善。我用了两天时间查找相关资料,两天时间编写代码和连接数据库。其余三天开始用Microsoft Visio 2010画数据流图、结构图、流程图、用例图和包图类图。整个过程系我们三人分工人完成。
二、结构化分析设计
(一)数据流图
图2.2.1 系统的数据流图
图2.2.2 1层数据流图
(二)数据字典
在定义的图书借阅管理系统数据字典中,主要对数据流图中的数据项、数据流、数据存储和处理过程进行说明。
(1)数据项描述
1)数据项名称:借书证号
含义说明:惟一标识一个借书证
类型:字符型
长度:50
逻辑关系:不允许为空
2)数据项名称:用户名
含义说明:读者的名称
类型:字符型
长度:20
逻辑关系:不允许为空
3)数据项名称:密码
含义说明:对用户名和操作员管理员进行加密
类型;字符型
长度:10
逻辑关系:允许为空
4)数据项名称:性别
类型:字符型
长度:10
逻辑关系:允许为空
5)数据项名称:所在系别
类型;字符型
长度:10
逻辑关系:允许为空
6)数据项名称:所在班级
类型:字符型
长度:10
逻辑关系:允许为空
7)数据项名称:操作员名称
类型:字符型
长度:30
逻辑关系:不允许为空
8)数据项名称:操作员简称
含义说明:惟一标识一个操作员
类型:字符型
长度:10
逻辑关系:不允许为空
9)数据项名称:操作员级别
含义说明:对操作员和管理员进行区分
类型:字符型
长度:10
逻辑关系:不允许为空
10)数据项名称:图书编号
含义说明:惟一标识一个图书
类型:字符型
长度:10
逻辑关系:不允许为空
11)数据项名称:图书名称
类型:字符型
长度:50
逻辑关系:不允许为空
12)数据项名称:作者
类型:字符型
长度:50
逻辑关系:不允许为空
13)数据项名称:出版社
类型:字符型
长度:50
逻辑关系:不允许为空
14)数据项名称:出版时间
类型:日期时间型
长度:8
逻辑关系:不允许为空
15)数据项名称:价格
类型:整型
长度:4
逻辑关系:不允许为空
16)数据项名称:备注
类型:字符型
长度:200
逻辑关系:允许为空
17)数据项名称:借书日期
类型:日期时间
长度:8
逻辑关系:不允许为空
18)数据项名称:还书日期
类型:日期时间
长度:8
逻辑关系:不允许为
(2)数据结构描述
1)数据流名称:用户情况
含义说明:定义了一个读者的有关信息
组成结构:用户情况=用户名+借书证号+密码+性别+所在系别+所在班级
2)数据流名称:操作员情况
含义说明:定义了一个操作员的有关信息
组成结构:操作员情况=操作员名称+操作员简称+操作员级别+操作员密码
3)数据流名称:图书情况
含义说明:定义了一个图书的有关信息
组成结构:图书情况=图书编号+图书名称+作者+出版社+出版时间+价格+备注
(3)数据流描述
1)数据流名称:借书
含义:读者借书时的记录
来源:读者
去向:审核借书
数据流量:>50份/天
组成:借书单=借书证号+图书编号+借书日期
2)数据流名称:还书
含义:读者还书时要填写的记录
来源:读者
去向:审核还书
数据流量:>25份/天
组成:还书单=图书编号+还书日期
(4)数据存储说明
1) 数据存储名称:图书数据表
含义说明:存放图书的有关信息
组成结构:图书编号+图书名称+作者+出版社+出版时间+价格+备注
说明;书号具有惟一性和非空性
2) 数据存储名称:用户信息表
含义说明:存放读者的注册信息
组成结构:用户名+借书证号+密码+性别+所在系别+所在班级
说明:证号具有惟一性和非空性,性别只能是男和女
3) 数据存储名称:借录
含义说明:存放读者的借书,还书信息
组成结构:借书证号+图书编号+借书日期+还书日期
说明:要求能够立即查询
(5)处理过程说明
1)处理过程名称:图书管理
输入:图书情况,
输出:图录
处理说明:对馆内所有图书按图书编号进行管理,将图书数据数据化,存储图书数据表中。
2)处理过程名称:读者管理
输入:读者情况,
输出:读者记录
处理说明:建立读者信息表,对读者进行统一编号,实现读者记录表的增删改维护功能。
3)处理过程名称:查看数目
输入:借书请求,读者
输出:借录,图书信息
处理说明:实现根据图书编号等查询图书。
4)处理过程名称:借书处理
输入:图书情况,读者,借录
输出:借录
处理说明:确认读者符合借书条件,办理借书手续。
5)处理过程名称:还书处理
输入:图书情况,
输出:借录
处理说明:对照相应的图书编号可办理还书手续。
6)处理过程名称:安全管理
输入:操作员情况,用户情况
输出:操作员级别,操作员记录,用户记录
处理说明:通过用户名和口令,确认用户身份,保证系统的安全型。
(三)加工说明(可用结构化语言描述、判定表、判定树)
图2.3.1 借阅管理系统的判定树
(四)结构图
图2.4.1 系统的结构图
(五)流程图
图2.5.1系统登录流程图
图2.5.2 系统的借书流程图
图2.5.3 系统的还书流程图
三、面向对象分析设计
(一)用例图
用例图在需求分析阶段有重要作用,它是作为参与者的外部用户所能观察到的系统功能模型图。整个开发过程都是围绕需求阶段用例进行的。
图3.1.1 系统的用例图
(二)对象行为模型
图3.2.1 系统状态图
图3.1.2 系统活动图
(三)系统包图
图3.3.1 系统的包图
数据库包:包含数据库中所有的数据信息
用户包:包含要使用系统的用户及其属性
管理员包:包含要使用系统的管理员及其属性
接口包:表示系统和数据库的借口
系统包:表示图书借阅管理系统
(四)类图
类是面对对象系统组成的核心。类是对一组相同属性、操作、关系和语义的对象的描述。这些对象包括了对现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务等,甚至也包括了纯粹概念性的事务,它们都是类的实例。
图3.4.1 系统的类图
(五)配置图
图3.5.1 系统配置图
四、系统实现
(一)程序代码
图书借阅管理:
Public SchCnd As String
Private Sub Cmd_Add_Click()
'初始化FrmBorrowEdit信息
'设置借阅编号为当前编号最大值+1
Dim JYNo As String
'取表中的最大借阅编号
JYNo = "00" + Trim(Str(Val(MyBorrow.GetMaxNo()) + 1))
FrmBorrowEdit.txtBorrowNo = "JY" + JYNo
FrmBorrowEdit.txtBorrowDate = Date
FrmBorrowEdit.txtReturnDate = ""
FrmBorrowEdit.txtBCount = 0
FrmBorrowEdit.txtCardNo = ""
FrmBorrowEdit.txtName = ""
FrmBorrowEdit.txtCardType = ""
FrmBorrowEdit.txtMaxCount = 0
FrmBorrowEdit.txtMaxDays = 0
FrmBorrowEdit.txtBookNo = ""
FrmBorrowEdit.txtBookName = ""
FrmBorrowEdit.txtBookType = ""
FrmBorrowEdit.txtLCount = 0
FrmBorrowEdit.txtTotal = 0
'设置添加图书按钮不能用
FrmBorrowEdit.Cmd_Add.Enabled = False
FrmBorrowEdit.Cmd_Del = False
FrmBorrowEdit.Cmd_Ok.Enabled = False
'设置图书信息不能用
FrmBorrowEdit.Frame2.Enabled = False
'启动编辑窗体
FrmBorrowEdit.Show 1
'刷新DataGrid表格的内容
GridRefresh
End Sub
'单击“返回”按钮
Private Sub Cmd_Back_Click()
Unload Me
End Sub
Private Sub Cmd_Push_Click()
'列出离应归还日期小于等于5天的图书
FrmPush.Show 1
End Sub
Private Sub Cmd_Return_Click()
'归还调用FrmReturnEdit窗体,需要输入借阅证号,提取该证借阅信息
FrmReturnEdit.Show 1
GridRefresh
End Sub
Private Sub ComboFlag_click()
GridRefresh
End Sub
'启动窗体
Private Sub Form_Load()
'设置借阅状态为"借阅"
ComboFlag.ListIndex = 0
'刷新DataGrid表格的内容
GridRefresh
End Sub
Private Sub GridRefresh()
If ComboFlag.ListIndex > 0 Then
SchCnd = " AND l.Status='" + Trim(ComboFlag.Text) + "'"
Else
SchCnd = ""
End If
'设置ADO控件的连接字符串
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
+ App.Path + "\\Books.mdb;Persist Security Info=False" '刷新DataGrid记录
'设置数据源
Adodc1.RecordSource = "SELECT l.BookNo AS 图书编号,i.BookName AS 图书名称, " _
+ "l.BCount AS 借阅数量,b.BorrowNo AS 借阅编号,b.CardNo AS 借阅证编号,c.Name AS 姓名," _
+ "BorrowDate AS 借阅日期 " _
+ " FROM Borrow b,BorrowList l,Cards c,BookInfo i " _
+ " WHERE l.BNo=b.BorrowNo AND b.CardNo=c.CardNo AND l.BookNo =i.BookNo" + SchCnd _
+ " ORDER BY l.BookNo,b.BorrowDate DESC"
' MsgBox (Adodc1.RecordSource)
Adodc1.Refresh
DataGrid1.Columns(0).Width = 1200
DataGrid1.Columns(1).Width = 1600
DataGrid1.Columns(2).Width = 1200
DataGrid1.Columns(3).Width = 1400
DataGrid1.Columns(4).Width = 1400
DataGrid1.Columns(5).Width = 1200
DataGrid1.Columns(6).Width = 1400
End Sub
编辑用户信息:
Public Modify As Boolean
Public OriUser As String
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub Cmd_OK_Click()
If Trim(txtUserName) = "" Then
MsgBox "请输入用户名"
txtUserName.SetFocus
Exit Sub
End If
If Len(txtPass) < 6 Then
MsgBox "密码长度不能小于6"
txtPass.SetFocus
txtPass.SelStart = 0
txtPass.SelLength = Len(txtPass2)
Exit Sub
End If
If txtPass <> txtPass2 Then
MsgBox "密码和确认密码不相同,请重新确认"
txtPass2.SetFocus
txtPass2.SelStart = 0
txtPass2.SelLength = Len(txtPass2)
Exit Sub
End If
With MyUser
If Modify = False Or OriUser <> Trim(txtUserName) Then
If .In_DB(MakeStr(txtUserName)) = True Then
MsgBox "用户名已经存在,请重新输入"
txtUserName.SetFocus
txtUserName.SelStart = 0
txtUserName.SelLength = Len(txtUserName)
Exit Sub
End If
End If
.UserName = MakeStr(txtUserName)
.Pwd = MakeStr(txtPass)
If Modify = False Then
.Insert
MsgBox "添加完成"
Else
.Update (OriUser)
MsgBox "修改完成"
'如果修改自身用户名,则更新CurUser对象
If OriUser = CurUser.UserName And Trim(txtUserName) <> OriUser Then
CurUser.UserName = Trim(txtUserName)
CurUser.GetInfo (CurUser.UserName)
End If
End If
End With
Unload Me
End Sub
Private Sub Form_Load()
End Sub
Private Sub txtPass_Change()
End Sub
用户管理:
Private Sub Cmd_Add_Click()
With FrmUserEdit
.txtUserName = ""
.txtPass = ""
.txtPass2 = ""
.Modify = False
.Show 1
End With
AdoUserList.Refresh
DataList1_Click
End Sub
Private Sub Cmd_Back_Click()
Unload Me
End Sub
Private Sub Cmd_Del_Click()
If DataList1.Text = "" Then
MsgBox "请选择要删除的用户"
Exit Sub
End If
If MyUser.UserName = "Admin" Then
MsgBox "此用户不能删除"
Exit Sub
End If
'确认删除
If MsgBox("是否删除当前用户", vbYesNo, "请确认") = vbYes Then
MyUser.Delete (DataList1.Text)
MsgBox "成功删除"
AdoUserList.Refresh
DataList1_Click
End If
End Sub
Private Sub Cmd_Modi_Click()
If DataList1.Text = "" Then
MsgBox "请选择要修改的用户"
Exit Sub
End If
With FrmUserEdit
.OriUser = MyUser.Overcame
.txtUserName = MyUser.UserName
.txtPass = MyUser.Pwd
.txtPass2 = MyUser.Pwd
If Trim(MyUser.UserName) = "Admin" Then
.txtUserName.Enabled = False
End If
.Modify = True
.Show 1
End With
AdoUserList.Refresh
DataList1_Click
End Sub
Private Sub DataList1_Click()
If DataList1.Text = "" Then
Exit Sub
End If
'读取用户数据
MyUser.GetInfo (DataList1.Text)
lblUserName = MyUser.UserName
If Trim(MyUser.UserName) = "Admin" Then
lblUserType = "系统管理员"
Else
lblUserType = "普通用户"
End If
End Sub
Private Sub Form_Load()
lblUserType = ""
lblUserName = ""
'设置ADO控件的连接字符串
AdoUserList.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
+ App.Path + "\\Books.mdb;Persist Security Info=False"
'设置数据源
AdoUserList.RecordSource = "SELECT * FROM Users"
AdoUserList.Refresh
End Sub
Private Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
(二)功能演示(界面)
图4.2.1图书借阅管理系统主界面图
图4.2.2 用户登录图
图4.2.3借阅管理图
图4.2.4用户管理图
图4.2.5编辑用户信息图
五、测试
| 序号 | 测试内容 | 测试数据 | 期望结果 | 测试结果 | 测试结论 |
| 1 | 合法输入格式 | 00001 | 王明 00001 女 20 123456 计算机 | 王明 00001 女 20 123456 计算机 | 正确 |
| 2 | 错误证件号名 | 10060028 | 提示“请输入正确的证件号!” | 提示“请输入正确的证件号!” | 正确 |
| 3 | 空数据 | Null | 提示“请输入正确的证件号!” | 提示“请输入正确的证件号!” | 正确 |
| 序号 | 测试内容 | 测试数据 | 期望结果 | 测试结果 | 测试结论 |
| 1 | 合法输入格式 | 20天 | 没超期 | 没超期 | 正确 |
| 2 | 超期 | 40天 | 超期,交罚金 | 超期,交罚金 | 正确 |
| 序号 | 测试内容 | 测试数据 | 期望结果 | 测试结果 | 测试结论 |
| 1 | 合法输入格式 | 00001 | 索书号为:00001,书名为:Java程序设计,现有数量为1 ,出版社为:清华大学出版社,作者为:沈泽刚 | 索书号为:00001,书名为:Java程序设计,现有数量为1 ,出版社为:清华大学出版社,作者为:沈泽刚 | 正确 |
| 2 | 错误索书号 | 0 | 提示“对不起,没有您要找的书籍!” | 提示“对不起,没有您要找的书籍!” | 正确 |
| 3 | 空索书号 | Null | 提示“对不起,没有您要找的书籍!” | 提示“对不起,没有您要找的书籍!” | 正确 |
六、软件发布
1. 电脑操作系统:Win 7 旗舰版,开发工具:Visualbasic6.0 ACCESS
2.系统配置说明:分别给开发工具配置特定环境,特别注意连接数据库的语 句是否匹配。
3.登录用户名:admin 密码:admin
登录用户名:079041 密码:079041
七、参考文献
[1] 窦万峰.软件工程方法与实践[M].机械工业出版社,2009
[2]史济民,顾春华,郑红。软件工程—原理、方法与应用。高等教育出版社,2009
八、总结体会
在本次课程设计中,我主要负责的是代码编写,课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。整个设计通过了软件和硬件上的调试。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于图书馆借阅管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。其次,这次课程设计让我充分认识到团队合作的重要性,只有分工协作才能保证整个项目的有条不絮。在本次课程设计中,我主要进行文档的排版编写整合,经历了无数次修改,再排版过程,写出了这个还算完整的图书借阅管理系统文档,在完整度上基本满足了软件工程规范要求,但是由于时间较紧,有些模块以及整个文档还有许多不完善,考虑不周全的地方,如界面不太美观等。学习和实践了分析和设计软件系统的各种知识,包括结构化分析设计、面向对象的系统分析与设计,编码和测试方面的知识。毋庸置疑,在实践的过程中也遇到了一些问题,但是通过我自己的努力,以及查找资料,包括同学的帮助,很大限度的提高了自己的自身学习能力,自我解决问题的能力。这次课程设计是我们合作完成的,谢谢大家的帮助,我很开心。在今后的学习生活中,我会将这种精神继续发扬。并且更加努力,认真学习,将在这过程中得到的经验与同伴分享,享受这个学习过程。在本次课程设计中,我主要进行了系统流程图、用例图、对象行为模型、配置图等等一些图的绘画,通过这些图的绘画,锻炼了我对软件工程各种图的绘画熟练度。其余时间也帮助组员编写界面,以及共同解决一些技术难题,通过这次软件工程的课程设计,不仅锻炼了我各方面的能力,还让我认识到小组讨论解决难题的效率,远远超过个人苦思冥想去解决难题的效率。同时,做过这次课程设计后,我感觉我还需要更努力的学习关于计算机的各方面的知识,增强自己解决计算机方面难题的能力,使自己变得越来越好。下载本文