重庆大学毕业设计(论文)毕业设计课题:图书馆管理系统院(系):电气信息学院专业班级:计算机网络技术学号:学生姓名:指导教师:起止时间:2009.03.15-2009.6.04毕业设计(论文)任务书设计(论文)中文题目:图书馆管理系统图书馆管理系统孙锦汶(重庆大学城市科技学院计算机网络技术重庆永川402167)【中文关键词】统一建模语言; 面向对象; 图书馆管理系统; 建模设计;【英文关键词】UML; object-oriented; library management system; modeling design;【中文摘要】以图书馆管理系统的开发为背景,探讨了UML在软件体系结构建模中的应用。
以用例图表达系统需求, 以设计类图、顺序图、活动图表达系统的结构逻辑及行为逻辑,并详细介绍了基于UML的图书馆管理系统的建模设计及实现过程。
【英文摘要】Based on the development of library management system, this paper discusses the application of UML to the modeling in the system structure of software, and illustrates in a detailed way the modeling design and the realizing process in the library management system based on UML, with the case picture to express the demand of the system, and the class diagram, the sequence diagram and the activity diagram to express the structural logic and behavioral logic in the system.目录第一章毕业设计内容 (5)一.毕业设计需求分析、功能分析、设计背景 (5)1.1 <<图书馆管理系统>>问题分析、编写目的、设计背景 (5)1.1.1 程序编写目的 (5)1.1.2 设计背景 (5)1.1.3 需求分析 (5)1.1.4 功能分析 (7)1.1.5 算法设计及程序设计中技术重点 (7)二.毕业设计详细设计 (11)2.1 程序中涉及的类的UML类图和主要函数流程图或框图 (11)2.1.1系统UML类图 (11)2.1.2系统流程图 (13)2.2 程序源代码 (19)三.毕业设计程序运行测试 (25)3.1 系统运行结果 (25)第二章毕业设计总结 (30)参考文献 (31)第一章毕业设计内容一.毕业设计需求分析、功能分析、设计背景1.1 <<图书馆管理系统>>问题分析、编写目的、设计背景1.1.1 程序编写目的将计算机技术运用于图书信息管理,使图书管理更加方便、快捷,为用户提供最舒适最人性化的服务.1.1.2 设计背景图书管理系统是图书馆管理中不可缺少的一部分,它的内容对图书馆的决策者和管理者来说至关重要,所以该系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不便.随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,他已进入人类社会的各个领域并发挥着越来越重要的作用.由此,建立高性能的图书管理系统,作为计算机应用的一部分,使用计算机对图书进行管理,具有手工管理无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,这些优点能够极大的提高图书信息管理的效率,也是科学化、正规化的体现.实践表明,将计算机技术运用于图书信息的管理,有利于建立起合理的管理机制.避免人为的信息管理的错误,以达到客观公正,准确高效的目的,有利于计算机技术的推广.因此,设计这样的软件系统是很必要的.1.1.3 需求分析当决定要设计一个信息管理系统时,首先要对信息系统的需求进行分析,需求分析要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。
获得当前系统的处理流程,在此首先假设当前系统是手工处理系统。
手工处理流程大致是这样的。
读者将要借的书和借阅证交给工作人员,工作人员将每本书附带的描述书信息的卡和读者借阅证一起放在一个小格栏,并在借阅证和每本书上贴的借阅信息。
这样借书过程就完成了。
还书时读者将要还的图书交给工作人员,工作人员图书信息找到相应的书卡和借阅证,并填写相应的还书信息。
抽象出当前系统的逻辑模型。
在理解当前系统“怎么做”的基础上,抽取其“做什么”的本质,从而从当前系统的物理模型抽象出当前系统的逻辑模型。
在物理模型中有许多物理因素,随着分析工作的深入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的困素,去掉那些非本质的困素即可获得反映系统本质的逻辑模型。
建立目标系统的逻辑模型。
分析目标系统与当前系统逻辑上的差别,明确目标系统到底要“做什么”,从而从当前系统的逻辑模型导出目标系统的逻辑模型。
在对上述流程进行分析后,我们对新的图书处理流程进行整理,图书馆借还书过程如下:借书过程:读者从架上选到所需图书后,将图书和借书卡交管理人员,管理人员用码阅读器将图书和借书卡上的读者条码读入处理系统。
系统根据读者条码从读者文件和借阅文件中找到相应记录;根据图书上的条码从图书文件中找到相应记录。
系统在读者维护中增加一条记录,记入读者、图书、借阅日期等内容。
还书过程:还书时读者只要将书交给管理人员,管理员将书上的图书条码、读者条码读入系统,系统从借阅文件上找到相应记录。
系统在读者维护中增加一条记录,记入读者、图书、归还日期等内容。
为了对图书管理系统做完整的描述,还需要对上面得到的逻辑模型做一些补充。
首先图书管理系统的用户界面,这样做的目的是保证整个系统的用户界面的一致性。
其次前面着重对借还书流程进行了说细的阐述,下面介绍图书管理系统的总体功能要求。
简单的图书管理系统主要包括下面的功能:>借书处理:完成读者借书这一业务流程。
>还书处理:完成读者还书这一业务流程。
>新书上架:输入新书资料。
>旧书淘汰:删除图书资料。
>读者处理:添加、删除读者信息。
>读者查询:根据读者号,查询读者借阅情况。
1.1.4 功能分析设计一个图书馆管理系统,完成图书管理和读者管理的功能,并能对借阅信息进行管理,要求完成以下功能:5.读者信息管理,可以添加、修改、删除、查询读者信息;6.图书信息管理,可以添加、修改、删除、查询书籍信息;7.借书信息管理,可以进行添加借书信息。
8.还书信息管理,可以进行添加还书信息。
程序中所涉及C++语言内容包括:C++语言编译预处理过程、函数、数组、类、继承、封装、多态,重载,面向对象程序设计等相关内容。
1.1.5 算法设计及程序设计中技术重点采用C++编写Win32 Console Application。
使用文本文件保存数据。
定义读者类,保存单个读者信息。
定义读者库类,实现建立读者的个人资料。
定义图书类,保存单个图书信息。
定义图书库类,实现对图书的维护,查找,删除等。
编制主函数 main() 完成函数调用过程。
程序中所涉及C++语言内容包括:C++语言编译预处理过程、函数、数组、类、继承、多态,重载,面向对象程序设计等相关内容。
使用文本文件利用输入输出流留保存和提取数据。
图书馆管理系统,经过分析进行类和接口的结构设计,进行对象的抽象,设计出类的内容,画出UML类图。
类设计参数如表2-1、表2-2。
读者类:Reader表2-1读者类设计参数读者库类:RDateBase表2-2读者库类设计参数图书类:Book表2-3图书类设计参数图书库类。
BDataBase表2-4图书库类设计参数二.毕业设计详细设计2.1 程序中涉及的类的UML类图和主要函数流程图或框图2.1.1系统UML类图图2-1读者类UML图图2-2读者库类UML图图2-3图书类UML图图2-4图书库类UML图2.1.2系统流程图2.2 程序源代码Stdafx.h#include <iostream>#include <string>const int Maxr=100; //最多的读者const int Maxb=100; //最多的图书const int Maxbor=5; //每位读者最多借五本书char today1[32] ="";using namespace std;class Reader //读者的信息描述{private:int tag; //删除标记 1:已删 0:未删int no; //读者编号char name[10]; //读者姓名int borbook[Maxbor]; //所借图书char bordate[Maxbor][32]; //借书日期char bordate1[Maxbor][32]; //归还日期public:Reader();char *getname(); //获取姓名int gettag(); //获取删除标记int getno(); //获取读者编号void setname(char na[]); //设置姓名void delbook() ; //设置删除标记 1:已删 0:未删void addreader(int n,char *na) ; //增加读者void borrowbook(int bookid,char brdate[32]); //借书操作int retbook(int bookid) ; //还书操作void disp() ; //读出读者信息};class RDatabase //读者类库,实现建立读者的个人资料{private:int top; //读者记录指针Reader read[Maxr]; //读者记录public:RDatabase(); //构造函数,将reader.txt读到read[]中void clear(); //删除所有读者信息int addreader(int n,char *na); //添加读者时先查找是否存在Reader *query(int readerid); //按读者编号查找Reader *queryname(char readername[10]); //按读者姓名查找void disp(); //输出所有读者信息void readerdata(); //读者库维护~RDatabase(); //析构函数,将read[]写到reader.txt文件中};class Book //图书类,实现对图书的描述,图书的编号,书名,借出,还入等{private:int tag; //删除标记 1:已删 0:未删int no; //图书编号char name[20]; //书名char author[20]; //作者char cbs[20]; //出版社int onshelf; //是否再架 1:再架 2:已借public:Book();char *getname(); //获取书名char *getauthorname(); //获取作者名char *getcbsname(); //获取出版社名int getno(); //获取图书编号int gettag(); //获取删除标记void setname(char na[]); //设置书名void setonshelf(int oa);void delbook(); //删除图书void addbook(int n,char *na,char *aa,char *ca,int oa); //增加图书int borrowbook(); //借书操作void retbook(); //还书操作void disp(); //输出图书};class BDatabase //图书库类,实现对图书的维护,查找,删除等{private:int top; //图书记录指针Book book[Maxb]; //图书记录public:BDatabase(); //构造函数,将book.txt读到book[]中void clear(); //全删int addbook(int n,char *na,char *aa,char *ca,int oa); //增加图书Book *query(int bookid); //按编号查找图书Book *query2(char a[]); //按书名查找图书Book *query3(char a[]); //按作者查找图书Book *query4(char a[]); //按出版社查找图书void bookdata(); //图书库维护void disp();~BDatabase(); //析构函数,将book[]写到book.txt文件中};Main.cpp#include "stdafx.h"#include <iostream>#include <string>#include <time.h>#include <conio.h>#include <iomanip>#include <fstream>char today[32] ="";char second[32]="";using namespace std;void gettime(){tm *temptm;time_t temptime;temptime=time(0);temptm=localtime(&temptime);cout<<"\t\t系统报时:"<<temptm->tm_year+1900<<"-"<<temptm->tm_mon+1<<"-"<<temptm->tm_mday<<"\t"<< temptm->tm_hour<<":"<<temptm->tm_min<<":"<<temptm->tm_sec<<endl; cout<<today<<"\t"<<second<<endl;memset(today,0,32);memset(second,0,32);}void main() //main() 函数的实现,程序的主界面的引导{gettime();char choice;int bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB;Book *b;cout<<"\t******************************************************"<<endl; cout<<"\t***欢迎使用图书馆管理系统,希望能为你提供更好的服务***"<<endl; cout<<"\t*** 请注意:只有安全退出本系统,才会保存数据。