C++实验报告 姓 名:学 院:学 号:赵 妍 软件学院 14130140358
一、实验要求
? 完成一个完整的简化系统:一卡通乘车系统。
? 一卡通乘车系统主要完成的功能是,支持一卡通刷卡乘车;对每张一卡通的使用情况及费用进行统计;对每辆班车的运行情况进行统计。 ? 在实现该系统的功能时,不要求实现图形界面,控制台输出即可。 ? 必须采用面向对象程序设计的方式实现。
二、程序中所设计的类
class StuCard;
Class People; class bus;
三、类中的关键数据成员和成员函数
1、StuCard类
class StuCard { public:void pay();//上车刷卡时调用此函数,根据卡的类型扣除上车费用并给出 相应提示
int GetRest();//获取卡余额
StuCard(string name,string id,int money,int type,int count); string get_name(){return name; } string get_id(){return id;} int get_type(){return type;} int get_money(){return money;} int get_count(){return count;}//乘车次数 private:string name;//持卡人姓名 string id;//卡号 int money;//余额 int type;//卡的类型 (type=1,学生卡;type=2,教师卡;type=3,限制卡)
int count; //乘车次数
} ;//定义了一个StuCard的类,用type来区分卡的类型,用get_X函数在主函 数中来获得数据成员的值
2、bus类
struct time{ int hour; int minute; };
class bus{
string bnumber;//车牌号 string xnumber;//型号 int people;//载乘人数 string name;//驾驶员姓名 struct time stime;//发车时间 struct time etime;//到站时间 struct time t_stime;//实际发车时间 struct time t_etime;//实际到站时间
public:
bus(string bn,string xn,int p,string n,int sh,int sm,int eh,int em){
bnumber=bn; xnumber=xn; people=p; name=n; stime.hour=sh; stime.minute=sm; etime.hour=eh; etime.minute=em; }//构造函数
string get_b(){return bnumber;}//获得车牌号 string get_x(){return xnumber;}//获得车的型号 int get_p(){return people;}//获取上车人数 string get_n(){return name;}//获取驾驶员姓名 void Stime(int a,int b);//获取预计发车时间 void Etime(int c,int d);//获取预计到站时间
void show(string bnumber,string xnumber,int people,string name); void T_stime(int ta,int tb);//获取实际发车时间 void T_etime(int tc,int td);//获取实际到站时间
float peoplebi(float e,float f);//载乘人数比 int get_sthour(); //获得发车时间的小时 int get_stminute();//获得发车时间的分钟 int get_ethour();//获得到站时间的小时 int get_etminute();//获得到站时间的分钟 void stshow(int p,int q); void etshow(int x,int y); };
3、people类
class People{
string name;//姓名 string sex;//性别 string work;//职务 string office;//所属单位 string number;//学号/工号
public:
People(string n,string s,string w,string o,string b);//构造函数 void readPeople();//用于在主函数中读入人的信息
void show(string name,string sex,string work,string office,string
number);
};
void addPeople();//申请一张新卡 void deletePeople();//注销一卡通 string get_name(){return name;} string get_sex(){return sex;} string get_work(){return work;} string get_office(){return office;} string get_number(){return number;}
四、运行流程的说明
主程序分为两个系统:乘车系统和一卡通管理系统。 1、 乘车系统主要实现的功能如下:
首先,采用随机函数,生成本站会上车的人数,这个人数不超过车的最大载乘人数。其次,生成几个人上车,就依次输入几个人的卡号,持卡人在持卡上车时一卡通余额、乘车次数会发生变更,并且根据余额的多少会有相应提示信息,再将变更后的信息写入文件
公交车在每上一个人的时候乘车人数加一,到达最大载乘人数时提示不能再刷卡上车,并且采用随机函数,随机生成预计发车时间、预计到站时间,实际发车时间和实际到站时间,计算发车准时率和到站准时率,再将变更后的的信息写入文件
2、一卡通管理系统主要实现的功能如下:
在文件中保存人的基本信息,记录每个人的乘车次数,增加申请新卡,注销一卡通的功能。
在程序中有一个people的txt文件,里面储存了人的信息,卡的主体是人,办卡的前提是人在people文件中存在。当选择办卡时,输入people中存在的人名,从文件头开始查找,到文件尾结束,当输入的人名与people中已存的信息相匹配的时候,就将这组信息(包括姓名,学号,卡的类型,余额(新办的卡余额初始化为50),乘车次数(新卡为0))写入mycard.txt文件中去,办卡成功。 当需要删除一个卡的时候,人的信息没有改动,只是将mycard.txt中办卡的信息删去了。以vector
五、运行结果及分析
文档设置: