c++课程设计及图书管理系统窗口界面Word文档格式.docx
《c++课程设计及图书管理系统窗口界面Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++课程设计及图书管理系统窗口界面Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
inttag;
删除标记1:
已删0:
图书编号charname[20];
书名intonshelf;
是否在架1:
在架0:
已借char*getname(){returnname;
}获得书名intgetno(){returnno;
}获得书编号intgettag(){returntag;
}获得删除标记voidsetname(charna[])设置书名voiddelbook()删除图书voidaddbook(intn,char*na)增加图书intborrowbook()借书操作voidretbook()还书操作voiddisp()输出图书图书库类包括:
图书记录指针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)
Voidreaderdata()
~Rdatabase()
Book(图书类)
Charname[20]
Intoneself
Book()
Voiddelbook()
Voidaddbook(intn,char*na)
Voidborrowbook()
Intretbook()
Bdatabase(图书库类)
Bookbook[maxb]
BDatabase()
Intaddbook(intn,char*na)
book*query(intbookid)
Voidbookdata()
~BDatabase()
三、代码编写:
#include<
iostream.h>
iomanip.h>
string.h>
fstream.h>
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;
for(inti=0;
i<
Maxbor;
i++)
borbook[i]=0;
voidborrowbook(intbookid)
if(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
intretbook(intbookid)
if(borbook[i]==bookid)
borbook[i]=0;
return1;
return0;
voiddisp()
cout<
<
setw(5)<
no<
setw(10)<
name<
"
借书编号:
["
;
if(borbook[i]!
=0)
cout<
borbook[i]<
|"
cout<
]"
endl;
};
classRDatabase
inttop;
Readerread[Maxr];
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()
}
intaddreader(intn,char*na)
Reader*p=query(n);
if(p==NULL)
read[top].addreader(n,na);
return0;
Reader*query(intreaderid)
for(inti=0;
=top;
if(read[i].getno()==readerid&
&
read[i].gettag()==0)
return&
read[i];
returnNULL;
voiddisp()
{
if(read[i].gettag()==0)
read[i].disp();
}
voidreaderdata();
~RDatabase()
out);
file.write((char*)&
read[i],sizeof(read[i]));
file.close();
voidRDatabase:
readerdata()
intchoice=1;
charrname[20];
intreaderid;
Reader*r;
while(choice!
=0)
{
if(choice!
读者维护"
endl<
1:
新增2:
更改3:
删除4:
查找5:
显示6:
全删0:
退出=>
cin>
>
choice;
if(choice==0)continue;
if(choice==1)
输入读者编号:
cin>
readerid;
输入读者姓名:
rname;
addreader(readerid,rname);
else
if(choice==2)
r=query(readerid);
if(r==NULL)
{
cout<
该读者不存在"
continue;
}
输入新的姓名:
r->
setname(rname);
else
if(choice==3)
continue;
delbook();
if(choice==4)
disp();
if(choice==5)disp();
if(choice==6)clear();
您的输入有误请重新输入:
classBook
charname[20];
intonshelf;
Book(){}
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;
voidretbook()
setw(6)<
setw(18)<
(onshelf==1?
"
在架"
已借"
)<
classBDatabase
Bookbook[Maxb];
BDatabase()
Bookb;
book.txt"
file.read((char*)&
b,sizeof(b));
book[top]=b;
intaddbook(intn,char*na)
Book*p=query(n);
book[top].addbook(n,na);
Book*query(intbookid)
if(book[i].getno()==bookid&
book[i].gettag()==0)
book[i];
voidbookdata();
if(book[i].gettag()==0)
book[i].disp();
~BDatabase()
if(book[i].gettag()==0)
file.write((char*)&
book[i],sizeof(book[i]));
voidBDatabase:
bookdata()
charbname[40];
intbookid;
Book*b;
图书维护"
1:
if(choice==1)
输入图书编号:
bookid;
输入图书书名:
bname;
addbook(bookid,bname);
if(choice==2)
b=query(bookid);
if(b==NULL)
该图书不存在"
输入新的书名:
b->
setname(bname);
if(choice==3)
if(choice==4)
if(choice==5)disp();
if(choice==6)clear();
else
}
voidmain()
intchoice=1,bookid,readerid;
RDatabaseReaderDB;
BDatabaseBookDB;
if(choice!
1:
借书2:
还书3:
图书维护4:
读者维护0:
离开=>
借书读者编号:
图书编号:
r=ReaderDB.query(readerid);
该读者不存在,不能借书"
b=BookDB.query(bookid);
if(b->
borrowbook()==0)
borrowbook(b->
getno());
还书读者编号:
图书编号:
不存在该读者,不能借书"
不存在该图书,不能借书"
retbook();
retbook(b->
if(choice==3)BookDB.bookdata();
if(choice==4)ReaderDB.readerdata();
elsecout<
四、总结
C++语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验。
从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。
使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。
使我们体会到自身知识和能力能在实际中的应用和发挥。
这不但激发了我的创新意识,还开发了我的创造能力、培养了我的沟通能力。
这次实习时间虽然仅有一个星期,但确实使我受益非浅。
通过实习我丰富了计算机操作经验,更加深了对C++语言的了解,熟悉了其环境。
另外,实习中老师对我们进行了细