c++课程设计汽车类的设计.docx
- 文档编号:29725269
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:25
- 大小:167.10KB
c++课程设计汽车类的设计.docx
《c++课程设计汽车类的设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计汽车类的设计.docx(25页珍藏版)》请在冰豆网上搜索。
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
#include
#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++程序设计课程设计.北京: 机械工业出版社,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 汽车 设计