资源描述
课 程 设 计 报 告
课程名称 面向对象程序设计
课题名称 公司库存管理系统
专 业
班 级
学 号
姓 名
指导教师
年 月 日
湖南工程学院
课 程 设 计 任 务 书
课程名称 面向对象程序设计
课 题 公司库存管理系统
专业班级
学生姓名
学 号
指导老师
审 批
任务书下达日期 年 月 日
任务完成日期 年 月 日
目录
1.系统需求分析 3
2. 总体设计 4
3.详细设计 4
4. 系统调试 6
5. 结果分析 6
6. 总结 10
附录1 11
附录2 12
1.系统需求分析
(给出你所设计题目拟满足的用户需求,给出系统设计目标,系统拟实现的功能。)
本产品主要针对TV、DVD以及带DVD的TV(下面简称DVDTV)生产或销售部门的库存进行简单的管理。
它能够对该部门的所有库存的产品按照品名进行显示、查找、入库和出库、保存。
2. 总体设计
(包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。)
从系统的需求中我们可以看到:该系统要对产品进行显示、查找、入库、出库和保存功能。这就意味着这个系统需要一个show函数(通过cout将数据显示在屏幕上)来实现显示功能,而其他各个功能需要不同的模块来实现,也就意味着这个系统需要五个不同的功能模块。
系统功能模块图:
图2.1 系统功能模块
3.详细设计
(类层次图;各功能模块实现等)
类层次图:
派生 派生
图3.1 类层次关系
各功能模块的实现:
显示功能是同过各类自带有的show函数形如“cout<<””<<<<endl”的一竖排c++输出流把TV,DVD,DVDTV的主要数据打印在计算机的屏幕上。
查找是分两种情况:按入库编号按品牌
按入库编号是输入一个编号,让它与库存中产品进行比对如果有相同则将编号相同的产品输出到屏幕上,如果无相同就在屏幕上显示“无货或输错”。
按品牌查找是输入一个品牌,通过strcmp将两个字符串进行比较,如果相同则显示出这个品牌的所有产品以及它们的数据。
入库其实是一个输入功能:它主要是通过“cin>>”功能依次将产品的各项数据输入计算机。
出库是一个删除功能,由于水平有限,我采用的是通过用后一个覆盖前一个数据的方法,并将计数减一,使之能够在功能上达到删除。
保存是建一个文件,把入库时输入的数据保存在一个文件内,是系统再次打开时数据不用重新输入。
4. 系统调试
(调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整)
由于本次设计用到了类,而类中有受保护的对像和私有对象,他们都不可以在类外使用。于是使得下边一些数据不能用。最后我只能将数据全改成公有数据。
5. 结果分析
(总结自己独到的设计特点和不足之处。)
先来看一下程序的运行截图:
图5.1 输入
图5.2 显示
图5.3 查找
图5.4 保存界面
图5.5 保存效果
如上的一系列截图可以看出这个系统的特色是能够很好的把系统的需求完美的表现出来。
而不足之处如详细设计所说的那样只是通过用后一个覆盖前一个的方法,它只能在屏幕上体现,而不能在文件中表现出来。如下图:
图5.6 删除前的文件
图5.7 删除界面
图5.8 删除后的文件(红圈内的变化)
6. 总结
在做c++ 的设计前,我以为不会难做,就像去年做c语言一样,做完设计,然后两下子就将设计报告做完.直到答辩完设计时,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅. 在做设计前,一定要将课本上的知识吃透,因为这是做设计的基础,否则,在老师讲解时就会听不懂,这将使你在做设计时的难度加大,浪费做设计的宝贵时间.在做设计时才去摸索,这将使你极大地浪费时间,使你事倍功半.做设计时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,设计后,还要复习,思考,这样,你的印象 才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这样你就答辩通不过。老师在答辩过程中还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在以后工作中的应用是那么的广泛. 通过这次c++的设计,使我学到了不少实用c++的知识,更重要的是,做设计的过程,思考问题的方法,这与做其他的设计是通用的,真正使我们受益匪浅.
附录1
计算机科学与技术系课程设计评分表
课程名称: 面向对象程序设计
项 目
评 价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日 期:
附录2
源码
#include<iostream>
using namespace std;
class television
{
public:
int size;
char type[10];
int charge1;
int weight1;
char brank1[10];
int number1;
television(int s=0,char t[]=" ",int c1=0,int w1=0,char b1[]=" ",int n1=0):size(s),charge1(c1),weight1(w1),number1(n1) {strcpy(type,t);strcpy(brank1,b1);}
void show() const
{
cout<<"TV尺寸:"<<size<<endl;
cout<<"TV类型:"<<type<<endl;
cout<<"售价:"<<charge1<<endl;
cout<<"重量:"<<weight1<<endl;
cout<<"TV品牌:"<<brank1<<endl;
cout<<"入库编号:"<<number1<<endl;
}
};
class DVD
{
public:
char guige[10];
int weight2;
int charge2;
char brank2[10];
int number2;
DVD(char g[]=" ",int w2=0,int c2=0,char b2[]=" ",int n2=0):weight2(w2),charge2(c2),number2(n2) { strcpy(guige,g); strcpy(brank2,b2); }
void show() const
{
cout<<"DVD规格:"<<guige<<endl;
cout<<"重量:"<<weight2<<endl;
cout<<"售价:"<<charge2<<endl;
cout<<"DVD品牌:"<<brank2<<endl;
cout<<"入库编号:"<<number2<<endl;
}
};
class DVDTV:public television,public DVD
{
public:
int weight3;
int charge3;
int number3;
DVDTV(int s=0,char t[]=" ",char b1[]=" ",char g[]=" ",char b2[]=" ",int w3=0,int c3=0,int n3=0):weight3(w3),charge3(c3),number3(n3){size=s,strcpy(type,t);strcpy(brank1,b1);strcpy(guige,g); strcpy(brank2,b2);}
void show() const
{
cout<<"尺寸:"<<size<<endl;
cout<<"类型:"<<type<<endl;
cout<<"TV品牌:"<<brank1<<endl;
cout<<"规格:"<<guige<<endl;
cout<<"DVD品牌:"<<brank2<<endl;
cout<<"重量:"<<weight3<<endl;
cout<<"售价:"<<charge3<<endl;
cout<<"入库编号:"<<number3<<endl;
}
};
int main ()
{
static int k=0;
static int l=0;
static int m=0;
int i;
class television a[10];
class DVD b[10];
class DVDTV c[10];
FILE *q1;
q1=fopen("新建1.txt","r+");
if(q1==NULL)
{
q1=fopen("新建1.txt","w+");
}
rewind(q1);
fscanf(q1,"%d",&k);
for(i=0;i<k;i++)
{
fscanf(q1,"%d %s %d %d %s %d ",&a[i].size,a[i].type,&a[i].charge1,&a[i].weight1,a[i].brank1,&a[i].number1);
}
FILE *q2;
q2=fopen("新建2.txt","r+");
if(q2==NULL)
{
q2=fopen("新建2.txt","w+");
}
rewind(q2);
fscanf(q2,"%d",&l);
for(i=0;i<l;i++)
{
fscanf(q2,"%s %d %d %s %d ",b[i].guige,&b[i].weight2,&b[i].charge2,b[i].brank2,&b[i].number2);
}
FILE *q3;
q3=fopen("新建3.txt","r+");
if(q3==NULL)
{
q3=fopen("新建3.txt","w+");
}
rewind(q3);
fscanf(q3,"%d",&m);
for(i=0;i<m;i++)
{
fscanf(q3,"%d %s %s %s %s %d %d %d ",&c[i].size,c[i].type,c[i].brank1,c[i].guige,c[i].brank2,&c[i].weight3,&c[i].charge3,&c[i].number3);
}
while(1)
{
cout<<"1.入库"<<endl;
cout<<"2.显示"<<endl;
cout<<"3.查找"<<endl;
cout<<"4.保存"<<endl;
cout<<"5.出库"<<endl;
cout<<"6.结束该程序"<<endl;
cout<<"请选择: ";
int x;
cin>>x;
if(x==1) //输入
{
while(1)
{
int n;
cout<<"1.请输入TV的信息"<<endl;
cout<<"2.请输入DVD的信息"<<endl;
cout<<"3.请输入DVDTV的信息"<<endl;
cout<<"4.跳出输入循环"<<endl;
cout<<"请选择: ";
cin>>n;
if(n==1)
{
char b;
cout<<"请输入电视机的信息:"<<endl;
for(i=k;i<10;i++)
{
k++;
cout<<"尺寸"<<endl;
cin>>a[i].size;
cout<<"类型"<<endl;
cin>>a[i].type;
cout<<"售价"<<endl;
cin>>a[i].charge1;
cout<<"重量"<<endl;
cin>>a[i].weight1;
cout<<"品牌"<<endl;
cin>>a[i].brank1;
cout<<"入库编号"<<endl;
cin>>a[i].number1;
cout<<"是否继续输入(y/n): ";
cin>>b;
if(b!='y'&&b!='Y')
break;
}
}
else if(n==2)
{
char h;
cout<<"请输入DVD的信息:"<<endl;
for(i=l;i<10;i++)
{
l++;
cout<<"规格"<<endl;
cin>>b[i].guige;
cout<<"重量"<<endl;
cin>>b[i].weight2;
cout<<"售价"<<endl;
cin>>b[i].charge2;
cout<<"品牌"<<endl;
cin>>b[i].brank2;
cout<<"入库编号"<<endl;
cin>>b[i].number2;
cout<<"是否继续输入(y/n):";
cin>>h;
if(h!='y'&&h!='Y')
break;
}
}
else if(n==3)
{
char s;
cout<<"请输入DVD的信息:"<<endl;
for(i=m;i<10;i++)
{
m++;
cout<<"尺寸"<<endl;
cin>>c[i].size;
cout<<"类型"<<endl;
cin>>c[i].type;
cout<<"电视机品牌"<<endl;
cin>>c[i].brank1;
cout<<"规格"<<endl;
cin>>c[i].guige;
cout<<"DVD品牌"<<endl;
cin>>c[i].brank2;
cout<<"重量"<<endl;
cin>>c[i].weight3;
cout<<"售价"<<endl;
cin>>c[i].charge3;
cout<<"入库编号"<<endl;
cin>>c[i].number3;
cout<<"是否继续输入(y/n):";
cin>>s;
if(s!='y'&&s!='Y')
break;
}
}
else if (n==4)
break;
else
cout<<"n输入出错"<<endl;
}
}
else if(x==2) //显示
{
int f;
cout<<"1.显示电视的信息"<<endl;
cout<<"2.显示DVD的信息"<<endl;
cout<<"3.显示DVDTV的信息"<<endl;
cout<<"请选择: ";
cin>>f;
if(f==1)
{
cout<<"k="<<k<<endl;
for(i=0;i<k;i++)
{
cout<<" television:"<<i+1<<endl;
a[i].show();
}
}
else if(f==2)
{
cout<<"l="<<l<<endl;
for(i=0;i<l;i++)
{
cout<<" DVD: "<<i+1<<endl;
b[i].show();
}
}
else if(f==3)
{
cout<<"m="<<m<<endl;
for(i=0;i<m;i++)
{
cout<<" DVDTV "<<i+1<<endl;
c[i].show();
}
}
else
cout<<"f输入有错"<<endl;
}
else if(x==3) //查找
{
int o;
cout<<"1.按入库编号查找"<<endl;
cout<<"2.按货物的品牌查找"<<endl;
cout<<"请选择:";
cin>>o;
if(o==1)
{
int j;
int p=1;
cout<<"请输入要查找货物的入库编号: ";
cin>>j;
for(i=0;i<k;i++)
{
if(j==a[i].number1)
{
cout<<"该库存货物为电视机"<<endl;
a[i].show();
}
else
p=0;
}
for(i=0;i<l;i++)
{
if (j==b[i].number2)
{
cout<<"该库存货物为DVD"<<endl;
b[i].show();
}
else
p=0;
}
for(i=0;i<m;i++)
{
if (j==c[i].number3)
{
cout<<"该库存货物为DVDTV"<<endl;
c[i].show();
}
else
p=0;
}
if (p==0)
cout<<"没有该号货物或输入有误"<<endl;
}
else if(o==2)
{
char j[10];
int g=1;
cout<<"请输入要查找货物的品牌: ";
cin>>j;
for(i=0;i<k;i++)
{
if(strcmp(j,a[i].brank1)==0)
{
cout<<"该库存货物为电视机"<<endl;
a[i].show();
}
else
g=0;
}
for(i=0;i<l;i++)
{
if (strcmp(j,b[i].brank2)==0)
{
cout<<"该库存货物为DVD"<<endl;
b[i].show();
}
else
g=0;
}
for(i=0;i<m;i++)
{
if (strcmp(j,c[i].brank1)==0)
{
cout<<"该库存货物为DVDTV"<<endl;
c[i].show();
}
else
g=0;
}
if (g==0)
cout<<endl;
cout<<"没有该品牌的货物后输入有误"<<endl;
}
else
cout<<"o的输入有错"<<endl;
}
else if (x==4) //保存
{
cout<<"1.保存电视机的相关内容"<<endl;
cout<<"2.保存DVD的相关内容"<<endl;
cout<<"3.保存DVDTV的相关内容"<<endl;
cout<<"请选择: ";
int z;
cin>>z;
if(z==1)
{
rewind(q1);
fprintf(q1,"%d\n",k);
for(i=0;i<k;i++)
fprintf(q1,"%d %s %d %d %s %d ",a[i].size,a[i].type,a[i].charge1,a[i].weight1,a[i].brank1,a[i].number1);
fclose(q1);
cout<<endl;
cout<<"television的相关内容保存成功!"<<endl;
}
else if(z==2)
{
rewind(q2);
fprintf(q2,"%d\n",l);
for(i=0;i<l;i++)
fprintf(q2,"%s %d %d %s %d ",b[i].guige,b[i].weight2,b[i].charge2,b[i].brank2,b[i].number2);
fclose(q2);
cout<<endl;
cout<<"DVD的相关内容保存成功!"<<endl;
}
else if(z==3)
{
rewind(q3);
fprintf(q3,"%d\n",m);
for(i=0;i<m;i++)
fprintf(q3,"%d %s %s %s %s %d %d %d ",c[i].size,c[i].type,c[i].brank1,c[i].guige,c[i].brank2,c[i].weight3,c[i].charge3,c[i].number3);
fclose(q3);
cout<<endl;
cout<<"DVDTV的相关内容保存成功!"<<endl;
}
cout<<endl;
}
else if (x==5) // 删除出库
{
int s;
int t=1;
cout<<"请输入要出库货物的入库编号: ";
cin>>s;
for(i=0;i<k;i++)
{
if(s==a[i].number1)
{
cout<<"该出库的货物为电视机且为以下性质"<<endl;
a[i].show();
cout<<endl;
cout<<"确定是该货物?(y或n) ";
int r;
r=i;
char v;
cin>>v;
if(v=='y')
{
for(i=r;i<k-1;i++)
{
strcpy(a[i].type,a[i+1].type);
strcpy(a[i].brank1,a[i+1].brank1);
a[i].size=a[i+1].size;
a[i].charge1=a[i+1].charge1;
a[i].weight1=a[i+1].weight1;
a[i].number1=a[i+1].number1;
}
k--;
cout<<endl;
cout<<"已出库"<<endl;
cout<<endl;
rewind(q1);
fprintf(q1,"%d\n",k);
for(i=0;i<k-1;i++)
fprintf(q1,"%d %s %d %d %s %d",a[i].size,a[i].type,a[i].charge1,a[i].weight1,a[i].brank1,a[i].number1);
fclose(q1);
cout<<"电视库存已调整"<<endl;
cout<<endl;
}
}
else
t=0;
}
for(i=0;i<l;i++)
{
if(s==b[i].number2)
{
cout<<"该库存货物为电视机"<<endl;
b[i].show();
cout<<endl;
cout<<"确定是该货物? ";
int e;
e=i;
char v;
cin>>v;
if(v=='y')
{
for(i=e;i<l-1;i++)
{
strcpy(b[i].guige,b[i+1].guige);
strcpy(b[i].brank2,b[i+1].brank2);
b[i].charge2=b[i+1].charge2;
b[i].weight2=b[i+1].weight2;
b[i].number2=b[i+1].number2;
}
l--;
cout<<endl;
cout<<"已出库"<<endl;
cout<<endl;
rewind(q2);
fprintf(q2,"%d\n",l);
for(i=0;i<l-1;i++)
fprintf(q2,"%s %d %d %s %d",b[i].guige,b[i].weight2,b[i].charge2,b[i].brank2,b[i].number2);
fclose(q2);
cout<<endl;
cout<<"DVD库存已调整"<<endl;
}
}
else
t=0;
}
for(i=0;i<m;i++)
{
if(s==c[i].number3)
{
cout<<"该库存货物为电视机"<<endl;
c[i].show();
cout<<endl;
cout<<"确定是该货物? ";
int u;
u=i;
char v;
cin>>v;
if(v=='y')
{
for(i=u;i<m-1;i++)
{
strcpy(c[i].type,c[i+1].type);
strcpy(c[i].brank1,c[i+1].brank1);
strcpy(c[i].brank2,c[i+1].brank2);
strcpy(c[i].guige,c[i+1].guige);
c[i].size=c[i+1].size;
c[i].charge3=c[i+1].charge3;
c[i].weight3=c[i+1].weight3;
c[i].number3=c[i+1].number3;
}
m--;
cout<<endl;
cout<<"已出库"<<endl;
cout<<endl;
rewind(q3);
fprintf(q3,"%d\n",m);
for(i=0;i<m-1;i++)
fprintf(q3,"%d %s %s %s %s %d %d %d",c[i].size,c[i].type,c[i].brank1,c[i].guige,c[i].brank2,c[i].weight3,c[i].charge3,c[i].number3);
fclose(q3);
cout<<endl;
cout<<"DVDTV库存已调整"<<endl;
}
}
else
t=0;
}
if(t==0)
cout<<"库存中没有该所输入入库编号的货物"<<endl;
}
else if(x==6) //退出
{
cout<<"该程序结束"<<endl;
break;
}
else
cout<<"x输入有错"<<endl;
}
system("PAUSE");
return 0;
}
展开阅读全文