
绪论 1
第1章 需求分析 3
※1.1目标与任务 3
※1.2需求分析的方法 5
第2章 总体设计 6
※2.1功能模块划分 6
※2.2系统流程分析 6
第3章 数据库设计 8
※3.1概念结构设计 8
※3.2逻辑结构设计 10
第4章 详细设计 11
※4.1借阅证管理模块 11
4.1.1办理借阅证 11
4.1.2借阅证挂失 14
4.2.1添加账号 16
4.2.2修改密码 17
第5章 测试 18
设计总结 19
致谢 20
参考文献 21
绪论
随着我国社会经济的不断发展,人民的物质生活十分丰裕,但精神生活难以满足,再多的金钱也不能换来精神上的满足,而且,现在社会竞争日益激烈,许多人整天为生活忙碌,精神生活空虚,书籍作为传承古今中外优秀文化的范本,对人们的精神生活可以产生很大影响,使人们从其中充实自己的同时,精神上得到很大满足.
书籍是人类文明进步的阶梯,在工作之余,翻阅一本优秀的书籍,会给我们带来很大的精神享受,但读书需要一个好的环境,需要有自己想要阅读的书籍,这样图书馆就有它的用武之地了,图书馆不仅藏书丰富,而且安静,看书氛围浓厚,可以很大程度上满足广大读者的需求,是我们借阅书刊,读书的好去处,使我们畅游在书的海洋中,汲取营养,精神上得到更大满足. 随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
虽然图书馆很大程度上满足了我们的阅览需求,但我国处在不断发展中,竞争依然相当激烈,机遇与挑战并存,在这样一个大发展的环境下,人们更加渴望知识,更加想充实自己,不被社会所淘汰,这样,图书馆管理系统产生了一些问题,有的大型图书馆藏书丰富,但是资源不能得到有效利用,造成资源的浪费,有的中小型图书馆很难满足读者的阅览需求,找不到自己想看的书,或者想看的书被其他人占有,为了解决这些问题,我们这次开发了一个更加合理实用的图书馆管理系统,解决人们的需求问题,使图书馆更好的服务于大众,给人们带来更多精神上的享受.
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果。因此往往是投入了大量的人力和财力却得不到高效的管理效率。为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。
本文以高校图书馆管理系统管理系统开发过程为背景,全文分为目录、需求分析、概要设计、逻辑设计、物理设计,以及系统的实现等全过程。在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则。采用结构化的功能模块设计系统功能,可读性好,易于扩充。基本功能全面,系统可读性好,易于维护、更新,安全性好。
图书管理系统能支持不同类型,不同权限的读者都具有借阅,归还图书。读者要与管理员分离,管理员有全部管理权限,比如:添加图书,修改图书,注销图书,添加读者,修改密码等操作权限;读者只能进行借阅,归还,查看个人借阅档案等操作。
整个管理系统采用统一的窗体风格,功能导航简洁明了,与读者以及管理员交互性良好;人性化的界面设计,使读者所见即所得,对图书信息能更快捷的获取,能及时得到最新图书信息;另外,数据库采用企业级的SQLServer2000做后台支持,并进新安全备份,保证了图书管理系统的可靠性与维护性;管理员可更方便的管理图书与读者,节省时间与精力。
本系统只是从实际系统中提取出来的一个简单的管理系统,具体到不同的企业,会有不同的需求,这里只做一个适合学校图书馆的简单管理系统。
图书馆管理系统作为数据库信息管理系统的一种应用,其开发流程包括需求分析、系统设计、数据库分析和设计以及各功能模块的开发等,将在随后的几节分别讲述。
第1章 需求分析
※1.1目标与任务
主要任务是通过详细调查图书馆的详细业务情况,了解原系统的工作情况,明确用户的各项需求,在此基础上确定新系统的功能,了解新系统的业务流程,数据流程,完成数据字典的建立。
需求分析的任务需求分析阶段是图书管管理系统开发的第一个阶段,也是非常重要的一个阶段。这是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响后面各个阶段的设计,并影响到设计结果是否合理和实用。它也是我们系统开发过程当中最困难、最耗费时间的一步,作为地基的需求分析做的是否充分和准确,决定了在其上构建数据库大厦的速度和质量。
需求分析的任务是通过详细的调查现实生活中图书馆,充分了解图书馆系统工作概况,明确用户的各种需求,然后再次基础上确定新系统的功能,新系统必须充分考虑到今后可能的扩充和改变,不能仅仅按照当前应用需求来建设数据库。
调查的重点是“数据”和“处理”,我们要通过调查、收集与分析,获得用户对数据库如下要求:
(1)信息要求
我们要了解图书馆管理系统都要存储哪些信息。图书管理系统需要满足来自三个方面的需求,这三个方面分别是读者、图书馆工作人员和图书馆管理人员。
一、读者
在图书管理系统中,图书馆工作人员要为每个读者建立借阅账户,并给读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。
借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。
二、图书馆工作人员
图书馆工作人员有修改图书借阅者借书和还录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借录或是还录。
三、图书馆管理人员
图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息。浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行,但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。并且还应具有生成催还图书报表,并打印输出的功能。
这里我们了解到图书馆管理系统大概要存储的信息有:图书信息、管理员信息,学生信息,借阅卡信息,图书借阅信息,借阅卡注册、挂失信息,图书的借阅、归还、挂失信息,学生的罚款信息等。
(2)处理要求
了解图书馆管理员要完成哪些处理功能,对处理的相应时间有什么特殊要求,处理方式是批处理还是联机处理。
这里我们了解到图书馆管理员要处理的事务大体为:管理学生的借阅、归还、挂失,管理学生的图书卡的注销、注册、挂失,完成对那些欠款的学生的罚款,管理图书馆员工的相关事务。
(3) 安全性与完整性要求
确定用户的最终需求是意见很困难的事,这是因为一方面用户缺少计算机只是,开始的时候无法确定计算机计算机能够为自己做什么,不能做什么,因此往往不能正确的表达自己的需求,所提出的要求往往不断的变化。设计人员必需不断的深入与用户交流,才能逐步确定用户的实际需求。
※1.2需求分析的方法
进行需求分析首先是调查清楚用户的实际要求,与用户达成共识,然后分析语表达这些需求。
调查用户需求的具体步骤是:
1.调查组织机构情况。
2.调查个部门的业务活动情况。
3.在熟悉了业务活动的基础上协助用户明确对新系统的各种要求,包括信息要求、处理要求、安全性与完整性的要求,这是调查的又一个重点。
4.确定系统的边界。
第2章 总体设计
※2.1功能模块划分
图书馆管理系统的设计目标是将传统的图书馆转换为数字信息化的图书馆,并对图书实现自动化的管理,该图书馆管理系统需要完成的功能有身份验证、书库管理、借阅证管理、和系统管理。而我所负责的模块是借阅证管理和系统管理,这两个模块的功能如下所示:
借阅证管理:提供办理借阅证、借阅证信息查询、借阅证挂失功能。
系统管理:包括添加账号、修改密码和退出系统等功能。
对上述功能进行集中、分块、结构化,得到如图2-1所示的系统功能模
图2-1 借阅证管理和系统管理模块示意图
※2.2系统流程分析
前面的分析中已经定义了系统的各个功能模块,属于静态建模的范围。在系统运行时刻的动态模型应该有系统的流程决定。当用户登录系统后,可以根据拥有的权限来进行书库的管理、借阅证的管理以及系统管理等操作,具体的流程如图2-2所示。
登
录
系
统
图2-2 系统流程图
第3章 数据库设计
※3.1概念结构设计
借阅卡管理和系统管理模块的E-R图如图3-1所示:
1
1 n
图3-1总E-R图
各实体的E-R图如下图所示:
图3-2图书的ER图
图3-3借书的ER图
图3-4借阅卡的ER图
借阅卡管理和系统管理模块有图书、借书、借阅卡四个实体。
图书的属性包括书号、书名、作者、出版社、单价、入库时间、总量和现存量,书号是主码。借阅卡是读者借书的凭证,包括卡号、姓名、性别,出生日期、地址、现借书总量等属性,卡号是主码。
借书则包括借书号、卡号、书号、借书时间,借书号、卡号,书号是主码。
一张借阅卡可以借多本图书,可以有多个借书信息,一个借书信息包含一本书籍的借出情况。
※3.2逻辑结构设计
数据库的逻辑结构设计的任务就是把概念结构设计阶段设计好的基本ER图转换为DBMS产品所支持的数据模型相符合的逻辑结构。现在需要将上面的数据库概念转化为SQL sever2000数据库系统支持的实际数据模型,也就是数据库的逻辑结构。
根据E-R图,有以下关系模式:
图书(书号* 书名 作者 出版社 单价 入库时间 图书总量 现存量);
借阅卡(卡号* 姓名 性别 出生日期 地址 身份证号码 电话号码 现借书总量);
借书(借书号* 卡号 书号 借出时间)。
第4章 详细设计
我设计的是借阅证管理模块和系统管理模块。下面分别介绍两个模块的功能及实现过程。
※4.1借阅证管理模块
借阅证包括办理借阅证、借阅证信息查询和借阅证挂失3个部分下面分别描述着3个部分的功能以及实现过程。
4.1.1办理借阅证
办理借阅证包括了办理借阅证和查询借阅证的功能。为了方便添加借阅证和查询所有借阅证的基本信息,可以创建一个对话框。添加的对话框类名为CNewproofDlg,资源ID为IDD_DIALOG_NEW_PROOFES,对话框名称为“办理借阅证”,界面如图4-1所示
图4-1办理借阅证界面
查询借阅证的实现部分,就是调用CCheckProofDlg对话框,界面如图4-2所示
图4-2查询借阅证界面
办理借阅证也是图书管理系统中最重要的功能之一,它的实现函数为OnButtonOK()代码如下:
void CNewProofDlg::OnButtonOk()
{//省略部分代码
//上面的代码检查输入参数是否为空以及数据库是否正常打开
CProofSet *m_pset=new CProofSet(&m_database);
//察看是否已经有该人,有将不予办理!
CString strSQL;
strSQL.Format("select * from Proof_Info where Proof_ID='%s'",m_strProofID);
m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(m_pset->GetRecordCount()!=0)
{
MessageBox("这个号码数据库中已经存在,请查询后重新选择!办理借阅证");
m_pset->Close();
m_database.Close();
m_strProofID.Empty();
UpdateData(FALSE);
return;
}
m_pset->Close();
//没有这个号码,办理借阅证,存入数据库
if(m_strProofID==""||m_strName==""||m_strAddress==""
||m_strID==""||m_strTel=="")
{
MessageBox("请认真填写要求的数据!办理借阅证");
return;
}
m_iSex=GetCheckedRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE);
if(m_iSex==IDC_RADIO_MALE)
m_strSex="Male";
else if(m_iSex==IDC_RADIO_FEMALE)
m_strSex="Female";
else
{
MessageBox("请选择性别信息!办理借阅证");
return;
}
CString m_strYear,m_strMonth,m_strDay;
int m_year,m_month,m_day;
m_comYear.GetWindowText(m_strYear);
m_year=atoi(m_strYear);
m_comMonth.GetWindowText(m_strMonth);
m_month=atoi(m_strMonth);
m_comDay.GetWindowText(m_strDay);
m_day=atoi(m_strDay);
strSQL.Format("select * from Proof_Info");
m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(m_pset->GetRecordCount()==0)
{
MessageBox("数据库中还没有一份借阅证信息,将办理第一份借阅证办理借阅证");
}
以下是在列表框中显示办理借阅证的信息,跟前面的一样
//……
m_pset->Update();
m_pset->Requery();
m_pset->Close();
m_database.Close();
MessageBox("办理借阅证成功!办理借阅证");
CPersonInfoDlg m_dlg;
m_dlg.m_strProofID=m_strProofID;
m_dlg.DoModal();
}
在上面的办理借阅证实现代码中,首先仍然是检查输入参数是否为空以及数据库是否正常打开,然后CProofSet实例,输入SQL语句(“select*from Proof_ Info where Proof_ID=’%s’”,m_strProofID),查看数据库是否已经有该人,有将不再为此人办理借阅证,如果没有,检查输入的读者的个人基本信息是否完整,包括姓名,性别,借阅证号,电话号码,住址以及办理日期等,然后插入新的记录,最后是在列表框中现实办理借阅证的信息。
该模块功能简单,就是往数据库中的表中添加新的数据库项。在这里用到了一个从CString到整型变量的转换,即代码中的atoi函数,它的使用也非常简单,但是省略了很多麻烦。如果手工来完成这个转换也是可以实现的饿,需要对CString的字符串进行分析,以累加的方式将字符转换为十进制,同时还要对异常进行处理。
4.1.2借阅证挂失
借阅证挂失包括了挂失借阅证和查询借阅证的功能。为了方便挂失借阅证和查询所有借阅证的基本信息,可以创建一个对话框。添加对话框类名称为CProofLostDlg,资源ID为IDD_DALOG_PROOF_LOST,对话框名称为“借阅证挂失”,界面如图4-3所示
图4-3借阅证挂失界面
查询的实现部分就是调用CCheckProofDlg对话框,在前面已经介绍
借阅证丢失后,要及时去图书馆挂失,这也是图书馆管理系统中雨其他信息管理系统相比的重要特色之一。办理借阅证挂失的实现函数为OnButtonloet(),代码如下
void CProofLostDlg::OnButtonShow()
{//…省略了部分代码
//上面的代码检查输入参数是否为空以及数据库是否正常打开
CProofSet *m_pset=new CProofSet(&m_database);
CString strSQL;
strSQL.Format("select * from Proof_Info where Proof_ID='%s'",m_strProofID);
m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(m_pset->GetRecordCount()==0)
{
MessageBox("数据库中没有该人的信息借阅证挂失");
m_pset->Close();
m_database.Close();
return;
}
//挂失,删除该借阅证的记录信息
m_pset->Delete();
m_pset->Close();
m_database.Close();
int iResult;
iResult=MessageBox("挂失成功,是否查阅,进行确认借阅证挂失",MB_YESNO|MB_ICONQUESTION);
if(iResult==IDYES)
{
CCheckProofDlg m_dlg;
m_dlg.m_strProofID=m_strProofID;
m_dlg.DoModal();
}
}
void CProofLostDlg::OnButtonBack()
{
// TODO: Add your control notification handler code here
if(m_database.IsOpen())
m_database.Close();
OnOK();
}
void CProofLostDlg::OnClose()
{
OnButtonBack();
在以上的借阅证挂失处理函数中,其实现过程与图书挂失类似,读者可以跟上面的函数作比较以理解其实现过程,在这个函数中对错的处理时很完善的,这也是图书馆系统开发时要非常注意的一点。
※4.2系统管理模块
4.2.1添加账号
在添加用户界面中输入用户名和密码,即可增加成员。
图4-4添加成员界面
4.2.2修改密码
在修改用户密码页面输入原用户明和明码,在输入两次新密码即可修改密码。
图4-5修改密码界面
第5章 测试
经过以上各节的介绍,应完成了数据库的开发,接下来将对系统的运行过程进行分析:
添加借阅证号,姓名,性别,身份证号,家庭住址,电话号码即可办理借阅证;在借阅证查询界面输入借阅证号即可查询借阅证信息;
在借阅证挂失页面输入借阅证号即可挂失借阅证;
在增加成员界面添加用户名和密码即可添加成员;
在修改用户密码页面输入原用户明和明码,在输入两次新密码即可修改密码。
设计总结
这次数据库课程设计我主要采用Visual C++6.0作为前台开发工具,Microsoft SQL Server2000作为后台数据库,结合C++和数据库的有关知识,开发了这个图书馆管理系统。
通过这次课程设计,我对于数据库课程设计的相关步骤和流程有了更深刻的理解,熟悉掌握了Microsoft SQL Server2000和Visual C++6.0的数据库使用,另一方面,也对SQL语言作为嵌入式语言的功能有了更深刻的体会,同时,我也发现自己对于软件工程设计和数据库设计的知识掌握还不够,设计和编程能力还有待进一步提高,这次课程设计给了我一个锻炼自己的,强化数据库学习的机会,
首先,我在巩固了所学知识的基础上,学到了与开发系统有关的知识。我通过复习课本,去图书馆查阅相关书籍以及上网搜索等,学到了很多自己以前不熟的知识。遇到不懂的地方,仔细研究例题,并一遍遍地调试,培养了自己思考问题和解决问题的能力。
其次,培养了自己整体规划问题的能力。我锻炼了自己把整个问题逐步细分,逐步解决的能力。 在进入设计之前,首先规划好大体框架。在调试及编写代码过程中,把问题逐步细化。
系统开发到此已经基本完成,用户的要求也基本达到。本系统对于中小型图书馆可适用,当然,由于本人水平有限,加之缺乏实践经验,现实中没有接触过项目开发,所以该系统还有许多不尽如人意的地方,比如系统有过多的重复代码,降低了系统执行的效率;出错处理不够等多方面问题。这些都有待进一步改善。
我相信,只要认真学习,多借鉴别人的经验,多思考,多实践,就一定能够成为一名合格的开发设计人员,能够翱翔在数据库开发的天地。
致谢
在这次数据库课程设计中,我了解了管理系统的整个流程,理解了模块化设计的概念和方法以及程序设计过程中数据库的完整性和安全性对程序运行的稳定所起到的重要作用,也深刻意识到团队协作对于整个项目开发的重要意义。
在指导老师的悉心指导和大力支持下,我对本系统设计从需求分析到总体分析、总体设计、功能模块划分、程序实现以及测试、调试方面有了深刻的理解。
在此我向帮助过我的老师和同学特别致谢 !
参考文献
[1]李涛 刘凯奎 王永皎.数据库开发与实例.北京:清华大学出版社,2006.
[2]周晓杰 高鉴伟.数据库项目案例与导航.北京:清华大学出版社,2007.
[3]王晟 邓远辉.数据库开发经典案例解析.北京:清华大学出版社,2006.
[4]王珊 萨师煊.数据库系统概论.北京:高等教育出版社,2006.
[5]刘大伟 马传宝 孙颖杰. 数据库项目案例.北京:清华大学出版社,2006.
[6]周峰 孙更新.SQL Server 2005经典案例设计与实现.北京:电子工业出版社,2005.
[7]李闽溟 吴继刚 周学明.Visual c++6.0数据库系统开发实例导航.北京:人民邮电出版社,2005.
[8]李涛 刘凯奎.Visual c++ SQL Server数据库开发与实例.北京:清华大学出版社,2006.
[9]白尚旺.PowerDesigner 软件工程技术.北京:电子工业出版社,2004.
[10]罗运模.完全掌握SQLS erver2000.北京:人民邮电出版社,2001.
[11]刘钢.程序设计与应用案例.北京:高等教育出版社,2003.
