1、摘要利用C+的基础知识,用面向对象程序设计的基本思路和方法构建的出版物管理系统,以菜单方式工作,使用数组保存出版物的信息,使用循环来完成,以接受用户的循环操作,只要新增了出版物的相关信息,就可以进行查找、删除等功能。关键词:C+,面向对象程序设计,数组前言一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟, 作为计算机应用的一部分,使用计算机中的C+这一编程语言对出版物信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、
2、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,降低企业的费用支出,这些可以充分突出企业的科学化、正规化管理,同时也是世界接轨的重要条件。目录一 系统分析4二各功能结构图4三部分类及成员函数7四系统测试9五参考文献11六设计总结11一系统分析利用面向对象的方法以及C+的编程思想来完成系统的设计,要求建立清晰的类层次,应当设计“书,CD,磁带”三个类,每个类含有名字,作者或演唱者,出版社或唱片社,价格,出版日期等相关信息。由于这三个类又相关的相同内容,故可设计一个含有公共信息的父类。以菜单方式工作,交互界面友好;设定数组,使用数组保存出版物的信
3、息;建立循环机制,使用循环来完成,以接受用户的循环操作;同时对于不合要求的输入,给出提示,允许再重新输入;设定三个实体结构,允许用户对选择的相应的出版物进行添加、删除,查找等功能。二各功能结构图该系统要求实现对书籍,CD和磁带的储存,查询和删除等功能故要求定义三个类。类层次:首先定义一个共有基类basic,包括名字name,作者或演唱者author,出版社或唱片社company,出版日期data,价格prise,以它为父类定义三个子类分别为bookdate,CDdate,tapedate。basic继承Tapedate饿饿饿饿饿eCDdatebookdate图(一)类结构出版物管理系统实体:系
4、统及其功能实体为磁带CD图书查询删除添加图(二)功能实体关系class oper()新增(图):(f=1)cout请输入“书”名:(f=1)cout请输入“书”名(f=2)cout请输入“CD”名 else cout请输入“磁带if(f=2)cout请输入“CD”名:; else coutp_name)=0该书名(CD,磁带)已经存在i=len-1&(pricei=0格式错误,第一位不能零)pricei9 | pricei0格式错误图(三)添加功能void search(M *m,int f)查询:请输入书名或者作者姓名进行查询(f=1),请输入CD名或者演唱者姓名(f=2),输入磁带名或者演
5、唱者姓名(f=3) M *p=m while(p!=NULL) cout书名,作者,出版社,价格,出版日期(f=1),CD名,演唱者,唱片社,价格,出版日期(f=2),磁带名,演唱者,唱片社,价格,出版日期(f=3)if(n=0很遗憾,没有找到您所要查询的信息)图(四)查询功能M *del(M *m,int f)删除:if(n!=0)coutp_name)=0)m=m-next;delete p;n=0;删除成功! M *del(M *m,int f)if(m=NULL)库存为零,请添加出版物图(五)删除功能三部分类及成员函数1.定义父类和书籍、CD、磁带三个子类:class basic /定
6、义父类public: char name20; char author10;char company20;int price;int date;void input();void show(); ;class bookdate:public basic /定义一个书类public: bookdate() strcpy(name,0); strcpy(author,0); strcpy(company,0); price=0; date=0; void input() basic: input(); void show() basic: show();class CDdate:public ba
7、sic /定义一个CD类public: void input() basic: input();class tapedate:public basic /定义一个磁带类public: void input() basic: input(); ;2部分成员函数的实现:void input() /录入函数 cout请输入名字:name; cout请输入作者或演唱者:author; cout请输入出版社或唱片:company; cout请输入价格:price; cout请输入出版日期:date;void show() /定义显示信息函数cout名字作者或演唱者 出版社或唱片 价格出版日期endl;c
8、outnameauthorcompanypricedateendl;四系统测试1系统主菜单显示界面2.信息操作显示界面3.信息浏览界面4.信息查找显示界面五参考文献1陈维兴,林小茶.c+面向对象程序设计教程. 北京: 清华大学出版社,1996.2004.2张国峰. C+程序设计实用教程. 北京: 清华大学出版社,1996. 3张松梅. C+语言教程. 电子科技大学出版社,1993. 4阎龙. C程序员的C+指南. 北京航空航天大学出版社,1992.5王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司.六设计总结通过此次VC编程课程设计,我了解了Visual C6的安装和基本使用方法,进
9、一步掌握了运用C+及面向对象设计思想方法。出版物管理系统的设计基本实现了老师所要求的功能,同时在设计过程中,对于遇到的各种实践问题进行了详细的分析,学到了很多知识,但还有许多便捷功能未能实现,因此还需要更多的设计来完善。界面风格只是使用默认的,没有创新,这个需要在以后的设计中加以改进。相比之前C语言和数据结构的课程设计,此次课程设计让自己在编程上的理解更深一层,逐步了解编程在实际中的运用,掌握了更多编程方法和思想,拓宽了知识面,为进一步的学习继续打牢根基。附录:源代码:#include #include #include #include stdlib.hclass basic /定义父类pu
10、blic: char name20; char author10;char company20;int price;int date;void input() /录入函数 cout请输入名字:name; cout请输入作者或演唱者:author; cout请输入出版社或唱片:company; cout请输入价格:price; cout请输入出版日期:date;void show()coutt名字t作者或演唱者t出版社或唱片t价格t出版日期endl;couttnamettauthorttcompanyt pricetdateendl; ;class bookdate:public basic /
11、定义一个书类public: bookdate() strcpy(name,0); strcpy(author,0); strcpy(company,0); price=NULL; date=NULL; void input() basic: input(); void show() basic: show();class CDdate:public basic /定义一个CD类public:CDdate() strcpy(name,0); strcpy(author,0); strcpy(company,0); price=NULL; date=NULL; void input() basic
12、: input();class tapedate:public basic /定义一个磁带类public:tapedate() strcpy(name,0); strcpy(author,0); strcpy(company,0); price=NULL; date=NULL; void input() basic: input(); ;int main() bookdate book100; /定义 书籍数组CDdate CD100; /定义 CD 数组tapedate tape100; /定义 磁带数组int face();int screem();if(face()=1) /书籍int
13、x,i=0,n=0;char name1;int screem();if(screem()!=1&screem()!=2&screem()!=3&screem()!=4&screem()!=0)cout您输入的命令错误endl; if(screem()=1)system(cls);coutt请输入书籍信息:endlendl;do booki.input(); cout是否再次输入数据【0.否,1.是】:x;i+;n+;while(x=1); EXEC: int screem();if(screem()=2) /浏览信息int o;system(cls);couttt*书籍信息浏览*endlen
14、dlendl;for(int m=0;mn;m+) bookm.show(); cout返回上一层请输入1o;goto EXEC; else if(screem()=3) / 删除信息 int q; system(cls); char name120; cout请输入要删除的书籍名字:name1; int i,p=1; for(i=0;in;i+) if(strcmp(name1,booki.name)=0) for(int l=i;ln;l+)strcpy(bookl.name,bookl+1.name); strcpy(bookl.author,bookl+1.author); strcp
15、y(pany,bookl+pany); bookl.price=bookl+1.price; bookl.date=bookl+1.date; p=0; if(p=1) cout查找不到您输入的书名endl; cout返回上一层请输入1q; goto EXEC; else /查找信息int q; system(cls); char name120; cout请输入要查找的书籍名字:name1; int i,p=1; for(i=0;in;i+) if(strcmp(name1,booki.name)=0) booki.show(); p=0; if(p=1) cout查找不到您输入的书名end
16、l; cout返回上一层请输入1q; goto EXEC; elseif(face()=2) / CDint x,i=0,n=0;int screem();if(screem()=1) system(cls);coutt请输入 CD 信息:endlendl;do coutendlendl;CDi.input(); cout是否再次输入数据【0.否,1.是】:x;i+;n+;while(x=1);system(cls);EXEC1: int screem(); if(screem()=2) /CD信息浏览int e;system(cls); couttt* CD 信息浏览*endlendlend
17、l; for(int m=0;mn;m+) CDm.show();cout返回上一层请输入1e; goto EXEC1; else if(screem()=3) /CD信息删除 int q; system(cls); char name120; cout请输入要删除的 CD 名字:name1; int i,p=1; for(i=0;in;i+) if(strcmp(name1,CDi.name)=0) for(int l=i;ln;l+)strcpy(CDl.name,CDl+1.name); strcpy(CDl.author,CDl+1.author); strcpy(CDpany,CDl
18、+pany); CDl.price=CDl+1.price; CDl.date=CDl+1.date; p=0; if(p=1) cout查找不到您输入的 CD 名endl; cout返回上一层请输入1q; goto EXEC1; else /CD信息查找 int k; system(cls); char name120; cout请输入要查找的CD名字:name1;int i,p=1;for(i=0;in;i+) if(strcmp(name1,CDi.name)=0) CDi.show(); p=0; if(p=1) cout查找不到您输入的CD名endl; cout返回上一层请输入1k;
19、 goto EXEC1;else / 磁带 int x,i=0,n=0; int screem(); if(screem()=1)system(cls);coutt请输入磁带信息:endlendl;do coutendlendl;tapei.input(); cout是否再次输入数据【0.否,1.是】:x;i+;n+;while(x=1);system(cls);EXEC2: int screem();if(screem()=2)int u;system(cls);couttt*磁带信息浏览*endlendlendl;for(int m=0;mn;m+) tapem.show();cout返回
20、上一层请输入1u;goto EXEC2;elseif(screem()=3) / 磁带信息删除 int q; system(cls); char name120; cout请输入要删除的磁带名字:name1; int i,p=1; for(i=0;in;i+) if(strcmp(name1,tapei.name)=0) for(int l=i;ln;l+)strcpy(tapel.name,tapel+1.name); strcpy(tapel.author,tapel+1.author); strcpy(pany,tapel+pany); tapel.price=tapel+1.price
21、; tapel.date=tapel+1.date; p=0; if(p=1) cout查找不到您输入的磁带名endl; cout返回上一层请输入1q; goto EXEC2;else /磁带信息 查找int v; system(cls);char name120;cout请输入要查找的磁带名字:name1;int i,p=1;for(i=0;in;i+) if(strcmp(name1,tapei.name)=0) tapei.show(); p=0; if(p=1) cout查找不到您输入的磁带endl; cout返回上一层请输入 1 v; goto EXEC2;return 0;int
22、face()int b;coutt*出版物管理系统*endl; coutendlendlendlendl; couttt1.书籍出版物信息-1endl; couttt2. CD 出版物信息-2endl; couttt3.磁带出版物信息-3endl; couttt4.退出出版物系统-0endl;cout请输入选择命令b;system(cls);if(b!=1&b!=2&b!=3) docout输入错误,请再次输入:b;while(b=1|b=2|b=3);return b;int screem()int a; system(cls); coutt*出版物管理系统*endl; coutendlendlendlendl; couttt1.出版物信息添加-1endl; couttt2.出版物信息浏览-2endl; couttt3.出版物信息删除-3endl; couttt4.出版物信息查找-4endl; cout请输入选择命令a; return a;- 19 -