图书信息管理的设计与实现C课程设计_第1页
图书信息管理的设计与实现C课程设计_第2页
图书信息管理的设计与实现C课程设计_第3页
图书信息管理的设计与实现C课程设计_第4页
图书信息管理的设计与实现C课程设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、图书信息管理的设计与实现1. 课程设计的目的与要求1.1 课程设计的需求分析为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、出版社、出版日期、价格、在库状态等。图书信息的录入和显示要求有一定的规范格

2、式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作。整个程序实现链表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。1.2课程设计的目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度(1) 进一步巩固加强C语言程序设计教程中所学习的内容。(2) 将C语言程序设计教程中学到的内容付诸实践,提高学生的实际解决问题的能力。(3) 利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力

3、(4) 熟练掌握C+语言的基本语法,灵活运用各种数据类型。1.3 课程设计的实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.4 课程设计的预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.5 课程设计的要求1. 仔细分析设计题目,画出程序流程图,编写程序源代码。2. 积极上机调试源程序,增强编程技巧与调程能力。3. 认真书写课程设计预习报告,课程设计说明书。4. 积极和小组内同学合作,听从指导老师的意见,确保课程设计顺利完成。 2. 课程设计的内容2.1 C+语言程序设计-图书馆信息管理

4、系统问题分析211 功能分析(1) 图书信息:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。(2) 系统以菜单方式工作:图书信息录入功能:可以输入图书的相关信息,例如关键字,书名等。图书信息浏览功能:可以了解图书作者以及书的大体内容等。查询和排序功能:按书名查询,按作者名查询。图书信息的删除与修改:可以删除与修改图书的相关信息。2.1.2 算法设计及程序设计中的技术重点v 1.采用Visual C+6.0 编写程序,使用文本文件保存数据。2. 定义读者类,保存单个读者信息。3. 定义读者库类,实现建立读者的个人资料。4. 定义图书类,保存单个图书信息。5. 定义图书库类,实现对图书

5、的维护,查找,删除等。6. 编制主函数 main() 完成函数调用过程。7. 使用文本文件利用输入输出流留保存和提取数据。读者类:Reader 表2-1读者类设计参数名称说明类别int tag; 删除标记成员变量intno; 读者编号 成员变量char name10; 读者姓名成员变量int borbookMaxbor所借图书成员变量Reader();构造函数char *getname(); 获取姓名成员函数int gettag(); 获取删除标记成员函数int getno(); 获取读者编号成员函数void delbook(); 设置删除标记成员函数void addreader(); 增加读

6、者成员函数void borrowbook(); 借书操作 成员函数int retbook(); 还书操作成员函数void disp(); 输出读者信息成员函数读者库类:RDataBase 表2-2读者库类设计参数名称说明类别int top; 读者记录指针成员变量Reader readMaxr; 图书记录成员变量RDatabase(); 构造函数,将reader.txt读到read构造函数void clear(); 全删成员函数int addreader(int n,char *na) 添加读者 成员函数Reader *query(int readerid); 按编号查找读者 成员函数void

7、readerdata(); 读者库维护成员函数void disp(); 输出所有读者信息成员函数RDatabase(); 析构函数,将read写到reader.txt成员函数图书类:Book 表2-3图书类设计参数名称说明类别int tag; 删除标记成员变量intno; 图书编号 成员变量char name20; 书名成员变量int onshelf; 是否在架成员变量Book();构造函数char *getname(); 获取书名成员函数int getno(); 获取图书编号成员函数int gettag(); 获取删除标记 成员函数void setname(char na); 设置书名成员函

8、数void delbook(); 删除图书 成员函数voidaddbook(int n,char *na)增加图书 成员函数int borrowbook(); 借书操作 成员函数void retbook(); 还书操作成员函数void disp(); 输出图书成员函数 图书库类:BDataBase 表2-4图书库类设计参数名称说明类别int top; 图书记录指针成员变量Book bookMaxb; 图书记录成员变量BDatabase(); 构造函数,将book.txt读到book构造函数void clear(); 全删成员函数int addbook(int n,char *na) 增加图书

9、成员函数Book *query(int bookid); 按编号查找图书 成员函数void bookdata(); 图书库维护成员函数void disp(); 显示成员函数BDatabase(); 析构函数,将book写到book.txt成员函数系统流程图图书管理系统图书管理读者管理借书还书退出图书添加图书修改图书查询读者添加读者修改读者查询借书操作还书操作NYY进入借书模块,开始输出提示信息输入读者编号和借阅的图书编号提示错误信息读者是否存在YN图书是否存在提示错误信息提示错误信息图书是否全部借出保存借书信息提示成功信息退出借书模块,结束图2-5 借书模块流程图2.2源程序代码#includ

10、e <iostream> #include <iomanip> #include <string> #include <fstream>/输入/输出文件流类 using namespace std; const int Maxr=100;/最多的读者 const int Maxb=100;/最多的图书 const int Maxbor=5;/每位读者最多借五本书 /读者类,实现对读者的信息的描述 class Reader private: int tag; /删除标记 1:已删 0:未删 int no; /读者编号 char name10; /读

11、者姓名 int borbookMaxbor;/所借图书 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; /设置删除标记 1:已删 0:未删 void addreader(int n,char *na)/增加读者 tag=0; no=n; strcpy(name,na); for(i

12、nt i=0;i<Maxbor;i+) borbooki=0; void borrowbook(int bookid)/借书操作 for(int i=0;i<Maxbor;i+) if (borbooki=0) borbooki=bookid; return; int retbook(int bookid)/还书操作 for(int i=0;i<Maxbor;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; void disp()/读出读者信息 cout << setw(5) << no &

13、lt;<setw(10) << name<<"借书编号:" for(int i=0;i<Maxbor;i+) if(borbooki!=0) cout << borbooki << "|" cout << ""<<endl; ; /读者类库,实现建立读者的个人资料 class RDatabase private: int top; /读者记录指针 Reader readMaxr;/读者记录 public: RDatabase() /构造函数,将read

14、er.txt读到read中 Reader s; top=-1; fstream file("reader.txt",ios:in);/打开一个输入文件 while (1) file.read(char *)&s,sizeof(s); if (!file)break; top+; readtop=s; file.close(); /关闭 reader.txt void clear()/删除所有读者信息 top=-1; int addreader(int n,char *na)/添加读者时先查找是否存在 Reader *p=query(n); if (p=NULL) t

15、op+; readtop.addreader(n,na); return 1; return 0; Reader *query(int readerid)/按编号查找 for (int i=0;i<=top;i+) if (readi.getno()=readerid && readi.gettag()=0) return &readi; return NULL; void disp() /输出所有读者信息 for (int i=0;i<=top;i+) readi.disp(); void readerdata();/读者库维护 RDatabase() /

16、析构函数,将read写到reader.txt文件中 fstream file("reader.txt",ios:out); for (int i=0;i<=top;i+) if (readi.gettag()=0) file.write(char *)&readi,sizeof(readi); file.close(); ; void RDatabase:readerdata() char choice; char rname20; int readerid; Reader *r; while (choice!='0') cout <&l

17、t;"nnttt读 者 维 护nnntt 1 新 增nntt 2 更 改nntt 3 删 除nntt 4 查 找nntt 5 显 示nntt 6 全 删nntt 0 退 出"<<endl; cin >> choice; switch (choice) case '1': cout << "输入读者编号:" cin >> readerid; cout << "输入读者姓名:" cin >> rname; addreader (readerid,rna

18、me); break; case '2': cout << "输入读者编号:" cin >> readerid; r=query(readerid); if (r=NULL) cout << " 该读者不存在 "<<endl; break; cout << "输入新的姓名:" cin >> rname; r->setname(rname); break; case '3': cout << " 输入读者编

19、号:" cin >> readerid; r=query(readerid); if (r=NULL) cout <<" 该读者不存在" << endl; break; r->delbook(); break; case '4': cout << "读入读者编号:" cin >> readerid; r=query(readerid); if (r=NULL) cout <<"该读者不存在"<< endl; break;

20、 r->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<"输入错误,请从新输入:"break; /图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Book private: int tag;/删除标记 1:已删 0:未删 int no;/图书编号 char name20;/书名 int onshelf;/是否再架 1:再架 2:已借 public: Book() char *getname()

21、 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; vo

22、id retbook()/还书操作 onshelf=1; void disp()/输出图书 cout << setw(6) << no << setw(18) << name << setw(10) <<(onshelf=1? "在架":"已借") <<endl; ; /图书库类,实现对图书的维护,查找,删除等 class BDatabase private: int top; /图书记录指针 Book bookMaxb; /图书记录 public: BDatabase(

23、)/构造函数,将book.txt读到book中 Book b; top=-1; fstream file("book.txt",ios:in); while (1) file.read(char *)&b,sizeof(b); if (!file) break; top+; booktop=b; file.close(); void clear()/全删 top=-1; int addbook(int n,char *na)/增加图书 Book *p=query(n); if (NULL=p) top+; booktop.addbook(n,na); return

24、1; return 0; Book *query(int bookid)/查找图书 for (int i=0;i<=top;i+) if (booki.getno()=bookid &&booki.gettag()=0) return &booki; return NULL; void bookdata();/图书库维护 void disp() for (int i=0;i<=top;i+) if (booki.gettag()=0) booki.disp(); BDatabase()/析构函数,将book写到book.txt文件中 fstream file

25、("book.txt",ios:out); for (int i=0;i<=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ; void BDatabase:bookdata() char choice; char bname40; int bookid; Book *b; while (choice!='0') cout <<"nnnttt图 书 维 护 "<<endl<&l

26、t;endl; cout<<"tt1 新 增n tt2 更 改ntt3 删 除ntt4 查 找ntt5 显 示ntt6 全 删ntt0 退 出"<<endl; cin >> choice; switch (choice) case '1': cout << "输入图书编号:"<<endl; cin >> bookid; cout << "输入图书书名:"<<endl; cin >> bname; addbook(

27、bookid,bname); break; case '2': cout << "输入图书编号:"<<endl; cin >> bookid; b=query(bookid); if (b=NULL) cout << " 该图书不存在 "<<endl; break; cout << "输入新的书名:"<<endl; cin >> bname; b->setname(bname); break; case '3&

28、#39;: cout <<" 读入图书编号:"<<endl; cin >> bookid; b=query(bookid); if (b=NULL) cout <<" 该图书不存在" << endl; break; b->delbook(); break; case '4': cout << " 读入图书编号:"<<endl; cin >> bookid; b=query(bookid); if (b=NULL) co

29、ut <<" 该图书不存在"<< endl; break; b->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<"输入错误,请从新输入:" /main() 函数的实现,程序的主界面的引导 void main() char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookD

30、B; Book *b; while(choice!='0') cout <<endl<<endl<<"ttt 图 书 管 理 系 统nnn" cout <<"ttt1 借 书nnttt2 还 书 nnttt3 图 书 维 护nnttt4 读 者 维 护nnttt0 离 开"<<endl; cin >> choice; switch (choice) case '1': cout <<" 借书 读者编号:" cin >

31、;>readerid; cout <<" 图书编号: " cin >>bookid; r=ReaderDB.query(readerid);/按编号查找 if (NULL=r) cout <<" 不存在该读者,不能借书"<< endl; break; b=BookDB.query(bookid); if (b=NULL) cout <<" 不存在该图书,不能借书"<< endl; break; if (b->borrowbook()=0) cout &

32、lt;< " 该图书已借出,不能借书"<< endl; break; r->borrowbook(b->getno(); break; case '2': cout<<"还书n 读者编号:" cin >>readerid; cout << " 图书编号:" cin >>bookid; r=ReaderDB.query(readerid); if (r=NULL) cout <<" 不存在该读者,不能还书" << endl; break; b=BookDB.query(bookid); if (b=NULL) cout <<" 不存在该图书,不能还书" <<endl; break; b->retbook(); r->retb

温馨提示

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

评论

0/150

提交评论