图书管理系统.docx
- 文档编号:23626778
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:22
- 大小:232.39KB
图书管理系统.docx
《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
图书管理系统
算法与数据结构课程设计
说明书
题目:
____图书管理系统___
学院:
计算机与信息安全学院
专业:
__计算机科学与技术__
姓名:
______符有作_______
学号:
_____1200310311____
指导教师:
______李云辉_______
2015年10月1日
目录
1需求分析……………………………………………………………1
1.1问题描述……………………………………………………….1
1.2基本要求……………………………………………………….1
2概要设计………………………………………………………….....1
2.1主菜单………………………………………………………….1
2.2借书…………………………………………………………….2
2.3还书…………………………………………………………….2
3详细设计…………………………………………………………….3
3.1读者类………………………………………………………….3
3.2读者类库……………………………………………………….3
3.3图书类………………………………………………………….4
3.4图书类库……………………………………………………….5
3.5程序的主界面………………………………………………….7
4测试与分析……………………………………………………….....7
4.1主菜单………………………………………………………….7
4.2图书维护界面……………………………………………….....8
4.3读者维护界面……………………………………………….....8
4.4图书的增删查改…………………………………...…………..9
4.5读者的增删查改……………………………………………...10
5总结………………………………………………………………...13
参考文献……………………………………………………………….14
1需求分析
1.1问题描述
该系统要求建立一个简单的图书管理系统,并具有排序、计算、查找、插入和显示等功能。
通过此课设,熟练掌握文件、数组和指针的各种操作,以及一些算法思想的应用。
1.2基本要求
(1)数据结构:
读者编号,读者姓名,图书编号,图书名称,图书现存量。
(2)程序所要达到的功能:
1)图书和读者信息用文件保存,程序运行时从文件读入数据,程序结束前将信息保存在文件中;
2)图书采编入库:
新增一种图书,输入编号和图书名称后,存放于图书信息中;
3)完成读者信息:
新增读者,依次输入其编号和姓名,存放于读者信息中;
4)图书借阅:
若一种图书“在架”,则借出,登记读者的编号和姓名;
5)图书归还:
注销对读者的借阅登记,改变该图书的状态“已借”为“在架”。
2概要设计
2.1主菜单
0
1~4
0
1~5
2.2借书
是否
否
是
否
是
2.3还书(与“借书”对应,同理)
3详细设计(主界面及各模块核心操作的实现)
3.1读者类,实现对读者的信息的描述
classReader
{
public:
Reader(){}
char*getname(){returnname;}//获取姓名
intgettag(){returntag;}//获取删除标记
intgetno(){returnno;}//获取读者编号
voidsetname(charna[])//设置姓名
{
strcpy(name,na);
}
voiddelbook(){tag=1;}//设置删除标记1:
已删0:
未删
voidaddreader(intn,char*na){};//增加读者
voidborrowbook(intbookid){};//借书操作
intretbook(intbookid){};//还书操作
voiddisp(){};//读出读者信息
};
3.2读者类库,实现建立读者的个人资料,关键点:
“读者维护”模块部分的实现
while(choice!
='0')
{
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); cout<<"新增读者信息成功! "< break; case'2': cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } cout<<"输入新的姓名: "; cin>>rname; r->setname(rname); cout<<"更改读者信息成功! "< break; case'3': cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } r->delbook(); cout<<"删除读者信息成功! "< break; case'4': cout<<"读入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } cout<<"所查找读者信息如下: "< r->disp(); break; case'5': cout<<"所有读者信息如下: "< disp(); break; case'6': clear(); cout<<"已经全部删除所有读者信息! "< break; //default: cout<<"输入错误,请从新输入: ";break; } } 3.3图书类,实现对图书的描述,图书的编号,书名,借出,还入等 classBook { public: Book(){} char*getname(){returnname;}//获取姓名 intgetno(){returnno;}//获取图书编号 intgettag(){returntag;}//获取删除标记 voidsetname(charna[])//设置书名 { strcpy(name,na); } voiddelbook(){tag=1;}//删除图书 voidaddbook(intn,char*na){};//增加图书 intborrowbook(){};//借书操作 voidretbook(){};//还书操作 voiddisp(){};//输出图书 }; 3.4图书库类,实现对图书的维护,查找,删除等 classBDatabase { public: BDatabase(){}//构造函数,将book.txt读到book[]中 ......(一些实现访问功能的基本函数省略) ~BDatabase()//{};析构函数,将book[]写到book.txt文件中 核心点: voidBDatabase: : bookdata() { ...//省略了一些参数设置 while(choice! ='0') { cout<<"\n\n\n\t\t\t图书维护"< cout<<"\t\t1新增\n\t\t2更改\n\t\t3删除\n\t\t4查找\n\t\t5显示\n\t\t6全删\n\t\t0退出"< cin>>choice; switch(choice) { case'1': cout<<"输入图书编号: "< cin>>bookid; cout<<"输入图书书名: "< cin>>bname; addbook(bookid,bname); cout<<"新增图书信息成功! "< break; case'2': cout<<"输入图书编号: "< cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } cout<<"输入新的书名: "< cin>>bname; b->setname(bname); cout<<"更改图书信息成功! "< break; case'3': cout<<"读入图书编号: "< cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } b->delbook(); cout<<"删除图书信息成功! "< break; case'4': cout<<"读入图书编号: "< cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } cout<<"所查找的图书信息如下: "< b->disp(); break; case'5': cout<<"所有图书信息如下: "< disp(); break; case'6': clear(); cout<<"已经成功删除所有图书信息! "< break; //default: cout<<"输入错误,请从新输入: "; } } } 3.5main()函数的实现,程序的主界面的引导 voidmain() { charchoice; intbookid,readerid; RDatabaseReaderDB; Reader*r; BDatabaseBookDB; Book*b; while(choice! ='0') { cout< cout<<"\t\t\t1借书\n\n\t\t\t2还书\n\n\t\t\t3图书维护\n\n\t\t\t4读者维护\n\n\t\t\t0离开"< cin>>choice; system("cls"); switch(choice) { case'1': case'2': case'3': case'4': system("cls");//系统主界面的功能的选择 } 4测试与分析 4.1主菜单 4.2图书维护界面部分 4.3读者维护界面部分 4.4图书的新增、更改、查找与删除 新增: 更改: 查找: 删除: 删除后查看图书信息: 4.5读者的新增、更改、查找与删除 新增: 更改: 查找: 删除: 删除后查看读者信息: 5总结 大一学年在学习C++的时候所接触的都是一些简单的小程序。 这次课程设计是第二次接触这么复杂的大程序,但开始的时候我觉得很难,要实现这么多功能,实在是不知道该从哪里下手。 后来我试着把这个系统的功能进行了分解,分解成很多小的模块,每个模块只要执行一个功能,并且也和多位同学进行了深入交流,也通过网络渠道查询了一些资料,最后就设计成了这个样子! 在调试的时候还是遇到了一些小的问题,比如说界面不和谐,开始未采用清屏措施什么之类的,但是我认为这次课程设计还是有很大的收获的。 一方面复习、巩固了C++语言的一些基础知识,包括指针、数组、文件等等;另一方面也让我意识到了规范写代码的重要性,特别是在一个很大的程序中,比如说我这次写程序的时候少了一个分号就很难发现,因为代码写的不规范,没有按照格式对齐。 另外限于我的专业知识课学的的确不好,所以此次课设其实还有很多功能上的不足,但我也是本着一个认真的态度用心去完成的,也算是尽力而为! 最后还要感谢李老师这两周时间的耐心指导,让我在这次课程设计中有了很大的收获! 参考文献: 【1】罗建军等.C++程序设计教程(第2版).高等教育出版社.2007-08: 69~349. 【2】张乃孝.算法与数据结构-C语言描述(第2版).高等教育出版社2006-01: 39~269. 【3】廖明宏等.数据结构与算法(第4版).高等教育出版社.2007-11: 49~209.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)