沈阳工程学院课程设计设计题目:C++程序设计课程设计车次信息管理系统系别信息工程系班级学生姓名学号指导教师代钦张楠职称讲师讲师起止日期:2011 年12月12日起——至2011 年12月16日止课程设计成绩评定表系(部):信息工程系班级:学生姓名:系(部):信息工程系班级:学生姓名:沈阳工程学院课程设计任务书课程设计题目:车次信息管理系统系别信息工程系班级学生姓名学号指导教师代钦张楠职称讲师讲师课程设计进行地点:实训楼F611任务下达时间:2011年11月30日起止日期:2011年12月12日起——至2011年12月16日止教研室主任张欣年月日批准一、课程设计的原始资料及依据查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的windows系统。
通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求设计内容:(根据自己的任务填写内容)设计要求:(1)要求利用面向对象的方法完成系统的设计;(2)要求在设计的过程中建立清晰的类层次,并画出类图;(3)设计功能满足要求、易于操作的友好界面;(4)界面中需有菜单、工具栏、状态栏;(5)在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;(6)在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排六、主要参考资料(文献)[1]郑莉董渊张瑞丰编着. 《C++语言程序设计》(第4版). 北京:清华大学出版社.2010[2] 陈维兴, 林小茶.《C++高级程序设计教程》. 北京:清华大学出版社[3] 谭浩强.《C++程序设计教程》. 北京:中国科学技术出版社[4] 王燕.《面向对象的理论与C++实践》. 北京:清华大学出版社[5] 马石安, 魏文平. 主编《Visual C++程序设计与应用教程》. 北京:清华大学出版社[6] 王育坚. 主编《Visual C++面向对象编程教程》(第二版). 北京:清华大学出版摘要本文的设计名称为车次信息管理系统,此程序既可以用于管理员管理车次信息也可以用于乘客查询有关的车次信息。
首先为了让程序开始界面一目了然,使得程序更容易操作,该设计制作了用户登陆界面,用户可以通过选择不同序号进行操作。
在该程序中主要定义三个类,分别是维护类、查询类和统计类,维护类作为基类主要实现的功能有增加车次信息、删除车次信息、修改车次信息,其中车次信息包括途经各站点的名称及时间,通过指针、链表的应用实现其功能。
查询类作为维护类的一个派生类,主要增加的功能是查询列车信息,查询时可实现按站名查询、按车次查询,并提供站-站查询,其中使用while循环结构、if语句及switch语句。
统计类是维护类的另一个派生类,实现的功能主要是统计车次信息,输入一个站名,可统计经过该站的列车数目,输入两个站名如A、B,则可统计同时经过A和B的所有列车数目,同时在系统设计中,用到了面向对象的两种机制:继承、多态。
关键词:类继承多态车次信息管理沈阳工程学院课程设计报告目录目录摘要 (I)第1章绪论 (1)第2章需求分析 (2)2.1 系统设计目的与意义 (2)2.2 系统数据流图 (2)2.3 系统功能介绍 (3)2.4 系统功能模块图 (3)第3章详细设计 (4)3.1类设计 (4)3.2程序代码描述 (5)3.3界面设计与各功能模块实现 (13)第4章系统测试 (20)4.1测试过程 (20)4.2测试结果说明 (22)结论 (23)致谢 (24)参考文献 (25)第1章绪论计算机已经成为我们学习和工作的得力助手。
今天,计算机的价格已经十分低廉,性能有了长足的进步,它已经被应用于许多领域。
另外,信息技术在管理方面也有了越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。
信息管理系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的信息管理系统。
尤其是在车站,要处理海量的车次数据相当麻烦,为了解决传统车次信息管理所面临着的这些问题,车次信息管理系统也就应运而生了。
本文阐述了车次信息管理工作与信息化紧密结合的管理系统的背景和意义,对该系统的总体结构和各功能模块进行了详细的论述。
系统包括了管理员模块和乘客模块,在管理员功能模块中对各种信息进行编辑,具体包括添加、修改、删除、查询、统计、显示等基本操作,在乘客功能模块中有查询、显示、统计等操作,这样就把车次信息管理简单化,以节省更多的人力和不必要的工作。
第2章需求分析2.1 系统设计目的与意义要求用C++面向程序设计语言编写车次信息管理系统,1.使学生进一步理解和掌握课堂上所学内容。
2.使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
3.使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
4.提高学生的论文写作能力5.本次课程设计是计算机专业的主要实践性教学环节之一,要求运用所学专业的相关知识,结合实际操作与应用而进行的一次编程综合能力的训练,旨在培养学生在应用软件程序设计方面,初步掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及设计程序、调试程序、编写基本软件等能力,为毕业设计及今后从事专业相关的工作打下一定的基础。
2.2 系统数据流图2.3 系统功能介绍此程序名称为《车次信息管理系统》,顾名思义,这是一个可以管理列车基本信息的一个基本程序,它可以实现简单的列车信息查询和管理车次信息以及查看等功能,具体有以下功能:1.为了让程序开始界面一目了然,使得程序更容易操作,故再次设计了用户登陆界面。
2.主要功能还是车次信息的管理与维护,包括有:增加车次信息、删除车次信息、修改车次信息。
其中车次信息包括途经各站点的名称及时间。
3.当然作为一个信息的管理系统,另一项主要的功能就是车次的查询系统,本程序设计了查询时可实现按站名查询、按车次查询,并且提供站—站查询。
4.最后一项功能即为列车统计,即输入一个站名,可统计经过该站点的列车数目,如果输入两个站名,则可以统计同时经过这两个站点的所有列车数目。
2.4 系统功能模块图第3章详细设计3.1类设计1.基类:维护类⑴数据成员:NODE *p;NODE *q;⑵成员函数:void gongneng(NODE *n)/:添加车次信息;void gongneng()/:显示车次信息void del( NODE *k):删除车次信息;void gongneng(char n[20]):修改车次信息virtual void xianshi():显示车次信息2.派生类:查询类(class chaxunlei:public weihulei)void gongneng():查询车次信息3.派生类:统计类(class tongjilei:public weihulei)void gongneng():统计车次信息具体如下图所示:3.2程序代码描述#include <string.h>#include <malloc.h>#include <iostream.h>#include <windows.h>#include <conio.h>typedef struct node{char n[20];char m[20];char num[20];char time[20];struct node *next;}NODE;/**********维护类**********/ class weihulei{public:NODE *p;NODE *q;weihulei()//构造{p=NULL;}/**********添加成员*********/void gongneng(NODE *n)//添加{q= new NODE;q->next=p;n=p=q;cout<<"经过起点站名称:";cin>>p->n;cout<<"经过终点站名称:";cin>>p->m;cout<<"车次号码:";cin>>p->num;cout<<"发车时间:";cin>>p->time;}void gongneng()//显示{p=q;while (p!=NULL){cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;p=p->next;}p=q;}/**********重载**********/void del( NODE *k)//删除{k=new NODE;k=p=q;char n[20];cout<<"请输入车次号码:"<<endl;cin>>n;while (p!=NULL&&(strcmp(p->num,n)!=0)!=0) {k=p;p=p->next;}if (p==NULL){cout<<"查无此车(-_-)!!"<<endl;}else{if (p==q)q=q->next;elsek->next=p->next;free(p);p=q;cout<<"删除成功!"<<endl;}}void del(){p=q=NULL;cout<<"所有信息已删除!" ;}/**********修改**********/void gongneng(char n[20])//编辑p=q;cout<<"请输入车次号码:"<<endl;cin>>n;while (p!=NULL&&(strcmp(p->num,n)!=0)!=0){p=p->next;}if (p==NULL){cout<<"查无此车!!"<<endl;}else{cout<<"经过起点站名称:";cin>>p->n;cout<<"经过终点站名称:";cin>>p->m;cout<<"车次号码:";cin>>p->num;cout<<"发车时间:";cin>>p->time;}cout<<"按任意键返回!!"<<endl;}/**********简单虚函数**********/virtual void xianshi(){cout<<"请输入密码:";int password;for(int i=0;i<3;i++){cin>>password;if(password==123456){cout<<"登陆成功(^_^)!"<<endl;getch();return ;}else cout<<"您输入的密码有误,请重新输入:";}cout<<"三次输入错误,拒绝登陆(-_-)!"<<endl;while(1){getch();}};/**********查询类**********/class chaxunlei:public weihulei{public:/**********构造**********/chaxunlei(weihulei c):weihulei()//构造{p=c.p;q=c.q;}/**********查询函数**********/void gongneng() //查询{p=q;char n[20];char m[20];char i;cout<<"请选择查询方式:1车次查询;2站名查询;3站-站查询\n";cin>>i;if (p==NULL){cout<<"没有列车信息(-_-)!!"<<endl;}switch(i){case'1':{cout<<"请输入车次号码:"<<endl;cin>>n;while (p!=NULL){if(strcmp(p->num,n)==0){cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;}p=p->next;}cout<<"按任意键返回!!"<<endl;return;}case'2':{cout<<"请输入站名:"<<endl;cin>>n;while (p!=NULL){if((strcmp(p->n,n)==0)||(strcmp(p->m,n)==0)){ cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;}p=p->next;}cout<<"按任意键返回!!"<<endl;return;}case'3':{cout<<"请输入起点站名:"<<endl;cin>>n;cout<<"请输入终点站名:"<<endl;cin>>m;while (p!=NULL){if((strcmp(p->n,n)==0)&&(strcmp(p->m,m)==0)){cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;}p=p->next;}cout<<"按任意键返回!!"<<endl;return;}default:return;}}/**********虚函数**********/void xianshi(){cout<<"************************************************************************ ********";cout<<"\n 1:查找车次!";cout<<"\n 2:显示车次信息!";cout<<"\n 3:列车统计";cout<<"\n 4:退出!"<<endl;cout<<"************************************************************************ ********"<<endl;cout<<"请输入菜单选项:"<<endl;}};/**********统计类**********/class tongjilei:public weihulei{public:tongjilei(weihulei c):weihulei()//构造{p=c.p;q=c.q;}void gongneng()//统计{int sm=0;char n[20];cout<<"请输入站名:"<<endl;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<<"查无次车(-_-)"<<endl;cout<<"统计车次数目为:"<<sm<<endl;}};void welcome(){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSI TY |FOREGROUND_GREEN);cout<<"$----------------------------------$"<<endl;cout<<"| |"<<endl;cout<<"| **欢迎进入车次信息管理系统** |"<<endl;cout<<"| |"<<endl;cout<<"@----------------------------------@"<<endl;cout<<" 按任意键进入"<<endl;getch();}void mainmenu(){cout<<"1.管理员"<<endl;cout<<"2.乘客"<<endl;cout<<"3.退出本系统"<<endl;}void display(){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSI TY |FOREGROUND_RED);cout<<"************************************************************************ ********";cout<<" 1:增加车次信息!";cout<<"\n 2:修改车次信息!";cout<<"\n 3:查找车次!";cout<<"\n 4:显示车次信息!";cout<<"\n 5:删除车次信息!";cout<<"\n 6:删除所有车次信息!";cout<<"\n 7:列车统计";cout<<"\n 8:退出!"<<endl;cout<<"************************************************************************ ********"<<endl;cout<<"请输入菜单选项:"<<endl;}void main(){char i;char c;char n[20];welcome();weihulei a,*w=NULL;NODE *k=NULL;do{mainmenu();cin>>c;switch(c){case'1':{w=&a; w->xianshi();do {display();i=getch();switch(i){case'1':{a.gongneng(k);break;}case'2':{a.gongneng(n);break;}case'3': {chaxunlei b(a);b.gongneng();break;}case'4':{a.gongneng();break;}case'5':{a.del(k);break;}case'6':{a.del();break;}case'7': {tongjilei c(a);c.gongneng();break;}case'8':{cout<<"谢谢使用本系统!"<<endl;break;}default:{cout<<"输入错误(-_-)!"<<endl;break;}}} while(i!='8');break;}case'2':{chaxunlei l(a);w=&l;do {w->xianshi();i=getch();switch(i){case'1': {chaxunlei b(a);b.gongneng();break;}case'2':{a.gongneng();break;}case'3':{tongjilei c(a);c.gongneng();break;}case'4':{cout<<"谢谢使用本系统!"<<endl;break;}default:{cout<<"输入错误(-_-)!"<<endl;break;}}} while(i!='4');break;}case'3':{cout<<"谢谢使用本系统!"<<endl;break;}default:{cout<<"输入错误(-_-)!"<<endl;break;}}}while(c!='3');}3.3界面设计与各功能模块实现3.3.1界面设计1.系统开始界面void welcome(){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSI TY |FOREGROUND_GREEN);cout<<"$----------------------------------$"<<endl;cout<<"| |"<<endl;cout<<"| **欢迎进入车次信息管理系统** |"<<endl;cout<<"| |"<<endl;cout<<"@----------------------------------@"<<endl;cout<<" 按任意键进入"<<endl;getch();}2.操作人员类型选择界面void mainmenu(){cout<<"1.管理员"<<endl;cout<<"2.乘客"<<endl;cout<<"3.退出本系统"<<endl;}3.乘客进入界面void xianshi(){cout<<"************************************************************************ ********";cout<<"\n 1:查找车次!";cout<<"\n 2:显示车次信息!";cout<<"\n 3:列车统计";cout<<"\n 4:退出!"<<endl;cout<<"************************************************************************ ********"<<endl;cout<<"请输入菜单选项:"<<endl;}};4.管理员进入界面void display(){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSI TY |FOREGROUND_RED);cout<<"************************************************************************ ********";cout<<" 1:增加车次信息!";cout<<"\n 2:修改车次信息!";cout<<"\n 3:查找车次!";cout<<"\n 4:显示车次信息!";cout<<"\n 5:删除车次信息!";cout<<"\n 6:删除所有车次信息!";cout<<"\n 7:列车统计";cout<<"\n 8:退出!"<<endl;cout<<"************************************************************************ ********"<<endl;cout<<"请输入菜单选项:"<<endl;3.3.2各功能模块实现1.增加功能void gongneng(NODE *n){q= new NODE;q->next=p;n=p=q;cout<<"经过起点站名称:";cin>>p->n;cout<<"经过终点站名称:";cin>>p->m;cout<<"车次号码:";cin>>p->num;cout<<"发车时间:";cin>>p->time;}2.显示功能void gongneng(){p=q;while (p!=NULL){cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;p=p->next;}p=q;}3.删除功能void del( NODE *k){k=new NODE;k=p=q;char n[20];cout<<"请输入车次号码:"<<endl;cin>>n;while (p!=NULL&&(strcmp(p->num,n)!=0)!=0){k=p;p=p->next;}if (p==NULL){cout<<"查无此车(-_-)!!"<<endl;}else{if (p==q)q=q->next;elsek->next=p->next;free(p);p=q;cout<<"删除成功!"<<endl;}}void del(){p=q=NULL;cout<<"所有信息已删除!" ;}4.修改功能void gongneng(char n[20]){p=q;cout<<"请输入车次号码:"<<endl;cin>>n;while (p!=NULL&&(strcmp(p->num,n)!=0)!=0){p=p->next;}if (p==NULL){cout<<"查无此车!!"<<endl;}else{cout<<"经过起点站名称:";cin>>p->n;cout<<"经过终点站名称:";cin>>p->m;cout<<"车次号码:";cin>>p->num;cout<<"发车时间:";cin>>p->time;}cout<<"按任意键返回!!"<<endl;}5.查询功能void gongneng(){p=q;char n[20];char m[20];char i;cout<<"请选择查询方式:1车次查询;2站名查询;3站-站查询\n";cin>>i;if (p==NULL){cout<<"没有列车信息(-_-)!!"<<endl;}switch(i){case'1':{cout<<"请输入车次号码:"<<endl;cin>>n;while (p!=NULL){if(strcmp(p->num,n)==0){cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;}p=p->next;}cout<<"按任意键返回!!"<<endl;return;}case'2':{cout<<"请输入站名:"<<endl;cin>>n;while (p!=NULL){if((strcmp(p->n,n)==0)||(strcmp(p->m,n)==0)){ cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;}p=p->next;}cout<<"按任意键返回!!"<<endl;return;}case'3':{cout<<"请输入起点站名:"<<endl;cin>>n;cout<<"请输入终点站名:"<<endl;cin>>m;while (p!=NULL){if((strcmp(p->n,n)==0)&&(strcmp(p->m,m)==0)){cout<<"经过起点站名称:"<<p->n<<endl;cout<<"经过终点站名称:"<<p->m<<endl;cout<<"车次号码:"<<p->num<<endl;cout<<"开车时间:"<<p->time<<endl;}p=p->next;}cout<<"按任意键返回!!"<<endl;return;}default:return;}}6.统计功能void gongneng()//统计{int sm=0;char n[20];cout<<"请输入站名:"<<endl;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<<"查无次车(-_-)"<<endl;cout<<"统计车次数目为:"<<sm<<endl;}};第4章系统测试4.1测试过程1.首先进入操作人员类型选择界面2.管理员主菜单3.增加车次信息4.修改车次信息5.查询车次信息6.显示车次信息7.删除车次信息8.删除后统计车次信息4.2测试结果说明此系统基本实现了车次信息管理,首先是操作人员选择,如果是管理员则选择2,在管理员进入功能界面的时候,需要输入密码,此系统设计的默认密码为123456,然后即可操作各个功能,其中的查询功能有三种方式,可按车次、站名、站站查询,通过选择不同的编号即可实现查询功能,如果要退出该系统,选择当前菜单提示的序号即可。