课 程 设 计 报 告
课程名称 C语言课程设计
课题名称 飞机订票系统
专 业 电子信息
班 级 0981
学 号 200913020127
姓 名 肖双喜
指导教师 黄哲 陈多
2010年6月25日
湖南工程学院
课 程 设 计 任 务 书
课程名称 C程序设计
课 题 飞机订票系统
专业班级 电子信息工程0981
学生姓名 肖双喜
学 号 200913020127
指导老师 黄哲 田媛 陈多
审 批
任务书下达日期 2010年6 月 25日
任务完成日期 2010年 7 月 10日
一、设计内容与设计要求
1.设计内容:
见附录
2.设计要求:
1).设计正确,
合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计
5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5).上机演示。
二、进度安排
第一周 星期五: 课题分配,查阅资料
第二周 星期日: 总体设计,详细设计
星期二: 编程,上机调试、修改程序
星期四: 编程,上机调试、修改程序
星期五: 答辩撰写课程设计报告
附:
课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、
;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
设计课题四:飞机订票系统
一、问题描述:
本系统可以用来实现对订票信息进行输出,显示,退票,查询,保存等,并保存文件中,以达到对飞机订票信息进行随时的订票,查询何退票的操作管理系统.
二、功能描述:
本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:航班号,出发地,目的地,价格,等信息,。
完成以下模块:
1.订票
2.显示
3.退票
4.查询
5.保存
6.退出系统
测试
四、其它:
对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
目录
1一、功能简介
1.1主要功能介绍
1
2.1输入输出的要求
1
二、概要设计
2
2.1程序的模块
2
2.2结构体
2
2.3文件的定义
3
三、 测试数据
4
3.1机票信息文件
4
3.2旅客信息信息登记
4
四、详细设计
5
4.1系统总体结构
5
4.2密码模块函数 void checkcode()
6
4.3机票信息录入void inputinfo()流程图
7
4.4订票系统void bookticket()流程图
8
4.5显示模块void display()流程图
9
4.6退票系统void returnticket()流程图
10
五、使用说明
11
5.1主界面
11
5.2机票信息管理(保存)
12
5.3订票系统使用
15
5.4退票系统
17
六、课程设计总结
19
6.1课程设计心得:
19
6.2在程序设计中的问题和解决:
19
附录
20
源程序清单(带注释)
20
1.机票信息录入(带注释):
20
3.源程序清单:(附)
31
参考文献
75
计算机与通信学院课程设计评分表
76
一、功能简介
1.1主要功能介绍
本程序能输入最多1000个机票信息,管理员在保存功能中通过密码验证输入机票信息,可以对机票信息进行查询;修改;删除等功能。一般用户可以使用订票;显示;退票等功能,在订票时用户输入密码在退票时通过验证后成功退票。
具体功能如下:
1 、保存模块: 1 机票信息录入
2查询所有机票
3修改机票信息 4删除机票信息
有机票信息的管理,对机票信息输入,查询,修改,删除。
2、订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询
所有机票信息)出现航班信息,确定订票后输入个人信息:姓名,性别,证
件号,联系电话,密码(退票时用)。出现您的个人信息,确定后回车订票
结束。
3显示模块: 1全部 2航班号 3出发地 4目的地
按上述方式查看机票信息
4退票模块:(可以选择查看航班信息) 1姓名 2证件号
当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,当密码正
确时会显示您的个人信息,回车再是否确定退票。
5 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息
2.1输入输出的要求
当要输入密码时一般为1234,在界面中无提示时当要继续请按回车,其他的请按提示操作,由于时间和能力的关系没有考虑到意外情况请按提示操作。
二、概要设计
2.1程序的模块
1、 保存模块:含有机票信息的管理,对机票信息输入,查询,修改,删除。
2、订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询
所有机票信息)出现航班信息,确定订票后输入个人信息:姓名,性别,证
件号,
联系电话,密码(退票时用)。出现您的个人信息,确定后回车订票
结束。
3、显示模块:含全部;航班号;出发地;目的地等方式查询所有机票信息。
4、退票模块:当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,
当密码正确时会显示您的个人信息,回车再是否确定退票。
5 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息
2.2结构体
struct travellerinfo//旅客信息结构
{
char fightnum [10];//航班号
char name [10]; //姓名
char sex [5]; //性别
char idnum [20];//证件号码
char password [10];//密码
char poto [12]; //联系电话
};
struct fightinfo//机票信息结构体
{
char fightnum [10];//航班号
char start [8];//出发地
char destination [8];//目的地
unsigned int price;//价格
unsigned int goyear;//出发时间 年
unsigned int gomoth;//月
unsigned int goday;//日
unsigned int gohour;//时
unsigned int gominute;//分
unsigned int arryear;//到达时间 年
unsigned int arrmoth;//月
unsigned int arrday;//日
unsigned int arrhour;//时
unsigned int arrminute;//分
unsigned int rebate;//折扣
unsigned int allsticket;//总票数
unsigned int surplusticket;//剩余票数
};
struct allfightinfo //机票全部结构
{
struct travellerinfo fight;//旅客信息结构
struct fightinfo fight1;//机票信息结构体
};
2.3文件的定义
FILE *travellerfile=NULL; //存旅客信息数据文件
FILE *fightfile=NULL; //存机票信息数据文件
char filename[]="旅客信息信息登记.dat"; //记录旅客信息登记
char filename1[]="机票信息.dat"; //记录机票信息
测试数据
3.1机票信息文件
航班号出发地目的地 价格 发月-日| 时-分到月-日| 时-分|折扣| 总票|余票
长沙 衡阳 170 1-1 12: 0 2-2 13: 0 89 240 238
T1234 衡阳 广州 280 1-1 12:0 2-2 13: 0 60 240 240
T12345 衡阳 广州 230 1-1 12:11 2-2 13:12 60 241 241
3.2旅客信息信息登记
航班号 | 姓名 | 性别| 证件号 | 联系电话 | 密码
肖双喜 男 200913020127 15292283221 123
123 余荣川 男 200913020128 2142452314 12345
四、详细设计
4.1系统总体结构
退
图4.1系统总体结构图
在这个总体框架中,我们可以整体地看到这个系统运行流程,所调用几个重要函数。
4.2密码模块函数 void checkcode()
该模块包括密码的输入并验证,修改密码。算法如下:
N
Y
N
Y
密码验证
4.3机票信息录入void inputinfo()流程图
无效重新输入
无效重新输入
无效重新输入
4.4订票系统void bookticket()流程图
在有航班信息的情况下可以进行订票操作。
否
是
否
是
否
是
否
是
否
否
4.5显示模块void display()流程图
否
是
否
是
是
否
显示所有或条件航班信息
4.6退票系统void returnticket()流程图
否
是
否
是
否
是
否
是
否
五、使用说明
5.1主界面
5-1
1.程序欢迎界面(对系统的说明,及程序分组名单)停留15s
5-2
2、程序主界面(按数字1---5 再回车)进入其他功能
5.2机票信息管理(保存)
5-3
1、输入密码(第一次设置密码1234)机票信息管理
5-4
选1进入机票信息录入
5-5
选2查询所有航班信息
5-6
选3修改航班信息,确定后进入查询所有航班
5-7
输入航班号 显示航班信息 要求输入修改信息
5-8
删除请谨慎,全部删除会删除所有文件
5.3订票系统使用
5-8
1、定票时查询所有的航班信息
5-9
2、输入正确的航班号
5-10
订票时输入个人信息
5.4退票系统
5-11
1、进入退票系统是否查询所有机票信息
5-12
2、选择输入信息输入的方式并输入
5-13
3、退票时的信息显示然后确定
六、课程设计总结
6.1课程设计心得:
课程设计给我一个学以致用的机会,刚开始的时候还以为学这黑黑的东西没用,只是一些简单的计算。经过了这次的练习我才发现原来的黑屏有它自己的好处,通过学习也发现原来这种黑屏就是那些应用程序的原型,不论你以后学程序开发还是网页的制作都有很好大好处,这些基础是培养学生综合运用所学知识,发现,提出,
和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
通过这次的学习我发现以后不管是哪一科我们尽量要把它拿过来使用,只有把知识应用到实际生活中才能说这知识是自己的啦。在以后找工作中这些作品就会是我的学习凭证,是我的能力的体现,不难想象一个公司要的是一些实际的东西不需要太多的理论。
6.2在程序设计中的问题和解决:
在订票系统中我们发现,在订票时我们的把机票信息中的剩余票数要减少一个,而在退票时我们的把剩余票数加以个,由于在文件的定义时不好把机票信息文件和旅客信息文件放一起,所以在修改机票剩余票数的是侯的打开两个文件然后得对两个文件进行修改。
再保存模块得把机票的信息录入进去,所以有很多不分都得写,像机票信息的录入,修改,删除,这样一来就像是写一个机票信息管理系统一样,这样一来导致这个文件会很大,很繁琐。但是还好c语言是面向过程的导致很多的程序代码重复,这样就在写好一部分代码以后就可以进行复制,然后进行修改就行,总体来说工作量还不是很大。.
附录
源程序清单(带注释)
1.机票信息录入(带注释):
/*************************机票信息录入*************************/
void inputinfo(struct allfightinfo *p_fight)
{
int count;//变量的定义
char ch,ch1;//定义变量
system("cls");//清屏
if((fightfile=fopen(filename1,"a+b"))==NULL)//打开文件
{
printf("不能打开文件,请确认磁盘已满或 机票信息.dat文件没有损坏");
getch();exit(1);//不能打开时的处理
}
rewind(fightfile); //定位文件头开始读取
for(count=0;fread(&p_fight[count].fight1,sizeof(struct fightinfo),1,fightfile)==1;count++)
continue; //读取并计数已经存的数据量
printf("\n\t\t★---您好,欢迎进入中国民航机票信息登记系统!---★\n");//输出字符及提示语句
printf("\n\t\t\t 飞机票信息登记表\n");
printf("\n请正确填写以下信息(系统目前不能完全支持中文(中文有可能出错),请用英文或拼音\n");
printf("-----------------------------------------------------------------------------\n\n");
printf("航班号:");
while(count
p_fight[count].fight1.allsticket)
{
printf("您输入的剩余票不合乎实际!!!请重新输入!");
goto surp;
}
fflush(stdin);//清空缓存
fwrite(&p_fight[count++].fight1,sizeof(struct fightinfo),1,fightfile); //将信息写入文件
printf("是否录入下一个飞机票信息(y/n)");//询问是否输入下一个机票信息
ch=getch(); //输入一个字符
if(ch=='y'||ch=='Y')//判断字符的输入
{
system("cls");
printf("\n请输入下一个飞机票信息\n");
printf("\n航班号:");
continue; //继续输入下一个飞机票信息
}
else
{
printf("\n\n飞机票信息录入结束,返回!");
fclose(fightfile); //关闭文件
getch(); //返回子菜单
system("cls");//清屏
return ;
}
}
printf("输入有误,终止飞机票信息录信,返回!");
getch();//等待输入字符
system("cls");
return ; //返回
3.源程序清单:(附)
/* ****************************************
* Author:飞机订票系统组
* Datetime:2010/06*/
#include
#include
#include
#include
#include
#define fightMAX 1000
void inputinfo(struct allfightinfo *);//机票信息录入
void filename1read (struct allfightinfo *);//旅客信息信息读取
void allabout(struct allfightinfo *); //查询所有信息
void mofinfo(struct allfightinfo *);//修改机票信息
void password();//密码验证
int checkcode();//身份验证
void modifycode();//修改登陆密码
void delinfo(struct allfightinfo *);//删除
void fightcontrol(struct allfightinfo *);//机票管理模块
void bookticket(struct allfightinfo *p_fight);//订票系统
void display(struct allfightinfo *p_fight);//显示模块
void returnticket(struct allfightinfo *p_fight);//退票
void enquiry(struct allfightinfo *p_fight);//查询模块
void welcome();//欢迎
int submeun();
struct travellerinfo//旅客信息结构
{
char fightnum [10];//航班号
char name [10]; //姓名
char sex [5]; //性别
char idnum [20];//证件号码
char password [10];//密码
char poto [12]; //联系电话
};
struct fightinfo//机票信息结构体
{
char fightnum [10];//航班号
char start [8];//出发地
char destination [8];//目的地
unsigned int price;//价格
unsigned int goyear;//出发时间 年
unsigned int gomoth;//月
unsigned int goday;//日
unsigned int gohour;//时
unsigned int gominute;//分
unsigned int arryear;//到达时间 年
unsigned int arrmoth;//月
unsigned int arrday;//日
unsigned int arrhour;//时
unsigned int arrminute;//分
unsigned int rebate;//折扣
unsigned int allsticket;//总票数
unsigned int surplusticket;//剩余票数
};
struct allfightinfo //机票全部结构
{
struct travellerinfo fight;//旅客信息结构
struct fightinfo fight1;//机票信息结构体
};
FILE *travellerfile=NULL; //存旅客信息数据文件
FILE *fightfile=NULL; //存机票信息数据文件
char filename[]="旅客信息信息登记.dat"; //记录旅客信息登记
char filename1[]="机票信息.dat"; //记录机票信息
int main(viod)
{
int in;
time_t start,end;
struct allfightinfo fightmax[fightMAX]; //最大机票数
struct allfightinfo *p_fight; //指向结构指针
p_fight=fightmax;
welcome();
system("cls");
do
{
system("cls");
in=submeun();
switch(in)
{
case 1:bookticket(p_fight);//订票
break;
case 2:display(p_fight);//显示
break;
case 3:returnticket(p_fight);//退票
break;
case 4:enquiry(p_fight);//查询
break;
case 5:fightcontrol(p_fight);//修改
break;
case 6:system("cls");
printf("\n\n\n\n\n\n\t\t\t\t暂时没有此模块!");//systemhelp();//帮助
getch(); break;
case 7:break;
}
}while(in!=7);
printf("\n\n\n\t\t\t感 谢 使 用 本 系 统 ! ! ");
start=time(NULL);
end=time(NULL);
while(end-start<1.5)
end=time(NULL);
return;
}
/***********************显示子菜单*************************/
int submeun()
{
int in;
char ch;
system("cls");
system("color 07");
printf("\a\n\t\t★---您好,欢迎进入中国民航飞机订票系统!---★\n");
printf("\n\n\n");
printf("\t\t╭----------------------------------------------╮\n");
printf("\t\t| 飞 机 订 票 系 统 |\n");
printf("\t\t|----------------------------------------------|\n");
printf("\t\t| 1. 订 票 |\n");
printf("\t\t| |\n");
printf("\t\t| 2. 显 示 |\n");
printf("\t\t| |\n");
printf("\t\t| 3. 退 票 |\n");
printf("\t\t| |\n");
printf("\t\t| 4. 查 询 |\n");
printf("\t\t| |\n");
printf("\t\t| 5. 保 存 |\n");
printf("\t\t| |\n");
printf("\t\t| 6. 帮 助 |\n");
printf("\t\t| |\n");
printf("\t\t| 7. 退出系统 |\n");
printf("\t\t╰----------------------------------------------╯\n");
printf("\t\t 请您正确选择:");
while(scanf("%d",&in)!=1||(!(0