2022年面向对象程序设计语言课设.docx
精选学习资料 - - - - - - - - - 南京航空航天高校面对对象程序设计语言课程设计报告图 书 管 理 系 统学号:姓名:日期:名师归纳总结 - - - - - - -第 1 页,共 9 页精选学习资料 - - - - - - - - - 目 录一.需求分析 .2 二.程序主要功能 .2 三.程序运行平台 .2 四.系统功能框架图 .3 五.程序类说明 .4 六.模块分析 .6 七.比较有特色的地方 .7 八.存在的不足与计策 .11 九.编程体会 .12 十.程序源代码 .13 1 / 9 名师归纳总结 - - - - - - -第 2 页,共 9 页精选学习资料 - - - - - - - - - 一 需求分析本系统旨在实现一个小型的图书治理系统,对于一个小型的图书馆或藏书 室来说,实施本系统不仅可以削减工作人员数量,降低成本,而且可以大大提 高工作效率,降低工作强度,便利读者借书查书及办理各种手续,更便利工作 人员对图书进行更有效的治理;程序主要实现读者治理、图书基本信息及库存治理、图书借仍治理以及一 些帮助功能等;二 程序主要功能该程序的主要功能有:读者功能 可进行读者注册、登录查看、修改密码、注销读者、清除全部及查看帮忙等操 作;其中登录时要输入姓名密码;图书信息治理 可以进行查找图书、添加新书、删除图书、清空全部、修改、显示全部等操 作;其中添加内容包括:书名、ISBN 编号、作者、出版商、出版日期及内容简介、是否在架,便利读者依据不同需要进行查找、查看;修改图书中假如某一项不想修改,可以输入 图书借仍功能0 保留该项原有信息;应当说这是整个系统最主要的功能,用户需先登录,借仍时要输入 ISBN 号2 / 9 名师归纳总结 - - - - - - -第 3 页,共 9 页精选学习资料 - - - - - - - - - (查看图书时要记住 ISBN 号,这是依据实际情形);帮忙 一个简洁的操作指南,指导用户下一步该如何操作;退出系统 退出时将把全部内容以二进制储存到文件里,在运行时将从文件载入信 息;另外,仍制作了有关该系统的一些说明,版本信息等;运行程序后每一步都会有具体的提示,操作简便,大多数地方都考虑到防 止用户显现误操作的情形,以提高程序的健壮性,可以放心使用!三 程序运行平台该程序是用 VC+6.0 制做的,使用 Microsoft Visual C+ 6.0 运行该程序,具体操作是:打开 Microsoft Visual C+ 6.0 ,菜单栏里点文件打开工作区找 到“ 图书治理系统 .dsw ” 这个文件打开,或者在资源治理器中双击该文件,此时, VC+6.0 会自动打开,并载入该系统相关资源,点击 Run 命令菜单或者 或用快捷键 Ctrl+F5 运行该程序;四 系统功能框架图图书治理系统读书 库 信 息借 书 / 仍 书帮 助退 出 系 统统 的 一 些 说 明有 关 该 系者. 登录查看. 新书入库仍 书.借 书(登 录). 注册. 查找名师归纳总结 . 注销. 删除第 4 页,共 9 页. 修改密码. 修改3 / 9 . 帮忙说明. 显示全部在架. 返 回 上 一书- - - - - - -精选学习资料 - - - - - - - - - 五 程序类说明有关图书信息的类和书库类 class Book/ 储备图书信息的类 char BookName20 ;/书名,用于查找0 为在架, 1 为char ISBN20 ;/ISBN 号,用于查找char Writer20 ;/作者名,用于查找char Publisher20 ;/出版商,用于查找char PublishDate20 ;/出版日期,用于查找char BriefIntroduction100/该书内容简介int i_o ;/判定书是否借出,借出Book *next ; /指向下一个节点的指针 ;/* 书库类链表 */ class BookList public: Book *node, *head_ptr ; /定义两个 Book 指针, head_ptr 为头指针,node 为活动指针 BookList / 构造函数,使指针初始化 node = new BooksizeofBook ;4 / 9 名师归纳总结 - - - - - - -第 5 页,共 9 页精选学习资料 - - - - - - - - - head_ptr = NULL ;node->next = NULL ; void save_file ; / 储备文件void load_file ; /上传文件void AddNewBook ;/ 新 书 登 记 , 对 node 指向的类对象赋值void Add_listBook *p; /增加结点到Book 链表中,用于添加新书时char *borrow_book ; / 借书手续char *return_book ; /仍书手续int search_ISBNchar *p ;/按 ISBN 号查找图书int search_BookNamechar *p ; /按书名查找图书 int search_Writerchar *p ; /按作者名查找图书 int search_Publisherchar *p ; /按出版商查找图书 int search_PublishDatechar *p ; /按出版日期查找图书 void search ; /进入查找菜单 void show_contentint n ; /显示某本书的内容 void show_all ; / 显示全部库存的未被借出的图书 void delete_onebook ; / 删除某本书 void change_content ; /更换某本书的信息 ;void GoInto_BookInfo; /进入书库信息菜单有关读者信息的类和读者类 class Reader/ 储备读者信息的类 char ReaderName20; /读者姓名5 / 9 名师归纳总结 - - - - - - -第 6 页,共 9 页精选学习资料 - - - - - - - - - char Password13; /密码char book120,book220;/ 每人最多借两本书,可以依据需要增减限额int y_n; /记录借的书的数目,0 为没有借书, 1 为借了一本, 2 为借了二本Reader *next; /指向下一节点的指针 ;/* 读者类链表 */ class ReaderList private: int position; /说明链表中的第几个节点public: Reader *point,*head_point; /定义两个Rreader指针, head_point为头指针, point为活动指针/ 构造函数,使指针初始化ReaderList head_point = NULL;point = new ReadersizeofReader;point->next = NULL; void save_readerfile; / 储备文件void load_readerfile; / 上传文件void reader_register; / 读者注册void Add_PointReader *p; / 增加新结点到链表void reader_land; / 读者登录int search_ReaderNamechar *p; / 按姓名查找void show_OneReaderReader *p; / 显示某读者信息void change_password; / 修改密码void delete_reader; / 读者注销void GoInto_ReaderInfo; / 读者信息菜单 ;6 / 9 名师归纳总结 - - - - - - -第 7 页,共 9 页精选学习资料 - - - - - - - - - 六. 模块分析1、读者信息:下设子菜单,包括:a.登录查看 b.注册 c.注销 d.修改密码 e.帮忙说明 f.返回上一层 g.清空全部读者信息;Reader_List),信息储备在类 Reader 中,类 全部函数均封装在读者类中(中定义了两个 Reader 指针,一个是 *head_point, 作为链表的头结点,另一个是*point ,作为活动指针,在不同的类的成员函数中都可使用,为了防止该活动指 针使用过频,造成几个函数同时使用同一个指针指向不明,在有些函数里仍定义了一些暂时指针;其主要思路是:输入姓名密码后,将姓名放到一个暂时数组中,让point 指到 head_point 的 位 置 , 使 用 point = point->next 在 链 表 中 移 动 指 针 , 用strcmpa,b找到与暂时数组中字符相同的 进行修改、删除、查看等一系列操作;point->ReaderName,再对其所在的类2、书库信息:该部分内容最丰富,下设子菜单,包括 a.新书入库 b.查找 c.删除 d.修改 e.显示全部在架书 f.返回上一层g.清空全部图书内容 查找的子菜单包括:a.按书名查找 b.按 ISBN 号查找 c.按作者查找 d.按出版商查找 e.按出版日期查找 f.返回上一层;链表的思路也跟读者信息一样,从头结点开头建,每当新增加一个类节点 时,就把新增结点加到链表尾部,再让其中的 next 指向 NULL 空,这里没有对 链表进行排序;查找功能中,几个函数与读者查询类似不再赘述,只是把其中 的变量名改了一下,查找方法也与上述方法一样;有关菜单的制作,就是先显示菜单,让用户输入挑选,进行输入有效性检 查,然后用 switch 来对不同的挑选调用类中不同的函数;3、借书 /仍书:这部分是系统最主要的功能,也是整个系统实现中有肯定难度的地方,需 要建立两个类之间的联系;GoInto_bor_retBookList *book_ptr,ReaderList *reader_ptr 函数,把这两个类 的地址传到函数中去,函数中分别又相应地定义了两个指针分别指向这两个 类,再调用类成员函数或成员指针进行数据处理,读者类中(Reader)定义了7 / 9 名师归纳总结 - - - - - - -第 8 页,共 9 页精选学习资料 - - - - - - - - - 一个 int y_n 变量,记录了该读者借了几本书(0 没借, 1 借了一本, 2 借了两 本,由于是小型图书馆,所以上限为两本),图书类中(Book)定义了一个 int i_o 变量( 1 为借出, 0 为在架),记录了该书是否被借出,在进行借书时,分 别更换两变量的记录,以说明书从图书馆借出到了读者手中,然后再把书名复制到读者中的 book1 或 book2 数组中,这样显示的时候就可以看到借了什么书了,另外在其它函数中也要依据两个 样的,仍书原理也类似上述;int 的变量的值来判定书有没有借出等,同4、其它:3 个选项: 4.帮忙5.退出系统 6.有关该系统的一些说明,主菜单中剩下的都是些文字说明,便利用户有不懂的地方时参考看一下,可能帮忙里面写得不 是很具体,以后有机会渐渐补充吧;选了退出系统后,将对文件进行储存,就是把新的修改过的链表放到指定 文件中掩盖原先的链表以更新文件,所以必需要正常退出,不然直接按窗口的 关闭的话就不会储存修改后的链表了;七 比较有特色的函数有特色的函数指的是实现地较为奇妙的类的构造函数、成员函数、友元函数等 函数,也可以是指针处理的函数,文件处理的函数等比较有特色的函数,能体 现奇妙构思即可;特殊应表达运算符重载!八存在的不足与计策此处主要总结自己在程序制作过程中存在的不足之处,有待进一步完善之处,考察同学对问题的总体把握和熟悉才能;同学应客观地做出分析,并说明为何 存在不足,应如何进行完善等信息;九编程体会这里是同学对于完成整个系统过程中的一个总体的感受和体会,在这里学 生可以自由地发挥,可以从各个方面进行总结,应中肯;此部分内容可以经提 炼归纳后可作为以后教案改进的一个直接依据;十程序源代码略8 / 9 名师归纳总结 - - - - - - -第 9 页,共 9 页