资源描述
该论文是本团队为同学做过的案例 需要完整程序源代码,答辩PPT或者更多毕业论文联系799523222
基于C++民航售票管理系统的设计和实现
学 生 姓 名:
学 号:
专 业 名 称:
班 级:
指导教师姓名:
系 (部):
职 称:
程序设计基础课程设计任务书
一、题目:民航售票系统
二、设计要求
(1)两人或三人组成课程设计小组.
(2)小组成员分工协作完成.要求每个成员有自己相对独立的模块,,同时要了解其他组员完成的内容.
(3)查阅相关资料,自学具体课题中涉及到的新知识.
(4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。
(5)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。报告一律用A4纸打印,正文的中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值"18磅,首行缩进2字符。1级标题中文字体为黑体,西文字体为Time New Roma,采用三号字;段落为居中、段前18磅、段后12磅、行距采用“固定值”18磅,首行缩进:无,段中不分页,与下段同页.仅一级标题上目录。
三、课程设计工作量
由于是设计小组团结协作完成设计任务,一般每组独立完成的程序量在400行有效程序行以上,不得抄袭.
四、课程设计工作计划
2008年6月16日,指导教师讲课,学生根据题目准备资料,需求分析;
2008年6月17日,设计小组进行总体方案设计和任务分工;
2008年6月18日~2008年6月24日,每人完成自己承担的程序模块并通过独立编译;
2008年6月25日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;
2008年6月26日~2008年6月27日,验收、开始撰写课程设计报告;
2008年7月4日前,提交课程设计报告和软件.
指导教师签章:
教研室主任签章
面向对象程序设计课程设计指导教师评语与成绩
指导教师评语:
课程设计表现成绩:
课程设计验收成绩:
课程设计报告成绩:
课程设计总成绩:
指导教师签章
2008年 7月 日
目 录
一.概述6
二.总体方案设计7
三.详细设计8
四.程序的调试与运行结果说明13
五.课程设计总结15
六.后记15
七.附录16
参考文献73
一 概述
1. 课程设计的目的
1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养学生综合运用所学知识独立完成课题的能力。
3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力.
6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
7。这个程序是对编程基本功的一个训练,对于初学C++语言的人,将分支、循环、数组、函数综合应用,而不仅限于编制独立的小程序,能够大大提高编程水平。
2. 课程设计的要求
要求掌握C++语言程序设计的基本理论知识和熟练运用C++语言基本知识,熟悉C++语言的编程、编译、调试和运行过程,了解模块各部分的理论知识并能熟练的运用.同时查找并参照其他书籍对程序设计进行创新,运行环境美化。
3. 课程设计的主要设计思想
我们这个小组设计了民航售票系统,用了一个主函数和两个类和自定义函数,在这个程序里,主要用到了C++语言课程中学到的类,文件等。
我们设计的系统主要包含以下功能:
1. 用户登录界面(包括管理员和用户)
2. 管理员操作界面(功能:对航班的添加,删除,对用户信息的修改,注销和退出)
5。 用户操作界面(功能:对个人信息的查询,修改密码,订票,退票,用户注销和退出)
二 总体方案设计
民航售票系统是一个方便顾客查询航班,订票,退票的系统.实现了民航售票系统的基本功能。功能的模块化设计,方便对其系统的完善,提高了程序的可读性.
算法的整体思路:运用switch语句实现菜单式选择,每种选择调用其相应函数实现其功能。
整体框图
管理员登录
用户登录
用户注册
民航售票系统
查询航班
订票
退票
注销
修改密码
注销
修改用户ID
修改用户密码
删除用户
添加删除航班
三 详细设计
以下是我承担的设计工作。下面是我负责的模块的代码和UML图
////////////////////用户注册//////////////////////
void people::zhuce()
{
char key1[20],r_name[20],q_name[20];
int k;
system(”cls”);//清屏
cout〈〈" 〉〉〉用户注册〈〈〈\n";
cout〈<"\n\n\n”;
sisi:
cout〈<” 请输入用户名:”;
cin〉〉r_name;
strcpy(q_name,r_name);
strcat(r_name,txt);
ifstream www(r_name);
www.close();
if(www)
{
cout〈〈” 该用户已存在,请重新输入用户名!\n”;
goto sisi;
}
else
{
strcpy(name,q_name);
cout〈〈" 请输入密码:”;
for(int i = 0;i 〈 10; i++)
{
key1[i] = getch();
if(key1[i] == ’\r')
{
key1[i]=’\0’;
break;
}
if(key1[i] == '\b') cout<〈”\b \b”;
else cout〈〈”*”<<flush;//星号密码
}
cout<<"\n 请再次输入密码”;
for(int j = 0;j 〈 10; j++)
{
key[j] = getch();
if(key[j] == '\r’)
{
key[j]='\0’;
break;
}
if(key[j] == ’\b’) cout〈<"\b \b”;
else cout〈〈"*”〈〈flush;
}
while(strcmp(key1,key))
{
cout〈〈”\n 两次密码输入不同!!!\n”;
cout〈<” 请输入密码:";
for(int i = 0;i < 10; i++)
{
key1[i] = getch();
if(key1[i] == ’\r')
{
key1[i]=’\0’;
break;
}
if(key1[i] == '\b’) cout<〈”\b \b”;
else cout〈<”*"〈〈flush;
}
cout〈〈”\n 请再次输入密码”;
for(int j = 0;j 〈 10; j++)
{
key[j] = getch();
if(key[j] == ’\r’)
{
key[j]=’\0’;
break;
}
if(key[j] == ’\b’) cout〈〈"\b \b";
else cout〈〈"*”<<flush;
}
}
cout〈〈”\n 请输入18位身份证号:”;
cin〉>id;
if(strlen(id)==18)
k=0;
else k=1;
while(k)
{
cout〈<”\n 身份证号错误!!!\n”;
cout<<" 请输入正确18位身份证号:”;
cin>〉id;
if(strlen(id)==18)
k=0;
}
strcpy(fly_id,”no@book");
}
ofstream pfile(r_name);
pfile〈〈name〈<" "〈<id<〈” ”〈〈key<<” "〈〈fly_id〈<endl;
pfile.close();
system(”cls”);//清屏
cout<〈”\n\n\n\n\n\n\n\n 注册成功!";
cout<〈"\n\n\n\n 按任意键返回主菜单!";
getch();
intmenu();
}
///////////////////////注销后初始化用户/////////////////////////
void intt()
{
char fl[20]=”\0”;
strcpy(NAME,fl);
z=0;x=0;
}
people
—name[20]:char
—id[20]:char
—key[8]:char
—fly_id[10]:char
+zhuce():void
+denglu():void
+peoplelist():void
+changepw():void
+admin():void
+book():void
+return_piao():void
+mibao:void
〈〈friend〉> +people_list():void
fly
—fly_num[10]:char
-first10]:char
-f_time[10]:char
—last[10]:char
—l_time10]:char
-num:int
—sheng:int
+addfly():void
+delfy():void
+administ():void
+delpeople():void
+adminpw():void
+changeid():void
+searchnum():void
〈<friend>>+search_num():void
〈〈friend>〉+admin_list:void
四 程序的调试与运行结果说明
这几个模块基本完成了各自的功能,以下是运行结果:
五 课程设计总结
两周的课程设计很快过去了,通过教师的指导及查阅相关的资料,基本完成了课程设计的题目,也达到了老师的要求,但由于自己的水平有限,考虑问题不十分全面,完成的程序仍存在许多不足之处,希望老师给予指正。本次课程设计,不仅使在教材中所学的基础知识得到了加深和巩固;同时,设计中涉及到了许多新知识,通过查阅许多课外的书籍及资料,学到了许多教材学不到的知识。
在这次的课程设计中,我们充分发挥了我们的团队精神。编程是一个集体的工作,所以我们需要有充分地交流,并且要虚心的听取意见,只有这样才能把我们的各自的思想最晚整的表达出来并融合在一起.
六 后记
同学们自己发挥想象
七 附录
全部代码及注释附录
#include〈iostream〉
#include〈fstream〉
#include〈cstring>
#include 〈cstdlib〉
#include 〈time.h〉
#include〈conio。h〉
#include〈windows。h〉
using namespace std;
int z=0,x=0,g=0;
char txt[5]="。txt";
char dat[5]="。dat”;
char nametxt[20];
char NAME[20];
char name1[20];
char name2[20];
char mon[10]=”ab”;
void intt();
class fly//航班累
{
private:
char fly_num[10];//航班号
char first[10];//起点
char f_time[10];//起飞时间
char last[10];//终点
char l_time[10];//到达时间
int num;//乘客限额
int sheng;//剩余票数
public:
void addfly();//添加航班
void delfly();//删除航班
void adminlist();//管理员菜单
void delpeople();//删除用户
void adminpw();//管理员修改密码
void changeid();//管理员修改用户身份证号
void searchnum();//按航班号查询
friend void search_num()//声明友元函数
{
fly cc;
cc.searchnum();
}
friend admin_list()
{
fly bb;
bb。adminlist();
}
};
class people :public fly//乘客类
{
private:
char name[20];//姓名
char id[20];//身份证
char key[8];//登录密码
char fly_id[10];//机票数据
public:
void zhuce();//注册用户
void denglu();//用户登录
void save();//保存
void read();//读
void peoplelist();//用户列表
void changepw();//用户修改密码
void admin();//管理员登陆
void book();//订票
void return_piao();//退票
void mibao();
friend void people_list()
{
people pp;
pp。peoplelist();
}
};
///////////////////////第一菜单/////////////////////////
void intmenu()
{
people aa;
system(”cls");//清屏
system("color 64”);
cout<〈”\n\n\n”;
cout〈<” ———--——————---——-----———--—-——————--——-—————"<<endl;
cout〈〈” Welcome to film! "〈<endl;
cout<〈” ^ ^ 欢迎您进入民航订票系统 ^ ^ ”〈〈endl;
cout<〈” ^ ^ 在此我们将为您提供最优质的服务 ^ ^ ”〈〈endl;
cout<〈" "〈〈endl;
cout〈〈" -——-—-————————--—-———-————-——-————--—---————”〈〈endl<<endl;
cout〈<”\n\n\n";
cout〈〈” 1。用户登录 \n";
cout〈〈" 2。用户注册 \n";
cout<<” 0.退出 \n";
intt();
menu:
switch(getch())
{
case ’1’ : aa.denglu();//登录
break;
case '2’ : aa.zhuce();//注册
break;
case ’0' : exit(1);//退出
break;
default: goto menu;
}
}
///////////////////////用户注册/////////////////////////
void people::zhuce()
{
char key1[20],r_name[20],q_name[20];
int k;
system(”cls");//清屏
cout〈〈" 〉>>用户注册<<〈\n”;
cout<<”\n\n\n”;
sisi:
cout〈〈” 请输入用户名:”;
cin〉>r_name;
strcpy(q_name,r_name);
strcat(r_name,txt);
ifstream www(r_name);
www.close();
if(www)
{
cout〈<” 该用户已存在,请重新输入用户名!\n”;
goto sisi;
}
else
{
strcpy(name,q_name);
cout〈〈" 请输入密码:”;
for(int i = 0;i 〈 10; i++)
{
key1[i] = getch();
if(key1[i] == '\r’)
{
key1[i]='\0’;
break;
}
if(key1[i] == '\b’) cout〈<"\b \b";
else cout〈〈"*”〈〈flush;//星号密码
}
cout〈<”\n 请再次输入密码”;
for(int j = 0;j < 10; j++)
{
key[j] = getch();
if(key[j] == ’\r')
{
key[j]=’\0’;
break;
}
if(key[j] == '\b’) cout〈<"\b \b";
else cout〈〈"*”〈〈flush;
}
while(strcmp(key1,key))
{
cout<〈"\n 两次密码输入不同!!!\n”;
cout〈〈” 请输入密码:”;
for(int i = 0;i 〈 10; i++)
{
key1[i] = getch();
if(key1[i] == '\r’)
{
key1[i]=’\0’;
break;
}
if(key1[i] == '\b') cout〈〈"\b \b”;
else cout〈<"*”〈<flush;
}
cout〈〈”\n 请再次输入密码”;
for(int j = 0;j 〈 10; j++)
{
key[j] = getch();
if(key[j] == ’\r’)
{
key[j]=’\0’;
break;
}
if(key[j] == ’\b') cout〈〈"\b \b”;
else cout〈〈”*”〈〈flush;
}
}
cout〈<”\n 请输入18位身份证号:”;
cin〉〉id;
if(strlen(id)==18)
k=0;
else k=1;
while(k)
{
cout〈〈”\n 身份证号错误!!!\n”;
cout<<” 请输入正确18位身份证号:”;
cin〉>id;
if(strlen(id)==18)
k=0;
}
strcpy(fly_id,”no@book");
}
ofstream pfile(r_name);
pfile<〈name<〈" ”<〈id〈〈" "<〈key<〈” "〈<fly_id<〈endl;
pfile.close();
system(”cls”);//清屏
cout〈〈”\n\n\n\n\n\n\n\n 注册成功!”;
cout〈〈”\n\n\n\n 按任意键返回主菜单!”;
getch();
intmenu();
}
///////////////////////注销后初始化用户/////////////////////////
void intt()
{
char fl[20]=”\0”;
strcpy(NAME,fl);
z=0;x=0;
}
///////////////////////用户登录/////////////////////////
void people::denglu()
{
int ki=0;
char re[10]={"r”};
char a_name[20],q_name[20];
char a_key[20];
char x_name[10]={"admin"};
back: system("cls”);//清屏
cout<<”\n >>〉用户登录〈〈<\n\n";
cout〈〈”\n\n\n\n\n 用户名:";
cin>>a_name;
strcpy(name1,a_name);
strcpy(name2,a_name);
if(strcmp(a_name,x_name)==0)
admin();
strcpy(q_name,a_name);
strcat(q_name,txt);
ifstream pfile(q_name);
if(!pfile)
{
cout〈〈”\n\n\n 该用户不存在 ”;
cout〈〈”\n\n 注册(r) 重新输入(h)”;
cin〉>a_name;
if(!strcmp(a_name,re)==0)
goto back;
else
zhuce();
intmenu();
}
pfile>〉name〉〉id〉〉key〉>fly_id;
pfile.close();
loopkey:
cout<〈” 密 码:”;
for(int i = 0;i < 10; i++)
{
a_key[i] = getch();
if(a_key[i] == '\r’)
{
a_key[i]='\0’;
break;
}
if(a_key[i] == ’\b’) cout〈〈”\b \b";
else cout〈〈”*"<<flush;
}
if(!strcmp(a_key,key)==0)
{
cout〈<”密码输入错误,请重新输入:\n”;
if(ki==3)
{
cout<〈”对不起,您的密码输入错误超过3次,即将推出系统!!!\n";
getch();
exit(1);
}
ki++;
goto loopkey;
}
strcpy(NAME,a_name);
strcpy(nametxt,q_name);
peoplelist();
getch();
intmenu();
}
///////////////////////用户列表/////////////////////////
void people::peoplelist()
{
system(”cls”);//清屏
cout〈<"\n\n ”<〈NAME〈<"的菜单:\n\n\n”;
cout〈〈” 1。航班查询\n";
cout〈<” 2。订票\n”;
cout<〈” 3。退票\n”;
cout〈<" 4。修改密码\n";
cout〈<" 5。注销登录\n”;
cout<〈" 0。退出\n”;
menu2: switch(getch())
{
case ’1’:search_num();break;
case ’2':book();break;
case ’3’:return_piao();break;
case '4':changepw();break;
case '5’:intmenu();break;
case ’0':exit(1);break;
default: goto menu2;
}
}
///////////////////////用户修改密码/////////////////////////
void people::changepw()
{
int ss=0;
char key1[10];
int mm=0;
system(”cls”);//清屏
cout〈〈"\n\n\n 请输入新密码:”;
cin〉>key1;
ifstream ww(nametxt);
ww〉〉name>〉id〉〉key〉>fly_id;
ww.close();
ofstream tt(nametxt);
tt<<name〈<" ”<〈id〈〈” ”〈〈key1〈〈" ”〈<fly_id<<endl;
tt。close();
cout〈<"\n\n 成功!\n”;
getch();
peoplelist();
}
///////////////////////管理员口令卡/////////////////////////
void people::mibao()
{
int m01=5,m02=5,m03=2,m04=1,n01,n02;
int ji=0;
int key[10][10]={
{814,624,651,675,186,472,667,610,382,473},
{999,771,788,364,305,771,993,805,240,131},
{991,174,504,654,234,238,295,372,564,336},
{168,810,385,499,156,351,787,906,484,929},
{679,506,565,886,638,365,835,323,934,850},
{957,152,798,171,776,330,645,173,251,480},
{836,995,490,942,319,260,788,285,216,833},
{900,529,796,368,736,866,484,419,651,843},
{421,321,449,422,737,420,263,743,532,610},
{719,300,879,364,284,516,161,184,788,708},
};
time_t t;
srand((unsigned) time(&t));
mb:
system("cls”);//清屏
m01=rand() % 10;//产生10以下随机数
m02=rand() % 10;
m03=rand() % 10;
m04=rand() % 10;
cout〈<”\n\n\n 请输入口令卡密码\n\n\n\n";
cout<〈" 【”;
switch(m01)
{
case 0 :cout<〈”A";break;
case 1 :cout〈〈"B”;break;
case 2 :cout〈〈”C";break;
case 3 :cout〈〈"D”;break;
case 4 :cout〈<"E";break;
case 5 :cout〈<”F";break;
case 6 :cout〈〈"G";break;
case 7 :cout<<"H";break;
case 8 :cout<〈”I";break;
case 9 :cout<〈”J";break;
}
cout<<m02+1<〈”】:";
cin>>n01;
cout〈〈”\n 【”;
switch(m03)
{
case 0 :cout〈<"A”;break;
case 1 :cout〈<”B”;break;
case 2 :cout〈<”C";break;
case 3 :cout〈<”D”;break;
case 4 :cout<〈”E”;break;
case 5 :cout〈〈”F";break;
case 6 :cout<〈”G”;break;
case 7 :cout〈〈”H”;break;
case 8 :cout〈<”I”;break;
case 9 :cout〈<"J”;break;
}
cout<<m04+1<〈"】:”;
cin〉>n02;
if(key[m02][m01]==n01&&key[m04][m03]==n02)
{
admin_list();
}
else
{
cout<〈” 口令卡密码错误,请重新输入!\n";
ji++;
if(ji==3)
{
cout〈〈"口令卡密码错误超过3次,您将退出系统!!!";
exit(1);
}
}
goto mb;
}
///////////////////////管理员登录/////////////////////////
void people::admin()
{
char men[10]="c”,ch[10]=”pass”;
char z_key[10];
int hk=0;
nood:
system(”cls");//清屏
strcat(mon,men);
strcpy(ch,mon);
cout〈<”\n\n\n 〉>〉管理员登录<〈<\n\n\n”;
cout〈<" 请输入管理员密码:”;
for(int i = 0;i < 10; i++)
{
z_key[i] = getch();
if(z_key[i] == '\r’)
{
z_key[i]='\0’;
break;
}
if(z_key[i] == ’\b') cout〈<"\b \b”;
else cout〈〈”*”〈〈flush;
}
if(!strcmp(z_key,ch)==0)
{
if(hk==2)
{
cout〈<"输入密码错误超过3次!、";
getch();
intmenu();
}
system(”cls");//清屏
cout<〈”\n\n\n\n\n 管理员密码错误!按任意键重新输入!\n";
hk++;
getch();
goto nood;
}
mibao();
}
///////////////////////管理员菜单/////////////////////////
void fly:: adminlist()
{
system(”cls”);//清屏
cout<〈"\n\n\n
展开阅读全文