《公司库存管理系统.docx》由会员分享,可在线阅读,更多相关《公司库存管理系统.docx(22页珍藏版)》请在课桌文档上搜索。
1、目录1.系统需求分析32.总体设计43.详细设计44.系统调试65.结果分析66.总结10附录111附录2121.系统需求分析(给出你所设计题目拟满足的用户需求,给出系统设计目标,系统拟实现的功能。) 本产品主要针对TV、DVD以及带DVD的TV(下面简称DVDTV)生产或销售部门的库存进行简单的管理。 它能够对该部门的所有库存的产品按照品名进行显示、查找、入库和出库、保存。2.总体设计(包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。)从系统的需求中我们可以看到:该系统要对产品进行显示、查找、入库、出库和保存功能。这就意味着这个系统需要一个show函数(通过cout将数据显示在屏
2、幕上)来实现显示功能,而其他各个功能需要不同的模块来实现,也就意味着这个系统需要五个不同的功能模块。系统功能模块图: 图2.1 系统功能模块3.详细设计(类层次图;各功能模块实现等) 类层次图: 派生 派生 图3.1 类层次关系各功能模块的实现:显示功能是同过各类自带有的show函数形如“cout”功能依次将产品的各项数据输入计算机。出库是一个删除功能,由于水平有限,我采用的是通过用后一个覆盖前一个数据的方法,并将计数减一,使之能够在功能上达到删除。保存是建一个文件,把入库时输入的数据保存在一个文件内,是系统再次打开时数据不用重新输入。4.系统调试(调试出现的主要问题,编译语法错误及修改,重点
3、是运行逻辑问题修改和调整)由于本次设计用到了类,而类中有受保护的对像和私有对象,他们都不可以在类外使用。于是使得下边一些数据不能用。最后我只能将数据全改成公有数据。5.结果分析(总结自己独到的设计特点和不足之处。)先来看一下程序的运行截图:图5.1 输入图5.2 显示图5.3 查找 图5.4 保存界面图5.5 保存效果如上的一系列截图可以看出这个系统的特色是能够很好的把系统的需求完美的表现出来。而不足之处如详细设计所说的那样只是通过用后一个覆盖前一个的方法,它只能在屏幕上体现,而不能在文件中表现出来。如下图: 图5.6 删除前的文件 图5.7 删除界面 图5.8 删除后的文件(红圈内的变化)6
4、.总结在做c+ 的设计前,我以为不会难做,就像去年做c语言一样,做完设计,然后两下子就将设计报告做完.直到答辩完设计时,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅. 在做设计前,一定要将课本上的知识吃透,因为这是做设计的基础,否则,在老师讲解时就会听不懂,这将使你在做设计时的难度加大,浪费做设计的宝贵时间.在做设计时才去摸索,这将使你极大地浪费时间,使你事倍功半.做设计时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,设计后,还要复习,思考,这样,你的印象 才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这样你就答辩通不过。老师在答辩过程中还会根据自己的亲
5、身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在以后工作中的应用是那么的广泛. 通过这次c+的设计,使我学到了不少实用c+的知识,更重要的是,做设计的过程,思考问题的方法,这与做其他的设计是通用的,真正使我们受益匪浅.附录1计算机科学与技术系课程设计评分表课程名称: 面向对象程序设计 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: 附录2源码#includeusing namespace std;class televisionpublic:int size;char typ
6、e10;int charge1;int weight1;char brank110;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 coutTV尺寸:sizeendl; coutTV类型:typeendl;cout售价:charge1endl;cout重量:weight1endl;coutTV品牌:
7、brank1endl;cout入库编号:number1endl;class DVDpublic: char guige10; int weight2; int charge2;char brank210;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 coutDVD规格:guigeendl;cout重量:weight2endl;cout售价
8、:charge2endl;coutDVD品牌:brank2endl;cout入库编号:number2endl;class DVDTV:public television,public DVDpublic: 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);strc
9、py(guige,g); strcpy(brank2,b2); void show() const cout尺寸:sizeendl; cout类型:typeendl;coutTV品牌:brank1endl; cout规格:guigeendl; coutDVD品牌:brank2endl; cout重量:weight3endl; cout售价:charge3endl; cout入库编号:number3endl; ;int main () static int k=0; static int l=0; static int m=0; int i;class television a10;class
10、DVD b10;class DVDTV c10;FILE *q1; q1=fopen(新建1.txt,r+); if(q1=NULL) q1=fopen(新建1.txt,w+); rewind(q1); fscanf(q1,%d,&k);for(i=0;ik;i+)fscanf(q1,%d %s %d %d %s %d ,&ai.size,ai.type,&ai.charge1,&ai.weight1,ai.brank1,&ai.number1); FILE *q2; q2=fopen(新建2.txt,r+); if(q2=NULL) q2=fopen(新建2.txt,w+); rewind(
11、q2); fscanf(q2,%d,&l);for(i=0;il;i+)fscanf(q2,%s %d %d %s %d ,bi.guige,&bi.weight2,&bi.charge2,bi.brank2,&bi.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;im;i+) fscanf(q3,%d %s %s %s %s %d %d %d ,&ci.size,ci.type,ci.brank1,ci.guige,c
12、i.brank2,&ci.weight3,&ci.charge3,&ci.number3);while(1) cout1.入库endl;cout2.显示endl; cout3.查找endl;cout4.保存endl; cout5.出库endl;cout6.结束该程序endl;coutx;if(x=1) /输入 while(1)int n; cout1.请输入TV的信息endl; cout2.请输入DVD的信息endl; cout3.请输入DVDTV的信息endl;cout4.跳出输入循环endl;coutn; if(n=1) char b; cout请输入电视机的信息:endl; for(i=
13、k;i10;i+) k+; cout尺寸ai.size; cout类型ai.type; cout售价ai.charge1; cout重量ai.weight1; cout品牌ai.brank1; cout入库编号ai.number1; coutb; if(b!=y&b!=Y) break; else if(n=2) char h; cout请输入DVD的信息:endl; for(i=l;i10;i+) l+; cout规格bi.guige; cout重量bi.weight2; cout售价bi.charge2; cout品牌bi.brank2; cout入库编号bi.number2; couth
14、; if(h!=y&h!=Y) break; else if(n=3) char s; cout请输入DVD的信息:endl; for(i=m;i10;i+) m+; cout尺寸ci.size; cout类型ci.type; cout电视机品牌ci.brank1; cout规格ci.guige; coutDVD品牌ci.brank2; cout重量ci.weight3; cout售价ci.charge3; cout入库编号ci.number3; couts; if(s!=y&s!=Y) break; else if (n=4) break;else coutn输入出错endl;else if
15、(x=2) /显示 int f; cout1.显示电视的信息endl; cout2.显示DVD的信息endl; cout3.显示DVDTV的信息endl;coutf; if(f=1) coutk=kendl; for(i=0;ik;i+) cout television:i+1endl; ai.show(); else if(f=2) coutl=lendl; for(i=0;il;i+) cout DVD: i+1endl; bi.show(); else if(f=3) coutm=mendl; for(i=0;im;i+) cout DVDTV i+1endl; ci.show(); e
16、lse coutf输入有错endl;else if(x=3) /查找 int o;cout1.按入库编号查找endl;cout2.按货物的品牌查找endl;couto;if(o=1) int j; int p=1; coutj; for(i=0;ik;i+) if(j=ai.number1) cout该库存货物为电视机endl; ai.show(); elsep=0; for(i=0;il;i+) if (j=bi.number2) cout该库存货物为DVDendl; bi.show(); elsep=0; for(i=0;im;i+) if (j=ci.number3) cout该库存货物
17、为DVDTVendl; ci.show(); else p=0; if (p=0) cout没有该号货物或输入有误endl;else if(o=2) char j10; int g=1; coutj; for(i=0;ik;i+) if(strcmp(j,ai.brank1)=0) cout该库存货物为电视机endl; ai.show(); elseg=0; for(i=0;il;i+) if (strcmp(j,bi.brank2)=0) cout该库存货物为DVDendl; bi.show(); elseg=0; for(i=0;im;i+) if (strcmp(j,ci.brank1)
18、=0) cout该库存货物为DVDTVendl; ci.show(); else g=0; if (g=0) coutendl; cout没有该品牌的货物后输入有误endl; else couto的输入有错endl;else if (x=4) /保存 cout1.保存电视机的相关内容endl; cout2.保存DVD的相关内容endl; cout3.保存DVDTV的相关内容endl; coutz; if(z=1) rewind(q1);fprintf(q1,%dn,k); for(i=0;ik;i+) fprintf(q1,%d %s %d %d %s %d ,ai.size,ai.type,
19、ai.charge1,ai.weight1,ai.brank1,ai.number1); fclose(q1); coutendl; couttelevision的相关内容保存成功!endl; else if(z=2) rewind(q2); fprintf(q2,%dn,l); for(i=0;il;i+) fprintf(q2,%s %d %d %s %d ,bi.guige,bi.weight2,bi.charge2,bi.brank2,bi.number2); fclose(q2); coutendl; coutDVD的相关内容保存成功!endl; else if(z=3) rewin
20、d(q3); fprintf(q3,%dn,m); for(i=0;im;i+) fprintf(q3,%d %s %s %s %s %d %d %d ,ci.size,ci.type,ci.brank1,ci.guige,ci.brank2,ci.weight3,ci.charge3,ci.number3); fclose(q3); coutendl; coutDVDTV的相关内容保存成功!endl; coutendl; else if (x=5) / 删除出库 int s; int t=1; couts;for(i=0;ik;i+) if(s=ai.number1) cout该出库的货物为
21、电视机且为以下性质endl; ai.show(); coutendl; coutv; if(v=y) for(i=r;ik-1;i+) strcpy(ai.type,ai+1.type); strcpy(ai.brank1,ai+1.brank1); ai.size=ai+1.size; ai.charge1=ai+1.charge1; ai.weight1=ai+1.weight1; ai.number1=ai+1.number1; k-; coutendl; cout已出库endl; coutendl; rewind(q1); fprintf(q1,%dn,k); for(i=0;ik-1
22、;i+) fprintf(q1,%d %s %d %d %s %d,ai.size,ai.type,ai.charge1,ai.weight1,ai.brank1,ai.number1); fclose(q1); cout电视库存已调整endl; coutendl; else t=0; for(i=0;il;i+) if(s=bi.number2) cout该库存货物为电视机endl; bi.show(); coutendl; coutv; if(v=y) for(i=e;il-1;i+) strcpy(bi.guige,bi+1.guige); strcpy(bi.brank2,bi+1.b
23、rank2); bi.charge2=bi+1.charge2; bi.weight2=bi+1.weight2; bi.number2=bi+1.number2; l-;coutendl; cout已出库endl; coutendl; rewind(q2); fprintf(q2,%dn,l); for(i=0;il-1;i+) fprintf(q2,%s %d %d %s %d,bi.guige,bi.weight2,bi.charge2,bi.brank2,bi.number2); fclose(q2); coutendl; coutDVD库存已调整endl; else t=0; for
24、(i=0;im;i+) if(s=ci.number3) cout该库存货物为电视机endl; ci.show(); coutendl; coutv; if(v=y) for(i=u;im-1;i+) strcpy(ci.type,ci+1.type); strcpy(ci.brank1,ci+1.brank1); strcpy(ci.brank2,ci+1.brank2); strcpy(ci.guige,ci+1.guige); ci.size=ci+1.size; ci.charge3=ci+1.charge3; ci.weight3=ci+1.weight3; ci.number3=c
25、i+1.number3; m-;coutendl; cout已出库endl; coutendl; rewind(q3); fprintf(q3,%dn,m); for(i=0;im-1;i+) fprintf(q3,%d %s %s %s %s %d %d %d,ci.size,ci.type,ci.brank1,ci.guige,ci.brank2,ci.weight3,ci.charge3,ci.number3); fclose(q3); coutendl; coutDVDTV库存已调整endl; else t=0; if(t=0) cout库存中没有该所输入入库编号的货物endl; else if(x=6) /退出cout该程序结束endl;break;else coutx输入有错endl; system(PAUSE); return 0;