C++课程设计报告车票管理1.docx
《C++课程设计报告车票管理1.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告车票管理1.docx(20页珍藏版)》请在冰豆网上搜索。
![C++课程设计报告车票管理1.docx](https://file1.bdocx.com/fileroot1/2023-1/3/40761b56-d36e-4471-9999-0c11f67910cd/40761b56-d36e-4471-9999-0c11f67910cd1.gif)
C++课程设计报告车票管理1
一、需求分析
1、通过学习课程设计,使学生巩固和加强《C++面向对象程序设计》课程的理论知识;掌握C++面向对象程序设计的基本概念、语义、语法和数据类型的使用特点;掌握C++程序设计的方法及编程技巧,能正确使用C++语言编写程序。
2、使学生能够进一步理解和运用C++面向对象程序设计的思想和方法,并能够尝试着用C++面向对象中的类和对象的知识去编程实现一个小的学生成绩管理系统;进而使学生更好的掌握调试程序的基本方法及上机操作方法。
3、通过这样的课程设计还可以培养学生的创新能力和创新思维,培养学生书写程序设计开发文档的能力,培养学生在撰写课程设计总结报告时良好的程序设计书写风格,从而为我们今后进一步的开发利用打好基础。
二、概要设计
编写一个简单的车票管理系统。
通过本系统能实现增加车次、浏览车次、查找车次、车次排序、订票、退票。
具体要求,程序开始执行时显示如下:
*******车票管理系统*************
1.录入车票信息
2.浏览车票信息
3.查询车票信息
4.定购车票信息
5.退还车票信息
6.保存车票信息
0.退出系统
录入班次信息(信息用文件保存),可不定时地增加班次数据
浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
查询路线:
可按班次号查询,可按终点站查询
售票和退票功能
图2-1系统功能模块图
三、详细设计
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classBusticket_Control
{
public:
Busticket_Control(void);//构造函数
~Busticket_Control();//析构函数
Busticket_Control*next;//链表指针
boolptime(void);//判断时间
voidinput(void);//录入班次信息
voidoutput(void);//浏览班次信息
voidsale(void);//售票
voidback(void);//退票
voidinput(ifstream&is);//读取
voidoutput(ofstream&os);//写入
stringget_place_end(void)const;//返回终点站
intget_bus_order(void);
private:
intbus_order;//班次
inthour_start;//发车时间(小时)
intminute_start;//发车时间(分钟)
charplace_start[10];//起点站
charplace_end[10];//终点站
floathour_running;//行车时间
intoverload;//额定载量
intticketed;//已定票人数
};
Busticket_Control:
:
Busticket_Control(void)//构造函数
{
ticketed=0;
}
Busticket_Control:
:
~Busticket_Control()//析构函数
{
}
boolBusticket_Control:
:
ptime(void)//判断时间函数
{
structtm*local;//读入系统当前时间
time_tt;
t=time(NULL);
local=localtime(&t);
if((local->tm_hour>hour_start)||(local->tm_hour==hour_start&&local->tm_min>minute_start))//与系统当前时间比较
return1;
else
return0;
}
四、测试分析
1、程序运行后,会出现如下图所示的程序主界面,按照其提示选择您所需要进行的操作即可。
1.程序主界面如图所示:
图一
2.按数字1键后
图二
3.当浏览车票信息时,按2
图三
4.当查询车票信息时,按3
图四
5..当订购车票信息时,按4
图五
6.当退还车票信息时,按5
图六
7.当保存车票信息时,按6
图七
五、课程设计总结
1.在这次程序编制的过程中出现了很多问题,主要原因是自己以前接触的关于编制程序的知识的缺乏,通过订票系统的开发让我知道了自己的不足和缺点,写出一个好的程序需要合作精神,一个人的力量毕竟是有限的团队力量才是无穷的。
一个好的程序员一定是从程序堆里走出来的,只有通过参与具体程序的开发才知道自己知识的有限,才会学会具体的分析问题,是自己的逻辑性和层次性得到良好的锻炼,
2.课程设计是一门专业课,给我很多专业知识以及专业技能上了提升,同时又是一门思辨课,让我感触很深,是我对抽象的理论有了具体的认识,在这次课程设计中知道了以前没有接触过的很多函数,C语言中的文件部分因为种种原因都没有得到及时的学习,以前很多东西都没有学好,在以后的学习中自己要加强程序的锻炼,多参考好的程序和各种各样的函数,建立起自己的函数库,为以后学习打下良好的基础。
3在今后的工作、学习中我将认真总结经验教训,努力使自己成为一名技术过硬、工作严谨、思维活跃的工程人员,为提高人们的生活质量做出更大的贡献
六、附录
voidBusticket_Control:
:
input(void)//录入函数
{
cout<<"*****请按提示输入*****"<cout<<"请输入班次"<cin>>bus_order;
cout<<"请输入发车时间的小时"<cin>>hour_start;
cout<<"请输入发车时间的分钟"<cin>>minute_start;
cout<<"请输入起点站"<cin>>place_start;
cout<<"请输入终点站"<cin>>place_end;
cout<<"请输入行车时间"<cin>>hour_running;
cout<<"请输入额定载量"<cin>>overload;
cout<<"请输入已定票人数"<cin>>ticketed;
}
voidBusticket_Control:
:
output(void)//输出函数
{
cout<(2)<<":
"<if(ptime())
cout<<"此班已发出"<else
cout<<"此班未发出"<}
voidBusticket_Control:
:
sale(void)//售票函数
{
if(ticketed{
ticketed++;
cout<<"成功售出一张车票"<}
else
cout<<"车票已售完"<}
voidBusticket_Control:
:
back(void)//退票函数
{
ticketed--;
cout<<"退票成功"<}
voidBusticket_Control:
:
input(ifstream&is)//读入文件函数
{
is>>bus_order>>hour_start>>minute_start>>place_start>>place_end>>hour_running>>overload>>ticketed;
is.get();
}
voidBusticket_Control:
:
output(ofstream&os)//写到文件函数
{
os<}
stringBusticket_Control:
:
get_place_end(void)const//返回终点站函数
{
stringend;
end=place_end;
returnend;
}
intBusticket_Control:
:
get_bus_order(void)//返回班次函数
{
returnbus_order;
}
classBus_Link//链表类模板
{
public:
Bus_Link()//构造函数
{
head=newBusticket_Control;
head->next=NULL;
}
~Bus_Link()//析构函数
{
deletehead;
}
voidinput(void);//录入函数
voidshow(void);
voidfound(void);//查找函数
intfind(Busticket_Control**p1,intnum,char*pn);//查找判断函数
voidsale(void);//售票函数
voidback(void);//退票函数
voidsave(void);//保存数据函数
voidclear(void);//清除函数
voidbegin(void);//初始化函数
charmenu(void);//菜单函数
private:
Busticket_Control*head;//链表头指针
};
voidBus_Link:
:
input(void)//录入函数
{
Busticket_Control*p,*p2;
intn=1;
p=head;
while(p->next)
{
p=p->next;
}
while(n)
{
p2=newBusticket_Control;
p2->input();
p->next=p2;
p2->next=NULL;
p=p->next;
cout<<"继续输入请按1,否则请按0退去"<cin>>n;
}
}
voidBus_Link:
:
show(void)//浏览函数
{
cout<cout<<"-------------------------------------------------------------------------------"<Busticket_Control*p;
p=head;
while(p->next)
{
(p->next)->output();
p=p->next;
}
}
intBus_Link:
:
find(Busticket_Control**p1,intnum,char*pn)//查询判断函数
{
Busticket_Control*p;
p=head;
intm=0;
cout<cout<<"-------------------------------------------------------------------------------"<while(p->next)
{
if((p->next)->get_bus_order()==num||(p->next)->get_place_end()==pn)
{
(*p1)=p;
(p->next)->output();
m=1;
}
p=p->next;
}
returnm;
}
voidBus_Link:
:
found(void)//查询函数
{
Busticket_Control*p;
intn,num;
charname[10];
cout<<"按班次查找请按1,按终点查找请按2"<cin>>n;
if(n==1)
{
cout<<"请输入班次"<cin>>num;
}
if(n==2)
{
cout<<"请输入终点站"<cin>>name;
}
if(!
find(&p,num,name))
{
cout<<"没有你要查找的信息"<return;
}
}
voidBus_Link:
:
sale(void)//售票函数
{
Busticket_Control*p;
intn,num;
cout<<"确定购票?
(是请按1,否请按2)"<cin>>n;
if(n==1)
{
cout<<"请输入班次"<cin>>num;
if(!
find(&p,num,"^"))
{
cout<<"没有你要找的班次"<return;
}
}
p=p->next;
if((p->ptime()))
{
cout<<"此班次已发出"<return;
}
p->sale();
}
voidBus_Link:
:
back(void)//退票函数
{
Busticket_Control*p;
intn,num;
cout<<"确定退票?
(1/2)"<cin>>n;
if(n==1)
{
cout<<"请输入班次"<cin>>num;
if(!
find(&p,num,"^"))
{
cout<<"没有该班次"<return;
}
p=p->next;
if(p->ptime())
{
cout<<"班次已发出不能退票"<return;
}
p->back();
}
}
voidBus_Link:
:
save(void)//保存函数
{
Busticket_Control*p;
p=head;
ofstreamos("bus.txt",ios:
:
out);
while(p->next)
{
(p->next)->output(os);
p=p->next;
}
cout<<"文件已保存"<}
voidBus_Link:
:
clear(void)//清除函数
{
Busticket_Control*p,*p1;
p=head->next;
while(p)
{
p1=p;
p=p->next;
deletep1;
}
}
voidBus_Link:
:
begin(void)//初始化函数
{
Busticket_Control*p,*p1;
p=head;
clear();
longt;
ifstreamis("bus.txt",ios:
:
in);//文件以输入方式打开
if(!
is)
{
ofstreamos("bus.txt",ios:
:
out);//文件以输出方式打开
os.close();//关闭文件
return;
}
intnum=-1;
while
(1)
{
num=-1;
t=is.tellg();//记录下当前位置
is>>num;
is.seekg(t);//移动到原来位置
if(num<0)
{
is.close();
return;
}
p1=newBusticket_Control;
p1->input(is);
p->next=p1;
p1->next=NULL;
p=p->next;
}
}
charBus_Link:
:
menu(void)//菜单函数
{
chars;
structtm*local;
chars1[128];
time_tt;
t=time(NULL);
local=localtime(&t);
strftime(s1,128,"%Y-%m-%d%H:
%M",local);
cout<<"\n\n ────欢迎使用车票管理系统────"<cout
<<"┌────────────────────────┐"<<<"│┌──────────────────────┐│"<<<"││1.录入车票信息2.浏览车票信息││"<<<"││3.查询车票信息4.定购车票信息││"<<<"││5.退还车票信息6.保存车票信息││"<<<"││0.退出系统││"<<<"│└──────────────────────┘│"<<<"└────────────────────────┘"<<<"\t\t\t"<cout<<"请输入操作按钮"<cin>>s;
returns;
}
voidmain()//主函数
{
Bus_Linkbus;
inti=1;
chars;
bus.begin();//初始化
while(i==1)
{
system("cls");//清屏
s=bus.menu();
switch(s)
{
case'1':
bus.input();break;//录入
case'2':
bus.show();break;//浏览
case'3':
bus.found();break;//查找
case'4':
bus.sale();break;//售票
case'5':
bus.back();break;//退票
case'6':
bus.save();break;//保存
case'0':
i=0;break;//退出
default:
cout<<"输入错误"<}
if(i==1)
{
intm;
cout<cout<<"是否返回主菜单(1/0)"<cin>>m;
if(m==1||m==0)
{
i=m;
}
else
i=1;
}
if(i==0)
{
intk;
cout<<"是否保存(1/0)"<cin>>k;
if(k=1)
bus.save();
}
}
system("pause");
}