车辆信息管理程序的设计与实现

qiuxuezhizi 2007-07-21 11:29:33
小弟今年刚上大一。40学时C++就讲完了。现在期末复习阶段又来了两周的课程设计。复习时间都给挤没了。本人对计算机非常着迷。所以选择了计算机专业。但大学的课程安排不是很合理。不管怎么说,还是自己不够努力。还是说正题吧。
这个问题可能有些麻烦,如果哪位前辈有时间给小弟指点一下就好。
一、问题描述
某公司需要开发一个车辆管理程序,其所管理的车辆主要有客车,小轿车,卡车。每种车辆具有车辆编号,汽车号牌,车辆制造公司,车辆购买时间,车辆型号,耗油量/公里,基本维护费,累积总费用等信息。客车还具有座位数量等信息。
每台车辆当月总费用=油价*耗油量/公里+基本维护费
基本维护费:客车为2000元/月,小轿车为级别系数*1000元/月,卡车为1500元/月。
二、系统设计要求:
1、 根据问题描述进行类的设计
抽象出基类,确定基类的数据成员和成员函数;确定派生类数据成员和成员函数。实现各构造函数和析构函数,达到初始化和清理目的。实现各成员函数,实现对各数据成员的读取和设置。
2、 通过文件储存各种车辆信息。
3、 车辆编号在生成车辆信息时同时生成,每输入一个新车辆信息编号自动顺序加1。
4、 能按照车辆编号查找,添加,删除,更新,显示各车辆的信息
5、 可以设置和统计每台车辆的月平均费用等。
6、 程序有简单的菜单功能。
小弟写的程序如下:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include"pinfo.h"
void main()
{
char Info;
cout<<"=================添加车辆信息请输入P================="<<endl;
cout<<"=================删除车辆信息请输入D================="<<endl;
cout<<"=================查找车辆信息请输入S================="<<endl;
cout<<"=================更新车辆信息请输入U================="<<endl;
cout<<"=================显示车辆信息请输入V================="<<endl;
cout<<"=================输入菜单项目请输入M================="<<endl;
cin>>Info;
if(Info=='M'){ //显示菜单
fstream outfile;
outfile.open("file1.txt",ios::in|ios::out|ios::ate);
if(!outfile)
{
cout<<"file1.txt can't open.\n";
abort();
}
outfile<<" ┌────────────┐"<<endl;
outfile<<" │ │"<<endl;
outfile<<" │ 车辆信息管理系统 │"<<endl;
outfile<<" │ │"<<endl;
outfile<<" └────────────┘"<<endl;
outfile<<"车种 "<<"车辆编号 "<<"汽车号牌 "<<"制造公司 "<<"购买时间 "<<"车辆型号 "<<endl;
outfile.close();
}
else if(Info=='P')
PInfo();
else if(Info=='D'){ //删除信息
fstream infile;
infile.open("file1.txt",ios::in);
if(!infile){
cout<<"file1.txt can't open.\n";
abort();
}
char s[150];
while(!infile.eof()){
infile.getline(s,sizeof(s));
cout<<s<<endl;
}
Machine Number;
int d1,d2;
// d2=Number.get();
cout<<"请输入要删除汽车的编号:";
cin>>d1;
if(d1==d2)
cout<<"OK!!!!!!:";
else
cout<<"error\n";
}
else if(Info=='S'){ //查找信息
fstream infile;
infile.open("file1.txt",ios::in);
if(!infile){
cout<<"file1.txt can't open.\n";
abort();
}
char s[80];
while(!infile.eof()){
infile.getline(s,sizeof(s));
cout<<s<<endl;
}
infile.close();
char s1;
cout<<"请输入要查找汽车的编号:";
cin>>s1;
char * index(char *s,char s1);
if(s1=='s')
cout<<"YES!!!!!!:";
else
cout<<"error\n";
}
else if(Info=='U') //更新信息
PInfo();
else if(Info=='V'){ //显示信息
fstream infile;
infile.open("file1.txt",ios::in);
if(!infile){
cout<<"file1.txt can't open.\n";
abort();
}
char s[150];
while(!infile.eof()){
infile.getline(s,sizeof(s));
cout<<s<<endl;
}
infile.close();
}
else
cout<<"error!\n";
}
...全文
403 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuxuezhizi 2007-07-22
  • 打赏
  • 举报
回复
难道就没有人肯帮我看下程序吗?
qiuxuezhizi 2007-07-21
  • 打赏
  • 举报
回复
头文件如下:
class Machine //定义基类
{
public:
Machine(){
int i;
for(i=0;i<100;i++){
cout<<"请输入车种:";
cin>>Kind;
Number=Number+1;
cout<<"请输入汽车号牌:";
cin>>Tag;
cout<<"请输入车辆制造公司:";
cin>>Company;
cout<<"请输入汽车的购买时间:";
cin>>Time;
cout<<"请输入车辆型号:";
cin>>Type;
char p;
cout<<"如果想退出输入请输入e,想继续输入请输入c:";
cin>>p;
if(p=='e')
break;
else continue;
}
}
void Mprint(){
cout<<"车种是:"<<Kind<<endl;
cout<<"车辆编号是:"<<Number<<endl;
cout<<"车辆号牌是:"<<Tag<<endl;
cout<<"车辆制造公司是:"<<Company<<endl;
cout<<"汽车的购买时间是:"<<Time<<endl;
cout<<"车辆的型号是:"<<Type<<endl;
}
~Machine(){};
public:
static int Number;
char Tag[40],Type[40],Company[40],Time[40],Kind[40];
};
int Machine::Number=0;
class Bus:public Machine //定义派生类公有继承基类
{
public:
Bus(){
cout<<"请输入客车的座位数:";
cin>>Seats;
cout<<"请输入客车所行驶的公里数:";
cin>>Bmileage;
Bmoney=Bprice*Bconsume*Bmileage+Bmend;
}
void Bprint(){
cout<<"客车的座位数:"<<Seats<<endl;
cout<<"当月总费用:"<<Bmoney<<endl;
}
~Bus(){};
public:
int Seats;
double Bmoney,Bmileage;
static double Bprice;
static double Bconsume;
static int Bmend;
};
double Bus::Bprice=5.0;
double Bus::Bconsume=20.0;
int Bus::Bmend=2000;
class Car:public Machine //定义派生类公有继承基类
{
public:
Car(){
cout<<"请输入小轿车的级别系数(1-10):";
cin>>level;
cout<<"请输入小轿车所行驶的公里数:";
cin>>Cmileage;
double Cmend;
Cmend=level*1000;
Cmoney=Cprice*Cconsume*Cmileage+Cmend;
}
void Cprint(){
cout<<"小轿车的级别系数是:"<<level<<endl;
cout<<"当月总费用:"<<Cmoney<<endl;
}
~Car(){};
public:
int level;
double Cmoney,Cmileage;
static double Cprice;
static double Cconsume;
};
double Car::Cprice=7.0;
double Car::Cconsume=10;
class Truck:public Machine //定义派生类公有继承基类
{
public:
Truck(){
cout<<"请输入卡车行驶的公里数:";
cin>>Tmileage;
Tmoney=Tprice*Tconsume+Tmend;
}
void Tprint(){
cout<<"当月总费用:"<<Tmoney<<endl;
}
~Truck(){};
public:
double Tmoney,Tmileage;
static double Tprice;
static double Tconsume;
static int Tmend;
};
double Truck::Tprice=10.0;
double Truck::Tconsume=30;
int Truck::Tmend=1500;
#include<iostream.h>
#include"machine.h"
#include"bus.h"
#include"car.h"
#include"truck.h"
void PInfo(){ //信息输入函数
fstream outfile;
outfile.open("file1.txt",ios::in|ios::out|ios::ate);
if(!outfile)
{
cout<<"file1.txt can't open.\n";
abort();
}
int j,k,l;
char Kind1;
cout<<"输入客车信息请输入B,轿车信息请输入C,卡车信息请输入T:";
cin>>Kind1;
if(Kind1=='B'){ //输入客车信息
for(j=0;j<100;j++){
Bus b;
b.Mprint();
b.Bprint();
outfile<<b.Kind<<'\t'<<b.Number<<'\t'<<'\t'<<b.Tag<<'\t'<<'\t'<<b.Company<<'\t'<<'\t'<<b.Time<<'\t'<<b.Type<<endl;
outfile<<"座位数是:"<<b.Seats<<'\t'<<"行驶的公里数:"<<b.Bmileage<<'\t'<<"当月总费用是:"<<b.Bmoney<<endl;
char q;
cout<<"如果想退出输入请输入e,想继续输入请输入c:";
cin>>q;
if(q=='e')
break;
else continue;
}
}
if(Kind1=='C'){ //输入轿车信息
for(k=0;k<100;k++){
Car c;
c.Mprint();
c.Cprint();
outfile<<c.Kind<<'\t'<<c.Number<<'\t'<<'\t'<<c.Tag<<'\t'<<'\t'<<c.Company<<'\t'<<'\t'<<c.Time<<'\t'<<c.Type<<endl;
outfile<<"小轿车的级别系数是:"<<c.level<<'\t'<<"行驶的公里数:"<<c.Cmileage<<'\t'<<"当月总费用是:"<<c.Cmoney<<endl;
char r;
cout<<"如果想退出输入请输入e,想继续输入请输入c:";
cin>>r;
if(r=='e')
break;
else continue;
}
}
else if(Kind1=='T'){ //输入卡车信息
for(l=0;l<100;l++){
Truck t;
t.Mprint();
t.Tprint();
outfile<<t.Kind<<'\t'<<t.Number<<'\t'<<'\t'<<t.Tag<<'\t'<<'\t'<<t.Company<<'\t'<<'\t'<<t.Time<<'\t'<<t.Type<<endl;
outfile<<"行驶的公里数:"<<t.Tmileage<<'\t'<<"当月总费用是:"<<t.Tmoney<<endl;
char s;
cout<<"如果想退出输入请输入e,想继续输入请输入c:";
cin>>s;
if(s=='e')
break;
else continue;
}
}
else
cout<<"error!\n";
outfile.close();
}
上述代码实现了数据的添加,但编号自动加一没有实现,第一次运行程序输入3个数据编号分别是1,2,3;第二次运行输入3个数据编号还是1,2,3;这个功能没有实现。
数据往文本里写入和输出显示也已经实现。
现在还有,查找并输出和删除没有实现。
还有就是5、 可以设置和统计每台车辆的月平均费用等。没有实现。
总感觉思路错了。
如果有前辈能指点小弟一下,小弟感激不尽。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧