综合实验图书馆 2100015 蔡锦波 2班.docx
- 文档编号:12288563
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:25
- 大小:106.52KB
综合实验图书馆 2100015 蔡锦波 2班.docx
《综合实验图书馆 2100015 蔡锦波 2班.docx》由会员分享,可在线阅读,更多相关《综合实验图书馆 2100015 蔡锦波 2班.docx(25页珍藏版)》请在冰豆网上搜索。
综合实验图书馆2100015蔡锦波2班
院系:
计算机学院
实验课程:
计算机基础实验课程
实验项目:
图书馆管理系统设计
指导老师:
黄荔
开课时间:
20013~2014年度第2学期
专业:
计算机类
班级:
13级2班
学生:
蔡锦波
学号:
20132100015
华南师范大学教务处
图书馆管理系统设计
1、中文摘要
图书馆在我们的日常生活中起着不小的作用,当我们要查找资料时,我们可以在图书馆找到相关的书籍进行查阅,所以,拥有一个良好的管理系统,就能帮助图书馆的管理人员更方便管理图书,方便读者借书。
2、关键词:
作为一个小小的图书馆管理,最基本的功能要包括下面几个:
1、图书管理:
添加图书信息、更新图书信息、删除图书信息、查找图书;
2、借书;
3、还书;
4、读者管理:
添加读者信息、更新读者信息、删除读者信息、查找读者;
三、前言
为了设计一个小小图书馆管理系统,首先要熟悉图书馆日常管理需要哪些功能,然后对这些功能进行分解,然后逐步用代码实现这些功能;同时在完善功能的同时,也要考虑使用者的方便性,习惯性,所以要设置一些方便的功能进行操作;作为一个系统,界面也是一个很重要的因素,会影响使用者的心情,所以要设计好的界面。
为了提高编程能力,调用函数进行运算。
4、软件开发过程
1、功能比较多,开始的时候不知如何开始,后来就选择一个功能进行编写,慢慢地就知道如何开始写了,最后就将各个功能合并起来,完成整个设计。
2、数据库设计是整个数据库应用系统中非常重要的一步。
3、先运用临时函数对各个功能进行逐一验证,确保能运行,并体现相关的功能,最后采用一个主函数把各个功能联合起来。
图书类:
Book.h
#ifndef_book_h_//若_book_h_未定义,执行下一宏指令
#define_book_h_//用后续红字的正文代替_book_h_
#include
usingnamespacestd;
classBook//图书类
{
public:
Book(){};//构造函数
char*get_name();//获得书名
intget_num();//获得图书编号
intget_note();//获得是否删除标记
voiddel_book();//删除图书
voidadd_book(intn,char*na_);//增加图书
voidset_name(charna_[]);//设置书名
intbor_book();//借书
voidret_book();//还书
voidshow_book();//输出图书
private:
intbook_num;//图书编号
charname[20];//图书名字
intbook_note;//删除标记(1:
已删,0:
未删)
intbook_up;//上架标志(1:
上架-可借出,0:
下架-不可借出)
};
#endif
Book.cpp
#include
usingnamespacestd;
#include
#include"book.h"
char*Book:
:
get_name()
{returnname;}
intBook:
:
get_num()
{returnbook_num;}
intBook:
:
get_note()
{returnbook_note;}
voidBook:
:
set_name(charna_[])
{strcpy(name,na_);}
voidBook:
:
add_book(intn,char*na_)
{
book_note=0;
book_num=n;
strcpy(name,na_);
book_up=1;
}
voidBook:
:
del_book()
{book_note=1;}
intBook:
:
bor_book()
{
if(book_up==1)
{
book_up=0;
return1;
}
return0;
}
voidBook:
:
ret_book()
{book_up=1;}
voidBook:
:
show_book()
{
cout<<"booknum"<<"bookname"<<"borrow"< cout<<""< inti=0; while(i<10) { cout< i++; } //for(i=0;i<20;i++) //cout< if(book_up==1) cout<<"can"< else cout<<"not"< } 读者类 Reader.h #ifndef_reader_h_ #define_reader_h_ #include usingnamespacestd; constintMaxbor=5;//最大借阅量 classReader//读者类 { private: intrea_note;//删除标记(1: 已删,0: 未删) intrea_num;//读者编号 charname[20];//读者姓名 intbor_book[Maxbor];//所借图书 public: Reader(){}//构造函数 char*get_name();//获得姓名 intget_note();//获得删除标记 intget_num();//获得读者标号 voidset_name(charna_[]);//设置姓名 voiddel_book();//设置删除标记 voidadd_reader(intn,char*na);//添加读者 voidborbook(intbookid);//借书操作 intret_book(intbookid);//还书操作 voidshow();//输出读者信息 }; #endif Reader.cpp #include usingnamespacestd; #include #include"reader.h" char*Reader: : get_name() {returnname;} intReader: : get_note() {returnrea_note;} intReader: : get_num() {returnrea_num;} voidReader: : set_name(charna_[]) {strcpy(name,na_);} voidReader: : add_reader(intn,char*na_) { rea_note=0; rea_num=n; strcpy(name,na_); for(inti=0;i bor_book[i]=0; } voidReader: : del_book() {rea_note=1;} voidReader: : borbook(intbookid) { for(inti=0;i { if(bor_book[i]==0) { bor_book[i]=bookid; return; } } } intReader: : ret_book(intbookid) { for(inti=0;i { if(bor_book[i]==bookid) { bor_book[i]=0; return1; } } return0; } voidReader: : show() { if(rea_note==0) { cout< ["; for(inti=0;i if(bor_book[i]! =0)cout< cout<<"]"< } } 图书库类 Database.h #ifndef_database_h_ #define_database_h_ #include usingnamespacestd; #include"book.h" constintMaxb=100;//最大图书数量 classDatabase//图书库类 { private: inttop;//图书记录 Bookbook_[Maxb];//图书记录 public: Database();//构造函数初始化: 读文件 voidclear_all();//全部删除 intadd_book(intn,char*na_);//添加图书 Book*query(intbookid);//查找图书 voidshow();//输出图书信息 voidbook_data();//图书库维护 ~Database();//析构函数: 写文件 }; #endif Database.cpp #include usingnamespacestd; #include #include"database.h" usingnamespacestd; Database: : Database() { Books; top=-1; fstreamfile("book.txt",ios: : in); while (1) { file.read((char*)&s,sizeof(s)); if(! file)break; top++; book_[top]=s; } file.close(); } voidDatabase: : clear_all() {top=-1;} Book*Database: : query(intbookid) { for(inti=0;i<=top;i++) if(book_[i].get_num()==bookid&&book_[i].get_note()==0) return&book_[i]; returnNULL; } intDatabase: : add_book(intn,char*na_) { Book*p=query(n); if(p==NULL) { top++; book_[top].add_book(n,na_); return1; } return0; } voidDatabase: : show() { for(inti=0;i<=top;i++) book_[i].show_book(); } Database: : ~Database()//析构函数 { fstreamfile("book.txt",ios: : out); for(inti=0;i<=top;i++) if(book_[i].get_note()==0) file.write((char*)&book_[i],sizeof(book_[i])); file.close(); } voidDatabase: : book_data() { intchoice=1; charbook_name[20]; intbookid; Book*b; while(choice) { cout<<"图书维护"< cout<<"*******************************************************"< cout<<"**"< cout<<"*1: 新增2: 更改3: 删除4: 查找5: 显示6: 全删0: 退出*"< cout<<"**"< cout<<"*******************************************************"< cout<<"功能选择: "; cin>>choice; switch(choice) { case1: cout<<"输入图书编号: "; cin>>bookid; cout<<"输入图书名: "; cin>>book_name; add_book(bookid,book_name);break; case2: cout<<"输入图书编号: "; cin>>bookid; b=query(bookid); if(b==NULL){cout<<"该图书不存在! "< cout<<"输入新的图书名: "; cin>>book_name; b->set_name(book_name);break; case3: cout<<"输入图书编号: "; cin>>bookid; b=query(bookid); if(b==NULL){cout<<"该图书不存在! "< b->del_book(); break; case4: cout<<"输入图书编号: "; cin>>bookid; b=query(bookid); if(b==NULL){cout<<"该图书不存在! "< b->show_book();break; case5: show();break; case6: clear_all();break; } } } 读者库类 Rdatabase.h #ifndef_rdatabase_h_ #define_rdatabase_h_ #include usingnamespacestd; #include"reader.h" constintMaxr=1000;//最大读者数 classRDatabase//读者库类 { private: inttop;//读者记录指针 Readerreader_[Maxr];//读者记录 public: RDatabase();//构造函数初始化: 读文件 voidclear_all();//删除所有读者信息 intadd_reader(intn,char*na_);//添加读者记录,先确定他们是否已经存在 Reader*query(intreaderid);//按编号查找 voidshow();//输出所有读者信息 voidrea_data();//读者库维护 ~RDatabase();//析构函数: 写文件 }; #endif Rdatabase.cpp #include #include usingnamespacestd; #include"rdatabase.h" RDatabase: : RDatabase() { Readers; top=-1; fstreamfile("reader.txt",ios: : in); while (1) { file.read((char*)&s,sizeof(s)); if(! file)break; top++; reader_[top]=s; } file.close(); } voidRDatabase: : clear_all() {top=-1;} Reader*RDatabase: : query(intreaderid) { for(inti=0;i<=top;i++) if(reader_[i].get_num()==readerid&&reader_[i].get_note()==0) return&reader_[i]; returnNULL; } intRDatabase: : add_reader(intn,char*na_) { Reader*p=query(n); if(p==NULL) { top++; reader_[top].add_reader(n,na_); return1; } return0; } voidRDatabase: : show() { for(inti=0;i<=top;i++) reader_[i].show(); } RDatabase: : ~RDatabase() { fstreamfile("reader.txt",ios: : out); for(inti=0;i<=top;i++) if(reader_[i].get_note()==0) file.write((char*)&reader_[i],sizeof(reader_[i])); file.close(); } voidRDatabase: : rea_data() { intchoice=1; charreader_name[20]; intreaderid; Reader*r; while(choice) { cout<<"读者维护: "< cout<<"———————————————————————————"< cout<<"||"< cout<<"|1: 新增2: 更改3: 删除4: 查找5: 显示6: 全删0: 退出|"< cout<<"||"< cout<<"———————————————————————————"< cout<<"功能选择: "; cin>>choice; switch(choice) { case1: cout<<"输入读者编号: "; cin>>readerid; cout<<"输入读者名: "; cin>>reader_name; add_reader(readerid,reader_name);break; case2: cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL){cout<<"该读者不存在! "< cout<<"输入新的读者名: "; cin>>reader_name; r->set_name(reader_name);break; case3: cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL){cout<<"该读者不存在! "< case4: cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL){cout<<"该读者不存在! "< r->show();break; case5: show();break; case6: clear_all();break; } } } 主函数 #include #include"reader.h" #include"rdatabase.h" #include"book.h" #include"database.h" usingnamespacestd; intmain() { intchoice=1,bookid,readerid; RDatabaseReaderDB; DatabaseBookDB; Reader*r; Book*b; cout<<"*********************************************"< cout<<"**"< cout<<"**"< cout<<"*“小小图书馆”*"< cout<<"**"< cout<<"**"< cout<<"*********************************************"< cout< while(choice) { cout<<"—————————————————————————————"< cout<<"||"< cout<<"|1: 图书管理2: 借书功能3: 还书功能4: 读者管理0: 离开|"< cout<<"||"< cout<<"—————————————————————————————"< cout<<"请选择功能: "; cin>>choice; switch(choice) { case2: cout<<"输入借书读者编号: "; cin>>readerid; cout<<"输入图书编号"; cin>>bookid; r=ReaderDB.query(readerid); if(r==NULL) { cout<<"该读者不存在,不能借书! "< break; } b=BookDB.query(bookid); if(b==NULL) { cout<<"该图书不存在,不能借书! "< break; } if(b->bor_book()==0) { cout<<"该图书已借出,不能借书! "< break; } r->borbook(b->get_num());break; case3: cout<<"输入读者编号: "; cin>>readerid; cout<<"输入图书编号"; cin>>bo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合实验图书馆 2100015 蔡锦波 2班 综合 实验 图书馆