c图书标准管理系统实验报告和源代码_第1页
c图书标准管理系统实验报告和源代码_第2页
c图书标准管理系统实验报告和源代码_第3页
c图书标准管理系统实验报告和源代码_第4页
c图书标准管理系统实验报告和源代码_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程名称:程序设计综合实训设计题目:图书管理系统姓名:学号:专业班级:指导老师:完成日期:

1设计任务1.1设计目标利用所学知识,完成图书馆管理系统,经过实践加强对所学知识了解和巩固1.2设计内容建立图书馆管理系统,用户分为图书管理人员,读者。管理人员能够增加删除查看图书、读者。读者只能查看本身信息,和借还书1.3设计指标或要求管理人员能够访问任意图书和读者,而读者只能借还图书馆存在图书和查看自己信息。2设计过程分析:因为管理系统用户有图书管理员和读者,但二者权限不一样,管理员有权访问全部图书信息和管理员信息,而读者只能访问全部图书信息和本身信息。所以她们相同点:全部能访问全部图书信息不一样点:管理员能访问全部读者信息而管理员只能访问本身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books),管理员类(manager),读者类reader,books类为抽象类,manager,和reader类为books类派生类。为了能让管理员和读者访问全部图书信息,全部全部继承了books类;而为了分出二者权限不一样,所以把全部读者信息做为一个链表作为管理员一个私有组员,而读者却只能放一个本身节点作为读者私有组员,然后分别设计各个类组员函数。2.1程序功效Classbooks///虚基类{protected: books_node*broot;public: books();//结构函数 savebooks();//保留修改内容 search_book();//查找某一本书 print_books();//输出全部书信息 virtualadd_book()=0;//对于读者是还书,对于管理员添加书 virtualdelet_book()=0;//对于读者是借书,对于管理员是去掉某一本书};Classmanager:publicbooks//管理员类{protected: readers_node*rroot;public: manager(readers_node*); savereaders(); add_book();//添加图书信息 delet_book();//删除图书 search_reader();//查找读者信息 add_reader();//添加读者 delet_reader();//删除读者 print_readers();//输出全部读者};classreader:publicbooks{//读者类private:readers_node*personnel;//存放读者本身信息public: reader(readers_node*); add_book();//还书 reader_borrow(); delet_book(); reader_return();//借书 print_me();//查看自己借书情况 save_readers(readers_node*);};2.2程序步骤图开始菜单开始菜单管理员菜单读者菜单添删加除图图书书添删加除读读者者借还查查看看所自有身图信书书书息读者管理员图书维护读者维护后退后退后退后退后退3软件运行或测试结果(1)管理员身份登录:(2)读者身份登录:4软件设计过程中碰到问题和处理措施因为编写前期做了大量设计工作,在编写过程中基础没有碰到难处理问题提,倒是在设计类时有些茫然,经过反复斟酌还是做了部分取舍,比如把读取读者文件放在了类外面等。。5总结经过此次课程设计学到了很多东西,对于c++对象含义有了深入认识,从而对类封装和设计有了一个新认识,不只是停留在表面,为以后学习积累了经验,设计不比编写轻易,类设计好是整个程序写好前提,只有一个好计划才能写出好程序。不过也经过此次发觉了自己不足之处。总是:此次课程设计受益匪浅,动手能力大大增强;附录(程序源代码)#include<iostream.h>#include<fstream.h>#include<string.h>#include<stdio.h>#include<conio.h>#definemax3typedefstructBooks{ charbook_name[15]; inttotal_num; intborrow_num; charbook_num[15]; Books*next;}books_node;typedefstructReaders{ charreader_name[15]; charreader_no[15]; intreader_borrow_num; structReader_borrow_books{ charborrow_books_name[15]; charborrow_books_no[15]; }reader_borrow_book[max]; Readers*next;}readers_node;classbooks{protected: books_node*broot;public: books(); savebooks(); search_book(); print_books(); virtualadd_book()=0; virtualdelet_book()=0;};classmanager:publicbooks{ protected: readers_node*rroot;public: manager(readers_node*); savereaders(); add_book(); delet_book(); search_reader(); add_reader(); delet_reader(); print_readers();};classreader:publicbooks{private:readers_node*personnel;public: reader(readers_node*); add_book(); reader_borrow(); delet_book(); reader_return(); print_me(); save_readers(readers_node*);};books::books(){ books_node*r; broot=newbooks_node; r=newbooks_node; r->next=NULL; broot=r; ifstreaminFile; inFile.open("c:\\books.dat",ios::binary); if(inFile.is_open()==-1)cout<<"con'topenbooks.dat"<<endl; else { inti=0; while(1) { i++; books_node*node; node=newbooks_node; inFile.read((char*)node,sizeof(books_node)); if(inFile.eof())break; node->next=r->next; r->next=node; } inFile.close(); if(i<2)cout<<"临时没有图书数据"<<endl; }}books::savebooks(){ books_node*L; L=newbooks_node; L=broot->next; ofstreamoutFile; outFile.open("c:\\books.dat",ios::binary); while(L) { outFile.write((char*)L,sizeof(books_node)); L=L->next; } outFile.close(); }books::search_book(){ charsearchedbook[15]; cout<<"输入要查找书名子:"; cin>>searchedbook; books_node*r; r=newbooks_node; r=broot->next; while(r) { if((strcmp(searchedbook,r->book_name))==0) { cout<<"书名:"<<r->book_name<<"书总量:"<<r->total_num<<"借出:"<<r->borrow_num<<"书编号:"<<r->book_num<<endl;break; } r=r->next; } if(r==NULL)cout<<"对不起,没有此书"<<endl; }books::print_books(){ books_node*r;r=newbooks_node; r=broot->next; while(r) { cout<<"书名:"<<r->book_name<<"书总量:"<<r->total_num<<"借出:"<<r->borrow_num<<"书编号:"<<r->book_num<<endl; r=r->next; } deleter;}manager::add_book(){ books_node*L; L=newbooks_node; L=broot; while(1) { books_node*r; r=newbooks_node; r->next=NULL; cout<<"输入书名:"; cin>>r->book_name; cout<<"输入书编号:"; cin>>r->book_num; r->borrow_num=0; cout<<"输入总数:"; cin>>r->total_num; r->next=L->next; L->next=r; cout<<"addmore?(n终止,其它键继续)"; charsign; cin>>sign; if(sign=='n'||sign=='N') break; } broot=L; savebooks(); }manager::delet_book(){ chardeleted[15]; cout<<"输入要删除图书名字:"; cin>>deleted;books_node*node,*L; node=newbooks_node; L=newbooks_node; node=broot; while(node->next) { if((strcmp(deleted,node->next->book_name))==0)break; node=node->next; } if(node->next==NULL) { cout<<"sorry!Thereisnothebook!"<<endl; } else { if(node->next->borrow_num==0) { node->next=node->next->next; savebooks() } else cout<<"对不起,临时不能删除,因为还有没有归还书"<<endl; }}manager::manager(readers_node*node){ rroot=newreaders_node; rroot=node;}manager::savereaders(){ readers_node*L; L=newreaders_node; L=rroot->next; ofstreamoutFile; outFile.open("c:\\Readers.dat",ios::binary); while(L) { outFile.write((char*)L,sizeof(readers_node)); L=L->next; } outFile.close();}manager::add_reader(){ readers_node*L; L=newreaders_node; L=rroot; intsign=0; while(1) { readers_node*r; r=newreaders_node; r->next=NULL; cout<<"输入姓名:"; cin>>r->reader_name; cout<<"输入读者编号:"; cin>>r->reader_no; r->reader_borrow_num=0; r->next=L->next; L->next=r; cout<<"addmore?(n终止,其它键继续)"; charsign; cin>>sign; if(sign=='n'||sign=='N') break; } root=L; savereaders(); }manager::delet_reader(){ chardeleted[15]; cout<<"输入要删除读者名字:"; cin>>deleted;readers_nodenode,*L; node=newreaders_node; L=newreaders_node; node=rroot; while(node->next) { if((strcmp(deleted,node->next->reader_name))==0)break; node=node->next; } if(node->next==NULL) { cout<<"sorry!Thereisnothereader!"<<endl; } else { node->next=node->next->next; savereaders(); } }manager::search_reader(){readers_node*r; r=newreaders_node; r=rroot->next; charreader[15]; cout<<"输入要查找读者姓名:"; cin>>reader; while(r) { if((strcmp(reader,r->reader_name))=0) { cout<<"姓名:"<<r->reader_name<<"编号:"<<r->reader_no<<"借书总数:"<<r->reader_borrow_num<<endl; for(inti=0;i<r->reader_borrow_num;i++) { cout<<"书名:"<<r->reader_borrow_book[i].borrow_books_name<<""<<"书编号:"<<r->reader_borrow_book[i].borrow_books_no; } break; } elser=r->next; } if(!r)cout<<"没有此人"<<endl; }manager::print_readers(){ readers_nodeprintL; printL=newreaders_node; printL=rroot->next; while(printL) { cout<<"姓名编号借书总数"<<endl; cout<<printL->reader_name<<""<<printL->reader_no<<""<<printL->reader_borrow_num<<endl; for(inti=0;i<printL->reader_borrow_num;i++) { cout<<"书名:"<<printL->reader_borrow_book[i].borrow_books_name<<""<<"书编号:"<<printL->reader_borrow_book[i].borrow_books_no; } printL=printL->next; } deleteprintL;}reader::reader(readers_node*node){ (personnel)==newreaders_node; personnel=node;}reader::add_book(){ books_node*node; node=newbooks_node; node=broot->next; charreturned[15]; cout<<"输入要还书名子:"; cin>>returned;for(inti=0;i=personnel->reader_borrow_num;i++) { if((strcmp(returned,personnel->reader_borrow_book[i].borrow_books_name))==0)break; } if(i==personnel->reader_borrow_num+1) { printf("不好意思,你没有此书");system("pause"); }else{ while(node) { if((strcmp(node->book_name,returned)==0))break; elsenode=node->next; } if(node) { personnel->reader_borrow_num--; node->borrow_num--; savebooks(); } elsecout<<"对不起,没有你要还书或所还书被删除"<<endl; }}reader::delet_book(){ if(personnel->readerborrow_num<max) { books_node*node; node=newbooks_node; node=broot->next; charborrowed[15]; cout<<"输入要借书名子:"; cin>>borrowed; while(node) { if((strcmp(node->book_name,borrowed)==0))break; elsenode=node->next; } if(node&&(node->total_num-node->borrow_num)>0) { strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_books_name,node->book_name); strcpy(personel->reader_borrow_book[personnel->reader_borrw_num++].borrow_books_no,node->book_num); node->borrow_num++; savebooks(); } elsecout<<"对不起,没有你要借书或所要借书已经借完!"<<endl; } elsecout<<"对不起,你借书数量已经超出最大借数量"<<endl;}reader::print_me(){ cout<<"姓名"<<personnel->reader_name<<"编号:"<<personnel->reader_no<<"借书总数:"<<personnel->reader_borrow_num<<endl; for(inti=0;i<personnel->reader_borrow_num;i++) { printf("书名:%s,书编号:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_borrow_book[i].borrow_books_no) }}voidPause(){ getch(); fflush(stdin);}reader::reader_borrow(){ delet_book();}reader::reader_return(){ add_book();}reader::save_readers(readers_node*L){ readers_node*root; root=newreaders_node; root=L->next; ofstreamoutFile; outFile.open("c:\\Readers.dat",ios::binary); while(root) { outFile.write((char)root,sizeof(readers_node)); root=root->next; } outFle.close();}readers_node*read_readers(){ readers_node*r; r=newreaders_node; r->next=NULL; intflag=0; ifstreaminFile; inFile.open("c:\\Readers.dat",ios::binary); if(inFile.is_open()==-1) { cout<<"con'topenreaders.dat"<<endl;returnr; } else { while(1) { flag++; readers_node*node; node=newreaders_node; inFile.read((char*)node,sizeof(readers_node)); if(inFile.eof())break; node->next=r->next; r->next=node; } inFile.close(); if(flag<2) { cout<<"暂无读者"<<endl;returnr; } else returnr; } }password(){ system("cls"); chara[]="111111",b[10],c;intn=0,k; cerr<<"\n\n\n\n\t\t\t请输入密码,你将拥有3次机会:\n"; while(1) { n++; k=0; cout<<"\t\t\t输入密码:"; while(1) { c=getch(); if(c==13)break; b[k]=c;k++; cerr<<"*"; } b[k]='\0'; cout<<"\n"; if(n>2) { printf("你已经超出输入次数,系统将退出\n"); getch(); } if(strcmp(a,b)==0)break; elsecout<<"密码错误,请重新输入\n"; cerr<<"\n"; }}voidmanager_menu_1(managerM){ intN; while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加图书┃\n"; cout<<"┃②.删除图书┃\n"; cout<<"┃③.查找图书┃\n"; cout<<"┃④.输出全部┃\n"; cout<<"┃退出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您选择(0--4):()\b\b"; cin>>N; switch(N) { case1:M.add_book();getch();break; case2: M.delet_book();getch();break; case3:M.search_book();getch();break; case4:M.print_books();getch();break; case0:return; } system("cls"); } }voidmanager_menu_2(managerM){ intN; while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加读者┃\n"; cout<<"┃②删除读者┃\n"; cout<<"┃③查找读者┃\n"; cout<<"┃④输出全部┃\n"; cout<<"┃退出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您选择(0--4):()\b\b"; cin>>N; switch(N) { case1:M.add_reader();getch();break; case2: M.delet_reader();getch();break; case3:M.search_reader();getch();break; case4:M.print_readers();getch();break; case0:return; } system("cls"); } }voidmanager_menu(readers_node*L){ system("cls"); password(); managermanager(L); intN;while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①图书维护┃\n"; cout<<"┃②读者维护┃\n"; cout<<"┃退出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您选择(0--2):()\b\b"; cin>>N; switch(N) { case1:system("cls");manager_menu_1(Manager); break; case2: system("cls");manager_menu_2(Manager);break; case0:return; } system("cls"); } }reader_menu(readers_node*L){ charname[15]; cout<<"输入用户名:"; cin>>name; readers_node*node; node=newreaders_node; node=L->next; while(node) { if((strcmp(nome,node->reader_name))==0) break; else node=node->next; } if(node) { readerReader(node); intN; while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①借书┃\n"; cout<<"┃②还书┃\n"; cout<<"┃③查找书┃\n"; cout<<"┃④.输出全部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论