课程设计——图书管理新系统
来源:互联网 发布:淘宝素材主图怎么做 编辑:程序博客网 时间:2024/06/04 18:02
/***********************************************
*版权所有 (c++)2015 于东林
*文件名:main.cpp
*文件标识 :无
*内容摘要:图书馆体系统代码
*作者:于东林
*完成日期:2015 12.29
************************************************/
//进入图书馆里添加图书和删减图书等
//图书库类,实现对图书的维护,查找,删除等
//读者管理系统可以添加学生学号,姓名进行绑定,以便于借书
//读者类,实现对读者的信息的描述
//读者类库,实现建立读者的个人资料
*版权所有 (c++)2015 于东林
*文件名:main.cpp
*文件标识 :无
*内容摘要:图书馆体系统代码
*作者:于东林
*完成日期:2015 12.29
************************************************/
//主登陆界面
void denglu() { cout<<"请输入管理员账号:"; cin>>m; cout<<"请输入密码:"; getPass(n); bool blogon=false; while(blogon != true) { if(strcmp(m,"admin")==0&&strcmp(n,"admin")==0) { system("cls"); main1(); blogon=true; break; } else { system("cls"); cout<<"管理员账号或密码错误,请重新输入"<<endl; denglu(); } }}int main() //主登陆界面{ //system("color f5"); cout<<"请输入管理员账号和密码\n"<<endl; denglu(); return 0;}//进入图书馆理菜单,在此处可以选择操作
#include "touwenjian.h"char m[100];char n[100];void main1(){ system("color f9"); char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!='0') { cout <<endl<<endl<<"\t\t\t【 欢 迎 进 入 图 书 管 理 系 统 】\n\n\n"; cout <<"\t\t\t 【 1 借 书 管 理 】\n\n\t\t\t 【 2 还 书 管 理 】\n\n\t\t\t 【 3 图 书 管 理 】 \n\n\t\t\t 【 4 读 者 管 理 】\n\n\t\t\t 【 0 离 开 系 统 】"<<endl; cin >> choice; switch (choice) { case '1': cout <<" 借书 读者学号:"; cin >>readerid; cout <<" 图书编号: "; cin >>bookid; r=ReaderDB.query(readerid);//按编号查找 if (NULL==r) { cout <<" 不存在该读者,不能借书" ; system("pause"); system("cls"); break; } b=BookDB.query(bookid); if (b==NULL) { cout <<" 不存在该图书,不能借书" ; system("pause"); system("cls"); break; } if (b->borrowbook()==0) { cout << " 该图书已借出,不能借书" ; system("pause"); system("cls"); break; } r->borrowbook(b->getno()); cout<<"借书成功"; system("pause"); system("cls"); break; case '2': cout<<"还书\n 读者学号:"; cin >>readerid; cout << " 图书编号:"; cin >>bookid; r=ReaderDB.query(readerid); if (r==NULL) { cout <<" 不存在该读者,不能还书"; system("pause"); system("cls"); break; } b=BookDB.query(bookid); if (b==NULL) { cout <<" 不存在该图书,不能还书" ; system("pause"); system("cls"); break; } b->retbook(); r->retbook(b->getno()); cout<<"还书成功"; system("pause"); system("cls"); break; case '3': system("cls"); BookDB.bookdata(); break; case '4': system("cls"); ReaderDB.readerdata(); break; default: cout<<"输入错误"; system("pause"); system("cls"); } }}//图书类,实现对图书的描述,图书的编号,书名,借出,还入等
class Book{private: int tag;//删除标记 1:已删 0:未删 int no;//图书编号 char name[20];//书名 int onshelf;//是否再架 1:再架 2:已借public: Book() {} char *getname() { return name; //获取姓名 } int getno() { return no; //获取图书编号 } int gettag() { return tag; //获取删除标记 } void setname(char na[])//设置书名 { strcpy(name,na); } void delbook() { tag=1; //删除图书 } void addbook(int n,char *na)//增加图书 { tag=0; no=n; strcpy(name,na); onshelf=1; } int borrowbook()//借书操作 { if (onshelf==1) { onshelf=0; return 1; } return 0; } void retbook()//还书操作 { onshelf=1; } void disp()//输出图书 { cout << setw(6) << no << setw(18) << name << setw(10) <<(onshelf==1? "在架":"已借") <<endl; }};
//进入图书馆里添加图书和删减图书等
//图书库类,实现对图书的维护,查找,删除等
class BDatabase{private: int top; //图书记录指针 Book book[Maxb]; //图书记录public: BDatabase()//构造读取二进制函数,将book.txt读到book[]中 { Book b; top=-1; ifstream infile("book.txt",ios::binary); if(!infile) { cerr<<"open error"<<endl; abort(); } while (1) { infile.read((char *)&b,sizeof(b)); if (!infile) break; top++; book[top]=b; } infile.close(); } void clear()//全删 { top=-1; } int addbook(int n,char *na)//增加图书 { Book *p=query(n); if (NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; } Book *query(int bookid)//查找图书 { int i=0; //for (int i=0; i<=top; i++) while(i<=top) { if (book[i].getno()==bookid &&book[i].gettag()==0) { return &book[i]; } i++; } return NULL; } void bookdata();//图书库维护 void disp() { for (int i=0; i<=top; i++) if (book[i].gettag()==0) book[i].disp(); }
//读者管理系统可以添加学生学号,姓名进行绑定,以便于借书
//读者类,实现对读者的信息的描述
class Reader{private: int tag; //删除标记 1:已删 0:未删 long long no; //读者学号 char name[10]; //读者姓名 int borbook[Maxbor];//所借图书public: Reader(){} char *getname() { return name; //获取姓名 } int gettag() { return tag; //获取删除标记 } int getno() { return no; //获取读者学号号 } void delbook() { tag=1; }//设置删除标记 1:已删 0:未删 void addreader(long long n,char *na)//增加读者 { tag=0; no=n; strcpy(name,na); for(int i=0; i<Maxbor; i++) borbook[i]=0; } void borrowbook(int bookid)//借书操作 { for(int i=0; i<Maxbor; i++) { if (borbook[i]==0) { borbook[i]=bookid; return; } } } int retbook(int bookid)//还书操作 { for(int i=0; i<Maxbor; i++) { if(borbook[i]==bookid) { borbook[i]=0; return 1; } } return 0; } void disp()//读出读者信息 { cout << setw(5) << no <<setw(10) << name<<"借书编号:["; for(int i=0; i<Maxbor; i++) if(borbook[i]!=0) cout << borbook[i] << "|"; cout << "]"<<endl; }};
//读者类库,实现建立读者的个人资料
class RDatabase{private: int top; //读者记录指针 Reader read[Maxr];//读者记录`public: RDatabase() //构造函数,将reader.txt读到read[]中 { Reader s; top=-1; ifstream infile("reader.txt",ios::binary);//打开一个输入文件 if (!infile) { cerr<<"open error"<<endl; abort(); } while (1) { infile.read((char *)&s,sizeof(s)); if (!infile) break; top++; read[top]=s; } infile.close(); } void clear()//删除所有读者信息 { top=-1; } int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n); if (p==NULL) { top++; read[top].addreader(n,na); return 1; } return 0; } Reader *query(int readerid)//按编号查找 { for (int i=0; i<=top; i++) if (read[i].getno()==readerid && read[i].gettag()==0) { return &read[i]; } return NULL; } void disp() //输出所有读者信息 { for (int i=0; i<=top; i++) read[i].disp(); } void readerdata();//读者库维护 ~RDatabase() //析构函数,将read[]写到reader.txt文件中 { ofstream outfile("reader.txt",ios::binary|ios::trunc); if(!outfile) { cerr<<"open error"<<endl; abort(); } for (int i=0; i<=top; i++) if (read[i].gettag()==0) outfile.write((char *)&read[i],sizeof(read[i])); outfile.close(); }};//这是输出图书馆理菜单:void RDatabase::readerdata(){ char choice; char rname[20]; long long readerid; Reader *r; while (choice!='0') { cout <<"\n\n\t\t\t◤读 者 管 理◢\n\n\n\t\t\t◤1 新 增◢\n\n\t\t\t◤2 删 除◢\n\n\t\t\t◤3 查 找◢\n\n\t\t\t◤4 显 示◢\n\n\t\t\t◤5 全 删◢\n\n\t\t\t◤0 退 出◢"<<endl; cin >> choice; switch (choice) { case '0': system("cls"); break; case '1': cout << "输入读者学号:"; cin >> readerid; cout << "输入读者姓名:"; cin >> rname; addreader (readerid,rname); cout<<"已保存"; system("pause"); system("cls"); break; case '2': cout << " 输入读者学号:"; cin >> readerid; r=query(readerid); if (r==NULL) { cout <<" 该读者不存在 " ; system("pausc"); system("cls"); break; } r->delbook(); break; case '3': cout << "读入读者学号:"; cin >> readerid; r=query(readerid); system("pause"); system("cls"); if (r==NULL) { cout <<"该读者不存在" ; system("pause"); system("cls"); break; } r->disp(); break; case '4': disp(); system("pause"); system("cls"); break; case '5': clear(); cout<<"已全部删除"; system("pause"); system("cls"); break; default: cout<<"输入错误 "; system("pause"); system("cls"); break; } }}//这是读者管理菜单:
void BDatabase::bookdata(){ char choice; char bname[40]; int bookid; Book *b; while (choice!='0') { cout <<"\n\n\n\t\t 〖 图 书 管 理 〗"<<endl<<endl<<endl; cout<<"\t\t\t■ 1 新 增 ■\n\n \t\t\t■ 2 更 改 ■\n\n\t\t\t■ 3 删 除 ■\n\n\t\t\t■ 4 查 找 ■\n\n\t\t\t■ 5 显 示 ■\n\n\t\t\t■ 6 全 删 ■\n\n\t\t\t■ 0 退 出 ■"<<endl; cin >> choice; switch (choice) { case '0': system("cls"); break; case '1': cout << "输入图书编号:"<<endl; cin >> bookid; cout << "输入图书书名:"<<endl; cin >> bname; addbook(bookid,bname); cout<<"已保存"; system("pause"); system("cls"); break; case '2': cout << "输入图书编号:"<<endl; cin >> bookid; b=query(bookid); if (b==NULL) { cout << " 该图书不存在 "; system("pause"); system("cls"); break; } b->setname(bname); cout<<"已改名"; system("pause"); system("cls"); break; case '3': cout <<" 输入图书编号:"<<endl; cin >> bookid; b=query(bookid); if (b==NULL) { cout <<" 该图书不存在" ; system("pause"); system("cls"); break; } b->delbook(); break; case '4': cout << " 输入图书编号:"<<endl; cin >> bookid; b=query(bookid); if (b==NULL) { cout <<" 该图书不存在"; system("pause"); system("cls"); break; } b->disp(); system("pause"); system("cls"); break; case '5': disp(); system("pause"); system("cls"); break; case '6': clear(); cout<<"已清空"; system("pause"); system("cls"); break; default: cout<<"输入错误"; system("pause"); system("cls"); } }}运行结果:
知识点总结:
用了类、链表、查找等方法,解决这个存储,查找,等问题。
0 0
- 课程设计——图书管理新系统
- 课程设计——图书管理系统
- 数据结构课程设计——图书管理系统
- 课程设计——图书管理系统
- C语言课程设计—图书管理系统
- C语言课程设计—图书管理系统
- 数据结构课程设计—图书管理系统
- 数据结构课程设计—图书管理系统
- 课程设计:图书管理系统
- 课程设计:图书管理系统
- 课程设计--图书管理系统
- 课程设计—图书信息管理系统
- 课程设计---图书登记管理系统
- 数据结构课程设计 图书管理系统
- 课程设计之图书管理系统
- 数据结构课程设计-图书管理系统
- 数据结构课程设计--图书管理系统
- 数据结构课程设计-图书管理系统
- HDU 1021 Fibonacci Again
- 计算机视觉和模式识别的code
- jquery json 三级省市联动
- Android中线程池的使用与分析
- 将shell脚本执行情况写入Rsyslog日志服务器
- 课程设计——图书管理新系统
- C#难点逐个击破2out返回参数
- SpringMVC的四个基本注解annotation(控制层,业务层,持久层) -- @Component、@Repository @Service、@Controller
- 学习笔记 --- 最大流Dinic算法
- Spring Scope讲解
- C#难点逐个击破3params数组参数
- W8系统安装oracle11G出现环境配置低
- epoll详解
- ztree将后台传过来的json对象封装为子父集关系的json数组