仓库管理C++实训报告之仓库管理以及实训题目指导.docx
《仓库管理C++实训报告之仓库管理以及实训题目指导.docx》由会员分享,可在线阅读,更多相关《仓库管理C++实训报告之仓库管理以及实训题目指导.docx(50页珍藏版)》请在冰豆网上搜索。
仓库管理C++实训报告之仓库管理以及实训题目指导
昆明理工大学城市学院面向对象程序设计实训报告
仓库商品检查登记管理系统
专业:
班级:
姓名:
学号:
指导老师:
2012年1月6日
目录………………………………1
实训的目的和任务………………3
实训内容指导……………………3
仓库商品检查登记管理系统……
类设计……………………………
流程图……………………………
源代码……………………………
程序运行结果……………………
总结………………………………
一、实训的目的和任务
C++语言程序设计的实训,是教学计划中的一个有机组成部分,是培养学生综合应用所学的基础的理论,基本知识和技能,分析解决实际问题能力的重要一环,与其它教学环节紧密配合,相辅相成,是前面教学环节的继续,深入和发展。
通过实训过程可在不同程度上提高调查研究,查问文献,实际应用的能力。
二、实训内容指导
(一)数据类型和表达式
基础实训
1、定义一个描述学生的结构体类型student,含有学号num、姓名name、性别sex、成绩score几个分量,再定义属于这个结构体类型的两个变量stu1、stu2。
structstudent
{
int num; /*学号*/
char name[20]; /*姓名*/
char sex; /*性别*/
float score; /*成绩*/
};
structstudentstudent1,student2;
2、建立一个适于描述碗和勺子的结构体,有关的信息是:
两者都有货号、价格、颜色,不同的是碗的大小用口径来表示,勺子的大小用枚举类型表示,分大、中、小三种。
现有的勺子的大小是中,将其表示出来。
#include
usingnamespacestd;
structbowl{
intNo;
intprice;
charcolor;
floatsize;
};
structspoon{
intNo;
intprice;
charcolor;
struct{
enum{small,medium,big}shaozi;
}a;
}b;
voidmain()
{
b.a.shaozi=b.a.medium;
cout<}
3、编程实现两个整数相加。
#include
intmain()
{
intinteger1,integer2,sum;
cout<<"Enterfirstinteger\n";
cin>>integer1;
cout<<"Entersecondinteger\n";
cin>>integer2;
sum=integer1+integer2;
cout<<"Sumis"<return;
}
4、编程实现,输入一个三位整数,能够将它反向输出。
#include
#include
usingnamespacestd;
voidmain()
{
intnum;
cout<<"input:
";
cin>>num;
while(num)
{
cout<num/=10;
}
cout<}
5、读程序写结果。
综合实训
数字互换实训。
输入一个大于三位的整数,编一个程序,将它的十位数和百位数互换位置。
#include
usingnamespacestd;
intmain()
{
intx;
inta[3];
cin>>x;
for(inti=0;i<3;i++)
{
a[i]=x%10;x=x/10;
}
x=x*1000+a[0]+a[1]*100+a[2]*10;
cout<return1;
}
(二)语句和函数
基础实训
1、根据考试成绩的等级A、B、C和D,输出对应的百分制分数段,A对应85~100,B对应70~84,C对应60~69,D对应0~60。
#definenum100
inta[]=newint[num];
for(inti=0;i{
if(a[i]>=85)
cout<<'A';
eseif(a[i]>=70)
cout<<'B';
elseif(a[i]>=60)
cout<<'C';
else
cout<<'D';
}
2、用for语句编程求1~100之和。
#include
voidmain()
{
intsum(0);
for(inti=1;i<=100;i++)
sum+=i;
cout<<"sum="<}
3、用for语句、while语句和递归函数三种方法计算n!
。
#include
main(){
intn;
intsum=1;
cin<for(;n>0;)
sum*=n--;
while(n>0)
sum*=n--;
intf(intx)
{
if(x>1)
{
x*=f(x-1);
returnx;
}
else
returnx;
}
4、用for循环编程打印图形。
#include
usingnamespacestd;
intmain()
{
for(inti=1;i<=5;i++)
{
for(intj=1;j<=i;j++)
cout<<"*";
cout<}
cout<<"*****"<cout<<"*"<}
5、编写函数,判断一个数是否是质数。
#include
#include
usingnamespacestd;
intmain()
{inti,j,k;
cin>>j;
k=sqrt(j);
for(i=2;i<=k;i++)
if(j%i==0)break;
if(i>k)
cout<<1;
elsecout<<0;
return0;
}
9、设计一个函数,求三个数中的最大值。
#include
intmax(int,int,int);
voidmain()
{
cout<}
intmax(inta,intb,intc)
{
intt=max(a,b);
returnmax(t,c);
}
10、编写程序,利用itoa函数实现整数到字符串的转换。
#include
int itoa(x)
{
char c;
c=x;
printf("%c",c);
getch();
}
int main(void)
{
int a;
printf("input a number:
");
scanf("%d",&a);
itoa(a);
}
11、编写程序,最多读入10个数,读入0表示结束。
将读入的非零的数放在一个数组里,按从大到小的顺序排序后输出。
#include
#include
#include
#include
usingnamespacestd;
intmain()//主函数
{
vectorb;
for(inti=0;i<10;i++){
intx=0;
cin>>x;
if(x)
b.push_back(x);
else
break;
}
sort(b.begin(),b.end());
copy(b.begin(),b.end(),ostream_iterator(cout,""));
return0;
}
12、将一个代表整型数的字符串转换为一个整型的数字。
#include
#include
#include
usingnamespacestd;
intmain(intargc,char*argv[])
{
stringstreama;
stringb;
inti;
cin>>b;
a.str(b);
a>>i;
cout<
return0;
}
综合实训(职工信息处理函数实训)
职工的信息有姓名、年龄、工龄、性别、婚姻状况、级别、工资、在职否。
现在要进行工资的调整,规定凡是退休职工一律增加工资50元,在职1~5级职工的工资分别增加20、40、60、80、100元。
编程实现上述工资调整。
要求如下:
(1)分析要存放的信息,设计合适的数据结构;
(2)分析要对信息进行的操作,进行处理;
(3)打印程序执行前后的工资状况和级别。
(三)面向对象基本概念与类实训
基础实训
1、读程序写结果;
2、设计一个表示猫的类,包括猫的颜色、体重、年龄等数据,具有设置猫的颜色,修改和显示猫的体重、年龄等操作。
设猫类的类名为Cat,猫类Cat有3个数据成员,颜色用字符串color[7],可以存放3个汉字,体重用实型数weight表示,年龄用整型数age表示,为了数据的安全性,Cat的3个数据成员全部为私有的。
对猫的属性数据的设置和修改,PutColor为设置和修改颜色,PutWeight为设置和修改体重,PutAge为设置和修改年龄,它们都设置为公有函数,还要有一个1个3个参数的函数SetCat。
设计Display函数输出猫的信息。
#include
classCat
{
privateStringcolour;
privateintweight;
privateintage;
...
intgetWeight(){returnweight;}
intgetAge(){returnage;}
voidsetClolur(StringxClolour){colour=xCloour;}
voidsetWeight(intxWeight){weight=xWeight;}
voidsetAge(intxAge){age=xAge;}
}
3、设计一个表示学习成绩的类,至少包括三门课程的成绩,可以设置、显示每门课程的成绩,可以计算、显示平均成绩。
classGrades{
private:
intMath,English,Chinese;
public:
Grades(){Math=English=Chinese=0;}
Grades(inta,intb,intc)
{
Math=a;
English=b;
Chinese=c;
}
intgetM(){returnMath;}
intgetE(){returnEnglish;}
intGetC(){returnChinese;}
voidSetvalue(inta,intb,intc)
{
Math=a;
English=b;
Chinese=c;
}
voidDisplay();
floatAverage()
{
return(Math+English+Chinese)/3.0;
}
}
4、设计成绩类,成绩类的数据成员,应该包括学生的学号Number[10]和姓名Name[9],假设有3门课,分别为C++程序设计语言,用整型变量Cpp表示;计算机原理,用整型变量Computer表示;数据库,用整型变量DataBase表示。
平均成绩用实型变量Average表示。
为了Grade类数据的安全性,数据成员全部为私有成员,对成绩类的属性数据用一些函数进行设置和修改,PutNo为设置和修改学号,PutName为设置和修改姓名,PutCpp为设置和修改C++程序设计语言的成绩,PutCom为设置和修改计算机原理的成绩,PutData为设置和修改数据库的成绩,还有一个同时设置所有5个参数的函数SetGrade,它们都设置为公有函数。
计算平均成绩的函数为Calc,设计函数Display输出成绩。
有时可能要查看某个学生的成绩,所以设计比较学号的函数为ComNo,设计比较姓名的函数为ComName,GetCpp为读取C++程序设计语言的成绩,GetCom为读取计算机原理的成绩,GetData为读取数据库的成绩,设计读取平均成绩的函数为GetAvg。
计算平均成绩只是在类的内部实现,所以设计为私有函数,其它都为公有函数。
综合实训
设计一个表示整型数据的集合类,可以对集合中的数据进行添加、删除,可以判断一个整数是否在这个集合里,可以求出集合数据的多少,可以判断集合的空与满,空集合就是没有数据元素,满集合就是数据元素已经占满给出的存储单元。
两个集合可以做交运算,就是将两个集合的公共数据组成一个新的集合。
两个集合可以做并运算,就是将两个集合的所有数据组成一个新的集合。
要求如下:
(1)分析集合类的数据属性要求;
(2)分析集合类的操作属性要求;
(3)编制集合类的接口定义;
(4)实现集合类的属性函数。
#include
//formthedata
structData
{
longnum;
Data*next;
};
//thesetclass
classGather
{
public:
Gather(int=5);
//~Gather();
voidform(int);
voiddel();
voidsetGather();
voidprint();
voidadd(int);
Data*getptr(){returnptr;}
Gather&operator=(Gather&);
Gather&operator+(Gather&);
Gather&operator*(Gather&);
private:
intLEN;
Data*ptr;
};
Gatherinside;
Gather:
:
Gather(inta){form(a);}
voidGather:
:
form(inta)
{
LEN=a;
Data*p;
for(inti=0;iif(i==0){
ptr=newData;
p=ptr;
}
else{
p->next=newData;
p=p->next;
}
}
p->next=NULL;
}
//Gather:
:
~Gather(){del();}
voidGather:
:
del()
{
Data*p;
Data*q;
p=ptr;
for(inti=0;iq=p;
p=p->next;
deleteq;
}
LEN=0;
}
voidGather:
:
setGather()
{
Data*p;
p=ptr;
for(inti=0;icout<<"Enteritem"<
";
cin>>p->num;
p=p->next;
}
}
voidGather:
:
print()
{
if(LEN==0)
cout<<"It'sanemptyset!
"<Data*p;
p=ptr;
for(inti=0;icout<num<<"";
p=p->next;
if(i!
=0&&i%10==0)cout<}
}
voidGather:
:
add(intt)
{
booly=true;
Data*p;
p=ptr;
for(inti=0;iif(p->num==t){
y=false;
break;
}
if(i!
=LEN-1)p=p->next;
}
if(y){
p->next=newData;
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(inti=0;ip->num=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(inti=0;ip->num=q->num;
p=p->next;
q=q->next;
}
q=x.ptr;
for(i=0;iinside.add(q->num);
q=q->next;
}
returninside;
}
Gather&Gather:
:
operator*(Gather&x)
{
intz=0;
longg[100];
booly=true;
Data*p;
Data*q;
p=ptr;
q=x.ptr;
for(inti=0;iq=x.ptr;
for(intj=0;jif(p->num==q->num){
for(intt=0;tif(p->num==g[t]){
y=false;
break;
}
if(y){
g[z]=p->num;
z++;
break;
}
y=true;
break;
}
elseq=q->next;
}
p=p->next;
}
inside.del();
inside.form(z);
Data*pre;
pre=inside.getptr();
for(i=0;ipre->num=g[i];
pre=pre->next;
}
returninside;
}
//themain
intmain()
{
Gatherx(6);
Gathery;
Gatherresult;
cout<<"Entertheitemofsetx:
"<x.setGather();
cout<<"Theitemsofxis:
"<x.print();
cout<cout<<"Entertheitemofsety:
"<y.setGather();
cout<<"Theitemsofyis:
"<y.print();
cout<cout<<"Theresultofx+yis:
"<result=x+y;
result.print();
cout<cout<<"Theresultofx*yis:
"<result=x*y;
result.print();
cout<cout<<"Entertheitemyouwanttoaddtox:
";
inta;
cin>>a;
x.add(a);
cout<<"Nowxis:
";
x.print();
cout<inside.del();
result.del();
x.del();
y.del();
return0;
}
(四)对象实训
基础实训
1、读程序写结果;
2、设计计算图形面积的程序,图形有圆和长方形,计算半径为15、23、37的圆和长宽分别为(32,56)、(21,45)的长方形等五个图形的面积。
classrect
{
private:
floatlength;
floatwidth;
public:
rect(floatl,floatw);
voidputwidth(floatw);
voidputlength(floatl);
floatgetwidth()const;
floatgetlength()const;
floatArea()const;
floatTotal()const;
};
rect:
:
rect(floatl=0,floatw=0)
{
length=l;
width=w;
}
voidrect:
:
putwidth(floatw)
{
width=w;
}
voidrect:
:
putlength(floatl)
{
length=l;
}
floatrect:
:
getlength()const
{
returnlength;
}
floatrect:
:
getwidth()const
{
returnwidth;
}
floatrect:
:
Area()const
{
returnlength*width;
}
floatrect:
:
Total()const
{
return2*(length+width);
}
//rect.cpp
#include
#include
#include"rect.h"
#in