C语言编程图书馆管理系统Word文档格式.docx
《C语言编程图书馆管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言编程图书馆管理系统Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
voidset_yuan(charyu[])//设置学生所在院系
{
strcpy(yuanxi,yu);
}
voidset_no(intn)//设置学号
{
no=n;
voiddelbook(){tb=1;
}//设置删除标记1:
voidaddstudent(intn,intex1,char*na,char*yu)//增加学生信息
tb=0;
no=n;
ex=ex1;
strcpy(name,na);
strcpy(yuanxi,yu);
for(inti=0;
i〈Max3;
i++)
borbook[i]=0;
voidborrowbook(intbookid)//借书操作
i<
ex;
if(borbook[i]==0)
borbook[i]=bookid;
return;
intretbook(intbookid)//还书操作
{
for(inti=0;
i〈Max3;
if(borbook[i]==bookid)
borbook[i]=0;
return1;
return0;
voidout()//输出学生信息
cout〈<
”学号:
”〈〈setw(5)<
〈no<
<
"
姓名:
”<
setw(10)〈<
name〈〈"
院系:
〈setw(10)<
yuanxi〈<
”最大借书量:
〈<
setw(10)〈<
ex〈<
”图书号:
["
;
i〈ex;
if(borbook[i]!
=0)
cout〈〈borbook[i]〈<
"
|"
cout<
〈"
]"
〈〈endl;
};
//学生类库,用来建立学生的个人资料
classstudentbase
private:
inttop;
//学生记录指针
studentread[Max1];
//学生记录
public:
studentbase()//构造函数,将student。
txt读到read[]中
students;
top=—1;
fstreamfile(”student.txt”,ios:
:
in);
//打开一个输入文件
while
(1)
file。
read((char*)&s,sizeof(s));
if(!
file)break;
top++;
read[top]=s;
file.close();
//关闭student。
txt
voidclear()//删除所有学生信息
top=-1;
intaddstudent(intn,intex1,char*na,char*yu)//添加学生时先查找此学生信息是否存在
student*p=query(n);
if(p==NULL)
read[top].addstudent(n,ex1,na,yu);
return1;
return0;
student*query(intkid)//按编号查找学生
for(inti=0;
=top;
if(read[i]。
get_no()==kid&
&
read[i].get_tb()==0)
return&
read[i];
returnNULL;
voiddisp()//输出所有学生信息
for(inti=0;
if(read[i].get_tb()==0)
read[i]。
out();
voidstudentdata();
//学生库维护
~studentbase()//析构函数,将read[]写到student.txt文件中
fstreamfile("
student。
txt”,ios:
out);
=top;
if(read[i]。
get_tb()==0)
write((char*)&
read[i],sizeof(read[i]));
file.close();
voidstudentbase:
:
studentdata()
{
charchoice;
intex2;
charrname[20];
charryuan[20];
intkid;
student*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退出"
endl;
cin>
>
choice;
switch(choice)
case’1’:
输入学号:
cin〉〉kid;
cout〈〈"
输入最大借书量:
cin>
〉ex2;
〈”输入学生姓名:
cin〉>
rname;
cout<
〈”输入学生所在院系:
”;
ryuan;
addstudent(kid,ex2,rname,ryuan);
break;
case'
2’:
cout〈〈”输入学号:
”;
kid;
r=query(kid);
if(r==NULL)
cout〈〈”没有该学生信息!
”〈〈endl;
break;
”输入新的学生姓名:
rname;
r->
set_name(rname);
输入新的学生院系:
ryuan;
r-〉set_yuan(ryuan);
case’3’:
”输入学号:
〉kid;
没有该学生信息!
〈<
endl;
r—>
delbook();
case’4’:
”输入学号:
cout〈〈”没有该学生信息!
”〈<
endl;
case'
5’:
disp();
6’:
clear();
default:
cout<
〈"
输入错误!
请重新输入:
break;
//图书类,实现对图书的描述,图书的编号,书名,作者,出版社,数量,借出,还入等
classBook
{
private:
//删除标记1:
已删0:
intno;
//图书编号
charname[20];
//书名
charzuozhe[20];
//作者
charchubanshe[30];
//出版社
intnumber;
//图书数量
intonshelf;
//是否再架1:
再架2:
已借
public:
Book(){}
char*getname(){returnname;
}//获取书名
intgetno(){returnno;
}//获取图书编号
char*getzuozhe(){returnzuozhe;
}//获取作者
char*getchubanshe(){returnchubanshe;
}//获取出版社
intgetnumber(){returnnumber;
}//获取图书数量
intgettb(){returntb;
}//获取删除标记
voidsetname(charna[])//设置书名
strcpy(name,na);
voidsetzuozhe(charzuo[])//设置作者
strcpy(zuozhe,zuo);
voidsetchubanshe(charchu[])//设置出版社
strcpy(chubanshe,chu);
voiddelbook(){tb=1;
}//删除图书
voidaddbook(intn,char*na,char*zuo,char*chu)//增加图书
tb=0;
strcpy(zuozhe,zuo);
onshelf=1;
intborrowbook()//借书操作
if(onshelf==1)
onshelf=0;
voidretbook()//还书操作
onshelf=1;
voiddisp()//输出图书
setw(6)〈〈no<
〈setw(18)<
〈name〈〈setw(10)
〈〈(onshelf==1?
在架”:
已借”)<
};
//图书库类,实现对图书的维护,查找,删除等
classBDatabase
inttop;
//图书记录指针
Bookbook[Max2];
//图书记录
BDatabase()//构造函数,将book。
txt读到book[]中
Bookb;
top=-1;
fstreamfile(”book.txt"
ios:
in);
read((char*)&b,sizeof(b));
if(!
file)break;
book[top]=b;
close();
voidclear()//全删
intaddbook(intn,char*na,char*zuo,char*chu)//增加图书
Book*p=query(n);
if(NULL==p)
top++;
book[top].addbook(n,na,zuo,chu);
Book*query(intbookid)//查找图书
if(book[i].getno()==bookid&&
book[i].gettb()==0)
return&book[i];
returnNULL;
voidbookdata();
//图书库维护
voiddisp()
if(book[i].gettb()==0)
book[i].disp();
~BDatabase()//析构函数,将book[]写到book.txt文件中
,ios:
if(book[i]。
gettb()==0)
write((char*)&book[i],sizeof(book[i]));
close();
voidBDatabase:
bookdata()
charbname[40];
charbzuo[40];
charbchu[40];
intbookid;
Book*b;
while(choice!
=’0'
)
〈”\n\n\n\t\t\t图书资料库"
endl<
〈endl;
\t\t1新增\n\t\t2更改\n\t\t3删除\n\t\t4查找\n\t\t5显示\n\t\t6全删\n\t\t0退出"
〉choice;
case’1'
cout〈〈”请输入图书编号:
〈endl;
〉bookid;
请输入图书书名:
bname;
addbook(bookid,bname,bzuo,bchu);
case’2'
请输入图书编号:
”〈〈endl;
b=query(bookid);
if(b==NULL)
〈”没有此书!
请输入新的书名:
〈〈endl;
bname;
b—〉setname(bname);
3’:
读入图书编号:
endl;
bookid;
b=query(bookid);
没有此书!
”<
b—〉delbook();
4'
cout〈〈”读入图书编号:
bookid;
”没有此书!
b—>
disp();
5'
6'
clear();
cout〈<
”请重新选择:
//main()函数的实现,程序的主界面的引导
voidmain()
{
intbookid,kid;
studentbaseReaderDB;
student*r;
BDatabaseBookDB;
Book*b;
while(choice!
ge:
cout<
〈endl〈<
endl〈〈”\t\t\t图书管理系统\n\n\n"
;
\t\t\t1学生\n\n\t\t\t2图书管理员\n\n\t\t\t0离开”<
〉choice;
1’:
inta;
cout〈<
\t\t\t请选择操作:
\t\t\t1借书\n\n\t\t\t2还书\n\n\t\t\t3查看借阅数目信息\n\n\t\t\t0离开"
〉a;
switch(a)
case1:
cout〈〈"
学号:
kid;
图书编号:
cin〉〉bookid;
r=ReaderDB。
query(kid);
//按编号查找
if(NULL==r)
{
没有此学生信息!
不能借书"
}
b=BookDB.query(bookid);
”没有此书!
}
if(b-〉borrowbook()==0)
{
该图书已借出,不能借书”〈<
borrowbook(b->
getno());
case2:
cout〈〈"
学号:
〉kid;
cout〈〈"
图书编号:
〉bookid;
r=ReaderDB.query(kid);
cout<
没有此学生信息!
不能还书"
〈〈endl;
b=BookDB.query(bookid);
cout〈<
”不存在该图书,不能还书”〈<
b->
retbook();
r-〉retbook(b->
case3:
r—>
out();
case0:
gotoge;
default:
请重新选择:
2'
intb,c;
请输入管理员密码:
c;
if(c==123456)
cout〈〈”\t\t\t请选择操作:
cout<
”\t\t\t1图书资料库\n\n\t\t\t2学生资料库\n\n\t\t\t0离开”<
cin〉>
b;
switch(b)
{
case1:
BookDB.bookdata();
ReaderDB.studentdata();
case0:
gotoge;
}
else
密码不正确!
break;