图书借阅管理系统.docx
- 文档编号:4688443
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:29
- 大小:147.25KB
图书借阅管理系统.docx
《图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
图书借阅管理系统
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年春季学期
C程序设计课程设计
题目:
图书借阅管理系统
专业班级:
姓名:
人才v
学号:
指导教师:
成绩:
_______________
目录
1题目要求-2-
1.1要求-2-
2系统分析-2-
2.1系统设计的目的与意义:
-2-
2.2系统功能需求:
-2-
2.3系统功能分析:
-3-
3总体设计-3-
3.1系统功能模块划分与设计-3-
3.2系统功能模块图:
-3-
3.3详细设计-3-
4、结果(附带抓图)-8-
5、总结-9-
参考文献-10-
致谢-10-
附录:
-11-
图书馆借阅管理系统
摘要
主要介绍了图书管理系统的设计与实现,该程序具有图书信息录入功能和图书信息浏览功能;查询和排序功能;图书信息的删除与修改等功能。
在课程设计中,程序设计语言采用VisualC++,程序运行平台为WindowsXP。
程序通过调试运行后基本实现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。
关键词:
图书管理;程序设计;C++
1题目要求
1.1要求
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
1.设计正确,方案合理。
2.界面友好,使用方便。
3.程序精炼,结构清晰。
4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5.上机演示。
6.按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。
源程序及编译生成各文件均保存在软盘中。
2系统分析
2.1系统设计的目的与意义:
二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。
如何获取信息?
图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。
迫使人们起用新的管理方法来管理图书,但如何把图书管理员从繁重的工作中解脱出来呢?
科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。
信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。
因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。
从而使人们有更多时间来获取信息、了解信息、掌握信息。
2.2系统功能需求:
本系统有四个类,Book类,BDatebase类、Reader类、RDatebase类,存储借阅者的个人信息、借阅信息以及预定信息。
持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定等功能。
2.3系统功能分析:
系统通过调用函数来实现删除图书、读者信息,添加图书、读者信息等功能。
delbook()函数用于删除图书信息;addbook()函数用于增加图书信息;borrowbook()函数用于实现借书操作;returnbook()函数用于实现还书操作等等;主函数用于掉用这些函数。
4
3总体设计
3.1系统功能模块划分与设计
本系统定义了Book类、BDatebase类、Reader类、RDatebase类这四个类,定义了addbook()、addreader()、borrowbook()、setname()等函数来实现系统所需功能
3.2系统功能模块图:
5
3.3详细设计
主函数
(1)建立1个Reader读者类、1个RDatabase读者库类、1个Book图书类、1个BDatabase图书库类
(2)建立菜单界面。
完成以下内容:
①进入功能必须打开菜单,然后用户根据菜单选择相应的操作方式,如查看数据、编辑图书数据以及修改图书数据、维护图书的采购信息。
添加、删除、查看读者个人信息,浏览图书信息。
②能够对图书基本信息、图书采购信息、图书的借阅人信息进行统计,统计的结果能够以表格的形式来表示。
(3)将图书基本信息、图书采购信息、图书的借阅人信息存储在相应的文件中。
(4)系统界面友好,易操作。
本程序应具备的功能:
A.添加、借阅、还书功能:
(1)添加读者和图书信息。
(2)借阅尚在架的图书。
(3)读者归还的图书。
B.查找功能
(1)根据图书的编号查找图书信息。
(2)根据读者的编号查找读者的信息。
C.系统的操作
(1)系统在进入时,要有菜单提示;
(2)系统在用户退出时,有一定的提示。
算法分析
1)添加操作:
(读者信息的添加与图书信息的添加类似)
包括两个部分,先通过输入设备输入信息,系统获取;然后添加入读者数据库read.txt文件中。
㈠获取信息
voidReader:
:
addreader(intn,char*na)//增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;i borbook[i]=0; } intRDatabase: : addreader(intn,char*na)//增添读者信息 { der*p=query(n); if(p==NULL) { top++; read[top].addreader(n,na); cout<<"读者添加成功"< return1; } return0; } 流程图: ㈡析构函数写入新读者的编号跟姓名 RDatabase: : ~RDatabase() { fstreamfile("reader.txt",ios: : out); for(inti=0;i<=top;i++) { if(read[i].gettag()==0) file.write((char*)&read[i],sizeof(read[i])); else file.close(); } } 流程图: (1)借书操作: 利用for语句和if语句,通过判断图书的borbook的编号是否为0,来判断图书是否未被借走或还没有被借完。 voidReader: : borrowbook(intbookid)//借书操作 { for(inti=0;i if(borbook[i]==0) { borbook[i]=bookid; return; } } 流程图: (2)还书操作: 利用for语句和if语句,通过判断图书的borbook的编号是否为要还书的编号,来判断是否借出此书。 intReader: : retbook(intbookid)//还书操作 { for(inti=0;i { if(borbook[i]==bookid) { borbook[i]=0; return1; } else continue; } 流程图: 查找功能: 利用for语句和if语句,寻找与要查询的编号相同的读者编号或图书编号,如果找到,向系统返回相应的编号,输出相应的信息。 (读者的查找与图书查找类似) Reader*query(intreaderid)//按编号查找 { for(inti=0;i<=top;i++) if(read[i].getno()==readerid&&read[i].gettag()==0) return&read[i]; returnNULL; } 流程图: 4、结果(附带抓图) 1、此系统存在的问题 未设登录密码保护系统,是整个图书管理系统失去了一定的安全性; 程序运行界面 图4.1 图4.2 13 图4.3 图4.4 图4.5 此界面运行时选择4有时会出现内存读取错误; 1)当输入错的数据类型时可能导致内存错误; 2)读者、图书信息不完善; 3)命名不是很规范; 信息存储有限; 5、总结 通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。 参考文献 1C/C++程序设计,王连相等,中国科学技术出版社,2004 2C语言程序设计,谭浩强,清华大学出版社,1999 3C程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4C语言实用程序荟萃,西安电子科技大学出版社,1993 5C语言函数手册,机械工业出版社,1999 致谢 首先要感谢张老师的授课与指导! 感谢所有支持我完成C程序设计论文的老师和同学。 附录: 源程序 #include #include #include #include usingnamespacestd; constintMaxr=100;//最多的读者 constintMaxb=100;//最多的图书 constintMaxbor=5;//每位读者最多借五本书 //读者类,实现对读者的信息的描述 classReader { private: inttag;intno;charname[10];//删除标记1: 已删0: 未删//读者编号//读者姓名 intborbook[Maxbor];//所借图书 public: Reader(){}//构造函数 char*getname() { returnname; }//获取姓名 intgettag() { returntag; }//获取删除标记 intgetno() { returnno; }//获取读者编号 voidsetname(charna[])//设置姓名 { strcpy(name,na); } voiddelbook()//设置删除标记 { tag=1; } voidaddreader(intn,char*na);//增加读者 voidborrowbook(intbookid);//借书操作 intretbook(intbookid);//还书操作 voiddisp();//输出读者信息 }; voidReader: : addreader(intn,char*na)//增加读者 { tag=0;no=n;strcpy(name,na); for(inti=0;i borbook[i]=0; } voidReader: : borrowbook(intbookid)//借书操作 { { if(borbook[i]==0) { borbook[i]=bookid; return; } } } intReader: : retbook(intbookid)//还书操作 { for(inti=0;i { if(borbook[i]==bookid) { borbook[i]=0; return1; } else continue; } return0; } voidReader: : disp()//输出读者信息 { cout< ["; for(inti=0;i if(borbook[i]! =0) cout< cout<<"]"< } //读者类库,实现建立读者的个人资料 classRDatabase { private: inttop;//读者记录指针 Readerread[Maxr];//读者记录 public: RDatabase();//构造函数,将reader.txt读到read[]中 voidclear()//删除所有读者信息 { top=-1; } intaddreader(intn,char*na);//增添读者信息 Reader*query(intreaderid)//按编号查找 { for(inti=0;i<=top;i++) if(read[i].getno()==readerid&& read[i].gettag()==0) return&read[i]; returnNULL; } voiddisp();//输出所有读者信息 intReadernum();//得到读者编号 voidreaderdata();//读者库维护 ~RDatabase();//析构函数,将read[]写入reader.txt文件中 }; RDatabase: : RDatabase()//构造函数,将reader.txt读到read[]中 { Readers; top=-1; fstreamfile("reader.txt",ios: : in); while (1) { file.read((char*)&s,sizeof(s)); if(! file)break; top++; read[top]=s; } file.close(); } RDatabase: : ~RDatabase()//析构函数,将read[]写入reader.txt文件中 { fstreamfile("reader.txt",ios: : out); for(inti=0;i<=top;i++) if(read[i].gettag()==0) file.write((char*)&read[i],sizeof(read[i])); else file.close(); } intRDatabase: : addreader(intn,char*na)//增添读者信息 { Reader*p=query(n); if(p==NULL) { top++; read[top].addreader(n,na); cout<<"读者添加成功"< return1; } return0; } voidRDatabase: : disp()//输出所有读者信息 { for(inti=0;i<=top;i++) read[i].disp(); } intRDatabase: : Readernum() { returntop; } voidRDatabase: : readerdata()//读者库维护 { charchoice; charrname[100];//读者姓名 intreaderid; Reader*r; do { cout<<"\n\n\t\t\t欢迎进入读者维护界面\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3删除\n\n\t\t4查找\n\n\t\t5显示\n\n\t\t6全删\n\n\t\t0退出"< cin>>choice; switch(choice) { case'1': cout<<"输入读者编号: "; cin>>readerid; cout<<"输入读者姓名: "; cin>>rname; addreader(readerid,rname); break; case'2': cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } cout<<"输入新的姓名: "; cin>>rname; r->setname(rname); break; case'3': cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } r->delbook(); break; case'4': cout<<"读入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } r->disp(); break; case'5': disp(); break; case'6': clear(); break; default: if(choice! ='0')cout<<"输入错误,请重新输入: ";break; } }while(choice! ='0'); } //图书类,实现对图书的描述,图书的编号,书名,借出,还入等 classBook { private: inttag;//删除标记1: 已删0: 未删 intno;//图书编号 charname[20];//书名 intonshelf;//是否再架1: 再架0: 已借 public: Book(){} char*getname(){returnname;}//获取姓名 intgetno(){returnno;}//获取图书编号 intgettag(){returntag;}//获取删除标记 voidsetname(charna[])//设置书名 { strcpy(name,na); } voiddelbook(){tag=1;}//删除图书 voidaddbook(intn,char*na)//增加图书 { tag=0; no=n; strcpy(name,na); onshelf=1; } intborrowbook()//借书操作 { if(onshelf==1) { onshelf=0; return1; } return0; } voidretbook()//还书操作 { onshelf=1; } voiddisp()//输出图书 { cout< <<(onshelf==1? "在架": "已借")< } }; //图书库类,实现对图书的维护,查找,删除等 classBDatabase { private: inttop;//图书记录指针 Bookbook[Maxb];//图书记录 public: BDatabase()//构造函数,将book.txt读到book[]中 { Bookb; top=-1; fstreamfile("book.txt",ios: : in); while (1) { file.read((char*)&b,sizeof(b)); if(! file)break; top++; book[top]=b; } file.close(); } voidclear()//全删 { top=-1; } intaddbook(intn,char*na);//增加图书 Book*query(intbookid)//查找图书 { for(inti=0;i<=top;i++) if(book[i].getno()==bookid&&book[i].gettag()==0) { return&book[i]; } returnNULL; } voidbookdata();//图书库维护 voiddisp()//输出图书 { for(inti=0;i<=top;i++) if(book[i].gettag()==0) book[i].disp(); } ~BDatabase();//析构函数,将book[]写到book.txt文件中 }; intBDatabase: : addbook(intn,char*na)//增加图书 { Book*p=query(n); if(NULL==p) { top++; book[top].addbook(n,na); return1; } return0; } BDatabase: : ~BDatabase()//析构函数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 借阅 管理 系统