C++课程设计汽车类的设计.docx

上传人:b****7 文档编号:16269500 上传时间:2023-07-12 格式:DOCX 页数:24 大小:165.03KB
下载 相关 举报
C++课程设计汽车类的设计.docx_第1页
第1页 / 共24页
C++课程设计汽车类的设计.docx_第2页
第2页 / 共24页
C++课程设计汽车类的设计.docx_第3页
第3页 / 共24页
C++课程设计汽车类的设计.docx_第4页
第4页 / 共24页
C++课程设计汽车类的设计.docx_第5页
第5页 / 共24页
C++课程设计汽车类的设计.docx_第6页
第6页 / 共24页
C++课程设计汽车类的设计.docx_第7页
第7页 / 共24页
C++课程设计汽车类的设计.docx_第8页
第8页 / 共24页
C++课程设计汽车类的设计.docx_第9页
第9页 / 共24页
C++课程设计汽车类的设计.docx_第10页
第10页 / 共24页
C++课程设计汽车类的设计.docx_第11页
第11页 / 共24页
C++课程设计汽车类的设计.docx_第12页
第12页 / 共24页
C++课程设计汽车类的设计.docx_第13页
第13页 / 共24页
C++课程设计汽车类的设计.docx_第14页
第14页 / 共24页
C++课程设计汽车类的设计.docx_第15页
第15页 / 共24页
C++课程设计汽车类的设计.docx_第16页
第16页 / 共24页
C++课程设计汽车类的设计.docx_第17页
第17页 / 共24页
C++课程设计汽车类的设计.docx_第18页
第18页 / 共24页
C++课程设计汽车类的设计.docx_第19页
第19页 / 共24页
C++课程设计汽车类的设计.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++课程设计汽车类的设计.docx

《C++课程设计汽车类的设计.docx》由会员分享,可在线阅读,更多相关《C++课程设计汽车类的设计.docx(24页珍藏版)》请在冰点文库上搜索。

C++课程设计汽车类的设计.docx

C++课程设计汽车类的设计

 

1题目内容及设计要求

题目名称:

汽车类的设计

设计一个汽车类Vehicle,具有带参数的构造函数,保护型数据成员有:

车轮个数wheels和车重weight,有成员函数Show()显示数据;由此派生出Car类,其中包含数据:

品牌,载人数passenger,排气量,构造函数,成员函数Show()显示数据;由Vehicle再派生出truck类,其中包含数据:

品牌,载人数passenger,和载重量payload,构造函数,成员函数Show()显示数据;主函数中用基类指针调用派生类的Show()函数,能输入输出数据,输入若干Car类和truck类数据记录,到对象数组中,数据保存到文件中。

能显示所有数据,能删除记录,按品牌查找记录。

为了允许用户交替选择各功能,使用菜单实现选择功能。

2总体设计

2.1总体功能框图

图2-1总体功能框图

2.2类的设计说明

vehicle

-wheels:

int

-weight:

int

+vehicle(intwh,intwe):

void

+show():

void

+ShowMenu():

void

+set(intwh,intwe):

void

car

-passenger:

int

-brand:

string

-emmi:

int

+car(intpa,intem,stringbr,intwh,intwe):

void

+setcar(stringbr,intpa,intem,intwh,intwe):

void

+findcar():

void

+deletecar():

void

truck

-passenger_load:

int

-brand:

string

-pay_load:

int

+truck(intpa,intp_load,stringbr,intwh,intwe):

void

+settruck(stringbr,intpa,intp_load,intwh,intwe):

void

+findtruck():

void

+deletetruck():

void

图2-2UML图

解释说明:

Vehicle:

汽车管理类

私有类数据wheels:

int:

整型数据车轮个数

weight:

int:

整形数据车重

共有类成员vehicle(intwh,intwe):

void:

构造函数

show():

void:

显示数据的函数

ShowMenu():

void:

显示菜单函数

由Vehicle类派生出小汽车car类

私有数据:

passenger:

int:

整型数据载客人数

brand:

string:

字符串型数据品牌

emmi:

int:

整型数据排气量

共有成员:

car(intpa,intem,stringbr,intwh,intwe):

void:

构造函数

setcar(stringbr,intpa,intem,intwh,intwe):

void:

设置函数,完成新增轿车信息操作

indcar():

void:

能够查找轿车信息的成员函数

deletecar():

void:

能够删除轿车信息成员函数

由Vehicle类派生出小汽车truck类

私有数据:

passenger_load:

int:

整型数据载客人数

brand:

string:

字符串型数据品牌

pay_load:

int:

整型数据载重量

公有成员:

truck(intpa,intp_load,stringbr,intwh,intwe):

void:

构造函数

show():

void:

显示数据的函数

settruck(stringbr,intpa,intp_load,intwh,intwe):

void:

设置函数,完成新增卡车信息操作

findtruck():

void:

能够查找轿车信息的成员函数

deletetruck():

void:

能够删除轿车信息成员函数

3程序清单及注释

#include

#include//定义string类型数据

#include//调用system

#include//定义基本输入输出头文件

#include//定义关于文件的头文件完成文件文件读写操作

usingnamespacestd;//引入C++标准命名空间std

classVehicle//定义交通工具类Vehicle

{

protected:

intwheels;//车轮个数

floatweight;//车重

public:

Vehicle(intwh,floatwe)//声明构造函数

{wheels=wh;weight=we;}

voidshow()//声明显示数据的成员函数

{

cout<<"Thewheelsare"<

cout<<"Theweightare"<

}

voidShowMenu()//按指定格式显示菜单的成员函数

{

cout<<"********************************************************************************"<

cout<<"〓〓〓〓〓〓〓〓〓〓☆汽车分类管理系统☆〓〓〓〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓★★★★★★★★★★★★★★★★★〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓〓〓★☆1.新增轿车☆★〓〓〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓〓〓★☆2.新增卡车☆★〓〓〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓〓〓★☆3.查找轿车品牌☆★〓〓〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓〓〓★☆4.查找卡车品牌☆★〓〓〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓〓〓★☆5.删除轿车记录☆★〓〓〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓〓〓★☆6.删除卡车记录☆★〓〓〓〓〓〓〓〓〓"<

cout<<"〓〓〓〓〓〓〓〓〓★☆0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"<

cout<<"\n\t\t\n\t\t请选择:

";

}

voidset(intwh,intwe)//设置信息

{wheels=wh;weight=we;}

};

classcar:

publicVehicle//vehicle的派生类car类的声明

{

private:

intpassenger;//载客人数

stringbrand;//品牌

intemmi;//排气量

public:

car(intpa,intem,stringbr,intwh,intwe):

Vehicle(wh,we)//定义构造函数

{

passenger=pa;

brand=br;

emmi=em;

}

voidsetcar(stringbr,intpa,intem,intwh,intwe)//设置轿车信息

{

passenger=pa;

brand=br;

emmi=em;

Vehicle:

:

set(wh,we);

ofstreamout;//定义输出流对象out

out.open("f:

\\vehicle.txt",ios:

:

app);//打开文件,并使输出追加到文件尾

if(!

out)//判断是否输入正确

{cout<<"can'topenfile!

"<

out<<"品牌"<

out.close();//关闭文件

}

voidfindcar()//查找轿车信息的成员函数

{

cout<

";

stringp;

cin>>p;//输入一个字符串,与文件中的每一段的第一个字符串进行比较

ifstreamreFile("f:

\\Vehicle.txt");//定义输入流对象reFile并打开vehicle文件

if(!

reFile)//检测文件打开是否成功

{

cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

boolDelet=false;

while(!

Delet)

{

if(brand==p)//比对输入的品牌与文件中的品牌

{

cout<<"您查找的的车辆档案信息如下:

"<

cout<<"品牌"<

Delet=true;

}

}

reFile.close();//关闭文件

system("pause");//暂停屏幕,以便观察结果

if(false==Delet)cout<<"Sorry!

没有您所要查找的车辆的档案信息,请仔细核对!

O(∩_∩)O谢谢!

"<

}

voiddeletecar()//删除轿车信息的成员函数

{

cout<

";

stringp;

cin>>p;//输入一个字符串,与文件中的每一段的第一个字符串进行比较

ifstreamreFile("f:

\\Vehicle.txt");//定义输入流对象,并打开文件

if(!

reFile)//检测文件打开是否成功

{

cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

boolDelet=false;

while(!

Delet)

{

if(brand==p)

{

cout<<"您想删除的车辆档案信息如下:

"<

cout<<"品牌"<

ofstreamtemFile1("f:

\\Vehicle.txt");

if(!

temFile1)

{cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

temFile1<

temFile1.close();//关闭文件

Delet=true;//将Delet值改为true以结束循环

}

else

{

ofstreamtemFile2("f:

\\Vehicle.txt");

if(!

temFile2)

{

cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

temFile2<

temFile2.close();

}

}

if(false==Delet)cout<<"Sorry!

没有您所要删除的车辆的档案信息,请仔细核对!

O(∩_∩)O谢谢!

"<

reFile.close();

system("delf:

\\Vehicle.txt");

cout<<"该车辆档案信息已经删除!

"<

system("pause");

}

};

classtruck:

publicVehicle//vehicle的派生类truck类的声明

{

private:

intpassenger;//载客人数

stringbrand;//品牌

intpayload;//载重量

public:

truck(intpa,intpload,stringbr,intwh,intwe):

Vehicle(wh,we)//定义构造函数

{

passenger=pa;

payload=pload;

brand=br;

}

voidsettruck(stringbr,intpa,intpload,intwh,intwe)//设置卡车类信息的函数

{

passenger=pa;

brand=br;

payload=pload;

Vehicle:

:

set(wh,we);

ofstreamout;//定义输出流对象out

out.open("f:

\\Vehicle.txt",ios:

:

app);//打开文件,并使输出追加到文件尾

if(!

out)//判断是否输入正确

{cout<<"can'topenfile!

"<

out<<"品牌"<

out.close();//关闭文件

}

voidfindtruck()//查找卡车信息的函数

{

cout<

";

stringp;

cin>>p;//输入一个字符串,与文件中的每一段的第一个字符串进行比较

ifstreamreFile("f:

\\Vehicle.txt");//定义输入流对象reFile并打开vehicle文件

if(!

reFile)//检测文件打开是否成功

{

cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

boolDelet=false;

while(!

Delet)

{

if(brand==p)//比对输入的品牌与文件中的品牌

{

cout<<"您查找的的车辆档案信息如下:

"<

cout<<"品牌"<

Delet=true;

}

}

reFile.close();

system("pause");

if(false==Delet)cout<<"Sorry!

没有您所要查找的车辆的档案信息,请仔细核对!

O(∩_∩)O谢谢!

"<

}

voiddeletetruck()//删除卡车信息的函数

{

cout<

";

stringp;

cin>>p;//输入一个字符串,与文件中的每一段的第一个字符串进行比较

ifstreamreFile("f:

\\Vehicle.txt");//定义输入流对象reFile并打开vehicle文件

if(!

reFile)//检测文件打开是否成功

{

cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

boolDelet=false;

while(!

Delet)

{if(brand==p)//比对输入的品牌与文件中的品牌

{cout<<"您想删除的车辆档案信息如下:

"<

cout<<"品牌"<

ofstreamtemFile1("f:

\\Vehicle.txt");

if(!

temFile1)

{cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

temFile1<

temFile1.close();//关闭文件

Delet=true;//将Delet值改为true以结束循环

}

else

{

ofstreamtemFile2("f:

\\Vehicle.txt");

if(!

temFile2)

{cerr<<"Error!

CannotopentheFile!

"<

exit

(1);

}

temFile2<

temFile2.close();

}

}

if(false==Delet)cout<<"Sorry!

没有您所要删除的车辆的档案信息,请仔细核对!

O(∩_∩)O谢谢!

"<

reFile.close();

system("delf:

\\Vehicle.txt");

cout<<"该车辆档案信息已经删除!

"<

system("pause");

}

};

intmain()//主函数

{

intx,i=0;

intpa;stringbr;intem;intwh;intwe;intp_load;

vehicleve1(4,100);//定vehicle类对象ve1

carc(100,4,"fengtian",4,300);//派生类car的对象c

truckt(10,6,"wuzhou",4,300);//派生类truck的对象t

boolquit=false;

cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<

for(i=0;i<3;i++)

cout<<"\t\t◎\t\t\t\t\t\t◎"<

cout<<"\t\t◎★★★★【欢迎进入汽车分类管理系统】★★★★◎"<

for(i=0;i<3;i++)

cout<<"\t\t◎\t\t\t\t\t\t◎"<

cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<

cout<<"按任意键开始……";

getch();

while(!

quit)

{system("cls");//清屏

ve1.ShowMenu();//调用显示主菜单的成员函数

cin>>x;

switch(x)

{

case0:

quit=true;break;

case1:

cout<<"请输入新增轿车信息:

品牌载人数排气量车轮个数车重"<

cin>>br>>pa>>em>>wh>>we;

c.setcar(br,pa,em,wh,we);break;//调用派生类car类中的成员函数

case2:

cout<<"请输入新增卡车信息:

品牌载人数载重量车轮个数车重"<

cin>>br>>pa>>p_load>>wh>>we;

t.settruck(br,pa,p_load,wh,we);//调用派生类truck中的成员函数

break;

case3:

c.findcar();//调用派生类car类中的成员函数

break;

case4:

t.findtruck();//调用派生类truck中的成员函数

break;

case5:

c.deletecar();//调用派生类car类中的成员函数

break;

case6:

t.deletetruck();//调用派生类truck中的成员函数

break;

}

}

system("pause");

return0;

}

4运行结果与分析

欢迎界面由main主函数中输出,运行情况如图4-1;然后通过调用vehicle类的成员函数显示主菜单,主菜单界面如图4-2;通过switch结构由用户选择所需功能,功能实现分别通过调用car类和truck类成员函数实现,结果如图4-3~4-15。

运行程序,即出现界面,如图4-1

 

按任意键进入主菜单,如图4-2

按1选择新增轿车后,如图4-3

输入需要的轿车信息后,如图4-4

选择2新增卡车信息后,如图4-5

输入所需卡车信息后,如图4-6

 

选择3查找轿车品牌,如图4-7

输入所要查找的轿车品牌后如图4-8

 

选择4查找卡车品牌图4-9

输入要查找的卡车品牌后,如图4-10

选择5删除轿车记录,如图4-11

输入要删除的轿车品牌,如图4-12

选择6删除卡车记录,如图4-13

输入要删除的卡车品牌,如图4-14

选择0退出系统,如图图4-15

5总结

通过本学期对C++语言的学习以及对C++语言和C语言的对比,我对计算机语言有了更进一步的了解,这也使我在计算机语言的学习上有了更大的进步。

本次“汽车类的设计”课程设计使用了类,派生,文件的读写操作等方法,从多个侧面诠释C++语言程序在结构,内容以及设计思路上的特点,并且较好的达到了题目的设计要求。

虽然在设计过程中遇到了许多问题,但通过查阅相关资料和书籍,相关问题均得到了很好的解决。

本次课程设计不仅让我在课程中学习到的知识得到了实践,也使我得到了许多相关的额外知识,更重要的是,本次课程设计为我今后的学习和实践提供了宝贵的经验。

6参考文献

[1]李爱华,程磊著.面向对象程序设计(C++语言).北京:

清华大学出版社,2010

[2]刘振安,刘燕君著.C++程序设计课程设计.北京:

机械工业出版社,20

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2