c++课程设计车次信息管理系统知识讲解.docx
《c++课程设计车次信息管理系统知识讲解.docx》由会员分享,可在线阅读,更多相关《c++课程设计车次信息管理系统知识讲解.docx(39页珍藏版)》请在冰豆网上搜索。
c++课程设计车次信息管理系统知识讲解
1、购买“女性化”
我们女生之所以会钟爱饰品,也许是因为它的新颖,可爱,实惠,时尚,简单等。
的确,手工艺品价格适中。
也许还有更多理由和意义。
那么大学生最喜欢哪种手工艺品呢?
此次调查统计如下图(1-3)
功能性手工艺品。
不同的玉石具有不同的功效,比如石榴石可以促进血液循环,改善风湿和关节炎;白水晶则可以增强记忆力;茶晶能够帮助镇定情绪,缓解失眠、头昏等症状。
顾客可以根据自己的需要和喜好自行搭配,每一件都独一无二、与众不同。
1、荣晓华、孙喜林《消费者行为学》东北财经大学出版社2003年2月
4.WWW。
google。
com。
cn。
大学生政策2004年3月23日
(2)东西全
(三)上海的文化对饰品市场的影响
标题:
大学生究竟难在哪?
—创业要迈五道坎2004年3月23日
调研课题:
9、如果你亲戚朋友送你一件DIY手工艺制品你是否会喜欢?
一、课程设计的原始资料及依据
查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的windows系统。
通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求
设计内容:
查询:
为对车次信息的查询和对车票信息的查询。
车次信息包括:
日期、车次、出发地、目的地。
车次信息只允许乘客查询,不能修改。
记录应包括:
日期、车次、出发地、目的地。
设计要求:
(1)要求利用面向对象的方法完成系统的设计;
(2)要求在设计的过程中建立清晰的类层次,并画出类图;
(3)设计功能满足要求、易于操作的友好界面;
(4)界面中需有菜单、工具栏、状态栏;
(5)在系统的设计中,至少要用到面向对象的一种机制:
继承、多态等;
(6)在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:
设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排
顺序
阶段日期
计划完成内容
备注
1
第1天
进行设计准备,阅读资料,分析设计任务书,明确设计要求、内容和步骤
2
第2天
需求分析
3
第3天
概要设计
4
第4-5天
详细设计
5
第5—8天
编码、调试
6
第9-10天
程序答辩,撰写课程设计报告
六、主要参考资料(文献)
[1]郑莉董渊张瑞丰编着.《C++语言程序设计》(第4版).北京:
清华大学出版社.2010
[2]陈维兴,林小茶.《C++高级程序设计教程》.北京:
清华大学出版社
[3]谭浩强.《C++程序设计教程》.北京:
中国科学技术出版社
[4]王燕.《面向对象的理论与C++实践》.北京:
清华大学出版社
[5]马石安,魏文平.主编《VisualC++程序设计与应用教程》.北京:
清华大学出版社
[6]王育坚.主编《VisualC++面向对象编程教程》(第二版).北京:
清华大学出版
摘要
本文的设计名称为车次信息管理系统,此程序既可以用于管理员管理车次信息也可以用于乘客查询有关的车次信息。
首先为了让程序开始界面一目了然,使得程序更容易操作,该设计制作了用户登陆界面,用户可以通过选择不同序号进行操作。
在该程序中主要定义三个类,分别是维护类、查询类和统计类,维护类作为基类主要实现的功能有增加车次信息、删除车次信息、修改车次信息,其中车次信息包括途经各站点的名称及时间,通过指针、链表的应用实现其功能。
查询类作为维护类的一个派生类,主要增加的功能是查询列车信息,查询时可实现按站名查询、按车次查询,并提供站-站查询,其中使用while循环结构、if语句及switch语句。
统计类是维护类的另一个派生类,实现的功能主要是统计车次信息,输入一个站名,可统计经过该站的列车数目,输入两个站名如A、B,则可统计同时经过A和B的所有列车数目,同时在系统设计中,用到了面向对象的两种机制:
继承、多态。
关键词:
类继承多态车次信息管理
第1章绪论
1.1C++语言的发展
美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(BjarneStroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“CwithClasses”)。
一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。
虚函数(virtualfunction)、运算符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常(exception)、RTTI、命名空间(namespace)逐渐被加入标准。
1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC1988-1998。
C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。
C++语言发展大概可以分为三个阶段:
第一阶段从80年代到1995年。
这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。
当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
1.2概要设计
为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。
(1)准确性和及时性:
系统处理的准确性和及时性是系统的必要性能。
系统应能及时而且准确的根据用户权限及所输入的信息做出响应。
车次的数量和时间影响用户的决策活动,在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性。
(2)易用性:
本系统是直接面对用户的,这就要求系统提供良好的用户接口,易用的人机交互界面,这就要求系统应该尽量使用用户熟悉的术语和中文信息的界面,从而保证系统的易用性。
(3)安全性:
订票系统中涉及到的数据是客运公司相当重要的信息,系统要保证用户的权限,对于车次等信息用户只享有查询服务,不得更改;系统还要提供方便的手段供系统维护人员进行数据备份、以及日常安全管理等工作。
1.3功能分析
(1)查询为对车次信息的查询和对车票信息的查询。
车次信息包括:
日期、车次、出发地、目的地。
车次信息只允许乘客查询,不能修改。
记录应包括:
日期、车次、出发地、目的地。
(2)账户管理。
只允许管理人员登录,管理人员可以修改信息修改的信息包括:
日期、车次、出发地、目的地。
1.4设计分工及编程实现
本小组课程设计是由两人参与完成的。
我的工作是完成派生类和主函数,完成操作的汇合和界面操、作基类的构造为闫浩编写,该类的名称为weihulei。
编程主要经过四个步骤:
编辑、编译、链接、运行调试。
编辑是将自己设计好的源程序输入计算机中,生成后缀为.cpp的磁盘文件;编译是将程序的源代码转换为机器语言代码,这一过程是计算机自动执行的,我们人是看不到的;链接是将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为为.exe的可执行文件;运行调试是会运行出一个界面,状态栏会提示相应的信息,如没有错误,或者是错误在哪一行,错误的原因等。
程序的运行和调试是一个很困难的过程,但经过本次课设,我们对本课程的学习有了很大的进步。
第2章需求分析
2.1系统设计目的与意义
要求用C++面向程序设计语言编写车次信息管理系统,
1.使学生进一步理解和掌握课堂上所学内容。
2.使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
3.使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
4.提高学生的论文写作能力
5.本次课程设计是计算机专业的主要实践性教学环节之一,要求运用所学专业的相关知识,结合实际操作与应用而进行的一次编程综合能力的训练,旨在培养学生在应用软件程序设计方面,初步掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及设计程序、调试程序、编写基本软件等能力,为毕业设计及今后从事专业相关的工作打下一定的基础。
2.2系统数据流图
实现的主要功能有:
车次信息的查询:
输入查询车次的信息编号或站点;车次信息的添加功能:
添加的信息有车次编号,起点站和终点站;车次信息的查询功能:
查询车次的所有信息;车次信息的修改功能,任意修改所有信息;;车次信息的删除功能:
删除所有或个别车次信息。
图2.1系统数据流图
2.3系统功能介绍
此程序名称为《车次信息管理系统》,顾名思义,这是一个可以管理列车基本信息的一个基本程序,它可以实现简单的列车信息查询和管理车次信息以及查看等功能,具体有以下功能:
1.为了让程序开始界面一目了然,使得程序更容易操作,故再次设计了用户登陆界面。
2.主要功能还是车次信息的管理与维护,包括有:
增加车次信息、删除车次信息、修改车次信息。
其中车次信息包括途经各站点的名称及时间。
3.当然作为一个信息的管理系统,另一项主要的功能就是车次的查询系统,本程序设计了查询时可实现按站名查询、按车次查询,并且提供站—站查询。
4.最后一项功能即为列车统计,即输入一个站名,可统计经过该站点的列车数目,如果输入两个站名,则可以统计同时经过这两个站点的所有列车数目。
2.4系统功能模块图
本系统的输入输出为:
1.车次信息录入
2.车次信息显示
3.车次信息的删除
4.车次信息的修改
5.统计全部车次信息
图2.2系统功能流图
第3章详细设计
3.1类设计
类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐藏。
在面向过程的结构化程序设计中,程序的模块是由函数构成的,函数将逻辑上相关的语句与数据封装,用于完成特定的功能。
在面向对象程序设计中,程序模块是由类构成的。
类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。
因此,后者的集成程度更高,也就更适合用于大型复杂程序的开发。
类的成员包括数据成员和函数成员,它们分别描述了问题的属性和行为,是不可分割的两个方面。
本系统是对车次信息功能的操作。
定义的基类和派生类如下:
1.基类的名称是weihulei,通过该类,实现了添加车次信息;显示车次信息;删除车次信息;修改车次信息;显示车次信息;该类的代码如下所示:
classweihulei{
public:
NODE*p;
NODE*q;
weihulei()//构造
{
p=NULL;
}
/**********添加成员*********/
voidgongneng(NODE*n)//添加
{
q=newNODE;
q->next=p;
n=p=q;
cout<<"经过起点站名称:
";
cin>>p->n;
cout<<"经过终点站名称:
";
cin>>p->m;
cout<<"车次号码:
";
cin>>p->num;
cout<<"发车时间:
";
cin>>p->time;
}
voidgongneng()//显示
{
p=q;
while(p!
=NULL)
{
cout<<"经过起点站名称:
"<n<cout<<"经过终点站名称:
"<m<cout<<"车次号码:
"<num<cout<<"开车时间:
"<time<p=p->next;
}
p=q;
}
/**********重载**********/
voiddel(NODE*k)//删除
{
k=newNODE;
k=p=q;
charn[20];
cout<<"请输入车次号码:
"<cin>>n;
while(p!
=NULL&&(strcmp(p->num,n)!
=0)!
=0)
{
k=p;
p=p->next;
}
if(p==NULL)
{
cout<<"查无此车(-_-)!
!
"<}
else
{
if(p==q)
q=q->next;
else
k->next=p->next;
free(p);
p=q;
cout<<"删除成功!
"<}
}
voiddel()
{
p=q=NULL;
cout<<"所有信息已删除!
";
}
/**********修改**********/
voidgongneng(charn[20])//编辑
{
p=q;
cout<<"请输入车次号码:
"<cin>>n;
while(p!
=NULL&&(strcmp(p->num,n)!
=0)!
=0)
{
p=p->next;
}
if(p==NULL)
{cout<<"查无此车!
!
"<}
else
{
cout<<"经过起点站名称:
";
cin>>p->n;
cout<<"经过终点站名称:
";
cin>>p->m;
cout<<"车次号码:
";
cin>>p->num;
cout<<"发车时间:
";
cin>>p->time;
}
cout<<"按任意键返回!
!
"<}
/**********简单虚函数**********/
virtualvoidxianshi()
{
cout<<"请输入密码:
";
intpassword;
for(inti=0;i<3;i++)
{
cin>>password;
if(password==123456)
{
cout<<"登陆成功(^_^)!
"<getch();
return;
}
elsecout<<"您输入的密码有误,请重新输入:
";
}
cout<<"三次输入错误,拒绝登陆(-_-)!
"<while
(1){
getch();
}
}
};
它的数据成员包括:
NODE*p,*q;
而成员函数则是包括:
voidgongneng(NODE*n)/:
添加车次信息;
voidgongneng()/:
显示车次信息
voiddel(NODE*k):
删除车次信息;
voidgongneng(charn[20]):
修改车次信息;
virtualvoidxianshi():
显示车次信息;
2派生类:
查询类(classchaxunlei:
publicweihulei),它的主要功能是查询车次的信息vogongneng():
查询车次信息,它的具体代码如下所示:
/**********查询类**********/
classchaxunlei:
publicweihulei
{
public:
/**********构造**********/
chaxunlei(weihuleic):
weihulei()//构造
{
p=c.p;
q=c.q;
}
/**********查询函数**********/
voidgongneng()//查询
{
p=q;
charn[20];
charm[20];
chari;
cout<<"请选择查询方式:
1车次查询;2站名查询;3站-站查询\n";
cin>>i;
if(p==NULL)
{
cout<<"没有列车信息(-_-)!
!
"<}
switch(i)
{
case'1':
{
cout<<"请输入车次号码:
"<cin>>n;
while(p!
=NULL)
{
if(strcmp(p->num,n)==0)
{
cout<<"经过起点站名称:
"<n<cout<<"经过终点站名称:
"<m<cout<<"车次号码:
"<num<cout<<"开车时间:
"<time<}
p=p->next;
}
cout<<"按任意键返回!
!
"<return;
}
case'2':
{cout<<"请输入站名:
"<cin>>n;
while(p!
=NULL)
{
if((strcmp(p->n,n)==0)||(strcmp(p->m,n)==0))
{cout<<"经过起点站名称:
"<n<cout<<"经过终点站名称:
"<m<cout<<"车次号码:
"<num<cout<<"开车时间:
"<time<}
p=p->next;
}
cout<<"按任意键返回!
!
"<return;
}
case'3':
{cout<<"请输入起点站名:
"<cin>>n;
cout<<"请输入终点站名:
"<cin>>m;
while(p!
=NULL)
{
if((strcmp(p->n,n)==0)&&(strcmp(p->m,m)==0))
{
cout<<"经过起点站名称:
"<n<cout<<"经过终点站名称:
"<m<cout<<"车次号码:
"<num<cout<<"开车时间:
"<time<}
p=p->next;
}
cout<<"按任意键返回!
!
"<return;
}
default:
return;
}
}
/**********虚函数**********/
voidxianshi()
{
cout<<"********************************************************************************";
cout<<"\n1:
查找车次!
";
cout<<"\n2:
显示车次信息!
";
cout<<"\n3:
列车统计";
cout<<"\n4:
退出!
"<cout<<"********************************************************************************"<cout<<"请输入菜单选项:
"<}
};
而派生类的功能主要是实现统计车次信息的功能,它可以输出车次的编号,起点站和终点站信息。
成员函数为voidgongneng():
统计车次信息。
具体的代码如下所示:
classtongjilei:
publicweihulei
{
public:
tongjilei(weihuleic):
weihulei()//构造
{
p=c.p;
q=c.q;
}
voidgongneng()//统计
{
intsm=0;
charn[20];
cout<<"请输入站名:
"<cin>>n;
while(n)
{
p=p->next;
if(p==NULL)
{
if((strcmp(q->n,n)==0)||(strcmp(q->m,n)==0))
{
sm++;
}
break;
}
if((strcmp(p->n,n)==0)||(strcmp(p->m,n)==0))
{
sm++;
}
}
if(sm==0)cout<<"查无次车(-_-)"<cout<<"统计车次数目为:
"<}
};
具体类的关系如下图所示:
图3.1类图关系
3.2数据结构
自定义数据类型:
定义了structnode结构体类型,其中在weihulei中定义了p和q两个结构体,用这两个指针类型来进行结点的定位和对头指针的操作。
typedefstructnode
{
charn[20];
charm[20];
charnum[20];
chartime[20];
structnode*n