《软件工程》课程设计报告书项目名称:图书借阅管理系统指导老师:学生:专业:班级:日期:信息科学与工程系目录一、项目计划 (1)(一)项目开发背景及容 (1)(二)开发环境 (1)(三)进度安排 (1)二、结构化分析设计 (2)(一)数据流图 (2)(二)数据字典 (3)(三)加工说明(可用结构化语言描述、判定表、判定树) (8)(四)结构图 (9)(五)流程图 (9)三、面向对象分析设计 (11)(一)用例图 (11)(二)对象行为模型 (12)(三)系统包图 (13)(四)类图 (14)(五)配置图 (15)四、系统实现 (15)(一)程序代码 (15)(二)功能演示(界面) (25)五、测试 (27)六、软件发布 (29)七、参考文献 (29)八、总结体会........................................ 错误!未定义书签。
一、项目计划(一)项目开发背景及容随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。
目前,我国的科技水平高速发展,计算机作为今天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会——信息社会的重要支柱。
在这样的大背景下,现代图书馆的管理方式,资源建设等方面都发生了重大变化,这种变化表现在图书馆工作,管理和服务平台发生的变化,图书馆不再是传统的手工操作,人工管理,而是全面实行计算机管理。
图书馆的正常运营中总是面对大量的读者信息,图书信息以及两者相互作用产生的借书信息,因此要对读者资源,图书资源,借书信息进行管理。
本系统的开发就是在于提高图书借阅管理的工作效率,加强图书馆的管理,全面实行计算机管理。
(二)开发环境开发环境: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 StringPrivate Sub Cmd_Add_Click()'初始化FrmBorrowEdit信息'设置借阅编号为当前编号最大值+1Dim JYNo As String'取表中的最大借阅编号JYNo = "00" + Trim(Str(Val(MyBorrow.GetMaxNo()) + 1)) FrmBorrowEdit.txtBorrowNo = "JY" + JYNoFrmBorrowEdit.txtBorrowDate = DateFrmBorrowEdit.txtReturnDate = ""FrmBorrowEdit.txtBCount = 0FrmBorrowEdit.txtCardNo = ""FrmBorrowEdit.txtName = ""FrmBorrowEdit.txtCardType = ""FrmBorrowEdit.txtMaxCount = 0FrmBorrowEdit.txtMaxDays = 0FrmBorrowEdit.txtBookNo = ""FrmBorrowEdit.txtBookName = ""FrmBorrowEdit.txtBookType = ""FrmBorrowEdit.txtLCount = 0FrmBorrowEdit.txtTotal = 0'设置添加图书按钮不能用FrmBorrowEdit.Cmd_Add.Enabled = False FrmBorrowEdit.Cmd_Del = FalseFrmBorrowEdit.Cmd_Ok.Enabled = False '设置图书信息不能用FrmBorrowEdit.Frame2.Enabled = False '启动编辑窗体FrmBorrowEdit.Show 1'刷新DataGrid表格的容GridRefreshEnd Sub'单击“返回”按钮Private Sub Cmd_Back_Click()Unload MeEnd SubPrivate Sub Cmd_Push_Click()'列出离应归还日期小于等于5天的图书FrmPush.Show 1End SubPrivate Sub Cmd_Return_Click()'归还调用FrmReturnEdit窗体,需要输入借阅证号,提取该证借阅信息 FrmReturnEdit.Show 1GridRefreshEnd SubPrivate Sub ComboFlag_click()GridRefreshEnd Sub'启动窗体Private Sub Form_Load()'设置借阅状态为"借阅"ComboFlag.ListIndex = 0'刷新DataGrid表格的容GridRefreshEnd SubPrivate Sub GridRefresh()If ComboFlag.ListIndex > 0 ThenSchCnd = " AND l.Status='" + Trim(ComboFlag.Text) + "'"ElseSchCnd = ""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 借阅证编号, 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.RefreshDataGrid1.Columns(0).Width = 1200DataGrid1.Columns(1).Width = 1600DataGrid1.Columns(2).Width = 1200DataGrid1.Columns(3).Width = 1400DataGrid1.Columns(4).Width = 1400DataGrid1.Columns(5).Width = 1200DataGrid1.Columns(6).Width = 1400End Sub编辑用户信息:Public Modify As BooleanPublic OriUser As StringPrivate Sub Cmd_Cancel_Click()Unload MeEnd SubPrivate Sub Cmd_OK_Click()If Trim(txtUserName) = "" ThenMsgBox "请输入用户名"txtUserName.SetFocusExit SubEnd IfIf Len(txtPass) < 6 ThenMsgBox "密码长度不能小于6"txtPass.SetFocustxtPass.SelStart = 0txtPass.SelLength = Len(txtPass2)Exit SubEnd IfIf txtPass <> txtPass2 ThenMsgBox "密码和确认密码不相同,请重新确认" txtPass2.SetFocustxtPass2.SelStart = 0txtPass2.SelLength = Len(txtPass2)End IfWith MyUserIf Modify = False Or OriUser <> Trim(txtUserName) ThenIf .In_DB(MakeStr(txtUserName)) = True ThenMsgBox "用户名已经存在,请重新输入"txtUserName.SetFocustxtUserName.SelStart = 0txtUserName.SelLength = Len(txtUserName)Exit SubEnd IfEnd If.UserName = MakeStr(txtUserName).Pwd = MakeStr(txtPass)If Modify = False Then.InsertMsgBox "添加完成"Else.Update (OriUser)MsgBox "修改完成"'如果修改自身用户名,则更新CurUser对象If OriUser = erName And Trim(txtUserName) <> OriUser Then erName = Trim(txtUserName)CurUser.GetInfo (erName)End IfEnd WithUnload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub txtPass_Change() End Sub用户管理:Private Sub Cmd_Add_Click() With FrmUserEdit.txtUserName = "".txtPass = "".txtPass2 = "".Modify = False.Show 1End WithAdoUserList.RefreshDataList1_ClickEnd SubPrivate Sub Cmd_Back_Click() Unload MeEnd SubPrivate Sub Cmd_Del_Click()If DataList1.Text = "" ThenMsgBox "请选择要删除的用户"Exit SubEnd IfIf erName = "Admin" ThenMsgBox "此用户不能删除"Exit SubEnd If'确认删除If MsgBox("是否删除当前用户", vbYesNo, "请确认") = vbYes Then MyUser.Delete (DataList1.Text)MsgBox "成功删除"AdoUserList.RefreshDataList1_ClickEnd IfEnd SubPrivate Sub Cmd_Modi_Click()If DataList1.Text = "" ThenMsgBox "请选择要修改的用户"Exit SubEnd IfWith FrmUserEdit.OriUser = MyUser.Overcame.txtUserName = erName.txtPass = MyUser.Pwd.txtPass2 = MyUser.PwdIf Trim(erName) = "Admin" Then .txtUserName.Enabled = FalseEnd If.Modify = True.Show 1End WithAdoUserList.RefreshDataList1_ClickEnd SubPrivate Sub DataList1_Click()If DataList1.Text = "" ThenExit SubEnd If'读取用户数据MyUser.GetInfo (DataList1.Text)lblUserName = erNameIf Trim(erName) = "Admin" Then lblUserType = "系统管理员"ElselblUserType = "普通用户"End IfEnd SubPrivate 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.RefreshEnd SubPrivate 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女20123456计算机王明00001女20123456计算机正确2 错误证件号名10060028 提示“请输入正确的证件号!”提示“请输入正确的证件号!”正确3 空数据Null 提示“请输入正确的证件号!”提示“请输入正确的证件号!”正确系统用户管理测试用例还书模块测试用例借书模块测试用例六、软件发布1. 电脑操作系统:Win 7 旗舰版,开发工具:Visualbasic6.0 ACCESS2.系统配置说明:分别给开发工具配置特定环境,特别注意连接数据库的语句是否匹配。