图书馆管理系统C++课程设计.docx

上传人:b****8 文档编号:10653041 上传时间:2023-02-22 格式:DOCX 页数:38 大小:93.15KB
下载 相关 举报
图书馆管理系统C++课程设计.docx_第1页
第1页 / 共38页
图书馆管理系统C++课程设计.docx_第2页
第2页 / 共38页
图书馆管理系统C++课程设计.docx_第3页
第3页 / 共38页
图书馆管理系统C++课程设计.docx_第4页
第4页 / 共38页
图书馆管理系统C++课程设计.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

图书馆管理系统C++课程设计.docx

《图书馆管理系统C++课程设计.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C++课程设计.docx(38页珍藏版)》请在冰豆网上搜索。

图书馆管理系统C++课程设计.docx

图书馆管理系统C++课程设计

数学与计算机学院

课程设计说明书

课程名称:

面向对象程序设计-课程设计

课程代码:

题目:

图书馆管理系统

年级/专业/班:

09级计算机科学与技术4班

学生姓名:

**********************

学  号:

5422

开始时间:

2010年12月24日

完成时间:

2011年01月6日

课程设计成绩:

学习态度及平时成绩(30)

技术水平与实际能力(20)

创新(5)

说明书撰写质量(45)

总分(100)

指导教师签名:

年月日

 

2.7借书、还书2

1引言

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;i

borbook[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;i

if(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主界面供选择操作

图7.1

2.接着可以选择主界面上的3进行图书维护如图7.2,下一步可以选择新增图书等;

图7.2

3.选择0返回到主界面如图7.1可选择4进行读者维护然后进行新增、删除、修改等操作如图7.3最后返回主界面进行下一步操作

图7.3

4.选择5进行管理员维护同上面相同如图7.4

图7.4

5.选1借书操作如图7.5然后可以查看读者的借书情况如图7.6

图7.5

图7.6

8结论

我的这个图书馆管理系统做的不是很好,有些基本功能能够实现,虽然有借书、还书以及对读者、管理员、图书的维护,但是有很多细节操作没有体现出来,所以需要进一步改正,如可以对读者增加派生类实现对学生、研究所、老师等的区别,还有文件的保存也需要改进。

通过本次课程设计,让我对C++有了进一步的了解和使用,能把学了的东西用于实践还是让我非常有成就感,但是不足的是对类、派生类还有指针以及文件的运用掌握的不是很好,所以我会在假期内通过多看书反复操作提高自己的编程能力。

在这里还要感谢诸位老师的支持和信赖。

附录(可选)

附录1源代码清单

#include

#include

#include

#include

constintMaxr=100;//最多的读者

constintMaxb=100;//最多的图书

constintMaxbor=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<

"<

"<

}

};

//管理员类库,实现建立管理员的个人资料

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;i

borbook[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;i

if(borbook[i]!

=0)

cout<

cout<<"]"<

}

};

//读者类库,实现建立读者的个人资料

classRDatabase

{

private:

inttop;//读者记录指针

Readerread[Maxr];//读者记录

public:

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();//关闭reader.txt

}

voidclear()//删除所有读者信息

{

top=-1;

}

intaddreader(intn,char*na)//添加读者时先查找是否存在

{

Reader*p=query(n);

if(p==NULL)

{

top++;

read[top].addreader(n,na);

return1;

}

return0;

}

Reader*query(intreaderid)//按编号查找

{

for(inti=0;i<=top;i++)

if(read[i].getno()==readerid&&

read[i].gettag()==0)

{

return&read[i];

}

returnNULL;

}

voiddisp()//输出所有读者信息

{

for(inti=0;i<=top;i++)

read[i].disp();

}

voidreaderdata();//读者库维护

~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]));

file.close();

}

};

voidRDatabase:

:

readerdata()

{

charchoice;

charrname[20];

intreaderid;

Reader*r;

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<<"输入读者编号:

";

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1