程序设计报告图书馆管理系统.docx
- 文档编号:2750749
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:51
- 大小:809.95KB
程序设计报告图书馆管理系统.docx
《程序设计报告图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《程序设计报告图书馆管理系统.docx(51页珍藏版)》请在冰点文库上搜索。
程序设计报告图书馆管理系统
程序设计报告
(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)主要函数流程图:
图1
程序流程图
借阅图书
图2
归还图书
图3
添加图书
图4
删除图书
图5
修改图书
图6
四、源程序代码
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
intmin(inta,intb)
{
if(a
returna;
}
returnb;
}
structdata_booklist{
intID;//书本ID
stringSuoyin;//书本索引(string类是字符串,不可任意改变,需要返回一个新的string类对象)
stringName;//书本名称
intAddress;//书本地址
stringBookClass;//书本类别
intCount;//数目
intPrice;//价格
boolBorrowAble;//是否允许借阅
intBorrowedCount;//借阅次数
};
intcmpBorrowedCount(data_booklista,data_booklistb);
intcmpID(data_booklista,data_booklistb);//(给排序函数sort提供比较大小的方法)
classBOOKLIST{
private:
vector
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=按ID
voidsave();//保存
voidremoveOneBook(stringsy);//删除一本索引为sy的书
voidshowBooks(intpage);//分页显示书本信息
};
intcmpBorrowedCount(data_booklista,data_booklistb)
{
if(a.BorrowedCount>b.BorrowedCount)
return1;
return0;
}
intcmpID(data_booklista,data_booklistb)
{
if(a.ID>b.ID)
return0;
return1;
}
BOOKLIST:
:
BOOKLIST()
{
ifstreambooklistFile("booklist.dat");//尝试从文件加载数据
if(booklistFile){
booklistFile>>allBooks;
for(inti=0;i data_booklistp; booklistFile>>p.ID; booklistFile>>p.Suoyin; booklistFile>>p.Name; booklistFile>>p.Address; booklistFile>>p.BookClass; booklistFile>>p.Count; booklistFile>>p.Price; booklistFile>>p.BorrowAble; booklistFile>>p.BorrowedCount; data.push_back(p); } booklistFile.close(); }else{ allBooks=0; } } intBOOKLIST: : searchBookPosWithSY(stringsy) { for(inti=0;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;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(p<0||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是排序函数) else sort(data.begin(),data.begin()+allBooks,cmpID); } voidBOOKLIST: : save() { ofstreambooklistFile("booklist.dat");//(这是一个booklist的文件所以输出时也要与文件相关用booklistfile) booklistFile< for(inti=0;i booklistFile< booklistFile< booklistFile< booklistFile< booklistFile< booklistFile< booklistFile< booklistFile< booklistFile< } booklistFile.close(); } voidBOOKLIST: : removeOneBook(stringsy) { intpos=searchBookPosWithSY(sy); if(pos>-1){//(pos是便是记录的位置-1表示没找到) if(data[pos].Count>0){ data[pos].Count--; } } } voidBOOKLIST: : showBooks(intpage) { if(page<0) return; intperPage=15; cout<<"No.\t索引\t书名\t地址\t类别\t数目\t价格\t可供借阅\t借阅次数"< if(page*perPage-allBooks for(inti=(page-1)*perPage;i cout< if(data[i].Address==0){ cout<<"三牌楼\t"; }else{ cout<<"仙林\t"; } cout< if(data[i].BorrowAble){ cout<<"Yes"; }else{ cout<<"No"; } cout<<"\t\t"< } } } structdata_singlebook{//(struct是各种数据的结构体) intID; stringSuoyin; time_truku; }; classSINGLEBOOK{ private: vector intallBooks; public: SINGLEBOOK(); //~SINGLEBOOK(); voidaddBook(intid,stringsy,time_tt);//添加单本书 voidremoveBook(intid);//根据ID删除一本书 voidremoveAllBook(stringsy);//根据索引删除所有书 voidsave();//保存 stringgetSuoyin(intid);//获取指定ID的图书的索引 voidshowBooks(intpage);//分页显示图书 }; SINGLEBOOK: : SINGLEBOOK(){ ifstreamsinglebookFile("singlebook.dat");//尝试从文件加载 if(singlebookFile){ singlebookFile>>allBooks; for(inti=0;i<=allBooks;i++){ data_singlebookp; singlebookFile>>p.ID; singlebookFile>>p.Suoyin; singlebookFile>>p.ruku; data.push_back(p); } singlebookFile.close(); }else{ allBooks=0; } } voidSINGLEBOOK: : addBook(intid,stringsy,time_tt) { cout< data_singlebookp; p.ID=id; p.Suoyin=sy; p.ruku=t; data.push_back(p); allBooks++; } voidSINGLEBOOK: : removeBook(intid) { intp; for(inti=0;i if(data[i].ID==id){ p=i; data.erase(data.begin()+p); break; } } allBooks--; } voidSINGLEBOOK: : removeAllBook(stringsy) { intp; for(inti=0;i if(data[i].Suoyin==sy){ data.erase(data.begin()+i); i--; } } allBooks=data.size(); } voidSINGLEBOOK: : save() { ofstreamsinglebookFile("singlebook.dat");//(单本书的文件) singlebookFile< for(inti=0;i singlebookFile< singlebookFile< singlebookFile< } singlebookFile.close(); } stringSINGLEBOOK: : getSuoyin(intid) { for(inti=0;i if(data[i].ID==id){ returndata[i].Suoyin; } } return"NoSuchBook"; } voidSINGLEBOOK: : showBooks(intpage) { system("cls"); cout<<"ID\t索引\t入库\n"; intperPage=15; for(inti=(page-1)*perPage;i cout< tm*t=localtime(&data[i].ruku); inty=t->tm_year-100; intm=t->tm_mon+1; intd=t->tm_mday; stringstreamss; ss< stringsRuku=ss.str(); cout< } } structdata_borrowtable{ intid; time_tdate;//借出时间 time_tguihuan;//归还时间 boolgiveback;//是否归还 }; classBORROWTABLE{ private: vector intrecords; intallowDays; public: BORROWTABLE(); voidsave();//保存 voidborrow(intid);//根据ID借书,系统自动添加时间 voidgiveback(intid);//还书,系统自动添加时间 voidshowEmergencyBooks(BOOKLIST&b,SINGLEBOOK&s);//显示即将到期的书,从b和s中获取图书信息 voidshowTable(intpage,BOOKLIST&b,SINGLEBOOK&s);//分页显示借书记录 stringgetName(intid,BOOKLIST&b,SINGLEBOOK&s);//获取指定ID的图书名 stringgetSY(intid,SINGLEBOOK&s);//获取指定图书的索引 voidsetAllowDays(intd);//设置允许借阅天数 intgetAllowDays(); }; BORROWTABLE: : BORROWTABLE() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 报告 图书馆 管理 系统