出版物管理系统设计说明书.docx
《出版物管理系统设计说明书.docx》由会员分享,可在线阅读,更多相关《出版物管理系统设计说明书.docx(21页珍藏版)》请在冰豆网上搜索。
![出版物管理系统设计说明书.docx](https://file1.bdocx.com/fileroot1/2022-11/27/d8f533a9-5889-4521-a0ec-70563d681eae/d8f533a9-5889-4521-a0ec-70563d681eae1.gif)
出版物管理系统设计说明书
摘要
利用C++的基础知识,用面向对象程序设计的基本思路和方法构建的出版物管理系统,以菜单方式工作,使用数组保存出版物的信息,使用循环来完成,以接受用户的循环操作,只要新增了出版物的相关信息,就可以进行查找、删除等功能。
关键词:
C++,面向对象程序设计,数组
前言
一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,作为计算机应用的一部分,使用计算机中的C++这一编程语言对出版物信息进行管理,有着手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高人事劳资管理的效率,降低企业的费用支出,这些可以充分突出企业的科学化、正规化管理,同时也是世界接轨的重要条件。
一.系统分析……………………………………………………………4
二.各功能结构图………………………………………………………4
三.部分类及成员函数…………………………………………………7
四.系统测试……………………………………………………………9
五.参考文献……………………………………………………………11
六.设计总结……………………………………………………………11
一.系统分析
利用面向对象的方法以及C++的编程思想来完成系统的设计,要求建立清晰的类层次,应当设计“书,CD,磁带”三个类,每个类含有名字,作者或演唱者,出版社或唱片社,价格,出版日期等相关信息。
由于这三个类又相关的相同内容,故可设计一个含有公共信息的父类。
以菜单方式工作,交互界面友好;设定数组,使用数组保存出版物的信息;建立循环机制,使用循环来完成,以接受用户的循环操作;同时对于不合要求的输入,给出提示,允许再重新输入;设定三个实体结构,允许用户对选择的相应的出版物进行添加、删除,查找等功能。
二.各功能结构图
该系统要求实现对书籍,CD和磁带的储存,查询和删除等功能故要求定义三个类。
类层次:
首先定义一个共有基类basic,包括名字name,作者或演唱者author,出版社或唱片社company,出版日期data,价格prise,以它为父类定义三个子类分别为bookdate,CDdate,tapedate。
实体:
系统及其功能实体为
新增(图):
查询:
图(四)查询功能
删除:
三.部分类及成员函数
1.定义父类和书籍、CD、磁带三个子类:
classbasic{//定义父类
public:
charname[20];
charauthor[10];
charcompany[20];
intprice;
intdate;
voidinput();
voidshow();
}
};
classbookdate:
publicbasic{//定义一个书类
public:
bookdate()
{
strcpy(name,"\0");
strcpy(author,"\0");
strcpy(company,"\0");
price=0;
date=0;
}
voidinput()
{basic:
:
input();}
voidshow()
{basic:
:
show();}
};
classCDdate:
publicbasic{//定义一个CD类
public:
voidinput()
{basic:
:
input();}
};
classtapedate:
publicbasic{//定义一个磁带类
public:
voidinput()
{basic:
:
input();}
};
2.部分成员函数的实现:
voidinput()//录入函数
{
cout<<"请输入名字:
"<cin>>name;
cout<<"请输入作者或演唱者:
"<cin>>author;
cout<<"请输入出版社或唱片:
"<cin>>company;
cout<<"请输入价格:
"<cin>>price;
cout<<"请输入出版日期:
"<cin>>date;
}
voidshow()//定义显示信息函数
{
cout<<"名字"<<"作者或演唱者"<<"出版社或唱片"<<"价格"'<<"出版日期"<cout<}
四.系统测试
1.系统主菜单显示界面
2.信息操作显示界面
3.信息浏览界面
4.信息查找显示界面
五.参考文献
[1]陈维兴,林小茶.c++面向对象程序设计教程.北京:
清华大学出版社,1996.2004.
[2]张国峰.C++程序设计实用教程.北京:
清华大学出版社,1996.
[3]张松梅.C++语言教程.电子科技大学出版社,1993.
[4]阎龙.C程序员的C++指南.北京航空航天大学出版社,1992.
[5]王博.面向对象的建模、设计技术与方法.北京希望电脑公司.
六.设计总结
通过此次VC++编程课程设计,我了解了VisualC++6的安装和基本使用方法,进一步掌握了运用C++及面向对象设计思想方法。
出版物管理系统的设计基本实现了老师所要求的功能,同时在设计过程中,对于遇到的各种实践问题进行了详细的分析,学到了很多知识,但还有许多便捷功能未能实现,因此还需要更多的设计来完善。
界面风格只是使用默认的,没有创新,这个需要在以后的设计中加以改进。
相比之前C语言和数据结构的课程设计,此次课程设计让自己在编程上的理解更深一层,逐步了解编程在实际中的运用,掌握了更多编程方法和思想,拓宽了知识面,为进一步的学习继续打牢根基。
附录:
源代码:
#include
#include
#include
#include"stdlib.h"
classbasic{//定义父类
public:
charname[20];
charauthor[10];
charcompany[20];
intprice;
intdate;
voidinput()//录入函数
{
cout<<"请输入名字:
"<cin>>name;
cout<<"请输入作者或演唱者:
"<cin>>author;
cout<<"请输入出版社或唱片:
"<cin>>company;
cout<<"请输入价格:
"<cin>>price;
cout<<"请输入出版日期:
"<cin>>date;
}
voidshow()
{
cout<<'\t'<<"名字"<<'\t'<<"作者或演唱者"<<'\t'<<"出版社或唱片"<<'\t'<<"价格"<<'\t'<<"出版日期"<cout<<'\t'<}
};
classbookdate:
publicbasic{//定义一个书类
public:
bookdate()
{
strcpy(name,"\0");
strcpy(author,"\0");
strcpy(company,"\0");
price=NULL;
date=NULL;
}
voidinput()
{basic:
:
input();}
voidshow()
{basic:
:
show();}
};
classCDdate:
publicbasic{//定义一个CD类
public:
CDdate()
{
strcpy(name,"\0");
strcpy(author,"\0");
strcpy(company,"\0");
price=NULL;
date=NULL;
}
voidinput()
{basic:
:
input();}
};
classtapedate:
publicbasic{//定义一个磁带类
public:
tapedate()
{
strcpy(name,"\0");
strcpy(author,"\0");
strcpy(company,"\0");
price=NULL;
date=NULL;
}
voidinput()
{basic:
:
input();}
};
intmain()
{
bookdatebook[100];//定义书籍数组
CDdateCD[100];//定义CD数组
tapedatetape[100];//定义磁带数组
intface();
intscreem();
if(face()==1)//书籍
{
intx,i=0,n=0;
charname1;
intscreem();
if(screem()!
=1&&screem()!
=2&&screem()!
=3&&screem()!
=4&&screem()!
=0)
cout<<"您输入的命令错误"<if(screem()==1)
{
system("cls");
cout<<'\t'<<"请输入书籍信息:
"<do
{
book[i].input();
cout<<"是否再次输入数据【0.否,1.是】:
"<cin>>x;
i++;
n++;
}while(x==1);
}
EXEC:
intscreem();
if(screem()==2)//浏览信息
{
into;
system("cls");
cout<<'\t'<<'\t'<<"***********书籍信息浏览**********"<for(intm=0;mbook[m].show();
cout<<"返回上一层请输入1"<cin>>o;
gotoEXEC;
}
else
{
if(screem()==3)//删除信息
{
intq;
system("cls");
charname1[20];
cout<<"请输入要删除的书籍名字:
"<cin>>name1;
inti,p=1;
for(i=0;iif(strcmp(name1,book[i].name)==0)
{for(intl=i;l{
strcpy(book[l].name,book[l+1].name);
strcpy(book[l].author,book[l+1].author);
strcpy(book[l].company,book[l+1].company);
book[l].price=book[l+1].price;
book[l].date=book[l+1].date;
}
p=0;
}
if(p==1)
cout<<"查找不到您输入的书名"<cout<<"返回上一层请输入1"<cin>>q;
gotoEXEC;
}
else//查找信息
{
intq;
system("cls");
charname1[20];
cout<<"请输入要查找的书籍名字:
"<cin>>name1;
inti,p=1;
for(i=0;iif(strcmp(name1,book[i].name)==0)
{book[i].show();
p=0;
}
if(p==1)
cout<<"查找不到您输入的书名"<cout<<"返回上一层请输入1"<cin>>q;
gotoEXEC;
}
}
}
else
{if(face()==2)//CD
{
intx,i=0,n=0;
intscreem();
if(screem()==1)
{
system("cls");
cout<<'\t'<<"请输入CD信息:
"<do
{
cout<CD[i].input();
cout<<"是否再次输入数据【0.否,1.是】:
"<cin>>x;
i++;
n++;
}while(x==1);
system("cls");
}
EXEC1:
intscreem();
if(screem()==2)//CD信息浏览
{
inte;
system("cls");
cout<<'\t'<<'\t'<<"***********CD信息浏览**********"<for(intm=0;mCD[m].show();
cout<<"返回上一层请输入1"<cin>>e;
gotoEXEC1;
}
else
{
if(screem()==3)//CD信息删除
{
intq;
system("cls");
charname1[20];
cout<<"请输入要删除的CD名字:
"<cin>>name1;
inti,p=1;
for(i=0;iif(strcmp(name1,CD[i].name)==0)
{for(intl=i;l{
strcpy(CD[l].name,CD[l+1].name);
strcpy(CD[l].author,CD[l+1].author);
strcpy(CD[l].company,CD[l+1].company);
CD[l].price=CD[l+1].price;
CD[l].date=CD[l+1].date;
}
p=0;
}
if(p==1)
cout<<"查找不到您输入的CD名"<cout<<"返回上一层请输入1"<cin>>q;
gotoEXEC1;
}
else//CD信息查找
{intk;
system("cls");
charname1[20];
cout<<"请输入要查找的CD名字:
"<cin>>name1;
inti,p=1;
for(i=0;iif(strcmp(name1,CD[i].name)==0)
{CD[i].show();
p=0;
}
if(p==1)
cout<<"查找不到您输入的CD名"<cout<<"返回上一层请输入1"<cin>>k;
gotoEXEC1;
}
}
}
else//磁带
{
intx,i=0,n=0;
intscreem();
if(screem()==1)
{
system("cls");
cout<<'\t'<<"请输入磁带信息:
"<do
{
cout<tape[i].input();
cout<<"是否再次输入数据【0.否,1.是】:
"<cin>>x;
i++;
n++;
}while(x==1);
system("cls");
}
EXEC2:
intscreem();
if(screem()==2)
{
intu;
system("cls");
cout<<'\t'<<'\t'<<"***********磁带信息浏览**********"<for(intm=0;mtape[m].show();
cout<<"返回上一层请输入1"<cin>>u;
gotoEXEC2;
}
else
{
if(screem()==3)//磁带信息删除
{
intq;
system("cls");
charname1[20];
cout<<"请输入要删除的磁带名字:
"<cin>>name1;
inti,p=1;
for(i=0;iif(strcmp(name1,tape[i].name)==0)
{for(intl=i;l{
strcpy(tape[l].name,tape[l+1].name);
strcpy(tape[l].author,tape[l+1].author);
strcpy(tape[l].company,tape[l+1].company);
tape[l].price=tape[l+1].price;
tape[l].date=tape[l+1].date;
}
p=0;
}
if(p==1)
cout<<"查找不到您输入的磁带名"<cout<<"返回上一层请输入1"<cin>>q;
gotoEXEC2;
}
else//磁带信息查找
{
intv;
system("cls");
charname1[20];
cout<<"请输入要查找的磁带名字:
"<cin>>name1;
inti,p=1;
for(i=0;iif(strcmp(name1,tape[i].name)==0)
{tape[i].show();
p=0;
}
if(p==1)
cout<<"查找不到您输入的磁带"<cout<<"返回上一层请输入1"<cin>>v;
gotoEXEC2;
}
}
}
}
return0;
}
intface()
{
intb;
cout<<'\t'<<"*****************出版物管理系统****************"<cout<cout<<'\t'<<'\t'<<"1.书籍出版物信息--------------1"<cout<<'\t'<<'\t'<<"2.CD出版物信息--------------2"<cout<<'\t'<<'\t'<<"3.磁带出版物信息--------------3"<cout<<'\t'<<'\t'<<"4.退出出版物系统--------------0"<cout<<"请输入选择命令"<cin>>b;
system("cls");
if(b!
=1&&b!
=2&&b!
=3)
{
do{
cout<<"输入错误,请再次输入:
"<cin>>b;
}while(b==1||b==2||b==3);
}
returnb;
}
intscreem()
{
inta;
system("cls");
cout<<'\t'<<"*****************出版物管理系统****************"<cout<cout<<'\t'<<'\t'<<"1.出版物信息添加--------------1"<cout<<'\t'<<'\t'<<"2.出版物信息浏览--------------2"<cout<<'\t'<<'\t'<<"3.出版物信息删除--------------3"<cout<<'\t'<<'\t'<<"4.出版物信息查找--------------4"<cout<<"请输入选择命令"<cin>>a;
returna;
}