图书馆管理系统设计报告.doc_第1页
图书馆管理系统设计报告.doc_第2页
图书馆管理系统设计报告.doc_第3页
图书馆管理系统设计报告.doc_第4页
图书馆管理系统设计报告.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

北华航天工业学院课程设计报告第一章 绪论11 课程设计的目的课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。通过课程设计,能够提高学生的分析问题,解决问题,要能很好的完成课程设计,要求我们必须掌握在学习中学到的知识,所以要我们对课本中学的知识要熟悉且掌握,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。12 课程设计的背景和意义121 课程设计的背景1. 理论研究基础(1)C+语言的基本知识和技能,如:类与对象,指针,输入/输出流,文本文件的建立保存;(2)面向对象程序设计的基本思路和方法。2. 技术层面的支持(1)研究这些结构的存储、显示,并有查找、添加、删除、修改、查询、统计、保存信息、载入等功能。(2)类定义、类对象、继承、组合、多态和文件的输入/输出等内容。122 课程设计的意义(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。帮助了同学系统的掌握C+课程的主要内容。(2)综合实际应用的需求是课程设计既覆盖教学所要求的知识点,有接近工程的实际需求,训练自己实际分析问题和解决问题以及编程的能力。做到理论结合实际。13 课程设计环境(1)在Microsoft Visual C+ 6.0开发平台上编写程序源代码,修改,增加功能,通过编译、连接,直到完全无误,最终执行程序,反复输入合理的以及不合理的数据进行测试并进一步完善。(2)硬件:学校机房(3)软件:Microsoft Visual C+ 6.0开发平台第二章 需求分析21 问题描述图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。图书馆共有三大类物品资料:图书、视频光盘、图画。这三类物品共同具有的属性有:编号、标题、作者、评级(未评级,一般,成人,儿童)等。其中图书类增加出版社、ISBN号、页数等信息;视频光盘类增加出版社、ISBN号、页数等信息;图画类增加出品国籍、作品的长和宽(以厘米计,整数)等信息。22 功能要求(1)基本功能1)添加物品:主要完成图书馆三类物品信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当物品库已满,则提示不能再添加新的数据。2)查询物品 可按照三种方式来查询物品,分别为: 按标题查询:输入标题,输出所查询的信息,若不存在该记录,则提示“该标题不存在!”; 按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”; 按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有物品!”;3)显示物品库:输出当前物品库中所有物品信息,每条记录占据一行。4)编辑物品:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。5)删除物品:主要完成图书馆物品信息的删除。如果当前物品库为空,则提示“物品库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。6)统计信息输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。例如:总物品数 30图书类 10视频光盘类 15图画类 57)物品存盘:将当前程序中的物品信息存入文件中。8)读出物品:从文件中将物品信息读入程序。(2)扩展功能 在完成以上基本功能的基础上,可自行进行扩展或完善,例如:1)可按物品编号进行排序。2)使用二进制文件存储信息。3)添加记录时,考虑各种数据的有效性。4)组合查询功能的实现。23 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告。 第三章 系统设计31 数据设计311 类设计*基类:*class ziliaoprotected: int number;char title20;char writer20;char level20;int tag; /资料删除标记;*图书类:*class tushu:public ziliao /定义由ziliao类派生出tushu(图书)类private:char publish20; int ISBN;int page;public:int getno() return number; /获取图书编号 char *gettitle() return title; /获取图书标题 void deltushu() tag=1; /删除图书int gettag() return tag; /获取删除图画的标记void addtushu(int n,char *t,char *w,char *l,char *p,int I,int pa) /增加图书操作void display() /显示图书信息 ;* 视频光盘类:*class guangpan:public ziliao /定义由ziliao基类派生出guangpan(光盘)类private:char name20;int date;float time;public: void delguangpan() tag=1; /删除视频光盘int getno() return number; /获取视频光盘编号int gettag() return tag; /获取删除视频光盘的标记 char *gettitle() return title; /获取视频光盘标题void addguangpan(int n,char *t,char *w,char *l,char *na,int d,float ti) /增加视频光盘操作void display() /显示视频光盘信息 ; *图画类:*class tuhua:public ziliao /定义由ziliao类派生出的tuhua(图画)类private:char country20; int length;int width;public: void deltuhua() tag=1; /删除图画int getno() return number; /获取图画编号int gettag() return tag; /获取删除图画的标记char *gettitle() return title; /获取图画标题void addtuhua(int n,char *t,char *w,char *l,char *c,int le,int wi) /增加图画操作void display() /显示图画信息 ;*图书馆资料管理类:*class tushuguan private: int top1,top2,top3,top11,top22,top33; tushu tsmaxb; guangpan gpmaxgp; tuhua thmaxp;public:void ziliaodata();tushuguan();void addtushu(int n,char *t,char *w,char *l,char *p,int I,int pa)/添加图书,加前先查找tstop1.addtushu(n,t,w,l,p,I,pa); top1+;top11+; int look1(int bookid) /按编号查找图书 int k=-1; for(int i=0;itop1;i+) if(tsi.getno()=bookid&tsi.gettag()=0) k=i; return k; int look11(char *m) /按标题查找图书 int k=-1; for(int i=0;itop1;i+) if(strcmp(tsi.gettitle(),m)=0&tsi.gettag()=0) tsi.display(); k=i; return k;void addguangpan(int n,char *t,char *w,char *l,char *na, int d,float ti) /添加视频光盘,加前先查找 gptop2.addguangpan(n,t,w,l,na,d,ti); top2+;top22+;int look2(int bookid) /按编号查找视频光盘 int k=-1; for(int i=0;itop2;i+) if(gpi.getno()=bookid&gpi.gettag()=0) k=i; return k;int look22(char *m) /按标题查找视频光盘 int k=-1; for(int i=0;itop2;i+) if(strcmp(gpi.gettitle(),m)=0&gpi.gettag()=0) gpi.display(); k=i; return k;void addtuhua(int n,char *t,char *w,char *l,char *c, int le,int wi)/添加图画,加前先查找 thtop3.addtuhua(n,t,w,l,c,le,wi); top3+;top33+;int look3(int bookid) /按编号查找图画 int k=-1; for(int i=0;itop3;i+) if(thi.getno()=bookid&thi.gettag()=0) k=i; return k;int look33(char *m) /按标题查找图画 int k=-1; for(int i=0;itop3;i+) if(strcmp(thi.gettitle(),m)=0&thi.gettag()=0) thi.display(); k=i; return k;tushuguan() /析构函数,保存信息;312 类之间的关系1.基类为ziliao类,在其中定义了三类资料共有的属性作为数据成员。2.tushu类、shipinguangpan类、tuhua类公用继承ziliao类。在三个派生类中分别定义各自的属性作为数据成员,定义了增加资料、显示资料、对删除的资料做标记、获取资料编号,标题,删除资料的标记等成员函数。3.tushuguan类,在其中定义了三个派生类的对象和记录各类资料总数的变量作为数据成员,实现了类的组合应用。在该类中的构造函数和析构函数中分别实现了对程序中各类资料的读取和保存功能,定义了对资料按编号和标题的查找,各类资料的添加,对各类资料的管理等成员函数。其中void ziliaodate()(对各类资料的管理)函数中包含switch语句,实现了7个分支选择结构:退出、添加资料、查询资料、编辑资料、统计资料、删除资料、显示资料。313函数设计tushuguan()*构造(读取)函数实现对文件中的资料信息的读取tushuguan()*析构(保存)函数实现对程序中的资料信息保存在相应的文件中void ziliaodate()*资料管理函数实现对资料信息的管理int main()*主函数调用各个资料管理函数实现各个功能的操作32 结构设计321 系统流程图构造函数(读取)case0(退出)case1(添加)tushu派生类case2(查询)tushuguan对资料的操作类 shipinguangpan派生类ziliao 基类ziliaodate()case3(编辑) 组 合 应 case4(统计) 用tuhua派生类case5(删除)case6(显示)析构函数(保存)322 界面设计(1)进入程序界面图3-1 进入程序的欢迎界面(2)选择操作对象界面图3-2 选择操作对象时的界面(3)退出程序界面图3-3 退出程序时的界面第四章 系统实现41 类实现定义基类ziliao类,然后由基类派生出tushu(图书)类、shipinguangpan(视频光盘)类、tuhua(图画)类,定义tushuguan类,实现对各类资料信息的管理。在各类中定义相关成员函数和数据成员ziliao基类shipinguangpan视频光盘类tuhua图画类tushu图书类 组合应用tushuguan资料管理类图4-1 类结构图42 功能实现421 资料信息的读取功能的实现该功能用于对资料信息进行读取,可将保存在相应的文本文档中的各类人员的信息读取到内存中该功能在tushuguan类中的构造函数中,主函数中定义该类的对象,运行时自动将各文件中的资料信息读取出来tushuguan:tushuguan()top1=0;top11=0;top2=0;top22=0;top3=0;top33=0;ifstream file1(D:图书信息.txt,ios:binary); /从图书信息文件中读取图书信息 if(!file1) cerropen error!endl; abort(); while ( file1.read(char*)&tstop1,sizeof(tstop1) top1+;top11+; file1.close(); ifstream file2(D:视频光盘信息.txt,ios:binary); if(!file2) cerropen error!endl; abort(); while(file2.read(char*)&gptop2,sizeof(gptop2) top2+;top22+; file2.close(); ifstream file3(D:图画信息.txt,ios:binary); if(!file3) cerropen error!endl; abort(); while(file3.read(char*)&thtop3,sizeof(thtop3) top3+;top33+; file3.close();422 资料信息的添加功能的实现该功能用于对资料信息进行添加该功能分别调用tushuguan类中的查询函数,分别实现对图书、视频光盘、图画信息的添加case1: /添加资料int choice1;coutendl选择您要添加的资料类别: endl;coutendl;cout endl;cout 1:图书 2:视频光盘 3:图画 endl;cout endl;coutchoice1;if(choice1=1) /添加图书 if(top11=maxb) cout图书库已满,无法添加!endl;break;else cout输入您要添加的图书编号:a; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1) coutb;coutc;coutd;coute;coutf;coutg;addtushu(a,b,c,d,e,f,g);cout 添加成功!endl; else cout=maxgp) cout视频光盘库已满,无法添加!endl;break;else cout输入您要添加的视频光盘编号:a;if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1) coutb; coutc; coutd; coute; coutf; couth; addguangpan(a,b,c,d,e,f,h); cout 添加成功!endl;else cout该编号已存在,无法添加!maxp) cout图画库已满,无法添加!endl;break;elsecout输入您要添加的图画编号:a; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1)coutb;coutc;coutd;coute;coutf;coutg;addtuhua(a,b,c,d,e,f,g);cout 添加成功!endl; else cout该编号已存在,无法添加!endl;break;423 资料信息的查询功能的实现该功能用于对资料信息进行查询,可按照编号或标题或类别进行查询。分别调用tushuguan类中的查询函数和各派生类中的显示函数,分别实现对图书、视频光盘、图画信息的查询case2:if(top11+top22+top33=0) coutendl;cout*endl;cout 当前物品库为空! endl; cout* endl;coutendl;else coutendl选择您要查询的方式: endl;coutendlcout endl; cout 1:按编号查询 2:按标题查询 3:按类别查询 endl;cout endl;coutchoice1;if(choice1=1) couta; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1)cout该编号不存在!display(); else if(look2(a)!=-1) y=&gplook2(a); y-display(); else if(look3(a)!=-1) z=&thlook3(a); z-display(); break; if(choice1=2) coutb; if(look11(b)=-1)&(look22(b)=-1)&(look33(b)=-1) cout不存在该标题!endl; break; if(choice1=3)coutendl选择您要查询的资料类别: endl; /按类别查询coutendl;cout endl;cout 1:图书 2:视频光盘 3:图画 endl;cout endl;couta;if(a=1)if(top11=0) cout该类别没有资料!endl; elsefor(int i=0;itop1;i+)if(tsi.gettag()=0) si.display();else if(a=2)if(top22=0) cout该类别没有资料!endl; elsefor(int i=0;itop2;i+)if(gpi.gettag()=0) gpi.display();else if(a=3) if(top33=0) cout该类别没有资料!endl; elsefor(int i=0;itop3;i+) if(thi.gettag()=0) thi.display(); break;break424 资料信息的编辑功能的实现该功能用于对资料信息进行编辑,在查询到需要编辑的资料后进行编辑,分别调用tushuguan类中查询及各类中的显示,删除,添加函数,分别实现对图书、视频光盘、图画信息的编辑case3:if(top11+top22+top33=0) coutendl;cout*endl;cout 当前物品库为空! endl; cout* endl;coutendl;else couta; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1) cout该编号不存在!endl;else if(look1(a)!=-1) x=&tslook1(a); cout该资料信息为:display();x-deltushu(); cout请输入该资料被修改以后的编号:a; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1) coutb; coutc; coutd; coute; coutf; coutg; x-addtushu(a,b,c,d,e,f,g); cout修改成功!endl;break;else cout该编号已存在,不可重复!endl请重新输入编号:;else if(look2(a)!=-1)y=&gplook2(a);cout该资料信息为:display();y-delguangpan();cout请输入该资料被修改以后的编号:a; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1) coutb; coutc; coutd; coute; coutf; couth; y-addguangpan(a,b,c,d,e,f,h); cout修改成功!endl;break; else cout该编号已存在,不可重复!endl请重新输入编号:;else if(look3(a)!=-1)z=&thlook3(a);cout该资料信息为:display();z-deltuhua();cout请输入该资料被修改以后的编号:a; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1) coutb; coutc; coutd; coute; coutf; coutg; z-addtuhua(a,b,c,d,e,f,g); cout修改成功!endl;break; else cout该编号已存在,不可重复!endl请重新输入编号:; break;break;425 资料信息的统计功能的实现该功能用于对资料信息进行统计,可统计资料的总数及各类别总数等信息case4:int top11=0,top22=0,top33=0; /统计当前资料for(int i=0;itop1;i+)if(tsi.gettag()=0) top11+;for(i=0;itop2;i+)if(gpi.gettag()=0) top22+;for(i=0;itop3;i+)if(thi.gettag()=0) top33+; cout*endl; cout总物品数: top11+top22+top33endl;cout图书类: top11endl;cout视频光盘类: top22endl;cout图画类: top33endl;cout*endl;break;426 资料信息的删除功能的实现该功能用于对资料信息进行删除,在查询到需要删除的资料后进行删除,分别调用tushuguan类中的查询函数和各类中的显示,删除函数,分别实现对图书、视频光盘、图画信息的删除case5:if(top11+top22+top33=0) coutendl;cout*endl;cout 当前物品库为空! endl; cout* endl;coutendl; else couta; if(look1(a)=-1)&(look2(a)=-1)&(look3(a)=-1) cout该编号不存在!endl;else if(look1(a)!=-1) x=&tslook1(a);cout您要删除资料信息为:display();couts;if(strcmp(s,yes)=0) x-deltushu();top11-;cout已删除成功!endl; else if(strcmp(s,no)=0)cout已取消删除!endl;break; else if(look2(a)!=-1) y =&gplook2(a); cout您要删除资料信息为:display(); couts; if(strcmp(s,yes)=0) y-delguangpan();top22-;cout已删除成功!endl; else if(strcmp(s,no)=0)cout已取消删除!endl;break;else if(look3(a)!=-1)z=&thlook3(a);cout您要删除资料信息为:display();couts; if(strcmp(s,yes)=0) z-deltuhua();top33-; cout已删除成功!endl; else if(strcmp(s,no)=0) cout已取消删除!endl; break;break;427 资料信息的显示功能的实现该功能用于对资料信息进行显示,对各类资料按编号进行排序后调用各派生类的显示函数,可将各类资料的信息分别显示出来case6: if(top11+top22+top33=0) coutendl; cout*endl; cout 当前物品库为空! endl; cout* endl; coutendl;else tushu q;for(int j=0;jtop1-1;j+) for(int i=0;itsi+1.getno()q=tsi;tsi=tsi+1;tsi+1=q; for(int i=0;itop1;i+)if(tsi.gettag()=0)tsi.display(); /显示图书信息 guangpan w; for( j=0;jtop2-1;j+)for(i=0;igpi+1.getno()w=gpi;gpi=gpi+1;gpi+1=w; for(i=0;itop2;i+) if(gpi.gettag()=0) gpi.display(); /显示视频光盘信息 tuhua r; for(j=0;jtop3-1;j+) fo

温馨提示

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

评论

0/150

提交评论