1、图书管理系统实验报告班级:软件工程 0807程序员:赵博聪 200826630726傅钦聪 200826630708成金诚 2008266307042009.6报告目录1 总体说明 .1.1 需求说明 1.11 需求分析 1.12 系统性能 1.2 功能介绍 1.2.1 详细功能 .登录 读者模块 工作人员模块 管理员模块 1.3 设计思路 2 数据设计与程序实现: .2.1 数据设计 2.1.1 图书数据设计 .2.1.2 读者数据设计 .2.1.3 其他用户数据设计 .2.1.4 存储文件设计 .2.2 类的作用 2.2.1 people 类 .2.2.2 reader 类 2.2.3 w
2、orkers 类 .2.2.4 manger 类 2.2.5 book 类 2.2.6 DBFile 类3 数据测试3.1 选择登录类型3.1.1 读者登录.3.1.2 工作人员登陆.3.1.3 管理人员登陆.3.1.4 读者注册.3.1.5 退出系统.4 总结: 111 总体说明1.1 需求说明1.1.1 需求分析1能够实现读者可以自助注册。2能够实现多种关键字查书,及查看所有馆藏书目功能。3实现管理人员借书,还书功能。4实现管理人员,对于读者,工作人员的修改(包括添加删除)5能够实现管理人员添加,修改馆藏书目。6能够实现上层人员查看下层人员信息。1.1.2 系统性能1系统安全2功能齐全3实
3、现一般的纠错功能(即对读者一般的输入错误判断)4易于维护和扩充数据1.2 功能介绍图书管理系统(LMS )用于图书馆进行图书的管理,主要的功能包括借书、还书、查找等。不同的使用对象具有不同的权限,详细见下表:表 1 系统功能表使用对象 功能 详细功能查看/修改个人信息,查看个人借阅信息读者查询图书信息(根据不同字段查询)工作人员 查询读者信息(个人信息和读者借书情况 )还书借书查询图书信息(根据不同字段查询)维护图书信息 添加、编辑图书信息维护读者信息 添加、删除、编辑读者信息维护人员信息 添加、删除工作人员信息管理人员查询图书信息(根据不同字段查询)1.2.1 详细功能简介登录选择登录身份(
4、读者、工作人员、管理员) ,输入用户名和密码,成功后进行相应的功能模块。读者模块读者可以查找馆藏书目,了解图书馆有哪些书,是否可借。(可选择根据不同字段查找书本也可全显书本)读者可以查看个人借书情况和修改基本个人信息、修改密码。工作人员模块可以查找馆藏书目,了解图书馆有哪些书,是否可借。根据读者用户名查询读者信息,显示该读者基本信息,和借书情况。读者信息高级查找可以根据姓名等其他信息进行查找(可选功能)借书功能:首先输入读者用户名,在该状态下依次输入该读者借的书,完成图书的借阅工作。还书功能:直接输入图书号,将该书的信息改为入库,并修改读者的借书记录。管理员模块可以查找馆藏书目,了解图书馆有哪
5、些书,是否可借。维护图书信息:添加:进入添加状态,根据提示依次输入图书的基本信息,默认状态下为继续输入。修改:输入书号,找到该书,根据提示选择该图书需要修改的字段,并进行修改。删除:删除工作人员,读者1.3 设计思路采用面向对象的方式实现图书管理系统,根据不同的使用权限,使用对象分为读者、工作人员和管理员。读 者 类 ( R e a d e r )人 员 类 ( P e o p l e )工 作 人 员 类 ( W o r k e r ) 管 理 员 类 ( M a n a g e r )数 据 操 作 类 ( D B F i l e )图 1-1 系统主要类结构图分别设计读者类、工作人员类、
6、管理员类(如上图) ,人员类为基类实现通用的功能。( 如查找图书信息)用文本文件进行数据的保存,需要保存的数据主要包括图书数据、用户数据(包括读者、工作人员、管理员) 。设置数据操作类,实现所有的文本操作相关的功能。2 数据设计与类的作用2.1 数据设计2.1.1 图书数据设计表 2 book 文件字段设计表字段名称 中文名 类型no 书号 Intname 书名 Char(40)author 作者 Char(20)press 出版社 Char(40)storenum 藏书量 Intborrownum 借出数 Int2.1.2 读者数据设计表 3 Users 文件字段设计字段名称 中文名 类型N
7、ame 用户名 Char(15)Truename 真实姓名 Char(10)Password 登录密码 Char(9)Name 真实姓名 Char(20)Sex 性别 Char(3)borrows 借阅书数目 IntBorrow 所借阅的书号 Int(5)2.1.3 其他用户数据设计表 4 其他用户(管理员,工作人员)字段设计字段名称 中文名 类型Name 用户名 Char(15)password 密码 Char(10)2.1.4 存储文件设计reader.txt 存储读者信息,数据顺序为 用户名,密码,性别,年龄,书名号manager.txt 存储管理员信息,数据顺序为 用户名,密码work
8、er.txt 存储工作人员信息 , 数据顺序为 用户名 ,密码book.txt 存储书本信息,数据顺序为 书名号,书名,作者,出版社 ,馆藏数量,借出数量2.2 类的作用2.2.1people 类(基类)people 类包含成员:char name15/储存用户名char password10/储存密码people()/成员函数有默认构造函数virtual people()/虚析构函数函数char *getname()/读取用户名char *getpass()/读取密码void setname(char *)/设置用户名void setpass(char *)/设置密码void search_
9、book(book*)/跳出查书界面函数 book* find_book (long,book*),void search_one_book(book* Bhead)/用于按书号查找图书函数 void print_all_book(book*)/查看全部图书2.2.2reader 类(people 类派生)reader 类包含成员:char sex2/储存性别int age/储存年龄int borrows/储存借书总数long borrow10/ 储存具体借书reader* next/连接下一个的链表reader()/成员函数有默认构造函数virtual reader()/虚析构函数函数 vo
10、id output()/输出读者信息函数 void update_reader()/修改个人信息函数 void output_borrows(book*)/查看个人借书情况。2.2.3workers 类(people 类派生) workers 类包含成员:char sex2/储存性别int age/储存年龄worker*next/连接下一个的链表worker()/成员函数有默认构造函数virtual worker()/虚析构函数函数 void borrow_book(reader*,book*)/借书函数 void return_book(reader*,book*)/还书函数 reader*
11、 find_reader(char*,reader*)/查看读者信息友元函数 friend istream& operator (istream& in,worker& w)/重载操作符2.2.4manger 类(people 类派生)manger 类包含成员 :char sex2/储存性别int age/储存年龄manger* next/连接下一个的链表manger()/成员函数有默认构造函数virtual manger()/虚析构函数函数 reader* find_reader(char*,reader*), void update_reader (reader*)/更新读者信息函数wor
12、ker* find_worker(char*,worker*),void update_worker(worker*&),void update_add_worker(worker*),void update_delete_worker (worker*&)/更新工作人员信息函数 void update_book (book*&),void update_add_book(book*),void update_delete_book(book*&),void update_revise_book(book*)/更新图书馆藏书信息2.2.5book 类book 类包含成员:long no/储存书
13、号char name40/储存书名char author20/ 储存作者char press40/ 储存出版社int storenum/储存馆藏数目int borrownum/储存借书数目book* next/连接下一个的链表book()/成员函数有默认构造函数virtual book()/虚析构函数函数 void output()/输出图书信息友元函数 friend ostream& operator (istream& in,book& b)/重载操作符2.2.6DBFile 类该类的每个对象操作一个数据文件,包含读、存、查找、删除数据的函数:函数 book* load_book(),re
14、ader* load_reader(),worker* load_worker(),manger* load_manger()/读入文档中的书 ,读者,工作人员和管理人员的数据函数 void login_reader(reader* Rhead,book* Bhead),void login_worker(worker* Whead,book* Bhead,reader* Rhead),void login_manger(manger* Mhead,book* &Bhead,reader* Rhead,worker* &Whead)/读者 工作人员和管理人员的登录函数 void dealcho
15、ice(reader* here,book* Bhead),void dealchoice(worker* here,book* Bhead,reader* Rhead),void dealchoice(manger* here,worker *&Whead,book* &Bhead,reader* Rhead)/登录后读者 工作人员和管理人员的相关操作函数 void registerreader(reader* Rhead)/新读者的注册函数 void save_book(book* Bhead),void save_reader(reader* Rhead),void save_worke
16、r(worker* Whead),void save_system(book* Bhead,reader* Rhead,worker* Whead)/保存数据到文档3 数据测试:3.1 选择登录类型如图为登入界面,根据用户的需要选择登入的方式3.1.1 读者登录选择 2 之后进入读者登入界面,如果输入不正确会出现如图:输入正确后会出现:选查看馆藏书目:按书号查询:1234 您所查询的书不存在 继续查询输入 1,否则输入 0:0 查看所有图书,就会显示如图。返回查看个人借阅信息修改个人信息:(1)修改年龄 (2)修改姓名 (3)修改密码 (4)退出登入查看个人信息:退出登录返回上层3.1.2 工
17、作人员登录请输入用户名:A 请输入密码:1234 密码错误!是否重新输入?(是输入1,不是输入 0)1 请输入用户名:AA 请输入密码:123456 该用户不存在!是否重新输入?(是输入 1,不是输入 0)0借书:(1)输入读者用户名 :zbc(2)输入书号:1234 没有该书!请重新输入 输入书号:abcd 没有该书!请重新输入 输入书号:10001 借书成功还书:()输入读者用户名 :bbc 没有该用户!请重新输入! () 输入要还书号:10002 此读者未借此书图书信息查询:()按书号查询()查看所有图书(3)返回读者信息查询:输入读者信息 zbc退出登入3.1.3 管理人员登录请输入用
18、户名:zbc 请输入密码: 0311 该用户不存在是否重新输入?(是输入1,不是输入 0)1 请输入用户名:yeyang 请输入密码:000000登入界面如下查找图书馆藏书:(1)按书号查看:12343 您所查询的书不存在 继续查询输入1,否则输入 0:继续查询输入 1,否则输入 0:0 (2)查看所有图书 (3)返回更新图书馆藏书:(1)添加:输入书名 abc,输入作者 zbc ,输入出版社 zjut,输入馆藏量 2,添加成功! 是否继续添加?(2)删除:请输入要删除的图书号: 10001 此书删除成功! (3)编辑:1.修改书名 2.修改作者 3.修改馆藏数目 4.修改出版社(4)返回读者
19、信息维护:(1)修改年龄 (2)修改姓名(3)修改密码工作人员信息维护:(1)添加工作人员:输入用户面:ggm 输入密码:ggm 添加成功!是否继续添加?(是输入 1,否输入 0):0(2)删除工作人员:请输入删除工作人员的账号:ggm 删除成功!(3)返回3.1.4 读者注册1.请输入你的用户名: yeyang2.请输入四位密码: 1234 3. 输入新性别(男输入 1,女输入 0):14. 输入新年龄 :19 3.1.5 退出系统4 实验总结实验刚开始的时候,完全不知道从何入手,多次阅读一些有关资料整理之后了解了实验要求,确定了类。之后从类的书写入手,一个个编写完善。我们十分珍惜此次 C+
20、大型实验的机会,通过自己的努力,学会了如何用C+编写一个简单的管理系统。首先要对程序的设计要求有比较明确的认识,然后是系统分析与系统设计,最后是代码的设计,编写与调试。按照程序编写集中原则,根据 C+课程所学概念、理论、方法,按照 C+程序设计的基本步骤,设计出了恰当规模的程序,进一步加深了我们对于 C+语言的理解与掌握。提高实践能力,增加了团队合作能力,培养了队员之间的感情与默契。我们编写代码的过程是辛苦的,不过也是快乐的,其中调试占据了一大部分时间,大家一起找错误一起解决错误,当一个一个 BUG 被发现并且攻克时,我们收获的成就,是喜悦!程序的编写原则很重要,只要我们在编程,我们便能不断进步。只有我们不断改进,才能提高我们的编程技艺。通过这次实验,我们对程序的设计与应用有了更深的认识,这次实验也会成为我们非常宝贵的经验。