版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . 37/37理工大学城市学院面向对象程序设计实训报告仓库商品检查登记管理系统专业:班级:学号:指导老师:2012年1月6日目录目录1实训的目的和任务3实训容指导3仓库商品检查登记管理系统类设计流程图源代码程序运行结果总结一、实训的目的和任务C+语言程序设计的实训,是教学计划中的一个有机组成部分,是培养学生综合应用所学的基础的理论,基本知识和技能,分析解决实际问题能力的重要一环,与其它教学环节紧密配合,相辅相成,是前面教学环节的继续,深入和发展。通过实训过程可在不同程度上提高调查研究,查问文献,实际应用的能力。二、实训容指导(一)数据类型和表达式基础实训1、定义一个描述学生的结构体类型s
2、tudent,含有学号num、name、性别sex、成绩score几个分量,再定义属于这个结构体类型的两个变量stu1、stu2。struct studentintnum; /* 学号 */char name20;/* */char sex; /* 性别 */floatscore; /* 成绩 */; struct student student1, student2;2、建立一个适于描述碗和勺子的结构体,有关的信息是:两者都有货号、价格、颜色,不同的是碗的大小用口径来表示,勺子的大小用枚举类型表示,分大、中、小三种。现有的勺子的大小是中,将其表示出来。#include using names
3、pace std;struct bowl int No; int price; char color; float size;struct spoon int No; int price; char color; struct enum small,medium,bigshaozi; a;b;void main() b.a.shaozi = b.a.medium; coutb.a.shaozi;3、编程实现两个整数相加。#includeint main()int integer1,integer2,sum; coutinteger1; coutinteger2; sum=integer1+in
4、teger2; coutSum is sum endl; return; 4、编程实现,输入一个三位整数,能够将它反向输出。#include #include using namespace std; void main() int num; coutnum; while(num) coutnum%10; num /=10; coutendl;5、读程序写结果。综合实训数字互换实训。输入一个大于三位的整数,编一个程序,将它的十位数和百位数互换位置。#includeusing namespace std;int main() int x; int a3; cinx; for(int i=0;i3
5、;i+) ai=x%10;x=x/10; x=x*1000+a0+a1*100+a2*10; coutxendl; return 1;(二)语句和函数基础实训1、根据考试成绩的等级A、B、C和D,输出对应的百分制分数段,A对应85100,B对应7084,C对应6069,D对应060。#define num 100int a=new int num;for(int i=0;i=85)cout=70)cout=60)coutC;elsecoutD;2、用for语句编程求1100之和。#includevoid main()int sum(0);for(int i=1;i=100;i+)sum+=i;
6、coutsum=sumendl;3、用for语句、while语句和递归函数三种方法计算n!。#includemain()int n;int sum=1;cin0;) sum*=n-;while(n0) sum*=n-; int f(int x) if(x1) x*=f(x-1); return x; else return x; 4、用for循环编程打印图形。#include using namespace std;int main() for(int i=1;i=5;i+) for(int j=1;j=i;j+) cout*; coutendl; cout*endl; cout*endl;5
7、、编写函数,判断一个数是否是质数。# include# includeusing namespace std;int main()int i,j,k;cinj;k=sqrt(j);for(i=2;ik)cout1;else cout0;return 0;9、设计一个函数,求三个数中的最大值。#includeint max(int,int,int);void main()coutmax(35,48,26)endl;int max(int a,int b,int c)int t=max(a,b);return max(t,c);10、编写程序,利用itoa函数实现整数到字符串的转换。#includ
8、eintitoa(x)charc;c=x;printf(%c,c);getch();intmain(void)inta;printf(inputanumber:);scanf(%d,&a);itoa(a);11、编写程序,最多读入10个数,读入0表示结束。将读入的非零的数放在一个数组里,按从大到小的顺序排序后输出。#include #include#include#includeusing namespace std;int main()/主函数 vector b; for(int i=0;ix; if( x ) b.push_back( x ); else break; sort( b.be
9、gin(),b.end() ); copy( b.begin(),b.end() , ostream_iterator(cout, ) ); return 0;12、将一个代表整型数的字符串转换为一个整型的数字。#include #include #include using namespace std;int main(int argc, char* argv) stringstream a; string b; int i; cinb; a.str(b); ai; couti*2endl; return 0;综合实训(职工信息处理函数实训)职工的信息有、年龄、工龄、性别、婚姻状况、级别、工
10、资、在职否。现在要进行工资的调整,规定凡是退休职工一律增加工资50元,在职15级职工的工资分别增加20、40、60、80、100元。编程实现上述工资调整。要求如下:(1)分析要存放的信息,设计合适的数据结构;(2)分析要对信息进行的操作,进行处理;(3)打印程序执行前后的工资状况和级别。(三)面向对象基本概念与类实训基础实训1、读程序写结果;2、设计一个表示猫的类,包括猫的颜色、体重、年龄等数据,具有设置猫的颜色,修改和显示猫的体重、年龄等操作。设猫类的类名为Cat,猫类Cat有3个数据成员,颜色用字符串color7,可以存放3个汉字,体重用实型数weight表示,年龄用整型数age表示,为了
11、数据的安全性,Cat的3个数据成员全部为私有的。对猫的属性数据的设置和修改,PutColor为设置和修改颜色,PutWeight为设置和修改体重,PutAge为设置和修改年龄,它们都设置为公有函数,还要有一个1个3个参数的函数 SetCat。设计Display函数输出猫的信息。#include class Catprivate String colour;private int weight;private int age;.int getWeight() return weight;int getAge() return age;void setClolur(String xClolour)
12、 colour=xCloour;void setWeight(int xWeight) weight=xWeight;void setAge(int xAge) age=xAge;设计一个表示学习成绩的类,至少包括三门课程的成绩,可以设置、显示每门课程的成绩,可以计算、显示平均成绩。class Gradesprivate: int Math,English,Chinese;public: Grades() Math = English = Chinese = 0; Grades(int a,int b,int c) Math = a; English = b; Chinese = c; int
13、 getM() return Math; int getE() return English; int GetC() return Chinese; void Setvalue(int a,int b,int c) Math = a; English = b; Chinese = c; void Display(); float Average() return (Math+English+Chinese)/3.0; 4、设计成绩类,成绩类的数据成员,应该包括学生的学号Number10和Name9,假设有3门课,分别为C+程序设计语言,用整型变量Cpp表示;计算机原理,用整型变量Compute
14、r表示;数据库,用整型变量DataBase表示。平均成绩用实型变量Average表示。为了Grade类数据的安全性,数据成员全部为私有成员,对成绩类的属性数据用一些函数进行设置和修改,PutNo为设置和修改学号,PutName为设置和修改,PutCpp为设置和修改C+程序设计语言的成绩,PutCom为设置和修改计算机原理的成绩,PutData为设置和修改数据库的成绩,还有一个同时设置所有5个参数的函数SetGrade,它们都设置为公有函数。计算平均成绩的函数为Calc,设计函数Display输出成绩。有时可能要查看某个学生的成绩,所以设计比较学号的函数为ComNo,设计比较的函数为ComNam
15、e,GetCpp为读取C+程序设计语言的成绩,GetCom为读取计算机原理的成绩,GetData为读取数据库的成绩,设计读取平均成绩的函数为GetAvg。计算平均成绩只是在类的部实现,所以设计为私有函数,其它都为公有函数。综合实训设计一个表示整型数据的集合类,可以对集合中的数据进行添加、删除,可以判断一个整数是否在这个集合里,可以求出集合数据的多少,可以判断集合的空与满,空集合就是没有数据元素,满集合就是数据元素已经占满给出的存储单元。两个集合可以做交运算,就是将两个集合的公共数据组成一个新的集合。两个集合可以做并运算,就是将两个集合的所有数据组成一个新的集合。要求如下:(1)分析集合类的数据
16、属性要求;(2)分析集合类的操作属性要求;(3)编制集合类的接口定义;(4)实现集合类的属性函数。#include/form the datastruct Data long num; Data *next;/the set classclass Gather public: Gather(int =5); /Gather(); void form(int); void del(); void setGather(); void print(); void add(int); Data *getptr()return ptr; Gather& operator=(Gather &); Gath
17、er& operator+(Gather &); Gather& operator*(Gather &); private: int LEN; Data *ptr;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=0;inext; d
18、elete q; LEN=0;void Gather:setGather() Data *p; p=ptr; for (int i=0;iLEN;i+) coutEnter item i+1p-num; p=p-next; void Gather:print() if (LEN=0) coutIts an empty set!endl; Data *p; p=ptr; for(int i=0;iLEN;i+) coutnumnext; if (i!=0&i%10=0) coutendl; void Gather:add(int t) bool y=true; Data *p; p=ptr; f
19、or(int i=0;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+; 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; Gathe
20、r& Gather:operator +(Gather &x) inside.del(); inside.form(LEN); Data *q; Data *p; q=ptr; p=inside.getptr(); for(int i=0;inum=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.p
21、tr; for(int i=0;iLEN;i+) q=x.ptr; for(int j=0;jnum=q-num) for(int t=0;tnum=gt) y=false; break; if(y) gz=p-num; z+; break; y=true; break; else q=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 mainint main() Gather x(6
22、); Gather y; Gather result; coutEnter the item of set x:endl; x.setGather(); coutThe items of x is:endl; x.print(); coutendl; coutEnter the item of set y:endl; y.setGather(); coutThe items of y is:endl; y.print(); coutendl; coutThe result of x+y is:endl; result=x+y; result.print(); coutendl; coutThe
23、 result of x*y is:endl; result=x*y; result.print(); coutendl; couta; x.add(a); coutNow x is : ;x.print(); coutendl; inside.del(); result.del(); x.del(); y.del(); return 0;(四)对象实训基础实训1、读程序写结果;2、设计计算图形面积的程序,图形有圆和长方形,计算半径为15、23、37的圆和长宽分别为(32,56)、(21,45)的长方形等五个图形的面积。class rect private: float length; flo
24、at width; public: rect(float l,float w); void putwidth(float w); void putlength(float l); float getwidth()const; float getlength()const; float Area()const; float Total()const; ; rect:rect(float l=0 ,float w=0) length=l; width=w; void rect:putwidth(float w) width=w; void rect:putlength(float l) lengt
25、h=l; float rect:getlength()const return length; float rect:getwidth()const return width; float rect:Area ()const return length*width; float rect:Total ()const return 2*(length+width); /rect.cpp #include #include #include rect.h #include using namespace std; void main() cout 求长方形的面积与周长 endl; int str=
26、0; float rw,rl; rect a(0,0); ttt: cout rl rw;/此处输入字符时就会错误 a.putlength (rl); a.putwidth (rw); do cout 输入0为退出,输入1求面积,输入2求周长,3是输入长和宽 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: c
27、out 错误!输入1求面积,输入2求周长! endl; break; while(str);/*/ getch(); 3、设计一个日期类Date,可以求昨天的日期和明天的日期,输出格式为:年/月/日,编写主程序设置当前日期为2003年9月10日,显示昨天的日期和明天的日期,将日期改为2004年5月4日,显示修改后的日期。综合实训设计一个最多可以存放100个整数的类,要求这些整数按从小到大的顺序存放在类中的数组里,可以删除数组中的数据,也可以向数组中插入数据,但是要保持从小到大的顺序,可以求出数据的多少,可以判断数组的空和满,可以显示数组中的整数。当然刚生成对象时,对象中的数组没有数据,只有一个
28、一个地向对象中插入数据。要求如下:(1)分析数组类的数据属性要求;(2)分析数组类的操作属性要求;(3)编制数组类的接口定义;(4)生成数组类对象;(5)编制程序实现数组对象的插入和删除操作;#includeclass Dateprivate:int year,month,day;public:Date(int y=1900,int m=1,int d=1):year(y),month(m),day(d)/构造函数void setDate(int y,int m,int d)/设置日期 year=y; month=m; day=d;void showDate()/输出日期格式 coutyear
29、/month/dayendl;int leap()/判断是否为润年 if(year%400=0|(year%100!=0&year%4=0) return 1; else return 0;int Days()/判断当月天数 int d; switch(month) case 2:if(leap() d=29; else d=28; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12:d=31;break; case 4: case 6: case 9: case 11:d=30;break; return d;int
30、 isRight()/判断日期数是否合理if(year0|month12|dayDays() coutthe date data is wrong!endl;return 0;else return 1;Date Yesterday()/求昨天Date dt(year,month,day);int y1=dt.year,m1=dt.month,d1=dt.day;switch(month) case 2: case 4: case 6: case 8: case 9: case 11: if(day=1)y1=year;m1=month-1;d1=31; else y1=year;m1=mon
31、th;d1=day-1; break; case 5: case 7: case 10: case 12: if(day=1)y1=year;m1=month-1;d1=30; else y1=year;m1=month;d1=day-1; break; case 3: if(day=1) y1=year;m1=month-1; if(leap() d1=29; else d1=28; else y1=year;m1=month;d1=day-1; break; case 1: if(day=1)y1=year-1;m1=12;d1=31; else y1=year;m1=month;d1=d
32、ay-1; break; dt.setDate(y1,m1,d1);return dt;Date Tomorrow()/求明天日期 Date dt(year,month,day);int y1=dt.year,m1=dt.month,d1=dt.day;switch(month) case 1: case 3: case 5: case 7: case 8: case 10: if(day=31)y1=year;m1=month+1;d1=1; else y1=year;m1=month;d1=day+1; break; case 4: case 6: case 9: case 11: if(
33、day=30)y1=year;m1=month+1;d1=1; else y1=year;m1=month;d1=day+1; break; case 2: if(leap()&day=29)|(!leap()&day=28) y1=year;m1=month+1;d1=1; else y1=year;m1=month;d1=day+1; break; case 12: if(day=31)y1=year+1;m1=1;d1=1; else y1=year;m1=month;d1=day+1; break; dt.setDate(y1,m1,d1);return dt; ;/data类结束in
34、t main()Date date1;int y,m,d,tr=1;while(tr)coutt请输入当天日期endl;couty;coutm;coutd; date1.setDate(y,m,d);if(date1.isRight()cout当日日期; date1.showDate(); cout明日日期; date1.Tomorrow().showDate(); cout昨日日期; date1.Yesterday().showDate(); cout继续下一次测试(1)或者结束(2)tr; if(tr!=1) break;return 0;(五)指针与引用实训基础实训1、读程序写结果;2、
35、设有一个整型数组A,有10个元素,输出各个元素,要求使用数组名和指针运算来实现。3、设计一个函数,以参数方式输入一个字符串,返回该字符串的长度。#includeint mystrlen(char *str)intt = 0;while(cnt+,*str+);returnt-1;int main()char str100;int length;cout输入字符串:str;length = mystrlen(str);coutstr长度为:lengthendl;return 0;4、设计一个函数,比较两个字符串是否一样。#include #include void main()char str1
36、100,str2100;cout输入两个字符串(str1,str2):str1str2;int ret=strcmp(str1,str2);if(ret=0)cout一样endl; else cout不同endl; 4、设计一个函数,比较两个字符串是否一样。int myStrCmp(char *str1,char *str2) int sl1=0,sl2=0,i; while(str1sl1+); while(str2sl2+); if(sl1!=sl2) return 0; else for(i=0;isl1-1;i+) if(str1i!=str2i) return 0; return 1
37、;5、用指针和引用实现数的交换。#include #includevoid swap1(int &a, int &b) int c; c=a; a=b; b=c;void swap2(int *p1, int *p2)int p;p=*p1;*p1=*p2;*p2=p;int main(void)int num1, num2;cout(&num1,&num2):num1num2;cout(原始数据:num1,num2):num1,num2endl;swap1(num1,num2);cout第一次交换:num1,num2endl;swap2(&num1,&num2);cout第二次交换:num1
38、,num2endl;return 0;6、对象指针遵循一般变量指针的规则。综合实训冒泡排序是一个排序程序,它将无次序的数列排成从小到大的有序数列。要求如下:(1)建成一个数组类;(2)使用指针变量指向动态数组;(3)编写成员函数完成排序;(4)编写主程序,验证结果。(六)继承实训基础实训1、读程序,写结果;2、定义B0是虚基类,B1和B2都继承B0,D1同时继承B1和B2,它们都是公有派生,这些类都是同名的公有数据成员和公有函数,编制主程序,生成D1的对象,通过限定词:分别访问D1、B0、B1、B2的公有成员。3、定义一个文件名类,包含文件名属性。由文件名类派生一个表示文件的类,增加文件的页数
39、和文件的编号。4、设计一个楼房基类,包含变量层数、建筑面积、建筑名称。建立派生类表示居住楼,增加变量单元数。再建立派生类表示办公楼,增加变量表示公司数# include # include using namespace std;class building/楼房基类public: building(int floor,double area,string name)floors=floor;areas=area;names=name; virtual void Display()const/* do something like print*/private: int floors; dou
40、ble areas; string names;/建筑名称;class house:public buildingpublic: house(int floor,double area,string name,int domitory):building(floor,area,name)ds=domitory; void Display()const/* do the thing you want to do*/private: int ds;class office:public building/不知道你是要从building 继承 还是house 这从buiding 继承public:
41、office(int floor,double area,string name,int CompanySize):building(floor,area,name)cs=CompanySize; void Display()const/*print or something*/private: int cs;void DoSmeThing(building *p) p-Display();void main() building Bd(5,60,paradise); house Hs(4,56.8,home,5); office Of(9,70.8,HDD,100); DoSmeThing(
42、&Bd); DoSmeThing(&Hs); DoSmeThing(&Of);定义描述坐标位置的类,由它派生出具有显示和移动功能的点类,再从点类派生出圆类,求出圆的周长和面积。circle_header.h#ifndef CIRCLE_H#define CIRCLE_H#include #include using namespace std;#define PI 3.1416class Locationpublic:Location(float xx=0, float yy=0)X=xx; Y=yy; float GetX()return X; float GetY()return Y; v
43、oid SetX(float xx)X = xx; void SetY(float yy)Y = yy;private: float X; float Y;class Point:public Locationpublic: void Move(float xx, float yy) SetX(xx); SetY(yy); void Display() coutThe location is x= GetX() , y= GetY(); private: Location PointLocation;class Circle:public Pointpublic: Circle(Locatio
44、n ¢re, Point &circlePoint) CirclePoint = circlePoint; Centre = centre; float Girth() return 2*PI*Radius(); float Acreage() return PI*Radius()*Radius(); private: Location Centre; Point CirclePoint; float Radius() return sqrt( (CirclePoint.GetX()-Centre.GetX()*(CirclePoint.GetX()-Centre.GetX()+ (C
45、irclePoint.GetY()-Centre.GetY()*(CirclePoint.GetY()-Centre.GetY() ); ;#endiffile.cpp#include circle_header.hvoid main() Location centre(1, 2); Point point; point.Move(4, 5); Circle circle(centre, point); cout circle.Acreage() circle.Girth() endl;综合实训人员类的继承实训;(设计基类人员类,数据成员为和身份号,成员函数有输入数据和显示数据;派生学生类,数
46、据成员包括和C+成绩,成员函数有输入数据和显示数据;设计学生地址类,数据成员包括地址和年龄,成员函数输入数据和显示数据;由学生类和地址类派生学生成绩类,数据成员数学成绩和英语成绩,成员函数输入数据和显示数据;职员类继承人员类,没有任何成员。)要求如下:(1)设计人员类;(2)设计地址类;(3)由人员类派生学生类;(4)由人员类派生职员类;(5)由学生类和地址类派生出学生成绩类;(6)编制主程序,验证结果。(七)静态成员和友元实训#include#includeusing namespace std;class Personprivate: string name; string id;publ
47、ic : void input(string name,string id) this-name=name; this-id=id; void print() cout:nameendl; cout号:idadd=add; this-age=age; void print() cout住址:addendl; cout年龄:agephone_num=phone_num; this-grade_C=grade_C; void print() Person:print(); cout:phone_numendl; coutC+成绩:grade_Cgrade_Math=grade_Math; this
48、-grade_English=grade_English; void print() Student:print(); cout数学成绩:grade_Mathendl; cout英语成绩:grade_Englishendl; Address:print(); ;class Employee:public Person;int main() Score c; Employee e; c.input (,2002001, ,20,87935114,97,88,56); e.input(麻婷,123456); coutn学生信息n; c.print(); coutn职员信息n; e.print();
49、 return 0;基础实训1、定义一个工资类,包含一个保护数据成员money 表示工资,一个静态数据成员sds表示个人所得税占工资的比例,一个静态成员函数modSDS更改sds。#include#includeclass Payrollprivate: double money; double total;public: int time;/假设为整数 int GetTime() do printf(input time:); scanf(%d,&time); while(time60 ); money = 100; return 0; int GetTotalMoney() return
50、(total =time * money); void Print() printf(total:%lfn,total); ;main() Payroll p10; p0.GetTime(); p0.GetTotalMoney(); p0.Print();赞同2、生成一个GZ类表示工资,用静态数据成员包含每个职工的sds(个人所得税占工资的比例)。类的每个成员包含一个私有数据成员money,表示当月工资。提供一个calSDS成员函数,计算个人应交所得税,并从money中扣除。提供一个static成员函数modSDS,将sds设置为新值。3、设计一个JX类表示矩形,矩形的长和宽作为其两个数据成员。编写一个求矩形面积的函数area(),并将它声明为JX的一个友元函数。利用area()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024广东广州市黄埔区退役军人事务局招聘政府雇员1人管理单位遴选500模拟题附带答案详解
- 托育课件教学课件
- 仓储物流标准化管理规定
- 人力资源劳动合同样本原件
- 企业危机管理手册
- 代建合同范本工具
- 企业借款合同范例电视行业
- 代理协议范本
- 企业员工安全生产协议
- 代建合同模板能源行业
- 2023年catti三级笔译综合能力考试试题及答案解析
- 圆二色谱原理与应用课件
- 绘制建筑平面图的步骤
- Python语言基础与应用学习通超星课后章节答案期末考试题库2023年
- 海藻与海藻养分课件
- 煤矿井筒维修工理论知识考试复习题库(浓缩300题)
- 六年级上册英语说课稿- Module 6 Unit 2 I've got a stamp from China. -外研社(三起)
- 大众维修手册途安电路图
- 回族上坟怎么念
- 1《梦游天姥吟留别》同步练习(含解析)
- 民航值机服务
评论
0/150
提交评论