C语言课程设计(飞机订票系统说明书)

更新时间:2023-12-21 18:47:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

设计目的?????????????????????1 总体设计?????????????????????1 详细设计?????????????????????3 调试与测试????????????????????4 源程序代码?????????????????4 程序运行截图????????????????16 仍存在的问题????????????????18 心得体会?????????????????????18 设计进度表????????????????????19 参考文献?????????????????????20

一、正文

(一)设计目的:

假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计一飞机订票系统,使之能提供下列服务:

1、航班信息录入功能(航班信息用文件保存)

包括航班号、起始站、终点站、机票总数、已售机票数; 2、航班信息浏览功能

3、查询航线:按航班号查询、按终点站查询、按航线查询 4、承办订票和退票业务(可选项) 5、修改航班信息 6、删除航班信息 (二) 总体设计:

编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、查询、修改、删除以及订票、退票的功能。根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。这就是看到题目后的最初的思路。

因为飞机票管理系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,综合考虑决定用结构体数组比较合适,根据题目要求定义如下结构体类型:

头文件包含、全局变量定义和结构体定义源代码: #include//标准输入、输出头文件 #include//包含字符串函数处理头文件 #include #define N 1000 #define

//定义最多的航班数

PRT

\s s d d\\n\ //定义输出格式

#define LB \航班号 起始站 终点站 时 间 机票总数 已售票数 \\n\定义打印列表格式

struct air {int num; char start[20]; char over[20]; char time[10]; int count;//机票总数 int selled;//已预定机票总数

- 1 -

}s[N]; int i,m=0; char ii[10];

//定义全局变量,记录下航班信息的数量 //用来选择是否继续的变量

大概思路就是这样!

详细设计(定义的每个函数均作介绍): 1)初始化界面函数(face函数)

在程序开始执行时调用该函数,在屏幕上打印出初始界面!并选择要执行的操作!

2)信息输入函数(input函数)

该函数里面调用for循环控制,该函数中用到一个全局变量k,用来控制该函数被再次调用时可以在已存放信息结构体后面继续输入数据,每当一个完整的航班信息输入完毕后,会提示是否输入下一个信息!按\结束输入!然后调用下面要介绍的信息保存函数(save函数)!保存完毕后退回到主菜单!

3)信息保存函数(save函数)

由于本程序设计时当输入机票总数不是正数时就会结束保存航班信息,所以进入save函数时首先判断机票总数是否大于0,大于0时候开始进入主体部分执行!主要过程是先打开文件,文件打开成功后调用文件格式输出函数(fprinf函数)将信息保存到文件中区!

4)文件读取函数(read函数)

该函数首先打开保存飞机票信息的文件,然后将保存的信息写到飞机信息的结构体数组里面去(调用格式输入函数fscanf),并将航班信息输出到屏幕上!输入完毕后关闭文件!

5)信息打印函数(print函数)

该函数只是负责把调用read函数,并打印出航班信息输出事的一些辅助信息! 6)航班信息查找函数

本函数用do.....while 循环控制结构,进入函数后选择查询方式(可以按航班号、终点站、航线查询),方式选择后用switch语句飞机的航班号(或者起始站、终点站)!从switch语句出来后,首先调用文件读取函数(read函数),输出所有航班信息到屏幕上,然后在if语句中判断刚才所输入飞机的航班号(或者起始站、终点站)与数组中那个航班信息符合,找到后打印出来!循环结束后,输入“yes”(“no”),while判断输入的条件继续(终止查找)!选择终止查找后返回主菜单! 7)航班信息删除函数(Delete)

航班删除模块与查找函数类似,也是用的do.....while 循环控制结构,不同时要先输入密码才能进入函数!进入函数后要选择删除方式(按航班号、航线)删除,输入要删除的航班号(航线)后,比如说选择按航班号删除,找到要删除的航班数组下标i后,用for(int j=i;j

首先调用查询函数(search函数),找到要预订机票的航班,然后输入要顶的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息! 9)退票函数(Refund()函数

- 2 -

与订票函数类似,首先调用查询函数(search函数),找到要预订机票的航班,然后输入要退的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息! 10)修改函数(Modify函数)

该函数与输入函数类似,把数组里面的信息重新输入一遍达到修改航班信息的功能! 11)main函数

输入密码后进入main函数,然后main函数负责调用以上程序就行了!

源程序代码: #include #include #include

#define N 200 struct air {int num; char start[20]; char over[20]; char time[10];

int count;//机票总数

int selled;//已预定机票总数 }s[N]; #define PRT \s s d d\\n\ //定义输出格式

#define LB \航班号 起始站 终点站 时 间 机票总数 已售票数 \\n\定义打印列表格式

void face(); void input(); void print(); void search(); void Delete(); void Booking(); void Modify(); void Refund(); void save(); void read();

int i,m=0,k=0;

void face()

{system(\ puts(\ ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\ puts(\ ★* 飞机票管理系统欢迎您 *★\

- 3 -

puts(\ ★********************************************************★\ puts(\ ★* 你可以选择下面的操作: *★\ puts(\ ★* 1.输入航班信息 *★\ puts(\ ★* 2.浏览航班信息 *★\ puts(\ ★* 3.查询航班信息 *★\ puts(\ ★* 4.删除航班信息 *★\ puts(\ ★* 5.订票信息 *★\ puts(\ ★* 6.修改信息 *★\ puts(\ ★* 7.退票信息 *★\ puts(\ ★* 0.退出 *★\ puts(\ ★********************************************************★\ puts(\ ★* 制作人:##### 学号:111111111111 *★\ puts(\ ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\}

void main() { //delay(1000); system(\设置背景和字体颜色 //system(\ int j; char f[]=\ //设置密码 int y;

printf(\ 飞 机 票 管 理 系 统\\n\\n\ while(1){

printf(\ 请 输 入 密 码 进 入 系 统:\\n \ scanf(\ //读取密码

if(strcmp(f,\ {

while(1) { system(\ face(); printf(\请在0-7中选择以回车键结束: \ scanf(\ system(\ switch(j) {

case 1: input();//调用输入模块 break;

case 2:print();//调用打印模块 break;

case 3:search();//调用查询模块

- 4 -

break;

case 4:Delete();//调用删除模块 break;

case 5:Booking();//调用订票模块 break;

case 6:Modify();//调用修改模块 break;

case 7:Refund();//调用退票模块 break;

case 0:goto end; } printf(\按任意键继续......\ } } else { int yy;

printf(\ 输入密码错误!请检查您的密码是否正确! \\n\\n\

printf(\ 是否继续输密码?按任意键继续,0结束!\\n\ scanf(\在此需输入任意一个整数值数值,程序才能继续执行 if(y==0) break; } }

end:printf(\ (=^ ^=) 欢 迎 再 次 回 来 (=^ ^=)\\n\ printf(\ 任意键退出系统!\\n\ int hp2; scanf(\ }

void input() {

system(\ printf(\请依次输入航班信息(机票总数为0结束输入): \

\完成输入信息请键入w以回车键结束 \\n\ //打印提示信息 printf(\ int y;

for(i=k;i

printf(\请输入航班号: \

- 5 -

scanf(\ //读取航班号 printf(\请输入起始站: \

scanf(\读取起始站 printf(\请输入终点站: \

scanf(\读取终点站 printf(\请输入时间(星期): \

scanf(\读取时间 printf(\请输入总机票数(0结束): \ scanf(\读取机票数 printf(\请输入已售机票数: \

scanf(\读取机票数 m++;//飞机信息录入计数 k++;

printf(\ 第%d个信息已经输完是否继续?按任意键继续(0结束)\\n\ scanf(\在此需输入任意一个整数值数值,程序才能继续执行 if(y==0) { save();//保持输入数据 break; } } }

void save()//保存模块程序 { if(s[0].count>0) { system(\ FILE *fp;//定义文件指针

if((fp=fopen(\飞机票系统数据保存.txt\打开文件并判断是否出错 {

printf(\文件打开失败! \打印出错提示 } else {

fprintf( fp,LB);

fprintf( fp,\ for(i=0;i0;i++) {

fprintf(fp,PRT); } }

- 6 -

fclose(fp);//关闭文件 int hp;

printf(\ 信息保存到文件成功!任意键返回主菜单!\\n\\n\ scanf(\ } else { int k; printf(\飞机票总数为零!输入结束!\\n\

printf(\ 任意键返回主菜单!\\n\\n\ scanf(\ } }

void read()//从文件读取信息模块 { system(\ FILE *fp;//定义文件指针

if((fp=fopen(\飞机票系统数据保存.txt\打开文件,并判断是否出错 printf(\创建文件失败! \打印出错提示 else

for(i=0;i

fscanf(fp,\

\ printf(PRT); }

fclose(fp);//关闭文件 }

void print()//打印模块 { system(\ char w[10];

printf(\ 所有航班信息如下\\n\ printf(LB);

read();//调用读取文件函数

printf(\ 按任意键回车键结束返回上层菜单: \\n\\n\ scanf(\}

- 7 -

void search()//查询模块 { system(\ char name1[20]; char name2[20]; char ii[10]; int n,no,flag=0; do {

printf(\请选择查找方式:\\n \打印查询方式菜单 printf(\按航班号查找\\n \ \按终点站查找\\n \ \按航线查找 \\n\ \返回 \\n\

printf(\请在0-3中选择:\\n \

\ 按其他键以回车键结束返回主菜单:\\n \ scanf(\读取查找方式 if(n==0) break; switch(n) {

case 1:

printf(\请输入航班号: \ scanf(\航班号 break; case 2:

printf(\请输入终点站名称: \ scanf(\读取终点站 break; case 3:

printf(\请输入起始站名称: \ scanf(\读取起始站 printf(\请输入终点站名称: \ scanf(\终点站 break; default: break; }

printf(\ 已经存在的航班如下\\n\\n\ printf(LB);

read();//调用读取函数 for(i=0;i

if(strcmp(s[i].over,name1)==0&&strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件

- 8 -

{

//printf(\ 查找航班信息成功!\\n\\n\

printf(\ 下面是你要查找的航班信息\\n\\n \ flag=1; printf(LB);

printf(PRT);//打印信息 break; }

if(strcmp(s[i].over,name2)==0) {

printf(\ 下面是你要查找的航班信息\\n\\n \ flag=1; printf(LB);

printf(PRT);//打印信息 break; }

if(s[i].num==no)//按航班号判断输出条件 {

printf(\ 下面是你要查找的航班信息\\n\\n \ flag=1; printf(LB);

printf(PRT);//打印信息 break; } }

no=0;//将航班号赋值为0 if(flag)

{printf(\ 您需要的信息查找完毕:\\n \

\ 是否继续查找?请键入yes或no以回车键结束\\n \ scanf(\ } else {

printf(\ 没有您需要的信息:\\n \

\ 是否继续查找?请键入yes或no以回车键结束\\n \ scanf(\ } }

while(strcmp(ii,\判断结束 while(strcmp(ii,\break; }

- 9 -

}

以上即为我的源程代码。

a) 执行结果:

程序最终运行情况如所贴图表。

1) 第一次运行程序(输入初始数据)

首次进入程序要求输入密码方能进入系统!密码错误后可以选择是否继续输入密码!进入成功后!界面提示输入原始数据:选择操作1→请输入航班号→请输入起始站→请输入终点站→请输入飞行时间→请输入机票数→请输入已售机票数。我按照提示一次输入了4个航班信息后按提示输入“0”则不再继续输入,系统显示出了主菜单界面。接着按0退出程序,显示“欢迎再次回来!。”

图表 1—主菜单界面

2) 航班信息的浏览

退到主菜单后在提示中输入“2” →浏览航班信息。输出如下航班信息(如图表2)!

图表 2—显示航班信息

- 15 -

3) 查询航班信息

在主菜单界面输入3→选择查询方式1→输入“20101461” →显示出所查找的信息(如图表3)

图表 3—查询航班信息

4) 航班删除

在主菜单界面输入4→按照提示输入“2”(按航班号从大到小排序)→显示出排序后的航班信息(如图表4)

- 16 -

图表 4—航班排序

5) 订票业务

在主菜单输入5→提示输入航班号→选择查询方式1→输入航班号20101462→显示出已有航班信息和查找的航班信息→输入“no”结束查询进入订票选择并提示输入订票数:输入3→“订票成功” (如图表5)

图表 5—订票业务1

- 17 -

(三) 仍存在的问题:

系统中有的地方并不完善,有的地方存在漏洞,程序中过多的使用宏定义的字符,是程序在有的地方不够直观! (四) 心得体会:

通过这次课程设计,使我了解到自己对知识的掌握和综合运用情况,养成严谨的科学态度和良好的程序设计习惯,也使我认识到自己的知识缺陷。虽然在设计的时候遇到过很多问题,但都一一克服了。学到了要运用综合知识来分析、解决实际问题。这也提高了自己对学习这门功课的兴趣,增加了将来对学好这门功课的动力。

指导教师(签字):

教研室主任(签字): 批准日期: 年 - 18 -

月 日

课程设计进度表

序号 起止日期 计划完成内容

检查人签名检查日期 实际完成情况 1 2011.11.10 分析题目,总体设计 详细设计,编制初始化、数据文件的新建、读取、保存函数 编制航班信息的增加、显示、查找、排序函数 编制订票、退票、退出系统函数 再次调试与测试并完成课程设计任务书 完成 2 2011.11.13 完成 3 2011.11.17 完成 4 2011.11.19 完成 5 2011.11.23 完成 6 7 8 9 10 指导教师批准,并签名: 2011 年 月 日

- 19 -

二、参考文献

[1]Kenneth A.Reek著,徐波译,《C和指针》,人民邮电出版社 [2]Brian W.Kernighan、Dennis M.Ritchie 著,徐宝文、李志译,《C程序设计语言》(第二版.新版) [3]谭浩强 著,《C程序设计》(第三版)

- 20 -

本文来源:https://www.bwwdw.com/article/9585.html

Top