本科生课程设计(实践)任务书、设计报告
(C++程序设计)
| 题 目 | 图书馆管理信息系统 |
| 学生姓名 | 席运泽 |
| 指导教师 | 杨邦荣 |
| 学 院 | 物理院 |
| 专业班级 | 物理升华0901 |
| 学生学号 | 1104090119 |
2010年7 月 8 日
图书馆管理信息系统
摘要:图书管理系统需要实现的功能主要有四大模块:"日常工作管理"、"基本资料维护"、"查询"、和"系统管理"模块。其中“日常工作管理”和“基本资料维护”是整个系统的核心。
关键词: VC++编程 图书馆管理 MFC窗口设计 数据库开发设计 ER模式 类 流程图 文档视图 文件输入输出流
1.本项目预期读者:
·设计人员
·开发人员
·项目管理人员
·测试人员
·用户
2.图书馆信息管理系统开发设计思想:
系统图示:
开发设计:
2.1确定系统涉及的总体信息
图书馆流通系统是对书籍及读者进行统一管理的系统,具体包括读者的借书、还书、书籍预约;图书管理员的书籍接触处理、书籍归还处理、预约信息处理;还有系统管理员的系统维护,包括增加书目、删除和更新书目、增加书籍、减少书籍、增加读者账户信息、删除或更新读者账户信息、书籍查询信息、读者查询信息等。系统的总体信息确定以后,就可以分析系统的参与者,确定系统的用例了。
2.2确定系统的参与者
确定系统的参与者首先需要分析系统所涉及的问题领域和系统运行的主要任务:分析使用该系统主要功能的是哪些人,谁需要该系统的支持一完成其工作,还有系统的管理者和维护者。
2.3根据图书馆流通系统的需求分析,可以确定如下几点:
1)作为一个图书馆流通系统,首先需要读者(借阅者)的参与,读者可以登录到系统查询所需要的书籍,查到所需书籍后可以考虑预约,当然最重要的还是借书、还书的操作。
2)对于系统来说,读者发起的借书、还书等操作最终还需要图书管理员来处理,他们可以负责图书的预约和取消预约。
3)对于图书馆流通系统来说,系统的维护操作也是相当重要的,维护操作主要包括增加书目、删除及更新书目、增加书籍、减少书籍等操作。
由以上分析可以得出,系统的参与者主要有3类:读者(也可以称为借阅者)、图书馆管理员、图书馆系统管理员。
2.4确定系统用例
用例是系统参与者与系统在交互过程中所需要完成的事务,识别用例最好的方法就是从分析系统的参与者开始,考虑每个参与者是如何使用系统的。由于系统存在借阅者、图书管理员、系统管理员3个参与者,所以在识别用例的过程中,可以将系统分为3个用例图分别考虑。
1)借阅者请求服务的用例
(1)登录系统;
(2)查询自己的借阅信息;
(3)查询书籍信息;
(4)预约书籍;
(5)借阅书籍;
(6)归还书籍;
2)图书管理员处理借书、还书等的用例
(1)处理书籍借阅;
(2)处理书籍归还;
(3)删除预约信息;
3)系统管理员进行系统维护的用例
(1)查询借阅者信息;
(2)查询书籍信息;
(3)增加书目;
(4)删除或更新书目;
(5)增加书籍;
(6)删除书籍;
(7)增加借阅者账户;
(8)删除或更新借阅者账户;
2.5系统中的用例图
下面给出系统中所涉及到的3个用例图。
1)借阅者请求服务的用例图
【用例图说明】
(1)Search for Book:书籍查询用例
(2)Reserve the book:书籍预约用例
(3)Logon the system:登录系统
(4)Query Info:查询借阅信息
(5)Borrow the book:借阅书籍
(6)Return the book:归还书籍
(7)Return With Fine:还书时缴纳罚金
2)图书馆管理员处理借书、还书等的用例图
【用例图说明】
(1)Get book:书籍归还处理
(2)Lend book:书籍借阅处理
(3)Remove Reservation:删除书籍预约处理
(4)Get with fine:还书时收取罚金
(5)check user count:检查用户借阅凭证的合法性
(3)系统管理员进行系统维护时的用例图
【用例图说明】
(1)Query Borrower Info:查询读者信息
(2)Query Book Info:查询书籍信息
(3)Add Title:增加书目
(4)Remove or Update Title:删除或更新书目
(5)Add Book:增加书籍
(6)Remove Book:删除书籍
(7)Add Borrower:增加借阅者账户
(8)Remove or Update Borrower:删除或更新借阅者账户
2.6总体设计
系统的总体设计遵循如下的原则。
1)系统应具有良好的适应性:能适应用户对系统的软件环境、管理内容、模式和界面的要求;
2)系统应具有可靠性:采用成熟的技术方法和软件开发平台,以保证系统在以后的应用中安全、可靠;
3)系统应具有较好的安全性:应提高安全机制和用户权限机制的完善程度,确保数据的受限访问;
4)系统应具有良好的可维护性:系统应易于维护、安装;
5)系统应具有良好的可扩展性:系统应适应未来信息化的要求,能方便地进行功能扩展,以建立完善的信息集成管理体系。
2.7项目目标
本项目的目标如下:
·系统能够提供友好的用户界面,使操作人员的工作量最大限度的减少;
·系统具有良好的运行效率,能够达到提高生产率的目的;
·系统应有良好的可扩充性,可以容易地加入其他系统的应用;
·平台的设计具有一定超前性,灵活性,能够企业生产配置的变化
·通过这个项目可以锻炼自己,提高自己的开发能力和项目管理能力
3.图书馆管理系统系统功能及系统设计介绍
图书管理系统需要实现的功能主要有四大模块:"日常工作管理"、"基本资料维护"、"查询"、和"系统管理"模块。其中“日常工作管理”和“基本资料维护”是整个系统的核心。
3.1.功能的实现:
系统关键模块的功能、结构:
(1)基本数据维护模块。基本数据维护模块提供了使用者录入、修改并维护基本数据的途径。例如对借阅者的、书籍的各项信息的更改与修改。
(2)基本业务模块。基本业务模块要用于实现用户借书与还书的管理,例如借阅者可以登录系统预约书籍,图书管理员可以取消书籍的预约,当然还可以进行借书还书等操作。
(3)数据库管理模块。在系统中,所有书籍的信息以及借阅者的账户信息都要统一管理,书籍的借阅情况、预约情况也要进行详细的记录,所以要用统一的数据库平台进行管理。
(4)信息查询模块。信息查询模块主要用于查询书籍的信息和借阅者的信息。
下图即表示图书馆图书流通系统的功能需求:
基本数据维护模块包括如下所示的几个方面。
(1)添加借阅者信息。系统管理员可以添加借阅者账户。
(2)修改更新借阅者信息。系统管理员可以修改更新借阅者信息。
(3)添加书目信息。系统管理员可以添加书目。
(4)修改更新书目信息。系统管理员可以修改和更新书目信息。
(5)添加书籍信息。系统管理员可以添加书籍。
(6)删除书籍信息。系统管理员可以删除书籍。
基本业务模块包括如图所示的几个方面。
(1)借书。处理借书业务。
(2)还书。处理还书业务。
(3)书籍预约。借阅者可以通过网络进行书籍预约。
(4)取消书籍预约。图书馆管理员可以根据情况取消书籍预约,如果借阅者已经借了此书或者借阅者要求取消预约都涉及此项业务。
数据库模块包括如图所示的几个方面。
(1)借阅信息管理。书籍借阅信息包括书的书名、ISBN以及借书的时间等。
(2)书籍信息管理。书籍信息包括书籍的名字、ISBN、作者、入库时间以及出版社,出版日期,页数,开本,价格,备注等。
(3)账户信息管理。账户信息管理包括借阅者的账户ID、姓名,性别,出生日期,所在部门,职务,允许借书数等。
(4)书籍预约信息管理。负责管理书籍预约信息。
信息查询模块主要是查询数据库中的相关信息,如图所示。
(1)查询书籍信息。负责书籍信息的查询。
(2)查询借阅者信息。负责借阅者信息的查询。
3.2 具体设计介绍及问题:
我创建了有关书籍的类,通过数据库完成对书籍信息的存储,同时设计一系列成员函数完成对书籍的借阅,归还,书籍信息的查找,删除,逾期罚款,对已借阅书籍的记录等操作。
如在book类中,用getnumber()函数获取书籍编号;用getname()函数获取书名;用Bbook()函数借阅书籍实现对图书的描述,如图书的编号,书名,借出,还入等操作,同时设置标记符shelf标记图书是否在架。定义图书库类BDatabase,用delbook()函数完成删除书籍的操作;用addbook()函数增加书籍实现对图书的维护,查找和删除等操作。其中大量用到了文件的输入输出流,完成了文件的打开关闭和写入读出等操作。
我完成了数据库连接的操作
在CRecordSet类中定义了一个成员变 量m_pDatabase:
CDatabase *m_pDatabase;它是指向对象数据库类的指针。如果在CRecordSet类对象调用Open()函数之前,将一个已经打开的CDatabase类对象指针传给m_pDatabase,就能共享相同 的CDatabase类对象。如:
CDatabase m_db;
CRecordSet m_set1,m_set2;
m_db.Open(_T("Super_ES")); // 建 立ODBC 连 接
m_set1.m_pDatabase=&m_db; //m_set1 复 用m_db 对 象
m_set2.m_pDatabse=&m_db; // m_set2 复 用m_db 对 象
我完成了查询记录的操作
查询记录使用CRecordSet::Open()和 CRecordSet::Requery()成员函数。在使用CRecordSet类对象之前,必须使用 CRecordSet::Open()函数来获得有效的记录集。一旦已经使用过CRecordSet::Open() 函数,再次查询时就可以应用CRecordSet::Requery()函数。在调 用CRecordSet::Open()函数时,如果已经将一个已经打开的CDatabase 对象指针传给CRecordSet类对象的m_pDatabase成员变量,则使 用该数据库对象建立ODBC连接;否则如果m_pDatabase为空指 针,就新建一个CDatabase类对象并使其与缺省的数据源 相连,然后进行CRecordSet类对象的初始化。缺省数据源 由GetDefaultConnect()函数获得。
如增加记录
增加记录使用AddNew()函数,要求数据库必须是以允许增加的方式打开:
m_pSet->AddNew(); //在表的末尾增加新记录
m_pSet->SetFieldNull(&(m_pSet->m_type),FALSE);
m_pSet->m_type="军事"; //输入新的字段值
m_pSet-> Update(); //将新记录存入数据库
m_pSet->Requery(); //重建记录集
如删除记录
直接使用Delete()函数,并且在调用Delete() 函数之后不需调用Update()函数:
m_pSet->Delete();
if(!m_pSet->IsEOF())
m_pSet->MoveNext();
else m_pSet->MoveLast();
又如修改记录
修改记录使用Edit()函数:
m_pSet->Edit(); //修改当前记录
m_pSet->m_type="发电机"; //修改当前记录字段值 ...
m_pSet->Update(); //将修改结果存入数据库
m_pSet->Requery();
又如统计记录
统计记录用来统计记录集的总数。可以先声明一个CRecordset对象m_pSet。再绑定一个变量m_lCount,用来统计记录总数。执行如下语句:
m_pSet->Open(“Select Count(*) from 表名 where 限定条件”);
RecordCount=m_pSet->m_lCount;
m_pSet->Close();
RecordCount即为要统计的记录数。
参考资料:
VisualC++开发技术大全(第2版 人民邮电出版社
《MFC深入浅出》,华中理工大学出版,李久进
MFC程序设计轻松入门 欧阳志宏//董霖//钟俊华 人民邮电出版社
MFC编程技巧与范例详解 曾凡锋,苗雨 编著 清华大学出版社
4.心得体会
通过两个星期的实践,我们的图书馆管理信息系统(MFC)终于完成了。在此期间小组三人密切合作,共同克服了一系列遇到的困难,完成了 有关流程的设计,类的编写,函数的定义,数据库的建立与连接,操作界面的优化等任务,在老师和同学的大力帮助下学习了MFC的相关知识并能够熟练的应用,总之通过这次紧张的实践自身的技能和综合能力都有了大幅度的提高!
通过进行图书馆管理系统的开发,使我进一步明确了设计一个管理信息系统的方法和思路,将系统开发的各阶段的基本活动贯穿起来,使我更加形象、具体的了解了管理信息系统。系统开发的过程是一个巩固以前所学的计算机软件开发知识,将零碎知识整合起来,掌握新技能的过程。通过此次实践,我对当前计算机软、硬件技术的发展有了进一步地了解和认识,培养我们综合运用专业知识分析问题、解决问题的能力及运用工具软件的能力。
由于时间与自身能力的制约,我们的系统也存在很多的的缺陷。比如系统的界面不够美观,有的功能不够完善等,与用户的交互性还欠缺等。对此还请老师给与批评指教,使我能过了解到我们系统中所存在的缺陷与不足。下载本文