软件学院大作业任务书题目:航班信息查询系统专业:班级:姓名:学号:完成人数:起讫日期:任课教师:职称:讲师部分管主任:完成时间:说明1.本任务书由任课教师填写后,下达到学生。
2.任务完成后,任课教师需填写小结表。
3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。
4.另附一份全班大作业总结NANCHANG UNIVERSITY高级语言程序设计课程设计题目: 航班信息查询系统学院:专业:班级:完成人数:成员:起讫日期:任课教师:完成时间:填表日期:目录一、需求分析.............................................................................................................................. - 1 -1.1 项目介绍.................................................................................................................. - 1 -1.2 功能需求.................................................................................................................. - 1 -二、系统分析.............................................................................................................................. - 1 -2.1 本程序需解决的关键技术问题.............................................................................. - 1 -2.2 程序流程.................................................................................................................. - 1 -三、程序设计与实现.................................................................................................................. - 2 -3.1 程序设计.................................................................................................................. - 2 -3.2 程序实现....................................................................................... 错误!未定义书签。
四、系统测试............................................................................................................................ - 11 -五、个人小结............................................................................................................................ - 13 -六、参考文献............................................................................................................................ - 13 -一、需求分析1.1 项目介绍一个简易的航班信息查询系统,将航班信息录入进去,就可以查询到航班的信息1.2 功能需求1.所有航班信息2.航班查询3.输入新的航班信息4.删除航班信息二、系统分析2.1 本程序需解决的关键技术问题使用了struct结构体多次使用了if语句 for循环语句用到了指针的内容2.2 程序流程1,了解问题。
要解决问题,必须先了解每个细节。
2 ,确定解决问题的流程,确认输入输出内容即内部需要做的操作。
输入:用户的选择指令。
输出:程序的运行结果。
操作:对信息读入,存储,删除3,设计操作算法。
得出数据流图。
对每块的操作流程做设计。
如何对信息读入,存储,删除等。
4 编写代码。
将算法实体化,形成C代码。
5 测试并解决问题。
编译运行,尝试输入多组数据,测试结果是否与预期相同。
如果不同,那么查找问题并修改代码。
最终形成合格的程序。
三、程序设计与实现3.1 程序设计#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#define N 15#define M 20#define LEN sizeof(struct fly)typedef struct fly{int no;/*航班号*/char startpoint[M];char finalpoint[M];int banqi[M];char startime[M];char finaltime[M];char tipe[M];float price;};struct fly f[N];void in();void all();void show(int i);void order(int); /*排序*/void find(); /*查询系统*/void search(); /*编号查询系统*/void menu();void startpoint(); /*起点站查询系统*/void finalpoint(); /*达到站查询系统*/void startime(); /*起点时间查询系统*/void finaltime(); /*到达时间查询系统*/int main(){int n;menu();scanf("%d",&n);while(n){switch(n){case 1:all();break;case 2:find();break;case 3:in();break;default:break;}getch();menu();scanf("%d",&n);}}void menu(){system("cls");printf("\n\n\n\n\n");printf("\t\t|--------------航班信息查询系统----------------|\n");printf("\t\t| 0.退出|\n");printf("\t\t| 1.所有航班|\n");printf("\t\t| 2.航班查询|\n");printf("\t\t| 3.输入新的航班信息|\n");printf("\t\t| 4.删除航班信息|\n");printf("\t\t|----------------------------------------------|\n\n ");printf("\t\t\t 选择(0-4):______");}void all(){int i,m=0;char ch[2];FILE *fp;if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))//feof()是文件结束检测函数,如果没有结束,返回值是0,结束了是1{if(fread(&f[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0)printf("没有航班记录\n");else{system("cls");/*system就是调用DOS命令,CLS命令的意思是清除屏幕上所有的文字*/for(i=0;i<m;i++)show(i);}printf("按任意键返回菜单");}void in(){int x,i,m=0;char ch[2];FILE *fp;if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))//feof()是文件结束检测函数,如果没有结束,返回值是0,结束了是1{if(fread(&f[m],LEN,1,fp)==1)m++;}fclose(fp);if((fp=fopen("data","wb"))==NULL){printf("不能打开文件\n ");return;}for(i=0;i<m;i++)fwrite(&f[i],LEN,1,fp);printf("是否输入新的航班信息?输入请按'Y'否则按任意键----"); scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("编号--------");scanf("%d",&x);for(i=0;i<m;i++)if(f[i].no==x){printf("该记录已经存在!按任意键返回菜单\n");fclose(fp);return;}f[m].no=x;printf("起点站-----");scanf("%s",&f[m].startpoint);printf("终点站-----");scanf("%s",&f[m].finalpoint);printf("班期-------");scanf("%s",&f[m].banqi);printf("起飞时间---");scanf("%s",&f[m].startime);printf("到达时间---");scanf("%s",&f[m].finaltime);printf("飞机型号---");scanf("%s",&f[m].tipe);printf("价格-------");scanf("%f",&f[m].price);printf("是否保存?输入请按'Y'否则按任意键----");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){if(fwrite(&f[m],LEN,1,fp)!=1){printf("不能保存\n");getch();}else{printf("编号为%d的航班信息已经保存\n",f[i].no);m++;}}printf("是否继续,继续请按--Y--,否则按任意键");scanf("%s",ch);}fclose(fp);printf("OK");}void find() /*查询系统*/{system("cls");printf("\n\n\n\n\n");printf("\t\t|----------------航班信息查询------------------|\n");printf("\t\t| 0.返回菜单|\n");printf("\t\t| 1.航班号查询|\n");printf("\t\t| 2.起点站查询|\n");printf("\t\t| 3.到达站查询|\n");printf("\t\t| 4.起飞时间查询|\n");printf("\t\t| 5.到达时间查询|\n");printf("\t\t|----------------------------------------------|\n\n ");printf("\t\t\t 选择(0-5):______");int n;scanf("%d",&n);if(n<0||n>5)printf("输入错误!");else switch(n){case 0:return;case 1:search();break;case 2:startpoint();break;case 3:finalpoint();break;case 4:startime();break;case 5:finaltime();break;default:break;}}void search() /*编号查询系统*/{FILE *fp;int snum,i,m=0,x=0;char ch[2];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))if(fread(&f[m],LEN,1,fp)==1);m++;if(m==0){printf("没有记录");return;}printf("请输入编号----");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==f[i].no){show(i);x++;}if(x==0)printf("没有相关的记录\n");fclose(fp);return;}void startpoint() /*起点站查询系统*/{FILE *fp;int i,m=0;char snum[M];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))if(fread(&f[m],LEN,1,fp)==1);m++;fclose(fp);if(m==0){printf("没有记录");return;}printf("请输入起点站----");scanf("%s",&snum);for(i=0;i<m;i++){if(strcmp(f[i].startpoint,snum)==0){show(i);}elseprintf("没有相关的记录\n");return;}}void finalpoint() /*到达站查询系统*/{FILE *fp;int i,m=0;char snum[M];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))if(fread(&f[m],LEN,1,fp)==1);m++;fclose(fp);if(m==0){printf("没有记录");return;}printf("请输入到达站----");scanf("%s",&snum);for(i=0;i<m;i++)if(strcmp(f[i].finalpoint,snum)==0){show(i);continue;}elseprintf("没有相关的记录\n");return;}void startime() /*起点时间查询系统*/{FILE *fp;int i,m=0;char snum[M];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))if(fread(&f[m],LEN,1,fp)==1);m++;fclose(fp);if(m==0){printf("没有记录");return;}printf("请输入起点时间----");scanf("%s",&snum);for(i=0;i<m;i++)if(strcmp(f[i].startime,snum)==0){show(i);continue;}elseprintf("没有相关的记录\n");return;}void finaltime() /*达到时间查询系统*/{FILE *fp;int i,m=0;char snum[M];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))if(fread(&f[m],LEN,1,fp)==1);m++;fclose(fp);if(m==0){printf("没有记录");return;}printf("请输入到达时间----");scanf("%s",&snum);for(i=0;i<m;i++)if(strcmp(f[i].finaltime,snum)==0){show(i);continue;}elseprintf("没有相关的记录\n");return;}void show(int i){printf("航班编号为%d的航班信息如下:\n",f[i].no);printf("起点站----------------%s \n",f[i].startpoint);printf("终点站----------------%s \n",f[i].finalpoint);printf("起飞时间--------------%s \n",f[i].startime);printf("到达时间--------------%s \n",f[i].finaltime);printf("班期------------------%s \n",f[i].banqi);printf("航班型号--------------%s \n",f[i].tipe);printf("价格------------------%5.2f \n",f[i].price);printf("\n\n\n\n");}四、系统测试五、个人小结C语言是面向过程的语言,整体程序都是由函数组成的,所有的执行代码都应该位于函数内部,C语言的程序是从main()函数开始执行运行的,也是从main()函数结束运行的,把几个概念理解清楚,在初始学习阶段就不会混乱。