1、 课 程 设 计 报 告 课程名称 面向对象程序设计 课题名称 公司库存管理系统 专 业 班 级 学 号 姓 名 指导教师 年 月 日 湖南工程学院 课 程
2、设 计 任 务 书 课程名称 面向对象程序设计 课 题 公司库存管理系统 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 年 月 日 任务完成日期 年 月 日 目录 1.系统需求分析 3 2. 总体设计 4 3.详细设计 4 4. 系统调试 6 5. 结果分析
3、 6 6. 总结 10 附录1 11 附录2 12 1.系统需求分析 (给出你所设计题目拟满足的用户需求,给出系统设计目标,系统拟实现的功能。) 本产品主要针对TV、DVD以及带DVD的TV(下面简称DVDTV)生产或销售部门的库存进行简单的管理。 它能够对该部门的所有库存的产品按照品名进行显示、查找、入库和出库、保存。 2. 总体设计 (包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。) 从系统的需求中我们可以看到:该系统要对产品进行显示、查找、入库、出库和保存功能。这就意味着这个系统需要一个show
4、函数(通过cout将数据显示在屏幕上)来实现显示功能,而其他各个功能需要不同的模块来实现,也就意味着这个系统需要五个不同的功能模块。 系统功能模块图: 图2.1 系统功能模块 3.详细设计 (类层次图;各功能模块实现等) 类层次图: 派生 派生 图3.1 类层次关系 各功能模块的实现: 显示功能是同过各类自带有的show函数形如“cou
5、t<<””<<<
6、达到删除。 保存是建一个文件,把入库时输入的数据保存在一个文件内,是系统再次打开时数据不用重新输入。 4. 系统调试 (调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整) 由于本次设计用到了类,而类中有受保护的对像和私有对象,他们都不可以在类外使用。于是使得下边一些数据不能用。最后我只能将数据全改成公有数据。 5. 结果分析 (总结自己独到的设计特点和不足之处。) 先来看一下程序的运行截图: 图5.1 输入 图5.2 显示 图5.3 查找 图5.4 保存界面 图5.
7、5 保存效果 如上的一系列截图可以看出这个系统的特色是能够很好的把系统的需求完美的表现出来。 而不足之处如详细设计所说的那样只是通过用后一个覆盖前一个的方法,它只能在屏幕上体现,而不能在文件中表现出来。如下图: 图5.6 删除前的文件 图5.7 删除界面 图5.8 删除后的文件(红圈内的变化) 6. 总结 在做c++ 的设计前,我以为不会难做,就像去年做c语言一样,做完设计,然后两下子就将设计报告做完.直
8、到答辩完设计时,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅. 在做设计前,一定要将课本上的知识吃透,因为这是做设计的基础,否则,在老师讲解时就会听不懂,这将使你在做设计时的难度加大,浪费做设计的宝贵时间.在做设计时才去摸索,这将使你极大地浪费时间,使你事倍功半.做设计时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,设计后,还要复习,思考,这样,你的印象 才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这样你就答辩通不过。老师在答辩过程中还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在以后工作中的应用是那么的广
9、泛. 通过这次c++的设计,使我学到了不少实用c++的知识,更重要的是,做设计的过程,思考问题的方法,这与做其他的设计是通用的,真正使我们受益匪浅. 附录1 计算机科学与技术系课程设计评分表 课程名称: 面向对象程序设计 项 目 评 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩 教师签名:
10、
日 期:
附录2
源码
#include
11、t 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尺寸:"< 12、< 13、b2); }
void show() const
{
cout<<"DVD规格:"< 14、 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<<"尺寸:"< 15、"< 16、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 17、"%d",&k);
for(i=0;i 18、
}
rewind(q2);
fscanf(q2,"%d",&l);
for(i=0;i 19、
q3=fopen("新建3.txt","w+");
}
rewind(q3);
fscanf(q3,"%d",&m);
for(i=0;i 20、1.入库"< 21、
cout<<"3.请输入DVDTV的信息"< 22、out<<"类型"< 23、out<<"是否继续输入(y/n): ";
cin>>b;
if(b!='y'&&b!='Y')
break;
}
}
else if(n==2)
{
char h;
cout<<"请输入DVD的信息:"< 24、 cout<<"重量"< 25、'Y')
break;
}
}
else if(n==3)
{
char s;
cout<<"请输入DVD的信息:"< 26、
cin>>c[i].brank1;
cout<<"规格"< 27、 cout<<"是否继续输入(y/n):";
cin>>s;
if(s!='y'&&s!='Y')
break;
}
}
else if (n==4)
break;
else
cout<<"n输入出错"< 28、l;
cout<<"3.显示DVDTV的信息"< 29、
cout<<" DVD: "< 30、
int o;
cout<<"1.按入库编号查找"< 31、
p=0;
}
for(i=0;i 32、 }
else
p=0;
}
if (p==0)
cout<<"没有该号货物或输入有误"< 33、 34、cout<<"该库存货物为DVDTV"< 35、endl;
cout<<"3.保存DVDTV的相关内容"< 36、
fclose(q1);
cout< 37、brank2,b[i].number2);
fclose(q2);
cout< 38、].type,c[i].brank1,c[i].guige,c[i].brank2,c[i].weight3,c[i].charge3,c[i].number3);
fclose(q3);
cout< 39、 for(i=0;i 40、)
{
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< 41、 cout<<"已出库"< 42、 fclose(q1);
cout<<"电视库存已调整"< 43、
cout<<"确定是该货物? ";
int e;
e=i;
char v;
cin>>v;
if(v=='y')
{
for(i=e;i 44、weight2=b[i+1].weight2;
b[i].number2=b[i+1].number2;
}
l--;
cout< 45、 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< 46、
{
if(s==c[i].number3)
{
cout<<"该库存货物为电视机"< 47、].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].number 48、3;
}
m--;
cout< 49、ige,c[i].brank2,c[i].weight3,c[i].charge3,c[i].number3);
fclose(q3);
cout<






