您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 程序设计报告-图书馆管理系统
-程序设计报告(2014/2015学年第1学期)题目:南邮图书馆管理系统专业组长学号姓名组员学号姓名指导教师指导单位日期-成员分工组长()负责图书的所有相关信息内容存为文件部分代码编写。并使界面友好,输入信息符合逻辑。组员()负责显示所有即将到期的图书(归还日期在三天之内);按借阅次数对所有图书进行排序部分代码编写组员()负责图书馆管理系统所拥有功能的定义。评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语教师签名:年月日评分等级131306-备注评分等级共五种:优秀、良好、中等、及格、不及格题目:南邮图书管理系统一、课题内容和要求该系统要求建立一个南邮图书馆管理系统,并具有排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。(1)图书的信息应包括:索引号,名称,馆藏地址(三牌楼、仙林)、类别(人文、科技、外语等),数量,价格,入库日期,归还日期,借阅次数,借阅状态(可借、不可借)。(2)需要实现的功能1)对已图书信息进行更新操作,包括添加和删除一种书的信息、修改图书信息(例如图书被借阅,书的数目减1,借阅次数加1,如果数量为0则状态为不可借);2)通过按图书的名称查询图书信息;3)显示所有即将到期的图书(归还日期在三天之内);4)按借阅次数对所有图书进行排序;5)将图书的所有相关信息内容存为文件。(3)界面友好,输入信息符合逻辑。二、需求分析在整个系统中一共主要有三个部分:图书借阅、图书管理和图书搜索。其中图书借阅包含借出时间、归还时间、是否归还(1)可根据ID账号找到某本书的索引值,从而获取图书信息,进行借阅,系统将自动添加可借阅时间,并将信息记录(2)可分页显示借书记录,借阅信息(3)分页显示即将到期的图书图书管理部分包含图书列表,添加书,删除图书信息(1)将所有图书进行排序,入库,并记录图书信息-(2)添加一本书,删除图书信息(可删除一本或者删除全部索引值为一个的全部图书信息)(3)修改图书信息,可根据索引值找到图书并进行修改(4)分页显示所有图书列表搜索图书(1)可用索引值搜索书本信息,以以及图书在数组中的位置(2)也可根据图书名搜索图书所在数组位置,返回图书信息三、概要设计1)主要结构体:在library这整个类中,由mainscreen()这个函数进入brrowbook()、bookmager()、searchbook()这三个函数分别提供借书、管理图书、搜索图书三种功能在借书功能包含借书与还书,而管理图书中则包含添加、删除、修改、查看等功能。而在本程序中每一本书都赋予了对应的ID和索引值,而ID是唯一的,当添加成功时,系统会自动添加入库时间,每个singlebook结构体都用来存储图书的基本信息以及相应的入库时间,而borrowtable则存储图书借阅的信息。booklist则用来存储所有图书的信息。而图书的存储信息页按照要求存储在相应的文件dat中。2)主要函数流程图:主程序图书借阅图书管理搜索图书添加图书修改图书信息删除图书搜索图书信息查看所有图书-图书借阅选择用户进入选择借书输入图书ID图书名称是否借阅是否可借阅是否余量不足禁止借阅余量不足结束借阅完成图1程序流程图借阅图书借阅归还-图2归还图书图3归还图书输入IDgiveBackResult=booklist.giveBackBook(singlebook.getSuoyin(id))giveBackResult!=0?Borrowtable.giveback(id)还书时出现错误还书成功结束-添加图书添加图书输入索引SY和IDsearchBookPosWithSY==-1t.ID=allBooks;data.push_back(t);allBooks++;数目Count+=1结束书名=booklist.bookinfo(sy).name-图4删除图书图5删除图书单本OR多本输入ID得到图书索引删除图书信息输入索引值删除所有索引值为SY的图书结束-修改图书-图6修改图书输入书的索引SYBooklist.searchBookPosWithSY(sy)!=-1显示索引值为SY的图书信息修改?修改图书信息没有此书结束-四、源程序代码#includeiostream#includevector#includectime//(把日期和时间转换成字符串该类的对象表示的时间是基于格林威治标准时间的)#includecstdlib//(常用的函数库)#includefstream#includesstream#includealgorithm//(演算法,提供了大量基于迭代器的非成员模板函数)usingnamespacestd;intmin(inta,intb){if(ab){returna;}returnb;}structdata_booklist{intID;//书本IDstringSuoyin;//书本索引(string类是字符串,不可任意改变,需要返回一个新的string类对象)stringName;//书本名称intAddress;//书本地址stringBookClass;//书本类别intCount;//数目intPrice;//价格boolBorrowAble;//是否允许借阅intBorrowedCount;//借阅次数};intcmpBorrowedCount(data_booklista,data_booklistb);intcmpID(data_booklista,data_booklistb);//(给排序函数sort提供比较大小的方法)classBOOKLIST{private:vectordata_booklistdata;intallBooks;public:BOOKLIST();//~BOOKLIST();intsearchBookPosWithSY(stringsy);//根据索引查找书在数组中的位置data_booklistbookInfo(stringsy);//根据索引查找书本信息-voidaddNewBook(data_booklistt);//添加新书voidremoveAllBook(stringsy);//删除所有索引为sy的书intsearchBookPosWithName(stringname);//根据图书名搜索书在数组中的位置data_booklistsearchBookWithName(stringname);//根据图书名返回书的信息voidupdateBookInfo(stringsy,data_booklistt);//更改索引为sy的图书信息intborrowBook(stringsy);//借书时对表的修改,返回0表示借阅成功,1数量不足,2禁止借阅intgiveBackBook(stringsy);//还书时对表的修改voidsortBooks(intoption);//对图书排序0=按借阅次数1=按IDvoidsave();//保存voidremoveOneBook(stringsy);//删除一本索引为sy的书voidshowBooks(intpage);//分页显示书本信息};intcmpBorrowedCount(data_booklista,data_booklistb){if(a.BorrowedCountb.BorrowedCount)return1;return0;}intcmpID(data_booklista,data_booklistb){if(a.IDb.ID)return0;return1;}BOOKLIST::BOOKLIST(){ifstreambooklistFile(booklist.dat);//尝试从文件加载数据if(booklistFile){booklistFileallBooks;for(inti=0;iallBooks;++i){data_booklistp;booklistFilep.ID;booklistFilep.Suoyin;booklistFilep.Name;booklistFilep.Address;booklistFilep.BookClass;booklistFilep.Count;booklistFilep.Price;booklistFilep.BorrowAble;booklistFilep.BorrowedCount;data.push_back(p);}-booklistFile.close();}else{allBooks=0;}}intBOOKLIST::searchBookPosWithSY(stringsy){for(inti=0;iallBooks;++i){if(data[i].Suoyin==sy){returni;}}return-1;}data_booklistBOOKLIST::bookInfo(stringsy){returndata[searchBookPosWithSY(sy)];}voidBOOKLIST::addNewBook(data_booklistt){intpos=searchBookPosWithSY(t.Suoyin);if(pos==-1){//(-1是没找到,pos是记录的意思)t.ID=allBooks;data.push_back(t);allBooks++;}else{data[pos].Count+=1;}}voidBOOKLIST::removeAllBook(stringsy){intpos=searchBookPosWithSY(sy);data.erase(data.begin()+pos);//(erase为删除数据,begin是date的开始)allBooks--;}intBOOKLIST::searchBookPosWithName(stringname){for(inti=0;iallBooks;++i){if(data[i].Name==name){-returni;}}return-1;}data_booklistBOOKLIST::searchBookWithName(stringname){intp=searchBookPosWithName(name);if(p=0){returndata[p];}else{data_booklistt;t.Count=0;t.Name=name;returnt;}}voidBOOKLIST::updateBookInfo(stringsy,data_booklistt){intp=searchBookPosWithSY(sy);if(p=0)data[p]=t;}intBOOKLIST::borrowBook(stringsy){intp=searchBookPosWithSY(sy);if(p0||data[p].Count==0){return1;}if(data[p].BorrowAble){data[p].Count--;data[p].BorrowedCount++;return0;}else{return2;}}intBOOKLIST::giveBackBook(stringsy){intp=searchBookPosWithSY(sy);if(p=0){-data[p].Count++;return0;}return1;}voidBOOKLIST::sortBooks(intoption){if(option==0)sort(data.begin(),data.begin()+allBooks,cmpBorrowedCount);//(sort是排序函数)elsesort(data.be
本文标题:程序设计报告-图书馆管理系统
链接地址:https://www.777doc.com/doc-5687866 .html