2023年-C++实训报告之仓库管理以及实训题目指导.docx

上传人:太** 文档编号:95058564 上传时间:2023-08-14 格式:DOCX 页数:35 大小:85.09KB
返回 下载 相关 举报
2023年-C++实训报告之仓库管理以及实训题目指导.docx_第1页
第1页 / 共35页
2023年-C++实训报告之仓库管理以及实训题目指导.docx_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《2023年-C++实训报告之仓库管理以及实训题目指导.docx》由会员分享,可在线阅读,更多相关《2023年-C++实训报告之仓库管理以及实训题目指导.docx(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、昆明理工大学城市学院面向对象程序设计实训报告仓库商品检查登记管理系统专业:班级:姓名:学号:指导老师:2012年1月6日(三)面向对象基本概念与类实训基础实训1、读程序写结果;2、设计一个表示猫的类,包括猫的颜色、体重、年龄等数据,具有设置猫的颜色,修改和 显示猫的体重、年龄等操作。设猫类的类名为Cat,猫类Cat有3个数据成员,颜色用字符串color,可以存放3个汉字, 体重用实型数weight表示,年龄用整型数age表示,为了数据的安全性,Cat的3个数据成 员全部为私有的。对猫的属性数据的设置和修改,PutColor为设置和修改颜色,PutWeight 为设置和修改体重,PutAge为设

2、置和修改年龄,它们都设置为公有函数,还要有一个1个3 个参数的函数SetCato设计Display函数输出猫的信息。#include class Cat(private String colour;private int weight;private int age; int getWeight() return weight;int getAge() return age;void setClolur(String xClolour) colour=xCloour;void setWeight(int xWeight) weight=xWeight;void setAge(int xAge)

3、 age=xAge;)3、设计一个表示学习成绩的类,至少包括三门课程的成绩,可以设置、显示每门课程的成 绩,可以计算、显示平均成绩。class Grades private:int Math,English,Chinese;public:Grades() Math = English = Chinese = 0;Grades(int a,int b,int c)(Math = a;English = b;Chinese = c;int getM() return Math; int getE() return English;int GetC() return Chinese; void Se

4、tvalue(int a,int b,int c)Math = a;English = b;Chinese 二 c;void DisplayO;float Average()return (Math+English+Chinese)/3.0;)4、设计成绩类,成绩类的数据成员,应该包括学生的学号Number。和姓名Name9,假 设有3门课,分别为C+程序设计语言,用整型变量Cpp表示;计算机原理,用整型变量 Computer表示;数据库,用整型变量DataBase表示。平均成绩用实型变量Average表示。 为了 Grade类数据的安全性,数据成员全部为私有成员,对成绩类的属性数据用一些函数

5、进 行设置和修改,PutNo为设置和修改学号,PutName为设置和修改姓名,PutCpp为设置和修 改C+程序设计语言的成绩,PutCom为设置和修改计算机原理的成绩,PutData为设置和修 改数据库的成绩,还有一个同时设置所有5个参数的函数SetGrade,它们都设置为公有函数。 计算平均成绩的函数为Calc,设计函数Display输出成绩。有时可能要查看某个学生的成绩, 所以设计比较学号的函数为ComNo,设计比较姓名的函数为ComName, GetCpp为读取C+ 程序设计语言的成绩,GetCom为读取计算机原理的成绩,GetData为读取数据库的成绩, 设计读取平均成绩的函数为Ge

6、tAvgo计算平均成绩只是在类的内部实现,所以设计为私有 函数,其它都为公有函数。综合实训设计一个表示整型数据的集合类,可以对集合中的数据进行添加、删除,可以判断一个整数 是否在这个集合里,可以求出集合数据的多少,可以判断集合的空与满,空集合就是没有数 据元素,满集合就是数据元素已经占满给出的存储单元。两个集合可以做交运算,就是将两 个集合的公共数据组成一个新的集合。两个集合可以做并运算,就是将两个集合的所有数据 组成一个新的集合。要求如下:(1)分析集合类的数据属性要求;(2)分析集合类的操作属性要求;(3)编制集合类的接口定义;(4)实现集合类的属性函数。#include/form the

7、 data struct Data long num;Data *next;);/the set classclass Gatherpublic:Gather(int =5);Gather。;void form(int);void del();void setGather();void print();void add(int);Data *getptr() return ptr;Gather& operator=(Gather &);Gather& operator+(Gather &);Gather& operator*(Gather &); private:int LEN;Data *p

8、tr;);Gather inside;Gather:Gather(int a)form(a);void Gather:form(int a) (LEN=a;Data *p;for (int i=0;inext=new Data;p=p-next;)p-next=NULL;)/Gather: Gather() del(); void Gather:del()Data *p;Data *q; p=ptr;for(int i=O;inext;delete q;) LEN=O;)void Gather:setGather()(Data *p;P=ptr;for (int i=0;inum;p=p-ne

9、xt; )void Gather: :print()(if (LEN=0) cout,It,s an empty set!Hendl;Data *p; p=ptr;for(int i=0;inumH n; p=p-next;if (i!=0&i%10=0) coutendl; )void Gather:add(int t)bool y=true;Data *p;p=ptr;for(int i=O;inum=t)y=false;break;)if(i! =LEN-1 )p=p-next;if(y)p-next=new Data;p=p-next;p-num=t;p-next=NULL;LEN+;

10、)Gather& Gather:operator =(Gather &x)(if (ptr=x.ptr) return *this;else del();form(x.LEN);Data *p,*q;p=ptr;q=x.ptr;for(int i=0;inum=q-num;p=p-next;q=q-next;)return *this;)Gather& Gather:operator +(Gather &x)(inside.del();inside.form(LEN);Data *q;Data *p;q=ptr;p=inside.getptr();for(int i=0;iLEN;i+)p-n

11、um=q-num;p=p-next;q=q-next;q=x.ptr;for(i=0;inum);q=q-next;return inside;)Gather& Gather:operator (Gather &x) (int z=0;long g100;bool y=true;Data *p;Data *q;p=ptr;q=x.ptr;for(int i=0;iLEN;i+)q=x.ptr;for(int j=0;jnum=q-num) for(int t=O;tnum=gt)y=false;break;)if(y)gz=p-num;z+;break;y=true;break;)else q

12、=q-next;)p=p-next;inside.del();inside.form(z);Data *pre;pre=inside.getptr();for (i=0;inum=gi;pre=pre-next;)return inside;)/the main int main() (Gather x(6);Gather y;Gather result;coutEnter the item of set x:nendl; x.setGather();coutThe items of x is:nendl;x.print();coutendl;coutEnter the item of set

13、 y:Hendl; y.setGather();coutuThe items of y is:nendl;y.pr 血 0;coutendl;coutThe result of x+y is:nendl;result=x+y;result.print();coutendl;coutThe result of x*y is:endl;result=x*y;result.print();coutendl;coutEnter the item you want to add to x :n;int a;cina;x.add(a);coutnNow x is : ;x.printQ;coutendl;

14、inside.del();result.del();x.del();y.del();return 0;)(四)对象实训基础实训1、读程序写结果;2、设计计算图形面积的程序,图形有圆和长方形,计算半径为15、23、37的圆和长宽分 别为(32,56)、(21,45)的长方形等五个图形的面积。class rectprivate:float length;float width;public:rect(float 1, float w);void putwidth(float w);void putlength(float 1);float getwidth()const;float getleng

15、th ()const;float AreaO const;float Total ()const;);rect:rect (float 1=0 , float w=0)length=l;width=w;)void rect:putwidth(float w) width二w;void rect:putlength(float 1) length=1;)float rect:getlength ()const return length;)float rect:getwidth ()constreturn wi dth;)float rect:Area ()const(return length

16、*width;)float rect:Total ()constreturn 2*(length+width);/rect.cpp ttinclude ttinclude ttinclude rect h ttinclude using namespace std; void main () (cout 求长方形的面积与周长endl; int str=0;float rw,rl;rect a(0, 0); ttt:cout rl rw;此处输入字符时就会错误 a.putlength (rl);a.putwidth (rw); do cout 输入0为退出,输入1求面积,输入2求周长,3是输入长

17、和宽 str;switch (str)case 1: cout 面积是: a. Area () endl; break;case 2: cout 周长是: a. Total () endl; break;case 3: goto ttt; break;case 0: cout ByeBye! endl; break;default: cout 错误!输入1求面积,输入2求周长! endl; break; ) while (str) ;*/ getchO ;)3、设计一个日期类Date,可以求昨天的日期和明天的日期,输出格式为:年/月/日,编写 主程序设置当前日期为2003年9月10日,显示昨天

18、的日期和明天的日期,将日期改为2004 年5月4日,显示修改后的日期。综合实训设计一个最多可以存放100个整数的类,要求这些整数按从小到大的顺序存放在类中的数组 里,可以删除数组中的数据,也可以向数组中插入数据,但是要保持从小到大的顺序,可以 求出数据的多少,可以判断数组的空和满,可以显示数组中的整数。当然刚生成对象时,对 象中的数组没有数据,只有一个一个地向对象中插入数据。要求如下:(1)分析数组类的数据属性要求;(2)分析数组类的操作属性要求;(3)编制数组类的接口定义;(4)生成数组类对象;(5)编制程序实现数组对象的插入和删除操作;#include class Date ( priva

19、te:int year,month,day;public:Date(int y= 1900,int m=l,int d=l):year(y),month(m),day(d)构造函数 void setDate(int y,int m,int d)设置日期yearly;month=m;day=d;)void showDate()输出日期格式(coutyear,7nmonth,7,dayendl;)int leap。/判断是否为润年if(year%400=0|(year%100!=0&year%4=0) return 1;目录目录1实训的目的和任务3实训内容指导3仓库商品检查登记管理系统类设计流程图

20、源代码程序运行结果总结elsereturn 0;)int Days()判断当月天数int d;switch(month)(if(leap()d=29;elsed=28;break;case 1:case 5:case 10:case 12:d=31;break;case 4:case 6:case 9:case ll:d=30;break;return d;)int isRight。/判断日期数是否合理(if(year0|month 12|dayDays() coutnthe date data is wrong! nendl;return 0;) elsereturn 1;)Date Yes

21、terday()求昨天(Date dt(year,month,day);int y 1 =dt.year,m 1 =dt.month,d 1 =dt.day; switch(month)case 2:case 4:case 6:case 11:if(day= l)yl =year;m 1 =month-l;dl=31; else y 1 =year;m 1 =month;d 1 =day-l; break;)case 5:case 7:case 10:case 12:(if(day= l)y 1 =year;m 1 =month-l ;dl=30; else y l =year;m 1 =mo

22、nth;d 1 =day-l; break;)case 3:(if(day=l)y 1 =year;ml 二month-1;if(leap()dl=29;elsedl=28;else yl =year;m 1 =month;d 1 =day-1; break;)case 1:(if(day= l)yl =year-1 ;m 1 = 12 ;d 1 =31; else y 1 =year;m 1 =month;d 1 =day-l; break;)dt. setDate(y 1 ,m 1 ,d 1);return dt;)Date Tomoirow()求明天日期(Date dt(year,mon

23、th,day);int y 1 =dt.year,m 1 =dt.month,d 1 =dt.day;switch(month)case 1:case 3:case 5:case 10:(if(day=3 l)yl =year;m 1 =month+ l;dl = l; else yl =year;ml =month;d 1 =day +1; break;case 4:case 6:case 9:case 11:(if(day=30) y 1 =year;m 1 =month+ l;dl = l;else y 1 =year;m 1 =month;d 1 =day+1; break;)case

24、 2:(if(leap()&day=29)|(!leap()&day=28)y 1 =year;ml 二month+ l;dl = l;else yl =year;m 1 =month;d 1 =day+1; break;)case 12:(if(day=31)yl =year+1 ;m 1 = 1 ;d 1 = 1;else yl =year;ml二month;d 1 =day +1; break;dt. setDate(y 1 ,m 1 ,d 1); return dt;);/data类结束int main()Date datel;int y,m,d,tr=l;while(tr) cout

25、vv”t请输入当天日期”vendl;coutv”年:n;ciny;coutv”月: H;cinm;coutn日:n;cind;datel .setDate(y,m,d);if(datel.isRight()cout当日日期”;date!, sho wDate();coutvv”明日日期”;datel .Tomorrow().showDate();coutvv”昨日日期”;datel .Yesterday().showDate();)coutv”继续下一次测试(1)或者结束(2) Hendl;cintr;if(tr!=l)break;)(2)请输入当天日期D: 常用软彳牛VC6.0i7 文件De

26、bugCpplexe.return 0;年:2003自:9日:4当日日期2003/9/4明白目期2003/9/5但日目期2003/9/3建技下一次测试或者结束(五)指针与引用实训基础实训1、读程序写结果;2、设有一个整型数组A,有10个元素,输出各个元素,要求使用数组名和指针运算来实 现。3、设计一个函数,以参数方式输入一个字符串,返回该字符串的长度。#includeint mystrlen(char *str)int ent = 0;while(cnt+, * str+);return cnt-1;int main()char str100;int length;cout”输入字符串:nen

27、dl;cinstr;length = mystrlen(str);coutstr”长度为:nlengthendl;return 0;)4、设计一个函数,比较两个字符串是否相同。#include #include void main()(char strl100,str2100;coutv”输入两个字符串(strl ,sti*2): vvendl;cinstrlstr2;int ret=strcmp(str 1 ,str2);if(ret=O)cout相同endl;elsecoutn不同 endl;)4、设计一个函数,比较两个字符串是否相同。int myStrCmp(char *str1 ,ch

28、ar *str2)int sl1=03sl2=0,i;while(str1sl1+);while(str2sl2+);if(sl1 !=sl2) return 0;else for=0;ivsl1-1 ;i+) if(str1i!=str2i) return 0;return 1;)5、用指针和引用实现数的交换。#include #includevoid swap 1 (int &a, int &b)(int c;c=a;a=b;b=c;void swap2(int *pl, int *p2) int p;p=*pl;*pl=*p2;*p2二p;)int main(void)int numl,

29、 num2;coutn(&numl,&num2):Hendl;cinnum 1 num2;coutv”(原始数据:numl,num2):numl:vnum2endl;swap 1 (num 1 ,num2);coutv”第一次交换:vnum 1 v?num2vendl;swap2(&num l,&num2);cout v ” 第二次交换: vn um 1 v? vn um2 vendl;return 0; D:常用我件VC6.0匹行文件DebugCppl.exe:1:1,21Wg = 2,l第二次父软:1,2Press any key to continue6、对象指针遵循一般变量指针的规则。

30、综合实训冒泡排序是一个排序程序,它将无次序的数列排成从小到大的有序数列。要求如下:(1)建成一个数组类;(2)使用指针变量指向动态数组;(3)编写成员函数完成排序;(4)编写主程序,验证结果。(六)继承实训基础实训1、读程序,写结果;2、定义B0是虚基类,B1和B2者B继承BO, D1同时继承B1和B2,它们都是公有派生, 这些类都是同名的公有数据成员和公有函数,编制主程序,生成D1的对象,通过限定词: 分别访问DI、BO、Bl、B2的公有成员。3、定义一个文件名类,包含文件名属性。由文件名类派生一个表示文件的类,增加文件的 页数和文件的编号。4、设计一个楼房基类,包含变量层数、建筑面积、建筑

31、名称。建立派生类表示居住楼,增 加变量单元数。再建立派生类表示办公楼,增加变量表示公司数# include # include using namespace std;class building/楼房基类(public:building(int floor,double area,stringname)floors=floor;areas=area;names=name;virtual void Display()const/* do something like print*/private:int floors;double areas;string names;建筑名称);class

32、house:public building(public:house(int floor,double area,string namejntdomitory):building(floor,area5name)ds=domitory;void Display()const/* do the thing you want to do*/private:int ds;);class office:public building/不知道你是要从 building 继承 还是 house 这从buiding 继承(public:office(int floor,double area,string

33、namejntCompanySize):building(floor,area5name)cs=CompanySize;void Display()const/*print or something*/private:int cs;);void DoSmeThing(building *p)(p-Display();)void main() (building Bd(5,60,nparadisen);house Hs(4,56.8Jhome5);office Of(9,70.85nHDDH5100);DoSmeThing(&Bd);DoSmeThing(&Hs);DoSmeThing(&Of)

34、;)4、定义描述坐标位置的类,由它派生出具有显示和移动功能的点类,再从点类派生出圆类, 求出圆的周长和面积。circle_header.h#ifndef CIRCLE.H#define CIRCLE_H#include #include using namespace std;#define PI 3.1416class Location ( public:Location(float xx=0, float yy=0)X=xx; Y=yy;float GetX()return X;float GetY()return Y;void SetX(float xx)X = xx;void SetY

35、(float yy)Y = yy;private:float X;float Y;);class Point:public Location ( public:void Move(float xx, float yy) (SetX(xx);SetY(yy);void DisplayO (coutHThe location is n x=n GetX() n,n ny=n GetY();)private:Location PointLocation;);class Circle:public Point (public:Circle(Location ¢re, Point &circle

36、Point) (CirclePoint = circlePoint;Centre = centre;)float GirthQ (return 2*PI*Radius();)float Acreage() (return PI*Radius()*Radius();private:Location Centre;Point CirclePoint;float Radius() (return sqrt( (CirclePoint.GetX()-Centre.GetX():5c(CirclePoint.GetX()-Centre.GetX()4-(CirclePoint.GetY()-Centre

37、.GetY()*(CirclePoint.GetY()-Centre.GetY(); );#endif file.cpp#include “circle header.hvoid main()Location centre(l, 2);Point point;point.Move(4, 5);Circle circle(centre, point);cout circle.Acreage() ”“ circ!e.Girth() endl;)综合实训人员类的继承实训;(设计基类人员类,数据成员为姓名和身份号,成员函数有输入数据和 显示数据;派生学生类,数据成员包括电话号码和C+成绩,成员函数有输

38、入数据和显示数 据;设计学生地址类,数据成员包括地址和年龄,成员函数输入数据和显示数据;由学生类 和地址类派生学生成绩类,数据成员数学成绩和英语成绩,成员函数输入数据和显示数据; 职员类继承人员类,没有任何成员。) 要求如下:(1)设计人员类;(2)设计地址类;(3)由人员类派生学生类;(4)由人员类派生职员类;(5)由学生类和地址类派生出学生成绩类;(6)编制主程序,验证结果。(七)静态成员和友元实训#include#includeusing namespace std;class Person(private:string name;string id;public :void input

39、(string name,string id)(this-namc=namc;this-id=id;)void print()cout定义一个描述学生的结构体类型student,含有学号num、姓名name、性别sex、成绩score 几个分量,再定义属于这个结构体类型的两个变量stul、stu2ostruct student* * * *号名别绩学姓性成(intnum;/*charname20;/*charsex;/*floatscore;/*;struct student studentl, student2;2、建立一个适于描述碗和勺子的结构体,有关的信息是:两者都有货号、价格、颜色,不

40、 同的是碗的大小用口径来表示,勺子的大小用枚举类型表示,分大、中、小三种。现有的勺 子的大小是中,将其表示出来。#include using namespace std;struct bowl int No;int price;char color;float size;);struct spoon int No;coutadd=add;this-age=age;)void print()(coutw”住址:Haddendl;coutphone_num=phone_num;this-grade_C=grade_C;)void print()(Person: :print();coutn电话:Hphonc_numcndl;coutC+成绩:ngrade_Cendl;);c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁