南航 图书馆管理系统课设.docx
《南航 图书馆管理系统课设.docx》由会员分享,可在线阅读,更多相关《南航 图书馆管理系统课设.docx(25页珍藏版)》请在冰豆网上搜索。
南航图书馆管理系统课设
南京航空航天大学
《C++程序设计》课程设计报告
图书馆管理系统
姓名:
学号:
院系:
信息科学与技术学院
日期:
2009.4.8
一、需求分析
在信息技术日益普及的今天,很多事物都在信息技术的帮助下成倍的提高了效率,同样,如果一个图书馆能有一套有效的人事管理系统,这对于图书馆的日常管理是大有益处的。
二、系统主要功能
本系统提供了一个图书馆管理的平台可,所提供的功能如下:
1.借书
2还书
3显示书库
4添加书籍
5删除书籍
6编辑书籍
7用户登陆
8用户注册
9显示用户信息
三、系统总框图
四、定义的函数及说明
classbook:
存储了一本书的信息
classstudent:
存储了一个学生的信息
classlib_sys:
图书管理的功能部分
intinput_data();
从文件读入数据
intoutput_data();
向文件输出数据
intuser_login();
用户登陆
intcheck_user_right();
检查用户权限
intcheck_admin_right();
检查管理员权限
bookedit_book_inner(bookk);
编辑一本书(程序内部使用)
bookadd_book_inner();
添加一本书(程序内部使用)
intshow_book_inner(bookk);
显示一本书(程序内部使用)
intfind_book_inner(char*isbn);
查找一本书(程序内部使用)
intfind_student_inner(char*username);
查找一个学生(程序内部使用)
intadd_book();
添加书籍
intedit_book(char*isbn);
编辑书籍
intdel_book(char*isbn,intmuch);
删除书籍
intshow_book();
显示书籍
intborrow_book();
借书
intreturn_book();
还书
intregister_user();
用户注册
char*get_username();
返回当前用户的用户名
intshow_user_detail();
显示用户信息
classManager:
界面实现部分
intwork();
显示和实现界面
五、特色算法
本程序把借书和用户关联在一起,而且出现的权限的概念,普通游客只能观看书籍列表,普通用户只能借书和还书,只有管理员才有权限对书籍信息和数量进行修改。
注:
当前默认管理员的帐户和密码都是admin
六、源程序
(见后页)
Main.cpp
#include"Manager.h"
main(){
Managerk;
k.work();
return0;
}
Book.h
#ifndefBOOK_H
#defineBOOK_H
classbook{
private:
charisbn[50];
charbookTitle[50];
charauthor[50];
charpublisher[50];
chardatepublished[50];
intleft;
friendclasslib_sys;
};
#endif
Student.h
#ifndefSTUDENT_H
#defineSTUDENT_H
classstudent{
private:
charusername[50];
charpassword[50];
intnum;
charisbn[50][50];
friendclasslib_sys;
};
#endif
Lib_sys.h
#ifndefLIB_SYS_H
#defineLIB_SYS_H
#include"book.h"
#include"student.h"
classlib_sys{
private:
intbook_tot;
intstudent_tot;
booklbook[100];
studentlstudent[100];
charusername[50];
charpassword[50];
intuser_state;//0isnouser,1islogin
public:
lib_sys(){
username[0]='\0';
password[0]='\0';
user_state=0;
book_tot=0;
student_tot=0;
}
intinput_data();
intoutput_data();
intuser_login();
intcheck_user_right();
intcheck_admin_right();
bookedit_book_inner(bookk);
bookadd_book_inner();
intshow_book_inner(bookk);
intfind_book_inner(char*isbn);
intfind_student_inner(char*username);
intadd_book();
intedit_book(char*isbn);
intdel_book(char*isbn,intmuch);
intshow_book();
intborrow_book();
intreturn_book();
intregister_user();
char*get_username(){
returnusername;
}
intshow_user_detail();
};
#endif
Lib_sys.cpp
#include"lib_sys.h"
#include
#include
#include
#include
#include
intlib_sys:
:
input_data(){
inti,j;
fstreamfbook,fstudent;
fbook.open("book.dat",ios:
:
in);
fstudent.open("student.dat",ios:
:
in);
if(!
fbook)return0;
if(!
fstudent)return0;
fbook>>book_tot;
fbook.ignore();
for(i=1;i<=book_tot;i++){
fbook.getline(lbook[i].isbn,50);
fbook.getline(lbook[i].bookTitle,50);
fbook.getline(lbook[i].author,50);
fbook.getline(lbook[i].publisher,50);
fbook.getline(lbook[i].datepublished,50);
fbook>>lbook[i].left;
fbook.ignore();
}
fbook.close();
fstudent>>student_tot;
fstudent.ignore();
for(i=1;i<=student_tot;i++){
fstudent.getline(lstudent[i].username,50);
fstudent.getline(lstudent[i].password,50);
fstudent>>lstudent[i].num;
fstudent.ignore();
for(j=1;j<=lstudent[i].num;j++)
fstudent.getline(lstudent[i].isbn[j],50);
}
fstudent.close();
return1;
}
intlib_sys:
:
output_data(){
inti,j;
fstreamfbook,fstudent;
fbook.open("book.dat",ios:
:
out);
fstudent.open("student.dat",ios:
:
out);
if(!
fbook)return0;
if(!
fstudent)return0;
fbook<for(i=1;i<=book_tot;i++){
fbook<fbook<fbook<fbook<fbook<fbook<}
fbook.close();
fstudent<for(i=1;i<=student_tot;i++){
fstudent<fstudent<fstudent<for(j=1;j<=lstudent[i].num;j++)
fstudent<}
fstudent.close();
return1;
}
intlib_sys:
:
user_login(){
charua[50],pw[50];
inti;
cout<<"username:
";
cin.getline(ua,50);
cout<<"password:
";
cin.getline(pw,50);
for(i=1;i<=student_tot;i++){
//cout<if(strcmp(lstudent[i].username,ua)==0&&strcmp(lstudent[i].password,pw)==0){
user_state=1;
strcpy(username,ua);
strcpy(password,pw);
//cout<//cout<break;
}
}
if(user_state)cout<<"Loginsuccessfully.\n";
elsecout<<"Usernotexistorwrongpassword.\n";
returnuser_state;
}
intlib_sys:
:
check_user_right(){
returnuser_state;
}
intlib_sys:
:
check_admin_right(){
if(!
user_state)return0;
if(strcmp(username,"admin")==0&&strcmp(password,"admin")==0)return1;
return0;
}
booklib_sys:
:
edit_book_inner(bookk){
charch;
charst[50];
if(!
check_admin_right())returnk;
ch='0';
while(!
(ch=='6')){
system("cls");
cout<<"请输入要修改的项目,在新数据输入状态下直接回车表示取消修改\n";
cout<<"1.isbn\n";
cout<<"2.书名\n";
cout<<"3.作者\n";
cout<<"4.出版社\n";
cout<<"5.出版时间\n";
cout<<"6.确定\n";
cout.flush();
ch=getch();
switch(ch){
case'1':
cout<<"当前的isbn是:
"<cout<<"请输入新数据:
";
cin.getline(st,50);
if(!
strlen(st)==0)strcpy(k.isbn,st);
break;
case'2':
cout<<"当前的书名是:
"<cout<<"请输入新数据:
";
cin.getline(st,50);
if(!
strlen(st)==0)strcpy(k.bookTitle,st);
break;
case'3':
cout<<"当前的作者是:
"<cout<<"请输入新数据:
";
cin.getline(st,50);
if(!
strlen(st)==0)strcpy(k.author,st);
break;
case'4':
cout<<"当前的出版社是:
"<cout<<"请输入新数据:
";
cin.getline(st,50);
if(!
strlen(st)==0)strcpy(k.publisher,st);
break;
case'5':
cout<<"当前的出版时间是:
"<cout<<"请输入新数据:
";
cin.getline(st,50);
if(!
strlen(st)==0)strcpy(k.datepublished,st);
break;
case'6':
returnk;
break;
default:
cout<<"输入错误\n";
}
cout.flush();
}
returnk;
}
booklib_sys:
:
add_book_inner(){
bookk;
charst[50];
intw;
if(!
check_admin_right())returnk;
cout<<"请输入书籍信息,isbn为必填项\n";
cout<<"请输入isbn:
";
cin.getline(st,50);
strcpy(k.isbn,st);
cout<<"请输入书名:
";
cin.getline(st,50);
strcpy(k.bookTitle,st);
cout<<"请输入作者:
";
cin.getline(st,50);
strcpy(k.author,st);
cout<<"请输入出版社:
";
cin.getline(st,50);
strcpy(k.publisher,st);
cout<<"请输入出版时间:
";
cin.getline(st,50);
strcpy(k.datepublished,st);
cout<<"请输入数的数量:
";
cin>>w;
k.left=w;
returnk;
}
intlib_sys:
:
show_book_inner(bookk){
cout<cout<<"isbn:
"<cout<<"书名:
"<cout<<"作者:
"<cout<<"出版社:
"<cout<<"出版时间:
"<cout<<"数量:
"<return1;
}
intlib_sys:
:
find_book_inner(char*isbn){
inti;
for(i=1;i<=book_tot;i++)
if(strcmp(lbook[i].isbn,isbn)==0)break;
if(i<=book_tot&&strcmp(lbook[i].isbn,isbn)==0)returni;
elsereturn0;
}
intlib_sys:
:
find_student_inner(char*username){
inti;
for(i=1;i<=student_tot;i++)
if(strcmp(lstudent[i].username,username)==0)break;
if(i<=student_tot&&strcmp(lstudent[i].username,username)==0)returni;
elsereturn0;
}
intlib_sys:
:
add_book(){
inti;
bookk;
if(!
check_admin_right())return0;
k=add_book_inner();
for(i=1;i<=book_tot;i++)
if(strcmp(lbook[i].isbn,k.isbn)==0)break;
if(i<=book_tot&&strcmp(lbook[i].isbn,k.isbn)==0)
lbook[i].left+=k.left;
elseif(strlen(k.isbn)==0)return0;
else{
book_tot++;
lbook[book_tot]=k;
}
return1;
}
intlib_sys:
:
edit_book(char*isbn){
inti;
bookk;
if(!
check_admin_right())return0;
for(i=1;i<=book_tot;i++)
if(strcmp(lbook[i].isbn,isbn)==0)break;
if(i<=book_tot&&strcmp(lbook[i].isbn,isbn)==0){
k=lbook[i];
k=edit_book_inner(k);
lbook[i]=k;
return1;
}
return0;
}
intlib_sys:
:
del_book(char*isbn,intmuch){
inti,j;
if(!
check_admin_right())return0;
for(i=1;i<=book_tot;i++)
if(strcmp(lbook[i].isbn,isbn)==0)break;
if(i<=book_tot&&strcmp(lbook[i].isbn,isbn)==0){
if(lbook[i].left>much)lbook[i].left-=much;
else{
for(j=i;j<=book_tot-1;j++)
lbook[j]=lbook[j+1];
}
return1;
}
return0;
}
intlib_sys:
:
show_book(){
inti;
cout<<"总数:
"<for(i=1;i<=book_tot;i++)
show_book_inner(lbook[i]);
return1;
}
intlib_sys:
:
borrow_book(){
charisbn[50];
intp,s,much,i;
if(!
check_user_right())return0;
cout<<"请输入数的isbn:
";
cin.getline(isbn,50);
if(!
(p=find_book_inner(isbn)))return0;
if(!
(s=find_student_inner(username)))return0;
cout<<"请输入借书的数量:
";
cin>>much;
if(lbook[p].leftcout<<"剩余量不足\n";
return0;
}elseif(10-lstudent[s].numcout<<"您目前不能借这么多书\n";
return0;
}else{
lbook[p].left-=much;
for(i=1;i<=much;i++)
strcpy(lstudent[s].isbn[i+lstudent[s].num],isbn);
lstudent[s].num+=much;
return1;
}
}
intlib_sys:
:
return_book(){
charisbn[50];
intp,s,much,r,w,i,j;
if(!
check_user_right())return0;
cout<<"请输入数的isbn:
";
cin.getline(isbn,50);
if(!
(p=find_book_inner(isbn)))return0;
if(!
(s=find_student_inner(userna