职场文秘网

首页 > 领导讲话 > 农业讲话 / 正文

c++课程设计及图书管理系统(窗口界面)

2020-12-21 10:36:28

C++课程设计 课程设计 系部:计算机应用技术系 专业:计算机应用技术 班级学号:
姓名:
一、系统功能分析:
图书管理系统 设计说明报告:
图书馆作为学生学习知识的重要场所,作为信息资源的集散地,图书馆和用户借阅资料繁多,包含很多的信息数据的管理。介于这一现象,我们对于图书馆的借阅管理系统进行了全面的分析处理,在信息高速发展的今天,促进图书馆管理运用网络技术,通过信息系统的开发,在图书馆之间互通有无,有利于提高图书的利用率。

我的系统针对的是图书管理,面对大量纷繁复杂的图书管理工作,和不同图书的借出和归还,需要设计一个合理的系统,它应包括图书库,读者库,和图书的借还书信息建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量, 对过时、损失的图书进行删除,达到降低成本提高工作效率的目标。

我的系统设计还有很多的缺点和不足,在以后的时间里要不断的完善,修改。希望老师能够指出我的不足,使其能够真正的,更好的应用在人们的生活中。

二、系统设计:
设计了四个类,Reader(读者类),Rdatabase(读者库类),Book(图书类)和Bdatabase(图书库类),读者类主要用于存储信息,其中包括读者的基本属性int tag删除标记 1:已删,0:未删 int no; 读者编号 char name[10];读者姓名 int borbook[Maxbor];所借图书 ;
char *getname() 获取姓名 int gettag() 获取删除标记 int getno()获取读者编号void setname(char na[])设置姓名void delbook()设置删除标记void addreader(int n,char *na) 增加读者void borrowbook(int bookid) 借书操作int retbook(int bookid) 还书操作void disp() 输出读者信息;
读者库类包括:int top; 读者记录指针Reader read[Maxr]; 读者记录RDatabase() 构造函数,将reader.txt读到read[]中void clear() 删除所有读者信息int addreader (int n,char *na) 添加读者时先查找是否存在Reader *query(int readerid) 按编号查找void disp() 输出所有读者信息void readerdata(); 读者库维护~RDatabase() 析构函数,将read[]写入reader.txt文件中 图书类包括:int tag; 删除标记 1:已删 0:未删 int no; 图书编号 char name[20]; 书名 int onshelf; 是否在架 1:在架 0:已借 char *getname() {return name;} 获得书名 int getno() {return no;} 获得书编号 int gettag() {return tag;} 获得删除标记 void setname(char na[]) 设置书名void delbook()删除图书void addbook(int n,char *na)增加图书int borrowbook() 借书操作void retbook() 还书操作void disp() 输出图书图书库类包括:int top;图书记录指针 Book book[Maxb]; 图书记录BDatabase() 构造函数,将book.txt读到book[]中void clear() 全删int addbook(int n,char *na) 增加图书Book *query(int bookid)查找图书void bookdata(); 图书库维护~Bdatabase析构函数,将book[]写入book.txt文件中 Reader(读者类) Int tag Int no Char name[10] Int borbook[maxbor] Reader() Char *getname() Int gettag() Int getno() Void setname(char na[]) Void delreader() Void addreader(int n,char *na) Void borrowbook(int bookid) Int retbook(int bookid) Void disp() Rdatabase(读者库类) Int top Reader read[maxr] Rdatabase() Void clear() Int addreader(int n,char *na) Reader *query(int readerid) Void disp() Void readerdata() ~Rdatabase() Book(图书类) Int tag Int no Char name[20] Int oneself Book() Char *getname() Int getno() Int gettag() Void setname(char na[]) Void delbook() Void addbook(int n,char *na) Void borrowbook() Int retbook() Void disp() Bdatabase(图书库类) Int top Book book[maxb] BDatabase() Void clear() Int addbook(int n,char *na) book *query(int bookid) Void disp() Void bookdata() ~BDatabase() 三、代码编写:
#include <iostream.h> #include <iomanip.h> #include <string.h> #include <fstream.h> const int Maxr=100; const int Maxb=100; const int Maxbor=5; class Reader { int tag; int no; char name[10]; int borbook[Maxbor]; public: Reader() {} char *getname() {return name;} int gettag() {return tag;} int getno() {return no;} void setname(char na[]) { strcpy(name,na); } void delbook() { tag=1; } void addreader(int 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 { int top; Reader read[Maxr]; public: RDatabase() { Reader s; top=-1; fstream file(“reader.txt“,ios::in); while (1) { file.read((char *)&s,sizeof(s)); if (!file) break; top++; read[top]=s; } file.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++) { if (read[i].gettag()==0) read[i].disp(); } } void readerdata(); ~RDatabase() { fstream file(“reader.txt“,ios::out); for (int i=0;i<=top;i++) if (read[i].gettag()==0) file.write((char *)&read[i],sizeof(read[i])); file.close(); } }; void RDatabase::readerdata() { int choice=1; char rname[20]; int readerid; Reader *r; while(choice!=0) { if (choice!=0) { cout<<“读者维护 “<<endl<<“1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>“; cin>>choice; if(choice==0)continue; if(choice==1) { cout<<“输入读者编号:“; cin>>readerid; cout<<“输入读者姓名:“; cin>>rname; addreader(readerid,rname); } else if(choice==2) { cout<<“输入读者编号:“; cin>>readerid; r=query(readerid); if (r==NULL) { cout<<“该读者不存在“<<endl; continue; } cout<<“输入新的姓名:“; cin>>rname; r->setname(rname); } else if(choice==3) { cout<<“输入读者编号:“; cin>>readerid; r=query(readerid); if (r==NULL) { cout<<“该读者不存在“<<endl; continue; } r->delbook(); } else if(choice==4) { cout<<“输入读者编号:“; cin>>readerid; r=query(readerid); if (r==NULL) { cout<<“该读者不存在“<<endl; continue; } r->disp(); } else if(choice==5)disp(); else if(choice==6)clear(); else cout<<“您的输入有误!!!请重新输入:“<<endl; } } } class Book { int tag; int no; char name[20]; int onshelf; 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 { int top; Book book[Maxb]; public: BDatabase() { Book b; top=-1; fstream file(“book.txt“,ios::in); while (1) { file.read((char*)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); } void clear() { top=-1; } int addbook(int n,char *na) { Book *p=query(n); if (p==NULL) { top++; book[top].addbook(n,na); return 1; } return 0; } Book *query(int bookid) { for (int i=0;i<=top;i++) if (book[i].getno()==bookid && book[i].gettag()==0) return &book[i]; return NULL; } void bookdata(); void disp() { for (int i=0;i<=top;i++) { if (book[i].gettag()==0) book[i].disp(); } } ~BDatabase() { fstream file(“book.txt“,ios::out); for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char*)&book[i],sizeof(book[i])); file.close(); } }; void BDatabase::bookdata() { int choice=1; char bname[40]; int bookid; Book *b; while(choice!=0) { if (choice!=0) { cout<<“图书维护“<<endl<<“ 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>“; cin>>choice; if(choice==0)continue; if (choice==1) { cout<<“输入图书编号:“; cin>>bookid; cout<<“输入图书书名:“; cin>>bname; addbook(bookid,bname); } else if (choice==2) { cout<<“输入图书编号:“; cin>>bookid; b=query(bookid); if (b==NULL) { cout<<“该图书不存在“<<endl; continue; } cout<<“输入新的书名:“; cin>>bname; b->setname(bname); } else if (choice==3) { cout<<“输入图书编号:“; cin>>bookid; b=query(bookid); if (b==NULL) { cout<<“该图书不存在“<<endl; continue; } b->delbook(); } else if (choice==4) { cout<<“输入图书编号:“; cin>>bookid; b=query(bookid); if (b==NULL) { cout<<“该图书不存在“<<endl; continue; } b->disp(); } else if (choice==5)disp(); else if (choice==6)clear(); else cout<<“您的输入有误!!!请重新输入:“<<endl; } } } void main() { int choice=1,bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!=0) { if(choice!=0) { cout<<“1:借书 2:还书 3:图书维护 4:读者维护 0:离开=>“; cin>>choice; if(choice==0)continue; if (choice==1) { cout<<“ 借书 读者编号:“; cin>>readerid; cout<<“ 图书编号:“; cin>>bookid; r=ReaderDB.query(readerid); if (r==NULL) { cout<<“该读者不存在,不能借书“<<endl; continue; } b=BookDB.query(bookid); if (b==NULL) { cout<<“该读者不存在,不能借书“<<endl; continue; } if (b->borrowbook()==0) { cout<<“该读者不存在,不能借书“<<endl; continue; } r->borrowbook(b->getno()); } else if (choice==2) { cout<<“还书 读者编号:“; cin>>readerid; cout<<“ 图书编号:“; cin>>bookid; r=ReaderDB.query(readerid); if (r==NULL) { cout<<“不存在该读者,不能借书“<<endl; continue; } b=BookDB.query(bookid); if (b==NULL) { cout<<“不存在该图书,不能借书“<<endl; continue; } b->retbook(); r->retbook(b->getno()); } if (choice==3)BookDB.bookdata(); else if (choice==4)ReaderDB.readerdata(); else cout<<“您的输入有误!!!请重新输入:“<<endl; } } } 四、总结 C++语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验。

从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。这不但激发了我的创新意识,还开发了我的创造能力、培养了我的沟通能力。

这次实习时间虽然仅有一个星期,但确实使我受益非浅。通过实习我丰富了计算机操作经验,更加深了对C++语言的了解,熟悉了其环境。

另外,实习中老师对我们进行了细心、耐心的指导,鼓励我们对程序进行合理改进,培养了我们的创新意识和创新能力。原来是我认为可怕的课程设计,就在种种辅助条件下完成了,心里有说不出的高兴。

这是一个发现问题和解决问题的过程,从困惑到明朗,从苦恼道兴奋。我一步步地走过来,发现编程真是一个奇妙刺激的旅程。特别是当我把一个自己认为毫无可能的事情完成自后,那种感觉简直不能用言语来表达。

感谢这次课程设计给我带来的全新体验和丰富经验。我会把它换成我以后奋斗的源泉。

五、参考书 •1、 李龙澍主编,《 C++程序设计》, 清华大学出版社。

•2、李龙澍主编,《 C++程序设计实训》, 清华大学出版社社。

•3、刘振安等, 《C++程序设计课程设计》, 机械工业出版社。

•4、李春葆等 , 《C++语言程序设计题典》,清华大学出版社。

Tags: 课程设计   界面   窗口  

搜索
网站分类
标签列表