西电软件学院c++上机实验报告Word文件下载.docx

上传人:b****4 文档编号:16438270 上传时间:2022-11-23 格式:DOCX 页数:31 大小:161.81KB
下载 相关 举报
西电软件学院c++上机实验报告Word文件下载.docx_第1页
第1页 / 共31页
西电软件学院c++上机实验报告Word文件下载.docx_第2页
第2页 / 共31页
西电软件学院c++上机实验报告Word文件下载.docx_第3页
第3页 / 共31页
西电软件学院c++上机实验报告Word文件下载.docx_第4页
第4页 / 共31页
西电软件学院c++上机实验报告Word文件下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

西电软件学院c++上机实验报告Word文件下载.docx

《西电软件学院c++上机实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《西电软件学院c++上机实验报告Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。

西电软件学院c++上机实验报告Word文件下载.docx

//卡号

intmoney;

//余额

inttype;

//卡的类型(type=1,学生卡;

type=2,教师卡;

type=3,限制卡)

intcount;

//乘车次数

};

//定义了一个StuCard的类,用type来区分卡的类型,用get_X函数在主函数中来获得数据成员的值

2、bus类

structtime{

inthour;

intminute;

};

classbus{

stringbnumber;

//车牌号

stringxnumber;

//型号

intpeople;

//载乘人数

stringname;

//驾驶员姓名

structtimestime;

//发车时间

structtimeetime;

//到站时间

structtimet_stime;

//实际发车时间

structtimet_etime;

//实际到站时间

public:

bus(stringbn,stringxn,intp,stringn,intsh,intsm,inteh,intem){

bnumber=bn;

xnumber=xn;

people=p;

name=n;

stime.hour=sh;

stime.minute=sm;

etime.hour=eh;

etime.minute=em;

}//构造函数

stringget_b(){returnbnumber;

}//获得车牌号

stringget_x(){returnxnumber;

}//获得车的型号

intget_p(){returnpeople;

}//获取上车人数

stringget_n(){returnname;

}//获取驾驶员姓名

voidStime(inta,intb);

//获取预计发车时间

voidEtime(intc,intd);

//获取预计到站时间

voidshow(stringbnumber,stringxnumber,intpeople,stringname);

voidT_stime(intta,inttb);

//获取实际发车时间

voidT_etime(inttc,inttd);

//获取实际到站时间

floatpeoplebi(floate,floatf);

//载乘人数比

intget_sthour();

//获得发车时间的小时

intget_stminute();

//获得发车时间的分钟

intget_ethour();

//获得到站时间的小时

intget_etminute();

//获得到站时间的分钟

voidstshow(intp,intq);

voidetshow(intx,inty);

3、people类

classPeople{

//姓名

stringsex;

//性别

stringwork;

//职务

stringoffice;

//所属单位

stringnumber;

//学号/工号

People(stringn,strings,stringw,stringo,stringb);

//构造函数

voidreadPeople();

//用于在主函数中读入人的信息

voidshow(stringname,stringsex,stringwork,stringoffice,stringnumber);

voidaddPeople();

//申请一张新卡

voiddeletePeople();

//注销一卡通

stringget_sex(){returnsex;

stringget_work(){returnwork;

stringget_office(){returnoffice;

stringget_number(){returnnumber;

四、运行流程的说明

主程序分为两个系统:

乘车系统和一卡通管理系统。

1、乘车系统主要实现的功能如下:

首先,采用随机函数,生成本站会上车的人数,这个人数不超过车的最大载乘人数。

其次,生成几个人上车,就依次输入几个人的卡号,持卡人在持卡上车时一卡通余额、乘车次数会发生变更,并且根据余额的多少会有相应提示信息,再将变更后的信息写入文件

公交车在每上一个人的时候乘车人数加一,到达最大载乘人数时提示不能再刷卡上车,并且采用随机函数,随机生成预计发车时间、预计到站时间,实际发车时间和实际到站时间,计算发车准时率和到站准时率,再将变更后的的信息写入文件

2、一卡通管理系统主要实现的功能如下:

在文件中保存人的基本信息,记录每个人的乘车次数,增加申请新卡,注销一卡通的功能。

在程序中有一个people的txt文件,里面储存了人的信息,卡的主体是人,办卡的前提是人在people文件中存在。

当选择办卡时,输入people中存在的人名,从文件头开始查找,到文件尾结束,当输入的人名与people中已存的信息相匹配的时候,就将这组信息(包括姓名,学号,卡的类型,余额(新办的卡余额初始化为50),乘车次数(新卡为0))写入mycard.txt文件中去,办卡成功。

当需要删除一个卡的时候,人的信息没有改动,只是将mycard.txt中办卡的信息删去了。

以vector<

StuCard>

cards(200)的方式,定义了一个类的数组,当输入需要删除的人的姓名之后,从文件头开始查找,当输入的人名与mycard中已存的信息不匹配的时候,就将这一组信息写入数组,到文件尾结束,再将数组里面的写入mycard中,这样子就把想要删掉的内容删掉了。

五、运行结果及分析

文档设置:

Mycard内容分别对应姓名,学号,余额,乘车次数,卡的类型(1=学生卡;

2=教师卡,3=限制卡)

Bus的内容分别对应为车牌号,车类型,最大载乘人数,驾驶员姓名,预计出发时间(时、分)和预计到达时间(时、分)

当运行程序时,会看到如下界面

选择1,进入乘车系统

首先输入车牌信息,随机产生等车人数,刷卡上车,即输入卡号

输入1402012,即李四上车,李四的乘车次数加1,余额减2,写入文件,可以看到

其中,李四的乘车信息相比初始时发生了正确的改变。

并且随机产生的30组发车时间和到站时间,发车准时率和到站准时率,载乘人数比也正确的算出。

选择2,进入一卡通管理系统

选择1,办新卡

输入张三,为张三办一张新卡,张三的卡号从people文件读取,卡的类型,根据张三的职业的定义初始化为1=学生卡;

2=教师卡,3=限制卡,新卡余额默认100元,乘车次数为0。

若选择2,删除一张卡

如图,将刚刚插入的张三的信息删除,并且更新文件信息,张三在mycard内的记录已经不见了。

删卡成功。

六、源代码

#include<

iostream>

string.h>

fstream>

ostream>

cstdlib>

sstream>

vector>

stdio.h>

usingnamespacestd;

voidshow();

stringget_name(){

returnname;

}

stringget_id(){

returnid;

StuCard(){

name="

null"

;

id="

money=0;

count=0;

type=0;

intget_type(){

returntype;

intget_money(){

returnmoney;

intget_count(){

returncount;

voidStuCard:

:

pay(){

//StuCardstucard1(charname[16],charID[17],intmoney,inttype,intcount);

if(type==1)

{

money-=2;

count=count+1;

cout<

<

"

你的卡余额为:

"

money<

'

\n'

if(money<

5)

cout<

你的余额过低,请及时充值!

<

if(type==2)

{

count=count+1;

cout<

if(type==3)

{

if(count<

20){

count=count+1;

cout<

}

if(count==20){

这是本学期内最后一次免费乘车!

\n"

if(count>

本次开始收费!

money-=2;

intStuCard:

GetRest(){

returnmoney;

show()

名字:

name<

卡的类型:

type<

乘车次数:

count<

StuCard:

StuCard(stringname,stringid,intmoney,inttype,intcount){

this->

name=name;

id=id;

money=money;

type=type;

count=count;

//People

classPeople{

People:

People(stringn,strings,stringw,stringo,stringb)

sex=s;

work=w;

office=o;

number=b;

voidPeople:

readPeople()

请输入姓名:

endl;

cin>

>

name;

请输入性别:

sex;

请输入职务:

work;

请输入所属单位:

office;

if(work=="

学生"

请输入学号:

cin>

number;

else

请输入工号:

addPeople()//定义添加持卡人函数

Peoplepeople1("

a1"

"

b2"

c3"

d4"

e5"

);

//实例化对象

ofstreamfileout("

people.txt"

ios:

app);

//打开文件

if(!

fileout)

不能打开文件!

请输入持卡人基本信息:

people1.readPeople();

//读入信息

fileout<

people1.get_name()<

people1.get_sex()<

people1.get_work()<

people1.get_office()

<

people1.get_number()<

//写入信息

fileout.close();

//关闭文件

deletePeople()

ifstreamfilein("

filein)

打开文件失败!

stringt,m;

intn=0;

//标签,是否有这个读者

请输入删除持卡人的的姓名:

m;

请输入删除持卡人的的学号或工号:

t;

do

{

stringx,y,z,u,w;

//定义变量

strings;

getline(filein,s);

//读入每一行

istringstreamsin(s);

sin>

x>

y>

z>

u>

w;

//把s中第一个字符串给a

people1.txt"

//写到新文件中去

if(m!

=x||t!

=w)//判断是否为删除的地方

fileout<

s<

//写入数据

if(m==x&

&

t==w)//判断是否为删除的地方

{

n=1;

原持卡人信息为:

姓名:

x<

性别:

y<

职务:

z<

所属单位:

u<

if(z=="

)cout<

学号:

w<

elsecout<

工号:

是否删除?

(Y:

是,N:

否)"

chara;

cin>

a;

if(a=='

Y'

{

cout<

删除成功!

}

if(a=='

N'

未删除!

fileout<

//写入到文件

fileout.close();

while(!

filein.eof());

//判断是否到文件尾

if(n==0)//不存在这个学生

未找到要删除的持卡人!

filein.close();

//关闭

ifstreamfilei("

//打开文档

out);

//打开文档并清空内容

for(strings;

getline(filei,s);

)//将修改后的内容写到文件中去

fileout<

filei.close();

system("

delpeople1.txt"

//删除文件副本

}

bus(stringbn,stringxn,intp,stringn,intsh,intsm,inteh,intem)

//获得实际发车时间

//获得实际到站时间

voidbus:

Stime(inta,intb)

stime.hour=a;

stime.minute=b;

发车时间为:

stime.hour<

stime.minute<

Etime(intc,intd)

etime.hour=c;

etime.minute=d;

到站时间为:

etime.hour<

etime.minute<

show(stringbnumber,stringxnumber,intpeople,stringname)

车牌号:

bnumber<

型号:

xnumber<

载乘人数:

people<

驾驶员名字:

name<

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

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1