公司的库存管理系统_第1页
公司的库存管理系统_第2页
公司的库存管理系统_第3页
公司的库存管理系统_第4页
公司的库存管理系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、某公司的库存管理系统1 设计内容:对课程 算法与程序设计 中的相关内容进行综合设计或应用 (具体课题题 目见后面的供选题目) 。一)、课程设计题目: 某公司的库存管理系统二)、目的与要求:1、目的:(1)要求学生达到熟练掌握 C+语言的基本知识和技能;( 2)基本掌握面向对象程序设计的基本思路和方法;( 3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求:(1 )要求利用面向对象的方法以及 C+的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象

2、的一种机制。3、创新要求: 基本要求达到后, 可进行创新设计, 如根据查找结果进行修改的功能。4、写出设计说明书(三)、设计方法和基本原理:1 、问题描述(功能要求) :某公司现有以下设备:普通电视机、 DVD带DVD的电视机,带 DVD的电视机的 售价为普通电视机和 DVD单价之和的80%要求对所有的库存设备都能按照品名进 行显示、查找、增加和删除、保存的功能。2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤:( 1)分析系统中的各个实体之间的关系及其属性和行为;( 2)根据问题描述,设计系统的类层次;( 3)完成类层次中各个类的描述(包括属性和方法) ;( 4)完成类中各

3、个成员函数的定义;( 5)完成系统的应用模块;( 6)功能调试;( 7)完成系统总结报告以及系统使用说明书。2设计要求:课程设计报告正文内容(包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包 括类成员列表) ,调试过程,关键程序代码,总结,参考书目等)一)需求分析系统设计目的与意义;系统功能需求(系统流程图) ;输入输出的要求; 二)总体设计系统功能分析;系统功能模块划分与设计(系统功能模块图) 。三)详细设计数据库需求分析;数据库概念结构设计(ER 图);数据库逻辑结构设计;类层次图。四)界面设计与各功能模块实现五)系统调试调试问题出现的主要问题: 编译语法错误及修改,

4、 重点是运行逻辑问题修改和调整。六)使用说明及编程体会说明如何使用你编写的程序,详细列出每一步的操作步骤。七)关键源程序(带注释)目录一、系统设计分析 6二、程序设计明 61. 四个类完成实体类的定义 82. 公司库存管理系统中各模块功能的实现 83. 添加物品信息模块 94. 显示物品信息模块 105. 查找物品信息模块 106. 删除物品信息模块 117. 保存物品信息模块 12三、系统调试 12四、总结 12五、附件 12、系统设计分析公司库存管理系统程序中,系统要求我们设计四个类:由家电类派生出来的普通电视机类和DVD类;再由普通电视机类和 DVD类共同派生出来的带 DVD的普通电视机

5、类。在这个 系统中我们需要实现六个功能: 1、显示物品功能; 2、添加物品功能; 3、查找物品功能; 4、 删除物品功能; 5、保存物品功能。公司库存管理系统主要是为了让用户根据自己的需要自己想输入的一些物品,然后将 其保存, 当用户想查看所有物品时可以查看, 想添加物品时可以添加自己想添加的相关物品 信息,当用户想删除自己认为应当删除的物品时, 用户可以根据自己的需要输入用户想删除 的物品名称, 然后将物品的相关信息删除; 当用户想查找某一物品时, 用户可以输入这一物 品的名称然后查看这一物品的所有信息。在这个系统中,用户可以根据系统的提示分别执行用户自己想实现的功能,比如:在 添加物品信息

6、功能中, 用户可以输入自己想输入的物品信息; 在显示物品功能中用户可以查 看用户所保存的所有物品信息; 在查找物品功能中用户可以根据自己的需要输入自己想查找 的物品名称, 然后查找用户想查找的物品的所有相关信息; 在删除物品功能中用户可以根据 自己的需要输入自己想删除的物品名称, 然后进行删除; 在物品保存功能中, 当用户需要实 现物品的保存时,系统会自动打开文件然后将用户输入的数据保存在用户给定的文件中。 二、程序设计说明在公司库存管理系统中, 物品信息主要为:物品名称,物品生产日期, 物品的单价和 数量。公司库存管理系统中系统需要我们实现六个功能:2 、添加物品功能; 3、显示物品功能;

7、4、查找物品功能; 5、删除物品功能; 6、保存物品功能。在物品添加功能中用户可以根据自己的需要输入自己想输入的物品信息(名称、生产 日期、数量) ,然后将其保存。程序开始时,系统会提示用户先进行哪个功能,然后用户可 根据需要输入相关型号的物品信息, 输入完之后会再次提示用户是否继续输入, 然后再根据 提示进行相关操作。一般情况下,我们先进行添加物品这一功能中,当用户选择此功能时系统会将录入这 些信息并保存,以便下次查找。在显示物品功能中,用户可以根据系统的提示输入想查找的相关物品的信息,之后系 统便会弹出物品信息。在删除物品功能中, 用户根据系统的提示输入自己想删除的物品名称, 然后将其删除

8、。在查找物品功能中,用户根据系统提示输入自己想查找的相关物品名称,然后在库存中的相关物品中查找,如果有此物品则会显示此物品的所有信息,如果没有则会显示无此物品信息。在保存物品功能中,当用户选择此功能时,系统会将用户需要的所有物品保存。详情:1. 四个类完成实体类的定义Wiring 类数据成员:物品名称,年月日物品数量成员函数:设置价格函数class wiri ngpublic:char n ame10;物品名称int year,m on th,day;出厂日期int number;/ 物品数量TV类DVD类TV_DVD类class TV:virtualclass DVD:virtualclas

9、s TV_DVD:publicpublic wiri ngpublic wiringTV,public DVDpublic:public:public:TV() DVD() TV_DVD() voidset1(charvoid set2(char *n ,i ntvoid set3(char *n ,i nt y,i nt m,i nt*n,int y,int m,inty,i nt m,i nt d,i nt nn)d,i nt nn)d,i nt nn)strcpy( name, n);strcpy( name, n);strcpy( name, n);year=y;year=y;year

10、=y;mon th=m;mon th=m;mon th=m;day=d;day=d;day=d;nu mber =nn;nu mber =nn;nu mber =nn;void pay()void pay()voidpay()price2=2000;/DVDprice=(2000+3000)*80/100;price 1=3000;/售价带DVD的普通电视机售价普通电视机售价float price1;float price2;float price;2. 公司库存管理系统中各功能模块的实现:1、添加物品信息菜2、显示物品信息3、删除物品信息3、查找物品信息单5、保存物品信息6、保存物品信息工

11、*普»1|! * 土 *初兰 ' 气、 乂自心息自3自心自心廿B蔭口 *月)&日曲品品品品品岀 =物物物物物退 站示找畧 -添显杳一删保>>>>>>1 2 3 4 5 & c c c c c C睛输心或2:或古或试5或&进行你所要执行地下一歩动作:3、添加物品信息模块1、物品名称2、生产日期3、产品数量添加普通电视机的相关信息添加DVD的相关信息添加带DVD的普通电视机的相关信息添 加 物 品 信晴输入1或2長2或4或乐翦进行喘所要执行地下一曲动作:请输入数字慄富加对应的物品信息"普通电视机2 DUD 带D

12、UD的普通电视机卄1 请输入賁通电视机的相关信息!物品名#:qq 物品岀厂日期;翻丄丄L物品数量:丄腼冃关信息吗是空-否W解瞪卖添加普逋电视利的相关信息-是2-否、:2 悒徘加耳他物品的粘介心一心亠口悄悚存尔所输入得数拒吗?"匙2-否物品倍良己储徉辛腰犍1返回茱单匚4、显示物品信息模块:在输入完第一次的添加产品后显示产品时,即显示出产品信息。请输人i或2或3或4或5或6进行你所要执行地下一歩动作:文件中品信息0 H- 址期0 0 <1日 3 1 称厂酋里 乞出单数 的喲的的 - Irnf. J4J4J4J4M 电电电电 通4通通 曰工艮艮曰2011/10/15、查找物品信息:查

13、找物品信息查找类型查找名称返回后根据菜单选择 3,即查找物品信息。依照提示输入所查找的类型和名称,则弹出 所需物品信息。晴输入询2或诬4或5或丘进行保所要机行地下一歩动作匸 晴输入你炬查找的物品类型!-#电视机2-DJD 3-DJD的昔通电视机沙1晴输入你要査找的普通电视机名秫fta匡 _庄 0 tai tali TIA41 nA 童Ean!fl a期 5日 柝厂卑 名出单数L.-丄*ii i rll - u ”1 - J- - y可巧可 屯电电电091«请轲/攻字屜遍回菜单或数二绥腿出程序二.6删除物品信息:删除物品物品名称彳删除物品信息根据菜单选择4,即删除物品信息。依照提示输入

14、要删除的类型和名称。it稱入1或2或m或4或£或氐进行你所更执冇地下一曲动作:猜希入你要删除的物品信息“-普通电视机2-DVD A带DUD的普通电视机汽 韩1入你的普通电视机名称辺口想"巢存廁煤启欝信息吗?a-是2-否複他1返向菜单,戈退出程序:7、最后根据提示将保存物品信息二、系统调试在调试程序中,出现很多问题,比如有的字符未定义,少花括号,分号,等等一些细 节问题。后来一个一个慢慢改,感觉很是麻烦。还有显示有一个函数非法定义,后来经过 同学帮忙才知道原来是花括号缺少的问题。在调试中,我在添加物品信息中,当我输入完一类物品信息后,想输入另一物品信息时,无法继续输入,总是输

15、入同一物品信息,后来当我在循环中想退出for语句循环时,在需要退出时加一个 break语句就可以退出当前循环进行其他步骤。在调试中,我深刻体会到循环语句的重要性,一个不留神就会把数据弄错, 同时也尝到用while语句的妙用,感觉比dowhile语句好用多了,所以在程序 中就多次用到了 while语句,用dowhile语句的话,程序就要先执行一次,在 判断那个语句是否正确,如果正确就会继续执行该程序段, 否则就会退出程序。而用 while 语句的话则是先判断那个语句是否正确,如果正确就会执行该程序 段,否则不执行。四、总结 程序设计是一个很复杂的问题,有的时候自己感觉没有出现任何错误,但是一运行

16、, 错误一大堆。 小问题也随处可见。 所以感觉编程这份工作的确是需要付出很大的努力, 要游 刃有余的使用每个函数, 而不用老是翻书查看,像我在建立类,需要创建派生类时,还需要 翻书查看具体内容,这是对书本知识不熟练的表现。在完善程序时,感觉添加物品信息时类型太少了,只要输入物品类型、名称、生产 日期和产品数目。本来还打算多加几个,但又觉得太麻烦,所以就放弃了。做完这次课程设计,深深的感到自己还有很大不足之处。所以下定决心这个寒假回 家好好补补课。附件:#include<iostream>#include<fstream> #include<cstring>#

17、include<windows.h>using namespace std;class wiringpublic:char name10;/ 物品名称int year,month,day;/出厂日期int number;/ 物品数量wiring() / 构造函数wiring() / 析构函数virtual void pay() / 设置价格函数;class TV:virtual public wiringpublic:TV() void set1(char *n,int y,int m,int d,int nn)strcpy(name,n);year=y;month=m;day=d

18、;number=nn;void pay() price1=3000; /普通电视机售价float price1;class DVD:virtual public wiringpublic:DVD() void set2(char *n,int y,int m,int d,int nn) strcpy(name,n);year=y;month=m; day=d; number=nn; void pay() price2=2000;/DVD float price2;class TV_DVD:public TV,public DVD public: TV_DVD() void set3(char

19、*n,int y,int m,int d,int nn) strcpy(name,n); year=y; month=m; day=d; number=nn; void pay() price=(2000+3000)*80/100;/ float price;TV t120;DVD d120;TV_DVD td120; static int k(0),k1(0),k2(0); void main()/ 主函数 void caidan(); caidan(); void caidan() void addw();/ void shown();/ void selectw();/ void sea

20、rchw();/ void savew();/ int a1;添加物品信息显示物品信息删除物品信息查找物品信息保存物品信息售价带DVD的普通电视机售价system("color 0D"); cout<<"n" cout<<"tt*n"cout<<"t(1)*添加物品信息* n"cout<<"t(2)'k'k'k显示物品信息* n"cout<<"t(3)'k'k'k查找物品信息*

21、n"cout<<"t(4)'k'k'k删除物品信息* n"cout<<"t(5)'k'k'k保存物品信息* n"cout<<"t(6)'k'k'k退出* n"cout<<"tt*n"cout<<"n 请输入 1或 2或 3或 4 或 5或 6 进行你所要执行地下一步动作 :n" cin>>a1;请重新输入数字1或2while(a1!=1&

22、;&a1!=2&&a1!=3&&a1!=4&&a1!=5&&a1!=6) cout<<"n 或 3 或 4或 5 或 6:"cin>>a1; if(a1=1) addw(); if(a1=2) shown();if(a1=3) searchw();if(a1=4) selectw();if(a1=5) savew();if(a1=6) cout<<"n 退出程序 !n"void addw()/ 添加物品信息函数void caidan();/ 菜单函

23、数char a10;int m,n,h,n1,rr,i1,v,i=9,r1;cout<<"n 请输入数字键添加对应的物品信息 (1- 普通电视机 2-DVD 3- 带 DVD 的普通电视 机):"while(i!=0)cin>>i;if(i=1)cout<<"n 请输入普通电视机的相关信息 !n"for(v=k;v<20;v+)cout<<" 物品名称 :"cin>>a;cout<<"n 物品出厂日期 :"cin>>m>

24、>n>>h;cout<<"n 物品数量 :"cin>>n1;t1v.set1(a,m,n,h,n1);t1v.pay();k+;cout<<"n 想继续添加普通电视机的相关信息吗 ?(1- 是 2- 否 ):"cin>>i1;while(i1!=1&&i1!=2) cout<<"n 请重新输入数字 1或 2:"cin>>i1;if(i1=1) cout<<"n 请继续输入普通电视机的相关信息 !n"

25、else break;if(i=2)cout<<"n 请输入 DVD的相关信息!n"for(v=k1;v<20;v+)cout<<" 物品名称 :"cin>>a;cout<<"n 物品出厂日期 :"cin>>m>>n>>h;cout<<"n 物品数量 :"cin>>n1;d1v.set2(a,m,n,h,n1);d1v.pay();k1+;cout<<"n想继续添加 DVD的相关信

26、息吗?(1-是2-否):";cin>>i1;while(i1!=1&&i1!=2) cout<<"n 请重新输入数字 1 或 2:";cin>>i1;if(i仁=1) cout<<"n请继续输入DVD的相关信息!n"else break;if(i=3)cout<<"n请输入带DVD的普通电视机的相关信息!n"for(v=k2;v<20;v+)cout<<" 物品名称 :"cin>>a;cout<

27、<"n 物品出厂日期 :"cin>>m>>n>>h;cout<<"n 物品数量 :"cin>>n1;td1v.set3(a,m,n,h,n1);td1v.pay();k2+;cout<<"n想继续添加带 DVD的普通电视机的相关信息吗?(1-是2-否):"cin>>i1;while(i1!=1&&i1!=2) cout<<"n 请重新输入数字 1 或 2:"cin>>i1;if(i仁=1

28、) cout<<"n请继续输入带DVD的普通电视机的相关信息!n"if(i1=2) break;cout<<"n 想添加其他物品的相关信息吗 ?(1- 是 2- 否):"cin>>i1;while(i1!=1&&i1!=2) cout<<"n请重新输入数字 1 或 2:"cin>>i1;if(i1=1) cout<<"n请输入数字输入相对应的物品信息 (1- 普通电视机 2-DVD 3- 带DVD的普通电视机):"if(i1=2

29、) break;cout<<" 想保存你所输入得数据吗 ?(1- 是 2 否 ):"cin>>rr;while(rr!=1&&rr!=2) cout<<"n请重新输入数字 1 或 2:"cin>>rr;if(rr=1)ofstream ofile("wiring.txt",ios_base:out);for(v=0;v<k;v+)ofile<<"n 普 通 电 视 机 的 名 称 :"<<<<&

30、quot;n 普 通 电 视 机 的 出 厂 日期:"<<t1v.year<<"/"<<t1v.mo nth<<"/"<<t1v.day<<"n 普 通 电 视 机 的 单 价 :"<<t1v.price1<<"n 普 通 电 视 机 的 数量:"<<t1v .nu mber<<e ndl;for(v=0;v<k1;v+)ofile<<"nDVD的 名 称 :

31、"<<<<"nDVD的 出 厂 日期:"<<d1v.year<<"/"<<d1v.mo nth<<"/"<<d1v.day<<"nDVD的 单 价 :"<<d1v.price2<<"nDVD的 数量:"<<d1v .nu mber<<e ndl;for(v=0;v<k2;v+)ofile<<"n 带D

32、VD勺普通电视机的名称:"<<<<"n带DVD勺普通电视机的出厂日期 :"<<td1v.year<<"/"<<td1v.month<<"/"<<td1v.day<<"n带 DVD勺普通电视机的单价 :"<<td1v.price<<"n带 DVD勺普通电视机的数量 :"<<td1v.number<<endl;ofile.clos

33、e();cout<<"n 物品信息已储存 !"cout<<"n 按键 1 返回菜单 :"cin>>r1;while(r1!=1) cout<<"n请重新输入数字 1:"cin>>r1;if(r1=1) system("cls");caidan();if(r1=2) cout<<"n退出程序 !"if(rr=2)cout<<"n 按键 1 返回菜单 2 退出程序 :"cin>>r1;

34、while(r1!=1&&r1!=2) cout<<"n 请重新输入数字 1 或 2:"cin>>r1;if(r1=1) system("cls");caidan();if(r1=2) cout<<"n退出程序 !"void shown()/ 显示物品信息cout<<"n 从文件中读取物品信息 n"char ch;int nn;ifstream ofile("wiring.txt");while(ofile.get(ch)cout&

35、lt;<ch;ofile.close();cout<<" 请按键 1 返回菜单或按键 2 退出程序 :"cin>>nn;while(nn!=1&&nn!=2) cout<<" 请重新输入数字 1 或 2:"cin>>nn; if(nn=1) system("cls"); caidan();if(nn=2) cout<<" 退出程序 !n"void searchw()/ 查找物品信息void caidan();char namestr2

36、0;int rr;int i,j;cout<<"n请输入你想查找的物品类型(1-普通电视机2-DVD 3-带DVD的普通电视机):"cin>>rr;while(rr!=1&&rr!=2&&rr!=3) cout<<"n请重新输入数字 1 或 2 或 3:"cin>>rr;if(rr=1)cout<<"n 请输入你要查找的普通电视机名称 cin>>namestr;for(i=0;i<k;i+) if(strcmp(namestr,t1i.

37、name)=0)cout<<"n 普 通 电 视 机 的 名 称 :"<<<<"n 普 通 电 视 机 的 出 厂 日 期:"<<t1i.year<<"/"<<t1i.mo nth<<"/"<<t1i.day<<"n普通电视机 的单价 :"<<t1i.price1<<"n普通电视机的数量:"<<t1i. nu mber

38、<<e ndl;break;if(i=k) cout<<"n 对不起,没有你所要的普通电视机的相关信息 if(rr=2)cout<<"n请输入你要查找的DVD名称:"cin>>namestr;!n"for(i=0;i<k1;i+)if(strcmp(namestr,)=0) cout<<"nDVD 的 名 称:"<<<<"nDVD期:"<<d1i.year<<"

39、/"<<d1i.mo nth<<"/"<<d1i.day<<"nDVD的 单 价 :"<<d1i.price2<<"nDVD的数量:"<<d1i. number<<e ndl;break;if(i=k1) cout<<"n对不起,没有你所要的DVD的相关信息!n" if(rr=3)cout<<"n 请输入你要查找的带DVD的普通电视机的名称:" cin>>

40、namestr;for(i=0;i<k2;i+)if(strcmp(namestr,)=0)cout<<"n 带DVD的普通电视机的名称:"<<<<"n带DVD的普通电视机的出厂日期 :"<<td1i.year<<"/"<<td1i.month<<"/"<<td1i.day<<"n 带 DVD的普通电视机的单价 :"<<td1i.pri

41、ce<<"n带 DVD的普通电视机的数量 :"<<td1i.number<<endl;break;if(i=k2) cout<<"n对不起,没有你所要的带DVD的普通电视机的相关信息!n"cout<<"n 请输入数字键 1 返回菜单或数字键 2 退出程序 :"cin>>j;while(j!=1&&j!=2)cout<<"n 请重新输入数字 1 或 2:"cin>>j;if(j=1) system(&quo

42、t;cls");caidan();if(j=2) cout<<"n 退出程序 !"void selectw()/ 删除物品信息void caidan();char namestr20;int rr,i,r1,i1(-1),i2(-1),i3(-1);cout<<"n请输入你要删除的物品信息(1-普通电视机2-DVD 3-带DVD的普通电视机):"cin>>rr;while(rr!=1&&rr!=2&&rr!=3) cout<<"n请重新输入数字 1 或 2

43、或 3:"cin>>rr; if(rr=1) cout<<"n 请输入你想删除的普通电视机名称 :"cin>>namestr;for(i=0;i<k;i+) if(strcmp(namestr,)=0) i1=i;if(rr=2)cout<<"n请输入你想删除的DVD名称:";cin>>namestr;for(i=0;i<k1;i+) if(strcmp(namestr,)=0) i2=i; if(rr=3)cout<<"

44、;n请输入你想删除的带DVD的普通电视机的名称:";cin>>namestr;for(i=0;i<k2;i+) if(strcmp(namestr,)=0) i3=i;cout<<" 想保存删除后的信息吗 ?(1- 是 2- 否):";cin>>r1;while(r1!=1&&r1!=2) cout<<" 请重新输入数字 1 或 2:";cin>>r1;if(r1=1)ofstream ofile("wiring.txt",i

45、os_base:out);for(i=0;i<k;i+)if(i=i1) continue;elseofile<<"n 普 通 电 视 机 的 名 称 :"<<<<"n 普 通 电 视 机 的 出 厂 日期:"<<t1i.year<<"/"<<t1i.mo nth<<"/"<<t1i.day<<"n 普通电视机 的单价:"<<t1i.price1<&

46、lt;"n普通电视机的数量:"<<t1i. number<<e ndl;for(i=0;i<k1;i+)if(i=i2) continue;elseofile<<"nDVD的 名 称 :"<<<<"nDVD的 出 厂 日期:"<<d1i.year<<"/"<<d1i.mo nth<<"/"<<d1i.day<<"nDVD的 单 价 :

47、"<<d1i.price2<<"nDVD的 数量:"<<d1i. nu mber<<e ndl;for(i=0;i<k2;i+)if(i=i3) continue;elseofile<<"n 带DVD勺普通电视机的名称:"<<<<"n带DVD勺普通电视机的出厂日期 :"<<td1i.year<<"/"<<td1i.month<<"/"<<td1i.day<<"n 带 DVD的普通电视机的单价 :"<<td1i.price<<"n带 DVD的普通电视机的数量 :"<<td1i.number<<endl; ofile.close();cout<<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论