c++课程设计及图书管理系统窗口界面.docx
《c++课程设计及图书管理系统窗口界面.docx》由会员分享,可在线阅读,更多相关《c++课程设计及图书管理系统窗口界面.docx(19页珍藏版)》请在冰豆网上搜索。
c++课程设计及图书管理系统窗口界面
C++课程设计
课程设计
系部:
计算机应用技术系
专业:
计算机应用技术
班级学号:
姓名:
一、系统功能分析:
图书管理系统
设计说明报告:
图书馆作为学生学习知识的重要场所,作为信息资源的集散地,图书馆和用户借阅资料繁多,包含很多的信息数据的管理。
介于这一现象,我们对于图书馆的借阅管理系统进行了全面的分析处理,在信息高速发展的今天,促进图书馆管理运用网络技术,通过信息系统的开发,在图书馆之间互通有无,有利于提高图书的利用率。
我的系统针对的是图书管理,面对大量纷繁复杂的图书管理工作,和不同图书的借出和归还,需要设计一个合理的系统,它应包括图书库,读者库,和图书的借还书信息建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量,
对过时、损失的图书进行删除,达到降低成本提高工作效率的目标。
我的系统设计还有很多的缺点和不足,在以后的时间里要不断的完善,修改。
希望老师能够指出我的不足,使其能够真正的,更好的应用在人们的生活中。
二、系统设计:
设计了四个类,Reader(读者类),Rdatabase(读者库类),Book(图书类)和Bdatabase(图书库类),读者类主要用于存储信息,其中包括读者的基本属性inttag删除标记1:
已删,0:
未删intno;读者编号charname[10];读者姓名intborbook[Maxbor];所借图书;char*getname()获取姓名intgettag()获取删除标记intgetno()获取读者编号voidsetname(charna[])设置姓名voiddelbook()设置删除标记voidaddreader(intn,char*na)增加读者voidborrowbook(intbookid)借书操作intretbook(intbookid)还书操作voiddisp()输出读者信息;读者库类包括:
inttop;读者记录指针Readerread[Maxr];读者记录RDatabase()构造函数,将reader.txt读到read[]中voidclear()删除所有读者信息intaddreader(intn,char*na)添加读者时先查找是否存在Reader*query(intreaderid)按编号查找voiddisp()输出所有读者信息voidreaderdata();读者库维护~RDatabase()析构函数,将read[]写入reader.txt文件中
图书类包括:
inttag;删除标记1:
已删0:
未删intno;图书编号charname[20];书名intonshelf;是否在架1:
在架0:
已借char*getname(){returnname;}获得书名intgetno(){returnno;}获得书编号intgettag(){returntag;}获得删除标记voidsetname(charna[])设置书名voiddelbook()删除图书voidaddbook(intn,char*na)增加图书intborrowbook()借书操作voidretbook()还书操作voiddisp()输出图书图书库类包括:
inttop;图书记录指针Bookbook[Maxb];图书记录BDatabase()构造函数,将book.txt读到book[]中voidclear()全删intaddbook(intn,char*na)增加图书Book*query(intbookid)查找图书voidbookdata();图书库维护~Bdatabase析构函数,将book[]写入book.txt文件中
Reader(读者类)
Inttag
Intno
Charname[10]
Intborbook[maxbor]
Reader()
Char*getname()
Intgettag()
Intgetno()
Voidsetname(charna[])
Voiddelreader()
Voidaddreader(intn,char*na)
Voidborrowbook(intbookid)
Intretbook(intbookid)
Voiddisp()
Rdatabase(读者库类)
Inttop
Readerread[maxr]
Rdatabase()
Voidclear()
Intaddreader(intn,char*na)
Reader*query(intreaderid)
Voiddisp()
Voidreaderdata()
~Rdatabase()
Book(图书类)
Inttag
Intno
Charname[20]
Intoneself
Book()
Char*getname()
Intgetno()
Intgettag()
Voidsetname(charna[])
Voiddelbook()
Voidaddbook(intn,char*na)
Voidborrowbook()
Intretbook()
Voiddisp()
Bdatabase(图书库类)
Inttop
Bookbook[maxb]
BDatabase()
Voidclear()
Intaddbook(intn,char*na)
book*query(intbookid)
Voiddisp()
Voidbookdata()
~BDatabase()
三、代码编写:
#include
#include
#include
#include
constintMaxr=100;
constintMaxb=100;
constintMaxbor=5;
classReader
{
inttag;
intno;
charname[10];
intborbook[Maxbor];
public:
Reader(){}
char*getname(){returnname;}
intgettag(){returntag;}
intgetno(){returnno;}
voidsetname(charna[])
{
strcpy(name,na);
}
voiddelbook()
{
tag=1;
}
voidaddreader(intn,char*na)
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;iborbook[i]=0;
}
voidborrowbook(intbookid)
{
for(inti=0;iif(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
intretbook(intbookid)
{
for(inti=0;iif(borbook[i]==bookid)
{
borbook[i]=0;
return1;
}
return0;
}
voiddisp()
{
cout<[";
for(inti=0;iif(borbook[i]!
=0)
cout<cout<<"]"<}
};
classRDatabase
{
inttop;
Readerread[Maxr];
public:
RDatabase()
{
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();
}
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++)
{
if(read[i].gettag()==0)
read[i].disp();
}
}
voidreaderdata();
~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]));
file.close();
}
};
voidRDatabase:
:
readerdata()
{
intchoice=1;
charrname[20];
intreaderid;
Reader*r;
while(choice!
=0)
{
if(choice!
=0)
{
cout<<"读者维护"<新增2:
更改3:
删除4:
查找5:
显示6:
全删0:
退出=>";
cin>>choice;
if(choice==0)continue;
if(choice==1)
{
cout<<"输入读者编号:
";
cin>>readerid;
cout<<"输入读者姓名:
";
cin>>rname;
addreader(readerid,rname);
}
else
if(choice==2)
{
cout<<"输入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"该读者不存在"<continue;
}
cout<<"输入新的姓名:
";
cin>>rname;
r->setname(rname);
}
else
if(choice==3)
{
cout<<"输入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"该读者不存在"<continue;
}
r->delbook();
}
else
if(choice==4)
{
cout<<"输入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"该读者不存在"<continue;
}
r->disp();
}
else
if(choice==5)disp();
else
if(choice==6)clear();
else
cout<<"您的输入有误请重新输入:
"<}
}
}
classBook
{
inttag;
intno;
charname[20];
intonshelf;
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<"在架":
"已借")<}
};
classBDatabase
{
inttop;
Bookbook[Maxb];
public:
BDatabase()
{
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*p=query(n);
if(p==NULL)
{
top++;
book[top].addbook(n,na);
return1;
}
return0;
}
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()
{
fstreamfile("book.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(book[i].gettag()==0)
file.write((char*)&book[i],sizeof(book[i]));
file.close();
}
};
voidBDatabase:
:
bookdata()
{
intchoice=1;
charbname[40];
intbookid;
Book*b;
while(choice!
=0)
{
if(choice!
=0)
{
cout<<"图书维护"<新增2:
更改3:
删除4:
查找5:
显示6:
全删0:
退出=>";
cin>>choice;
if(choice==0)continue;
if(choice==1)
{
cout<<"输入图书编号:
";
cin>>bookid;
cout<<"输入图书书名:
";
cin>>bname;
addbook(bookid,bname);
}
else
if(choice==2)
{
cout<<"输入图书编号:
";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<continue;
}
cout<<"输入新的书名:
";
cin>>bname;
b->setname(bname);
}
else
if(choice==3)
{
cout<<"输入图书编号:
";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<continue;
}
b->delbook();
}
else
if(choice==4)
{
cout<<"输入图书编号:
";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<continue;
}
b->disp();
}
else
if(choice==5)disp();
else
if(choice==6)clear();
else
cout<<"您的输入有误请重新输入:
"<}
}
}
voidmain()
{
intchoice=1,bookid,readerid;
RDatabaseReaderDB;
Reader*r;
BDatabaseBookDB;
Book*b;
while(choice!
=0)
{
if(choice!
=0)
{
cout<<"1:
借书2:
还书3:
图书维护4:
读者维护0:
离开=>";
cin>>choice;
if(choice==0)continue;
if(choice==1)
{
cout<<"借书读者编号:
";
cin>>readerid;
cout<<"图书编号:
";
cin>>bookid;
r=ReaderDB.query(readerid);
if(r==NULL)
{
cout<<"该读者不存在,不能借书"<continue;
}
b=BookDB.query(bookid);
if(b==NULL)
{
cout<<"该读者不存在,不能借书"<continue;
}
if(b->borrowbook()==0)
{
cout<<"该读者不存在,不能借书"<continue;
}
r->borrowbook(b->getno());
}
else
if(choice==2)
{
cout<<"还书读者编号:
";
cin>>readerid;
cout<<"图书编号:
";
cin>>bookid;
r=ReaderDB.query(readerid);
if(r==NULL)
{
cout<<"不存在该读者,不能借书"<continue;
}
b=BookDB.query(bookid);
if(b==NULL)
{
cout<<"不存在该图书,不能借书"<continue;
}
b->retbook();
r->retbook(b->getno());
}
if(choice==3)BookDB.bookdata();
else
if(choice==4)ReaderDB.readerdata();
elsecout<<"您的输入有误请重新输入:
"<}
}
}
四、总结
C++语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验。
从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。
使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。
使我们体会到自身知识和能力能在实际中的应用和发挥。
这不但激发了我的创新意识,还开发了我的创造能力、培养了我的沟通能力。
这次实习时间虽然仅有一个星期,但确实使我受益非浅。
通过实习我丰富了计算机操作经验,更加深了对C++语言的了解,熟悉了其环境。
另外,实习中老师对我们进行了细