完整版图书管理系统毕业课程设计内容.docx
《完整版图书管理系统毕业课程设计内容.docx》由会员分享,可在线阅读,更多相关《完整版图书管理系统毕业课程设计内容.docx(43页珍藏版)》请在冰豆网上搜索。
完整版图书管理系统毕业课程设计内容
面向对象技术与C++
课程设计报告
题目:
图书馆管理系统
院(系):
计算机科学与工程学院
专业:
信息对抗专业
班级:
130609
学生:
许明龙
学号:
指导教师:
姜虹
2014年7月
摘要
随着计算机技术的飞速发展,电子信息化慢慢替代了企业管理的传统管理手法,采用管理系统是能够有效提高管理效率的。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
图书馆若采取手工方式对图书资料和图书借阅情况进行人工管理,由于资料繁多,手工处理的工作量大,整体管理效率低下,也不方便读者对图书资料的查阅。
为了提高日常的图书管理效率,本文针对通常的图书管理流程,设计了一个面向对象图书管理系统。
本系统中包含六个功能模块:
图书馆基本信息,借书,还书,读者维护,图书维护,管理员维护。
summary
Withtherapiddevelopmentofcomputertechnology,electronicinformationtechnologygraduallyreplacedthetraditionalmanagementofenterprisemanagementmethods,managementsystem,caneffectivelyimprovetheefficiencyofmanagement.Libraryasakindofinformationresourcecollectionanddistributioncenter,libraryanduserlendingdataisvarious,containsalotofinformationdatamanagement,today,therearealotoflibrariesarepreliminarystartedusing,useacomputerforinformationmanagement.Iflibrariesadoptmanualapproachtoartificialmanagementbooksandmaterialsandlibrary,becausethematerialisvarious,manualprocessingworkloadisbig,theoverallmanagementefficiencyislow,alsonotconvenienttoreadersofbooksandmaterialsinspection.Inordertoimprovetheefficiencyofbooksmanagement,thispaperusuallybooksmanagementprocesses,anobject-orientedbooksmanagementsystemmanagementsystemisdesigned.Thissystemcontainssixmodules:
basicinformation,librarybooks,andbooks,thereadermaintenance,maintenance,administratorstomaintain.
1引言1
1.1问题的提出1
1.2国内外研究的现状1
1.3任务与分析1
2程序的主要功能2
2.1添加功能2
2.2删除功能2
2.3删除全部职员信息2
2.4显示功能2
2.5查找功能2
2.6修改功能2
2.7借书、还书2
3程序运行平台3
4总体设计4
5程序类的说明5
6模块分析8
6.1添加模块8
6.2显示模块8
6.3修改模块8
6.4查找模块8
6.5删除模块8
6.6清空模块8
7系统测试9
8结论10
参考文献11
1.1课题背景意义
在学校现代化的管理中,图书馆管理系统也是其中非常重要的一部分,然而,用大型软件系统来于小型的图书管理,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种管理自然有十分重要作用。
某图书馆需要管理其各种人员信息和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书馆。
1.2国内外研究的现状
国内在信息化这一方面做的没有国外好,因此现在需要大量这样的程序人员,图书馆管理系统这一块也需要做大量改进。
1.5任务与分析
本课题主要的目的是………
建立一个图书馆管理系统,可以处理以下对象:
.图书馆基本信息
.图书馆的书籍
.图书馆管理员
.读者信息
2.程序的主要功能
1.查询图书馆的总信息
2.查询图书馆管理员的信息
3.查询图书馆藏书信息
4.存入新书
5.存入新的管理员的信息
6.修改管理员的信息(增加工龄,加薪)
7.根据书名检索书刊信息
8.查询读者的借阅信息
9.查询读者信息
10.图书和管理员等信息应存放在不同的文件中,便于查询。
流程图
借书失败
输入读者姓名
书不存在
2.1添加功能
添加一个读者的基本信息,包括姓名、编号;添加一本书的基本信息,书名、编号;添加一个图书管理员的基本信息,姓名、员工号、工资、工龄。
2.2删除功能
能够对一个读者、图书管理员、一本书的信息进行删除按姓名进行删除。
2.3删除全部成员信息
能够对于全部读者和员工的信息进行删除!
2.4显示功能
显示所有读者、图书、员工的主要信息包括姓名或书名,编号等。
2.5查找功能
根据你键入的编号,显示其详细信息!
2.6修改功能
对读者、图书、员工的信息进行修改。
2.7借书、还书
输入读者编号和要借或要还的书处理并把信息存在读者信息内。
3程序运行平台
VC++6.0。
具体操作如下:
新建……文件,创建C++sourcefile……,写入程序再编译,链接,执行等。
4总体设计
图4.1系统总体框架图
5程序类的说明
管理员信息输出类的声明
classLibrarian
{
private:
inttag;
intno;编号
charname[10];
intworkage;工龄
intsalary;
public:
Librarian(){}
char*getname(){returnname;}
intgettag(){returntag;}
intgetno(){returnno;}
voidsetname(charna[])
{
strcpy(name,na);
}
voiddelworker(){tag=1;}
voidaddlibrarian(intn,char*na)增加管理员
{
tag=0;
no=n;
strcpy(name,na);
workage=0;
salary=2000;
}
voiddisp()读出管理员信息
{
cout<"<"<}
};
∙读者信息输出类的声明
classReader
{
private:
inttag;删除标记1:
已删0:
未删
intno;读者编号
charname[10];读者姓名
intborbook[Maxbor];所借图书
public:
Reader(){}
char*getname(){returnname;}获取姓名
intgettag(){returntag;}获取删除标记
intgetno(){returnno;}获取读者编号
voidsetname(charna[])设置姓名
{
strcpy(name,na);
}
voiddelbook(){tag=1;}设置删除标记1:
已删0:
未删
voidaddreader(intn,char*na)增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;iborbook[i]=0;
}
voidborrowbook(intbookid)借书操作
{
for(inti=0;i{
if(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
}
intretbook(intbookid)还书操作
{
for(inti=0;i{
if(borbook[i]==bookid)
{
borbook[i]=0;
return1;
}
}
return0;
}
voiddisp()读出读者信息
{
cout<[";
for(inti=0;iif(borbook[i]!
=0)
cout<cout<<"]"<}
};
6模块分析
6.1添加模块
在各个成员维护中都有添加操作
如新增管理员:
switch(choice)
{
case'1':
cout<<"输入管理员编号:
";
cin>>workerid;
cout<<"输入管理员姓名:
";
cin>>wname;
addlibrarian(workerid,wname);
break;}
intaddlibrarian(intn,char*na)添加管理员时先查找是否存在
{
Librarian*p=query(n);
if(p==NULL)
{
top++;
work[top].addlibrarian(n,na);
return1;
}
return0;
}
6.2显示模块
显示模块将输出所有成员的信息。
如现实管理员的信息:
Switch(choice)
{case'5':
disp();
break;
break;}
voiddisp()输出所有管理员信息
{
for(inti=0;i<=top;i++)
work[i].disp();
}
6.3修改模块
首先由用户输入要修改的成员的姓名,然后系统用修改函数查找,显示该名成员的资料,然后系统提示用户输入需要修改的项目和新的资料。
如修改管理员的信息:
Switch(chioce)
{case'2':
cout<<"输入管理员编号:
";
cin>>workerid;
w=query(workerid);
if(w==NULL)
{
cout<<"该管理员不存在"<break;
}
cout<<"输入新的姓名:
";
cin>>wname;
w->setname(wname);
break;}
6.4查找模块
首先由用户输入要查找的成员姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的成员资料。
如管理员:
case'4':
cout<<"读入管理员编号:
";
cin>>workerid;
w=query(workerid);
if(w==NULL)
{
cout<<"该管理员不存在"<break;
}
w->disp();
break;
6.5删除模块
首先由用户输入要删除的单个成员员姓名,然后调用删除函数,删除该名职员的资料。
如管理员的删除:
case'3':
cout<<"输入管理员编号:
";
cin>>workerid;
w=query(workerid);
if(w==NULL)
{
cout<<"该管理员不存在"<break;
}
w->delworker();
break;
……
6.6清空模块
系统将会把所有成员的资料全部删除,将链表清空。
如管理员:
Switch(choice)
{case'6':
clear();
break;}
voidclear()删除所有管理员信息
{
top=-1;
}……
7系统测试
首先进入VC++6.0,打开文件:
图书馆管理系统.cpp,然后进入源程序,接着构建运行。
1.第一步出现如图7.1主界面供选择操作
图1
2选择界面上的1查看图书馆基本信息
图2
2.接着可以选择主界面上的3进行图书维护如图7.2,下一步可以选择新增图书等;
图3
3.选择0返回到主界面如图1可选择4进行读者维护然后进行新增、删除、修改等操作如图3最后返回主界面进行下一步操作
图4
4.选择5进行管理员维护同上面相同如图5
图5
5.选1借书操作如图6然后可以查看读者的借书情况如图7
图6
图7
8总结
本程序使用了3个类:
图书类,读者类,管理员类。
使用链表进行储存,查找时按照节点顺序依次查照。
根据输入的结果调用相应函数,图书馆的基本功能大都能够实现。
9结论
我的这个图书馆管理系统做的不是很好,有些基本功能能够实现,虽然有借书、还书以及对读者、管理员、图书的维护,但是有很多细节操作没有体现出来,所以需要进一步改正,如可以对读者增加派生类实现对学生、研究所、老师等的区别,还有文件的保存也需要改进。
通过本次课程设计,让我对C++有了进一步的了解和使用,能把学了的东西用于实践还是让我非常有成就感,但是不足的是对类、派生类还有指针以及文件的运用掌握的不是很好,所以我会在假期内通过多看书反复操作提高自己的编程能力。
在这里还要感谢诸位老师的支持和信赖。
附录
附录1源代码清单
#include{
private:
inttag;
intno;编号
charname[10];
intworkage;工龄
intsalary;
public:
Librarian(){}
char*getname(){returnname;}
intgettag(){returntag;}
intgetno(){returnno;}
voidsetname(charna[])
{
strcpy(name,na);
}
voiddelworker(){tag=1;}
voidaddlibrarian(intn,char*na)增加管理员
{
tag=0;
no=n;
strcpy(name,na);
workage=0;
salary=2000;
}
voiddisp()读出管理员信息
{
cout<"<"<}
};
管理员类库,实现建立管理员的个人资料
classLDatabase
{
private:
inttop;管理员记录指针
Librarianwork[20];管理员记录
public:
LDatabase()构造函数,将worker.txt读到work[]中
{
Librarianx;
top=-1;
fstreamfile("worker.txt",ios:
:
in);打开一个输入文件
while
(1)
{
file.read((char*)&x,sizeof(x));
if(!
file)break;
top++;
work[top]=x;
}
file.close();关闭worker.txt
}
voidclear()删除所有管理员信息
{
top=-1;
}
intaddlibrarian(intn,char*na)添加管理员时先查找是否存在
{
Librarian*p=query(n);
if(p==NULL)
{
top++;
work[top].addlibrarian(n,na);
return1;
}
return0;
}
Librarian*query(intworkerid)按编号查找
{
for(inti=0;i<=top;i++)
if(work[i].getno()==workerid&&work[i].gettag()==0)
{
return&work[i];
}
returnNULL;
}
voiddisp()输出所有管理员信息
{
for(inti=0;i<=top;i++)
work[i].disp();
}
voidworkerdata();管理员库维护
~LDatabase()析构函数,将work[]写到worker.txt文件中
{
fstreamfile("worker.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(work[i].gettag()==0)
file.write((char*)&work[i],sizeof(work[i]));
file.close();
}
};
voidLDatabase:
:
workerdata()
{
charchoice;
charwname[20];
intworkerid;
Librarian*w;
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>>workerid;
cout<<"输入管理员姓名:
";
cin>>wname;
addlibrarian(workerid,wname);
break;
case'2':
cout<<"输入管理员编号:
";
cin>>workerid;
w=query(workerid);
if(w==NULL)
{
cout<<"该管理员不存在"<break;
}
cout<<"输入新的姓名:
";
cin>>wname;
w->setname(wname);
break;
case'3':
cout<<"输入管理员编号:
";
cin>>workerid;
w=query(workerid);
if(w==NULL)
{
cout<<"该管理员不存在"<break;
}
w->delworker();
break;
case'4':
cout<<"读入管理员编号:
";
cin>>workerid;
w=query(workerid);
if(w==NULL)
{
cout<<"该管理员不存在"<break;
}
w->disp();
break;
case'5':
disp();
break;
case'6':
clear();
break;
default:
cout<<"输入错误,请从新输入:
";break;
}
}
};
读者类,实现对读者的信息的描述
classReader
{
private:
inttag;删除标记1:
已删0:
未删
intno;读者编号
charname[10];读者姓名
intborbook[Maxbor];所借图书
public:
Reader(){}
char*getname(){returnname;}获取姓名
intgettag(){returntag;}获取删除标记
intgetno(){returnno;}获取读者编号
voidsetname(charna[])设置姓名
{
strcpy(name,na);
}
voiddelbook(){tag=1;}设置删除标记1:
已删0:
未删
voidaddreader(intn,char*na)增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;iborbook[i]=0;
}
voidborrowbook(intbookid)借书操作
{
for(inti=0;i{
if(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
}
intretbook(intbookid)还书操作
{
for(inti=0;i{
if(borbook[i]==bookid)
{
borbook[i]=0;
return1;
}
}
return0;
}
voiddisp()读出读者信息
{
cout<[";
for(inti=0;iif(borbook[i]!
=0)
cout<cout<<"]"<}
};
读者类库,实现建立读者的个人资料
classRData