《图书信息管理系统说明书--面向对象课程设计.doc》由会员分享,可在线阅读,更多相关《图书信息管理系统说明书--面向对象课程设计.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、前言随着各高等院校的规模不断扩大,图书馆的藏书、管理人员、读者的数量也越来越多,图书管理涉及到大量的数据处理,传统的人工系统已经不能完成庞大的数据处理,因为图书的情况是随时改变的,因此必须对图书进行动态的管理,而这对于管理人员来说是一件比较复杂的事情。因此,为方便对图书馆书籍、读者资料、借还书等进行高效的管理。因此设计一款图书馆信息管理系统可以提高对图书的管理。在设计的过程中运用c+语言可以较便捷的设计出这样一款软件。目 录摘 要3第一章 系统总体设计41.系统功能模块图42.各类间关系4第二章 详细设计5第三章 系统测试71.测试方法:用实际数据进行测试72.测试用例73.测试结果7第四章
2、软件使用说明书14总 结15参考文献16致谢17 附录.18 摘 要随着各高等院校的规模不断扩大,图书馆的藏书、管理人员、读者的数量也越来越多,图书管理涉及到大量的数据处理,传统的人工系统已经不能完成庞大的数据处理,因为图书的情况是随时改变的,因此必须对图书进行动态的管理,而这对于管理人员来说是一件比较复杂的事情。因此,为方便对图书馆书籍、读者资料、借还书等进行高效的管理。提高业务流程效率,让管理员从繁重的工作中解脱出来,使管理员在使用一个软件以后能极其容易地对所有图书进行管理,并且准确无误,轻松自如。因此开发一个图书管理系统是当务之急,也是本论文选题的重要意义和研究宗旨。总之,建立图书馆的计
3、算机自动化管理系统,不但可以大大提高图书流通率,而且推动了社会文化生活。关键词:图书管理;面向对象;自动化管理。32第一章 系统总体设计图书管理系统是一套功能强大、操作简便而又实用的图书管理软件,它可以被广泛的应用于各种类型的图书馆中。开发此系统的目的为了实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。确定了该系统需实现以下功能:(1)实现对图书信息的添加、删除、查询、修改等操作;(2)实现对读者信息的添加、删除、查询、修改等操作;(3)实现图书借阅功能;(4)实现图书归还功能;1.系统功能模块图根据用户需求,本系统将主要实现以下功能,如图1-1所示:图书信息录入归还图书图书信息
4、管理系统读者信息录入图书信息查询读者信息查询借阅图书图1-1 系统功能模块图其中:信息录入:包括对学生基本信息的录入,图书基本信息的录入等。信息查询:对读者基本信息的查看和图书基本信息的查看。2.各类间关系本系统共使用两个类:book类,reader类,如图1-2所示图书信息管理系统信息查询图书借阅信息录入读者信息查看归还图书图书信息查看借出图书输入图书信息输入读者信息图1-2第二章 详细设计1、类的设计、Book类的设计(内部函数流程图),如图2-1所示Class Book获取图书类型获取书名获取图书编号获取删除标志设置书名设置类型删除图书增加图书输出图书图2-1、BDatabase类的设计
5、,如图2-2所示Class BDatabase图书记录删除全部记增加记录查找图书记图书库(函数)图2-2、主函数流程图,如图2-3所示输入2:读者管理输入3:借阅图书输入0;退出输入1:图书管理输入4:归还图书图2-3第三章 系统测试1.测试方法本阶段完成的任务是对系统框架的编码有效性进行检验校对,对在程序运行的过程中出现的问题及相关功能运行中显现缺陷,及时对代码进行修改和完善,使程序达到课程设计的基本要求。2.测试用例(1)借出(归还)一本图书:编号:1 书名:陌生人 作者:花开半夏 出版社:青春出版社(2)添加一本图书:编号:9 书名:爵迹 作者:郭敬明 出版社:上海文艺出版社(3)添加一
6、个读者:学号:7 姓名:陈昱溪 专业:物联网 3.测试结果1.借出一本图书:(1)进入主界面,如图3-1所示 图3-1(2)选择功能3,如图3-2所示图3-2(3)进入借阅图书界面,如图3-3所示图3-3(4)图书借阅成功,如图3-4所示 图3-4 (5)查看书架,陌生人已借出,如图3-5所示图3-52.归还图书(1)进入选择界面,选择功能4,如图3-6所示图3-6(2)进入归还图书界面,输入还书信息,如图3-7所示图3-7(3)图书归还成功,如图3-8所示图3-8(4)查看书架,陌生人已在架,如图3-9所示图3-93.添加一本图书(1)进入主界面,选择功能1图书管理,如图3-10所示图3-1
7、0(2)输入管理员密码,如图3-11所示图3-11(3)进入图书管理主界面,选择功能1,如图3-12所示图3-12(4)进入图书添加界面,输入添加信息,如图3-13所示图3-13(5)图书添加成功界面,如图3-14所示图3-14(6)查看书架,爵迹已添加,如图3-15所示图3-154.添加读者(1)进入主界面,选择功能2读者管理,如图3-16所示图3-16(2)输入管理员密码,如图3-17所示图3-17(3)进入读者管理主界面,选择功能1,如图3-18所示图3-18(4)输入读者信息,添加读者成功,如图3-19所示 图3-19(5)对比读者信息,可知“陈昱溪”已添加成功,如图3-20,3-21
8、所示、图3-20 图3-21第四章 软件使用说明书 按照主界面的提示行操作,根据提示输入要执行的名令前的代码,然后进入付界面根据付界面的提示内容进行下一步操作。注意在输入数据是要严格按照提示进行操作否则会进入死循环。在用完该系统后注意要推出系统。总结:本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,而且具有较高的安全性。但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。而且通过这次课程设计,我培养了自己对C+编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很
9、多资料,所以今后应培养自己独立写代码的能力。通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c+是多么的重要。在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。1、通过实验加深了对c+的了解,在程序设计上提高了自己的动手能力,在实践中增强了自己的编程水平。2、但是因为
10、自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。3、而且通过这次课程设计,我培养了自己对C+编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长参考文献1陈维兴 林小茶.C+面向对象程序设计教程.北京: 清华大学出版社,20092张基温.C+程序开发教程. 北京:清华大学出版社,20023吴祖峰 陈文宇 张松梅. C+语言教程. 成都:
11、电子科技大学出版社,20084谭浩强. C语言程序设计(第二版 ). 北京:清华大学出版社,19995温秀梅 丁学钧. C+语言程序设计教程与实验.北京: 清华大学出版社,20086王育坚. Visual C+面向对象编程教程(第2版). 北京:清华大学出版社, 2003致谢短短的两周,面向课程设计结束了。这次的课程设计对我们来说是一次尝试与挑战的过程。在这期间我们有过失望,也有过喜悦,失望是因为它的到来伴随着紧张的考试,喜悦是因为我们收获了好多好多。我想感谢很多人的帮助,首先,是我的老师,因为您的指导和教诲,在设计中我们基本能按照规范的方法和步骤进行,开始对实现图书管理系统问题进行讨论,并查
12、阅有关资料,最后确定设计方案,然后设计并制作;除此之外我要感谢我的同学、朋友,因为他们的帮助,我才完成了这次课程设计,才让我有信心、有勇气去面对实践中遇到的种种困难。在实践过程中我们深刻的认识到类在C+中的重要性。在此请允许我对所有帮助了我的老师、同学、朋友真诚地说一声“谢谢”! 附录:#include #include #include #include #include#includeusing namespace std;const int maxr=50; const int maxb=50; const int maxbor=5; class Book int flag; int n
13、umber; /*编号*/ char name20; /*书名*/char author10; /*作者*/ char cbs20; /*出版社*/ int onshelf; /*在架*/ public: Book() char *getname() return name; int getnumber() return number;char *getauthor() return author; char *getcbs() return cbs;int getflag() return flag; void setname(char na) strcpy(name,na); /*拷贝字符
14、串name*/ void setauthor(char au) strcpy(author,au);/*拷贝字符串author*/ void setcbs(char cb) strcpy(cbs,cb);/*拷贝字符串*/ void delbook() flag=1; void addbook(int n,char *na,char *au,char *cb) flag=0; number=n; strcpy (name,na);strcpy (author,au);strcpy (cbs,cb);onshelf=1; int borrowbook() if (onshelf=1) onshe
15、lf=0; return 1; return 0; void backbook() onshelf=1; void disp2() /*显示全部*/ cout = endl;coutsetw(6)numbersetw(18)namesetw(20)authorsetw(20)cbssetw(10)(onshelf=1?在架:不在架)endl; cout = endl; class BDatabase int top; Book bookmaxb; /*图书库函数*/ public: BDatabase() Book b; top=-1; fstream file(book.txt,ios:in
16、); /*打开“book.txt”文件*/ while (1) file.read(char*)&b,sizeof(b); /*读取文件*/if (!file) break; top+; booktop=b; file.close(); /*关闭文件*/int addbook(int n,char *na,char *au,char *cb) /*增加记录*/ Book *p=search(n); if (p=NULL) top+; booktop.addbook(n,na,au,cb);cout添加图书成功!endl;return 1;elsesystem(cls); cout信息重复,添加
17、失败!endl;return 0; Book *search(int bookid) /*查找书记录*/ for (int i=0;i=top;i+) if (booki.getnumber()=bookid & booki.getflag()=0) /*字符串比较*/return &booki; return NULL; void bookdata(); void disp2() for (int i=0;i=top;i+) if (booki.getflag()=0) booki.disp2(); BDatabase() fstream file(book.txt,ios:out); fo
18、r (int i=0;i=top;i+) if (booki.getflag()=0) file.write(char*)&booki,sizeof(booki); file.close(); ;void BDatabase:bookdata() int choice=1; char bname30; char aname30;char cname30; int bookid;Book *b; while (choice!=0) couttt*n;couttt nn;couttt 欢迎进入图书管理系统 endl;couttt 1:添加图书 endl;couttt 2:删除图书 endl;cou
19、ttt 3:查找图书 endl;couttt 4:显 示 endl;couttt 0:返 回 endl;couttt nn; coutchoice;system(cls);switch (choice) case 1: coutbookid; coutbname; coutaname; coutcname;addbook(bookid,bname,aname,cname); break; case 2: coutbookid; b=search(bookid); if (b=NULL) cout未找到相关信息资料delbook();cout成功删除该图书endl;break; case 3:
20、coutbookid; b=search(bookid); if (b=NULL) cout未找到相关信息资料disp2(); break; case 4: disp2(); break; /- -class Reader int flag; int number; char name10; char major10; int borbookmaxbor; public: Reader() char *getname() return name; char *getmajor() return major;int getflag() return flag; int getnumber() r
21、eturn number; void setname(char na) strcpy(name,na); void setmajor(char m) strcpy(major,m);void delbook()flag=1; void addreader(int n,char *na,char *m) flag=0; number=n;strcpy(name,na);strcpy(major,m);for (int i=0;imaxbor;i+) borbooki=0; void borrowbook(int bookid) for (int i=0;imaxbor;i+) if (borbo
22、oki=0) borbooki=bookid; return; int backbook(int bookid) for (int i=0;imaxbor;i+) if (borbooki=bookid) borbooki=0; return 1; return 0; void disp1() cout = endl;coutsetw(5)numbersetw(10)namesetw(15)majorsetw(20) 借书编号 ; for (int i=0;imaxbor;i+) if (borbooki!=0) coutborbooki;cout endl;cout = endl; ;cla
23、ss RDatabase int top; Reader readmaxr; public: RDatabase() 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(); int addreader (int n,char *na,char *m) Reader *p=search(n); if (p=NULL) top+; readtop.addreader(n,na
24、,m);cout添加读者成功endl;return 1; elsesystem(cls);cout信息重复,添加失败!endl;return 0; Reader *search(int readerid) for (int i=0;i=top;i+) if (readi.getnumber()=readerid & readi.getflag()=0) return &readi; return NULL; void disp1() for (int i=0;i=top;i+) readi.disp1(); void readerdata(); RDatabase() fstream file
25、(reader.txt,ios:out); for (int i=0;i=top;i+) if (readi.getflag()=0) file.write(char *)&readi,sizeof(readi); file.close(); ; void RDatabase:readerdata() int choice=1;char rname20;char rmajor20;int readerid; Reader *r; while (choice!=0) couttt*n; couttt nn;couttt 欢迎进入读者管理系统 endl;couttt 1:添加读者 endl;cou
26、ttt 2:删除读者 endl;couttt 3:查找读者 endl;couttt 4:显 示 endl;couttt 0:返 回 endl;couttt nn;coutchoice; system(cls);switch (choice) case 1:coutreaderid; coutrname;coutrmajor;addreader(readerid,rname,rmajor);break; case 2:coutreaderid;r=search(readerid); if (r=NULL) cout未找到相关信息资料delbook();cout成功删除该读者endl;break;
27、 case 3: coutreaderid; r=search(readerid); if (r=NULL) cout未找到相关信息资料disp1(); break; case 4: disp1(); break; /-/-void homepage() int choice=1,bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b;system(color 1f);while(choice!=0) couttt*n;cout tt nn;cout tt 亲欢迎使用该图书管理系统 endl;cout
28、tt 注意在输入数据是要严格按照提示进行操作。 endl; cout tt 1:图书管理 endl;cout tt 2: 读者管理 endl;cout tt 3: 借阅图书 endl;cout tt 4: 归还图书 endl;cout tt 0: 退出 (有部分功能尚待提升) endl;cout tt nn;coutchoice;system(cls);switch (choice) case 1: int flag;do string password1,password2; char ch,ch1,ch2; cout尊敬的管理员,请输入密码: endl; while(ch1=getch()
29、!=13) password1+=ch1; cout*; coutendl; cout请再次输入密码: endl; while(ch2=getch()!=13) password2+=ch2; cout*; coutendl; if(password1=password2) flag=0; coutendl输入完毕!您输入的是: password1endl; else flag=1; system(cls); cout抱歉,您两次输入的密码不一致endl; cout按任意键重新输入endl; ch=getch(); while(flag); system(cls);BookDB.bookdata(); break; case 2: int flag;do s