《C++课程设计报告书图书管理系统.doc》由会员分享,可在线阅读,更多相关《C++课程设计报告书图书管理系统.doc(22页珍藏版)》请在三一办公上搜索。
1、课程设计名称:图书管理系统1.设计内容: 实现一个简单的图书管理,包括对新进图示的信息录入,按提示查询,为学生办理注册会员手续,实现简单的借书和还书,当然,没有注册会员的同学不能借图书馆里的任何书籍,以及按要求与提示对已有的图书进行查询和修改。2.设计目的与要求:2.1设计目的达到熟练掌握C+语言的基本知识和技能; 基本掌握面向对象程序设计的基本思路和方法; 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2.2设计要求要求利用面向对象的方法以及C+的编程思想来完成系统的设计; 要求在设计的过程中,建立清晰的类层次; 在系统的设计中,至少要用到面向对象的一种机制。3.系统分析与设
2、计3.1主要知识点 在C+中,文件定义为文件流类的一个对象,要进行文件的输入输出,必须先创建个文件流对象,并与指定的文件相关联,即打开文件,然后才能进行读写操作,完成后再关闭这个文件,这就是在C+中进行文件读写的基本过程。3.2关键技术 程序中定义了一个Lib结构体和一个Lib1类,结构体中定义要求的成员变量,类中定义了相应的成员函数。具体定义如下所示: (1):Lib结构体 Lib结构体中定义了:图书名称(name1)、图书编码(num1)、图书价格(price1)、图书作者(write1)、学生姓名(name2)、学生学号(num2)、学生性别(sex)等数据成员。(2):Lib1类 Li
3、b1中定义了六个成员函数,分别是:录入函数(input()、查询函数(search()、修改函数(change()、注册函数(Register()、借书函数(Borrow()、还书函数(Return()。(3):全局变量 定义三个全局变量n,m,s,分别表示新进图书数量,现存图书数量和注册的学生数3.3基本功能要求(1)功能选择可以用菜单来实现例如:请选择: 1.录入新进图书信息 2.查询新进图书信息 3.修改指定图书信息 4.注册学生信息 5.办理借书手续 6.办理还书手续 0.退出用户通过输入不同的数字进入不同的菜单。次级菜单主要显示本程序的功能,主要的功能有录入信息、浏览信息、查询和修改
4、信息,注册信息,办理借书手续,办理还书手续。(2)运行时给出明确的提示信息。比如,查询学生信息,当选择3进入查询功能时,会出来一个选择界面:请选择:1按图书名称查询。2按作者姓名查询。选择1时,输入图书名称,若图书存在程序会输出你所要查询的图书的所有信息;若没有图书,系统会自动提醒:输入错误,并跳转回次级选择界面,选择2时类似。4.系统总体设计(确定程序功能模块) 本程序的功能结构如图1所示:图书管理系统 还书函数借书函数注册函数修改函数查询函数录入函数 基本功能:录入新进图书的基本信息基本功能:按提示查询图书信息(按图书名称、按作者名)基本功能:修改指定图书的信息基本功能:为学生注册会员记录
5、基本功能:办理借书手续,非会员不得借阅基本功能:办理还书手续5.源程序代码#include#include#include using namespace std;int n;/新增图书的数量int s;/注册会员总人数int m;/现存图书数量struct Lib1 /定义图书结构体string name1;/图书名称int num1;/图书编号double price1;/图书价格 string write1;/作者姓名string name2;/借书人姓名string sex;/性别int num2;/学号;class Lib /定义图书类public:Lib()ofstream out
6、file(lib.dat,ios:out); /建立文件outfile.close();void input();/输入函数void search();/查询函数void change();/修改函数void Register();/注册函数void Borrow();/借书函数void Return();/还书函数;/*/void Lib:input() /输入函数ofstream outfile(lib.dat,ios:app);/在上面建立的文件的尾部添加数据 if(!outfile)cerrOpen error!endl;exit(1); cout 请输入新进图书的信息endl;cou
7、t * endl; cout endl;coutn; m=n;Lib1 *p=new Lib1n;for(int i=0;in;i+)coutpi.name1;coutpi.num1;coutpi.price1;coutpi.write1;cout endl;outfilepi.name1endlpi.num1endlpi.price1endlpi.write1endlendl; /向文件输入数据outfile.close();cout * endlendl;system(pause);/*/void Lib:search() /查询函数if(m=0)cout 请先录入图书信息!endl;co
8、ut *endl; elseLib1 *lib=new Lib1n;ifstream infile(lib.dat,ios:in); if(!infile)cerrOpen error!endl;exit(1);for(int i=0;ilibi.name1libi.num1libi.price1libi.write1;infile.close();int choose;cout * endl;cout endl;while(choose)cout 请选择:endl;cout 1.按作者名查询:endl;cout 2.按图书名称查询:endl;cout 0.退出。endlendl;coutch
9、oose;if(choose=0&choose=2)switch(choose)case(1): coutname; int flag=1; for(int i=0;in;i+) if(name=libi.write1) cout 图书名称: libi.name1endl; cout 图书编号: libi.num1endl; cout 图书价格: libi.price1endl; cout 作者名: libi.write1endlendl; cout endl; flag=0; if(flag) cout 对不起,没有您要找的图书!endl;break;case(2):coutname;int
10、 flag=1;for(int i=0;in;i+)if(name=libi.name1)cout 图书名称: libi.name1endl;cout 图书编号: libi.num1endl;cout 图书价格: libi.price1endl;cout 作者名: libi.write1endlendl;cout endl; flag=0;if(flag) cout 对不起,没有您要找的图书!endl;break;case 0:break;elsecout 输入错误!重新选择!endlendl;cout endlendl;system(pause);/*/void Lib:change() /
11、修改函数if(m=0)cout 请先录入图书信息!endl;cout *endl;elseifstream infile(lib.dat,ios:in);Lib1 *p=new Lib1n; if(!infile)cerrOpen error!endl;exit(1);for(int i=0;ipi.name1pi.num1pi.price1pi.write1;infile.close();int c,flag=1;string name,t;cout * endl; cout endlendl;while(c) cout 请输入:endl; cout 1.按图书名称修改endl; cout
12、2.按作者名修改endl; cout 0.退出endl; coutc; if(c=0&c=2) switch(c) case(1): coutt; for(int i=0;in;i+) if(t=pi.name1) flag=0; coutpi.name1; coutpi.num1; coutpi.price1; coutpi.write1; cout 修改成功!endl; cout endlendl; ofstream outfile(lib.dat,ios:out); for(i=0;in;i+) outfilepi.name1endlpi.num1endlpi.price1endl pi
13、.write1endlendl; outfile.close(); if(flag) cout 输入错误,请重新输入!endl; break; break; case(2): coutname; for (int i=0;in;i+) if(name=pi.write1) flag=1; coutpi.name1; coutpi.num1; coutpi.price1; coutpi.write1; cout 修改成功!endl; cout endl; ofstream outfile(lib.dat,ios:out); for(i=0;in;i+) outfilepi.name1endlpi
14、.num1endlpi.price1endl pi.write1endlendl; outfile.close(); if(flag) cout 对不起,没有该作者的书籍!endlendl; break; case(0): break; cout endlendl; system(pause);/*/void Lib:Register() /注册函数ofstream outfile(lib.dat,ios:app); /在上面建立的文件的尾部添加数据 if(!outfile)cerrOpen error!endl;exit(1);Lib1 *stud=new Lib1n; cout 欢迎注册e
15、ndl; cout * endl; cout endl; couts; for (int i=0;is;i+) coutstudi.name2; coutstudi.num2; coutstudi.sex; cout 会员注册成功! endl; cout endlendl; outfilestudi.name2endlstudi.num2endlstudi.sexendl; /向文件输入数据 outfile.close();system(pause);/*/void Lib:Borrow() /借书函数if(m=0)cout 对不起,图书已全部借出!endl;elseifstream infi
16、le(lib.dat,ios:in);/打开文件 if(!infile)cerrOpen error!endl;exit(1);Lib1 *stud=new Lib1n;for(int i=0;istudi.name1studi.num1studi.price1studi.write1studi.name2studi.num2studi.sex;/输出文件infile.close();cout 欢迎同学们前来借书endl;cout * endl; cout endlendl;for(i=0;in;i+) m-;string name,t; coutname;if(name=studi.name
17、2)coutt;if(t=studi.name1)cout 借阅手续已完成,请妥善保管书籍,按时归还,谢谢!endl;elsecout 对不起,没有您要借阅的书籍!endl;break;elsecout 对不起,您还不是注册的会员,无法办理借书手续!endl;break;cout endlendl;system(pause);void Lib:Return() /还书函数ifstream infile(lib.dat,ios:in); /打开文件 if(!infile) cerrOpen error!endl;exit(1);Lib1 *stud=new Lib1n;for(int i=0;i
18、studi.name1studi.num1studi.price1studi.write1studi.name2studi.num2studi.sex; /输出 infile.close();cout 欢迎同学们前来还书endl;cout * endl; cout endl;string name,t;for(i=0;in+1;i+)coutname;if(name=studi.name2)coutt;if(t=studi.name1)cout 还书手续已办成功,谢谢!endl; break;else cout 图书名称输入错误,请重新输入!endl;elsecout 借阅人姓名输入错误,请重
19、新输入!endl; cout endlendl;system(pause);/*/void tuichu() cout endl;cout * *endl;cout 谢谢使用,再见!endl;cout * *endl; cout endl;void menu()coutendlendl; /友好界面cout endl;cout * *endl;cout 欢迎进入图书管理系统 endl;cout * *endl;cout endl; coutendl;cout 请选择: endl;cout 1.录入新进图书信息 endl;cout 2.查询新进图书信息 endl;cout 3.修改指定图书信息 endl;cout 4.注册学生信息 endl;cout 5.办理借书手续 endl;cout 6.办理还书手续 endl;cout 0.退出图书管理系统 endl; /*/int main() Lib a; int c; coutendl; while(1)menu(); coutc; cout=0&c=6) switch(c) case(1): system(cls); a.input(); break; case(2): system(cls); a.search(); break; case(3): system(cls); a.change(); break; case(4):