图书管理系统.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.