湖南涉外经济学院
课程设计报告
课程名称: 面向对象程序设计
报告题目: 汽车销售系统的设计与实现
学生姓名:
所在学院: 信息科学与工程学院
专业班级:
学生学号:
指导教师: 黄 胜
2015 年6 月20日
摘 要
本次课程设计的是汽车销售系统,本汽车销售系统定义了对汽车品牌、名字、类型、版本、颜色、售价的排序类以及用户结账时的打折方式类。在管理员函数中中还建立了对总业绩进行计算并查看。本次课程设计报告中提供了源程序代码,并展示了系统使用和运行效果。最后给出了高级语言程序设计过程中的总结,其中包含本程序设计,查阅的参考文献等方面的内容。
在本次课程设计中,通过建立CCarMenu类中的函数能够使管理员对汽车信息进行增加、删除、修改、查找操作,并在建立的函数中对销售菜单的写入和读取,在CCarMenu类中定义一个私有的容器用来存放每次打开系统后的销售清单,并方便管理员对容器内销售清单的调用。
在CCraMenuItem类中对汽车的品牌、名字、类型、版本、颜色、售价、成本价进行定义,并建立与之对应的修改和读取函数。在CCarMenuItem类中最后建立了操作提示的函数来告诉系统操作符与之对应的操作。
关键词:汽车销售;汽车信息;汽车购买;程序设计
目 录
一、概述................................................................................................................... - 1 -
1、背景............................................................................................................. - 1 -
2、使用工具..................................................................................................... - 1 -
3、成员工作分配............................................................................................. - 1 -
二、 系统设计......................................................................................................... - 2 -
1、功能模块图................................................................................................. - 2 -
2、流程图......................................................................................................... - 3 -
3、类图............................................................................................................. - 5 -
4、相关类及函数的详细描述......................................................................... - 6 -
三、代码实现........................................................................................................... - 9 -
1、主界面显示................................................................................................. - 9 -
2、用户界面................................................................................................... - 10 -
3、管理员界面............................................................................................... - 16 -
4、使用说明................................................................................................... - 20 -
四、心得体会......................................................................................................... - 21 -
一、概述
1、背景
随着时代的发展,人工销售系统已经无法满足汽车销售店对汽车销售的需求,只有将销售系统信息化才能减轻人们的需求。然而汽车销售系统是典型的信息系统,其开发应该满足用户对汽车进行查看与购买,以及管理员对汽车信息的增加、删除、修改、查找,并对日总业绩进行查看。能够使系统对销售菜单进行菜单的写入和读取。
2、使用工具
Microsoft Visual C++ 6.0简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。
StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强。
Office Visio 20## 是一款便于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。使用具有专业外观的 Office Visio 20## 图表,可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策。
3、成员工作分配
组长石凯文:负责程序代码的编写和程序的实现,并对课程设计报告进行最 后的检查和修改。
组员银 柯:负责程序最后的调试和检测,对程序进行完善并撰写报告。
组员李其忠:负责报告的补充和报告的制图与插入。
组员王 晶:负责报告初步检查和报告的打印。
二、系统设计
1、功能模块图
功能模块图应当含有对整个程序所有功能的简单描述与其程序中功能的正确连线。功能模块图如图2.1所示:
图2.1 功能模块图
2、流程图
用户使用流程图如图2.2所示:
图2.2 用户使用流程图
管理员使用流程图如图2.3所示:
图2.3 管理员使用流程图
3、类图
类图如下图2.4所示:
图2.4 类图
4、相关类及函数的详细描述
CCarMenuItem //汽车子菜单信息类
SetBrand() //品牌 修改函数
GetBrand() //品牌 读取函数
SetName() //车名 修改函数
GetName() //车名 读取函数
SetColour() //颜色 修改函数
GetColour() //颜色 读取函数
SetVersion() //版本 修改函数
GetVersion() //版本 读取函数
SetType() //类型 修改函数
GetType() //类型 读取函数
SetMoney() //售价 修改函数
GetMoney() //售价 读取函数
SetIprice() //成本价 修改函数
GetIprice() //成本价 读取函数
Show() //显示函数
operator==() //操作提示==函数
operator<<() //操作提示<<函数
operator>>() //操作提示>>函数
CCarMenu //汽车菜单类
AddCCarMenuItem() //添加函数
DelCCarMenuItem() //删除函数
FindCCarMenuItem() //查找函数
Empty() //致空函数
ShowMenu() //显示菜单函数
Show() //显示函数
SortByBrand() //品牌排序函数
SortByName() //名字排序函数
SortByVersion() //版本排序函数
SortByType() //类型排序函数
SortByColour() //颜色排序函数
SortByMoney() //售价排序函数
SaveFile() //写入函数
LoadFile() //读取函数
CCarDiscount //汽车打折类
Caculate() //计算函数
NoDiscount //不打折类
Caculate() //计算函数
VipDiscount //VIP打折类
Caculate() //计算函数
BrandCmp //品牌排序类
operator() //排序操作函数
NameCmp //名字排序类
operator() //排序操作函数
TypeCmp //类型排序类
operator() //排序操作函数
VersionCmp //版本排序类
operator() //排序操作函数
CColourCmp //颜色排序类
operator() //排序操作函数
MoneyCmp //售价排序类
operator() //排序操作函数
AddMenuItem() //添加汽车菜单函数
DelMenuItem() //删除汽车菜单函数
DelOrderCCarMenuItem() //退订汽车菜单函数
Help() //首页使用说明帮助函数
Main() //主函数函数
Main_Interface() //主函数界面菜单函数
Manager_Interface() //管理员菜单函数
OrderCCarMenuItem() //排序购买菜单函数
SelectDiscount() //打折菜单函数
ShopCCarMenuItem() //购车菜单函数
User_Interface() //用户菜单函数
三、代码实现
1、主界面显示
主界面显示如下图3.1所示:
图3.1 主界面显示
代码如下:
void Main_Interface()
{
bool flag=false;
while(!flag)
{
system("cls");
out<<"________________________________________________________"<<endl;
cout<<" 涉外汽贸SSSS店 "<<endl;
cout<<" 首页 "<<endl;
cout<<" 温馨提示:使用前请先查看使用说明! "<<endl;
cout<<" 1、用户界面 "<<endl;
cout<<" 2、管理界面 "<<endl;
cout<<" 3、使用说明 "<<endl;
cout<<" 4、退出 "<<endl;
cout<<"_______________________________________________________"<<endl;
cout<<" 请输入您的选择(1~3):";
int sel;
cin>>sel;
//******以下代码省略******
}//while
}//Main_Interface()
2、用户界面
用户界面显示如下图3.2所示:
图3.2用户界面显示
代码如下:
void user_Interface()
{
//******以上代码省略******
while(!flag)
{
system("cls");
cout<<"______________________________________________ "<<endl;
cout<<"____________ 涉外汽车SSSS店__________________"<<endl;
cout<<" ____________用户购车清单_________________ "<<endl;
cout<<" 1、显示已购清单 "<<endl;
cout<<" 2、选择排序购车 "<<endl;
cout<<" 3、放弃已选汽车 "<<endl;
cout<<" 4、结帐并返回 "<<endl;
cout<<"_______________________________________________"<<endl;
cout<<" 请输入您的选择(1~4):";
int sel;
cin>>sel;
//******以下代码省略******
}//while
}//user_Interface()
1)显示已购清单
显示已购清单代码如下:
void ShopCCarMenuItem(CCarMenu & saleMenu)
{
//******以下代码省略******
while(!flag)
{
system("cls");
menus.ShowMenu();//显示主菜单
cout<<"__________________________________________ ____"<<endl;
cout<<" 请输入您要购买的汽车:";
cin>>sel;
//******以下代码省略******
}//while
}//ShopCCarMenuItem
2)排序方式查看
排序方式进行查看代码如下:
void OrderCCarMenuItem(CCarMenu & saleMenu)
{
//******以上代码省略******
while(!flag)
{
system("cls");
cout<<"____________________________________________________"<<endl;
cout<<" ________________涉外汽车SSSS店___________________"<<endl;
cout<<" 1、以品牌字母顺序查看购买 "<<endl;
cout<<" 2、以车名字母顺序查看购买 "<<endl;
cout<<" 3、以类型字母顺序查看购买 "<<endl;
cout<<" 4、以版本字母顺序查看购买 "<<endl;
cout<<" 5、以颜色字母顺序查看购买 "<<endl;
cout<<" 6、以售价从低到高查看购买 "<<endl;
cout<<" 7、返回 "<<endl;
cout<<"___________________________________________________"<<endl; cout<<"请输入您的选择(1~7):";
int i;
cin>>i;
switch(i)
{
case 1:
menus.SortByBrand();
menus.ShowMenu();
ShopCCarMenuItem(saleMenu);
break;
case 2:
saleMenu.SortByName();
menus.ShowMenu();
system("pause");
ShopCCarMenuItem(saleMenu);
break;
case 3:
saleMenu.SortByType();
menus.ShowMenu();
system("pause");
ShopCCarMenuItem(saleMenu);
break;
case 4:
saleMenu.SortByVersion();
menus.ShowMenu();
system("pause");
ShopCCarMenuItem(saleMenu);
break;
case 5:
saleMenu.SortByColour();
menus.ShowMenu();
system("pause");
ShopCCarMenuItem(saleMenu);
break;
case 6:
saleMenu.SortByMoney();
menus.ShowMenu();
system("pause");
ShopCCarMenuItem(saleMenu);
break;
case 7:
flag=true;
break;
default:
cout<<"您输入的数字不正确,请重新输入!"<<endl;
break;
}//switch
}//while
}//OrderCCarMenuItem
3)退订汽车菜单
退订汽车代码如下:
void DelOrderCCarMenuItem(CCarMenu &saleMenu)
{
//******以上代码省略******
while(!flag)
{
system("cls");
saleMenu.ShowMenu ();//显示所订菜单
cout<<"________________________________________________"<<endl;
cout<<" _______________涉外汽车SSSS店________________"<<endl;
cout<<" 请输入您申请要退的车:";
cin>>sel;
//******以下代码省略******
}//while
}//DelOrderCCarMenuItem
4)选择打折的方式
选择打折的方式代码如下:
double SelectDiscount(CCarMenu &saleMenu)
{
//******以上代码省略******
while(!flag)
{
system("cls");
cout<<"__________________________________________________"<<endl;
cout<<"____________________涉外汽车SSSS店_______________"<<endl;
cout<<" 打折方式: "<<endl;
cout<<" 1、VIP打 折 "<<endl;
cout<<" 2、不 打 折 "<<endl;
cout<<"___________________________________________________"<<endl;
cout<<" 请输入您的方式:";
cin>>sel;
if(sel==1)
{
cout<<" 请输入打折的尺度:";
float dis=0;
cin>>dis;
ptr=new VipDiscount(dis);
return ptr->Caculate (saleMenu);
}
else if(sel==2)
{
ptr= new NoDiscount();
return ptr->Caculate(saleMenu);
}
//******以下代码省略******
}//while
return 0;
}//SelectDiscount
3、管理员界面
管理员界面如下图3.3所示:
图3.3 管理员界面
代码如下:
void Manage_Interface()
{
//******以下代码省略******
while(!flag)
{
system("cls");
cout<<"_________________________ ___________________ "<<endl;
cout<<" ______________涉外汽贸SSSS店___________ "<<endl;
cout<<" ______________管理员通道____________ "<<endl;
cout<<" 1、显示车辆信息 "<<endl;
cout<<" 2、添加车辆信息 "<<endl;
cout<<" 3、删除车辆信息 "<<endl;
cout<<" 4、结算日总业绩 "<<endl;
cout<<" 5、返回并保存信息 "<<endl;
cout<<"____________________________________________ "<<endl;
cout<<"请输入您的选择(1~5):";
int sel;
cin>>sel;
//******以下代码省略******
}//while
}//Manage_Interface()
1)添加汽车信息菜单
添加菜单代码如下:
void AddMenuItem( ) //添加菜单
{
//******以上代码省略******
while(!flag)
{
system("cls");
cout<<"____________________________________________________"<<endl;
cout<<" ________________涉外汽贸SSSS店__________________ "<<endl;
cout<<" 添加菜单 " <<endl;
cout<<" 请输入品牌:";
cin>>brand;
cout<<"\n 请输入车名:";
cin>>name;
cout<<"\n 请输入类型:";
cin>>type;
cout<<"\n 请输入版本:";
cin>>version;
cout<<"\n 请输入颜色:";
cin>>colour;
cout<<"\n 请输入售价:";
cin>>money;
cout<<"\n 请输入成本价:";
cin>>iprice;
//******以下代码省略******
}//while
}//AddMenuItem
2)删除汽车信息菜单
删除菜单代码如下:
void DelMenuItem( )
{
//******以上代码省略******
while(!flag)
{
system("cls");
menus.ShowMenu ();//显示主菜单
cout<<" 请输入您要删除车辆的信息:";
cin>>sel;
if(sel>menus.GetVector().size())
{
cout<<" ◆您的输入不正确,请在有效范围内输入! "<<endl;
cout<<"___________________________________________"<<endl;
cout<<""<<endl;
system("pause");
}
else
{
menus.DelCCarMenuItem ( (menus.GetVector ())[sel-1] );
cout<<"是否继续删除车辆信息?(yes or no):";
cin>>s;
if (s=="no")
{
flag=true;
}
}//if
}//while
}//DelMenuItem
3)日总业绩结算
float total=0;
int x=0;
vector<CCarMenuItem> v=totalSaleMenu.GetVector ();
vector<CCarMenuItem>::iterator iter=v.begin();
for(iter=v.begin();iter!=v.end();iter++)
{
total+=( (*iter).GetMoney()-(*iter).GetIprice() ) ;
++x;
}
cout<<"今天到现在为止共销售"<<x<<" 台车,总盈利"<<total<<"元 "<<endl;
cout<<"_____________________________________________________"<<endl;
system("pause");
4、使用说明
管理员界面如下图3.4所示:
图3.4使用说明
代码如下:
void Help()
{
cout<<"_________________________________________________ "<<endl;
cout<<" _________________涉外汽贸SSSS店_____________ "<<endl;
cout<<" ◆本软件是测试软件,若要使用本软件,请先将文件夹根目"<<endl;
cout<<" ◆SSSSCar.txt复制到计算机的D盘根目录! "<<endl;
cout<<" "<<endl;
system("pause");
}
四、心得体会
通过这两个星期汽车销售系统的设计与实现,我在多方面都有所提高。首先,整体与局部的把握,以及在系统设计前,需要整体思考汽车销售系统所包含的信息及其实现的功能,在设计过程中,再思考局部功能实现的完整性与整个程序的结合。
通过查阅课本、资料,进行对类、容器、迭代器和算法的熟悉和使用。让我了解了将汽车销售清单保存在容器中能够随时方便管理员对容器中的内容进行调用。在我制作的销售系统中,我在管理员界面的结算总业绩中通过迭代器遍历了容器中保存的所有销售车辆数和每台车的销售利润,并使用算法对所有销售车辆数进行相加,得到总销售车辆数,以及使用算法对每台车的销售利润进行相加,得到总销售利润。
其次,在实现管理员权限设置这个功能时,通过实现不同的人设置不同的操作。最后在整个程序运行时,考虑到汽车销售系统应该能够写入和读取汽车的信息,在制作程序时就通过系统自动建立了一个SSSSCar.txt的文本文档,能够将汽车信息添加保存到SSSSCar.txt文本文档中,并对SSSSCar.txt中的汽车信息进行读取。
通过这次课程设计使我对面向对象程序设计进行了系统复习,并使我独立思考能力方面有了适量提高,也让我知道了我在容器和迭代器的使用中的问题就是对容器和迭代器的不熟悉。我应该多看看课本以及资料,并学会其中的内容才能解决问题。
参考文献
[1] 郑莉、董渊、何江舟编著.《C++语音程序设计》.(第四版). 北京:清华大学出版社,2014
[2] 作者:Stanley B.Lippman .译者:李师贤、蒋爱军、梅晓勇、林瑛.《C++ Primier》中文版.(第四版).人民邮电出版社,2006
[3] 作者:Scott Meyers .译者:侯捷.《Effective C++》中文版. 华中科技大学出版社.2001