报告模本.docx
《报告模本.docx》由会员分享,可在线阅读,更多相关《报告模本.docx(20页珍藏版)》请在冰豆网上搜索。
![报告模本.docx](https://file1.bdocx.com/fileroot1/2023-1/21/e0466869-86bc-4d2b-bfea-be350d7bdbde/e0466869-86bc-4d2b-bfea-be350d7bdbde1.gif)
报告模本
课程设计报告
课程名称《C语言程序设计》
课题名称飞机订票系统
专业计算机科学与技术
班级计算机1002
学号201003010234
姓名吴超
指导教师冯剑李珍辉李杰君
2011年7月5日
湖南工程学院
课程设计任务书
课程名称《C语言程序设计》
课题飞机订票系统
专业班级计算机1002
学生姓名吴超
学号201003010234
指导老师冯剑李珍辉李杰君
审批
任务书下达日期2011年6月5日
任务完成日期2011年7月5日
一、设计内容与设计要求
1.课程设计目的:
全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计打下较扎实的基础。
2.课题题目
飞机订票系统
3.设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。
具体要求如下:
⑴设计课题题目:
每位同学根据自己学号除以8所得的余数加一选择相应题号的课题。
原则上不予换提,私自换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求;输入输出的要求。
②完成系统概要设计:
程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
③完成系统详细设计:
包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图。
④调试分析、设计体会、测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
⑤关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第19周星期一8:
30——11:
30
星期二8:
30——11:
30
星期三8:
30——11:
30
星期四8:
30——11:
30
设计课题:
飞机订票系统
一、问题描述:
假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。
通过该系统来实现机票的订购问题。
二、功能要求:
1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
起飞地、目的地、航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。
2、本系统显示这样的菜单:
(1)输入航班信息
(2)输出航班信息
(3)查找航班信息
a.显示空座的数量
b.显示空座的信息
c.显示已订座的信息
d.起飞时间
(4)订票预约
(5)删除订票预约
(6)退出系统
1、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。
2、查找航班信息既可按线路查,也可按目的地查。
4、在两次运行之间,数据被保存于一个文件里,当本程序重新开
始的时候,它首先从该文件读入数据
三、算法提示:
1、数据结构:
结构体类型数组
2、数据库结构:
下表构成该系统的基本数据库。
航班号
起飞时间
目的地
座次号
座次订出与否的标记
订票者姓名
订票者身份证号码
int
char
char
int
Char
char
char
四、测试数据:
每架飞机的座位N=12,M=5
五、其它:
对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
目录
1.系统需求分析1
2.总体设计1
3.详细设计1
4.系统调试1
5.结果分析1
6.总结1
1系统需求分析
系统要求程序能执行以下功能
1、输入航班信息
2、输出航班信息
3、查找航班信息
a.显示空座的数量
b.显示空座的信息
c.显示已订座的信息
d.起飞时间
4、订票预约
5、删除订票预约
并要求程序在两次运行之间,数据被保存于一个文件里,当本程序重新开
始的时候,它首先从该文件读入数据
1.总体设计
总体结构图
管理员可以通过密码验证输入机票信息,可以对机票信息进行查询;修改;删除等功能。
一般用户可以使用订票;显示;退票等功能,在输入机票信息时用户输入密码。
具体功能如下:
1、输入模块:
(输入密码)首先输入航班起飞时间,再输入航班添加的人的信息
2、输出模块:
输出所有航班的所有座位信息。
3查询模块:
(1)航班起飞时间
(2)航班空位数(3)航班空位具体信息(4)航班非空位具体信息
4订票模块:
输入航班号,座位号验证是否有人定,无人定就输入起飞地,目的地,姓名,证件号。
5、退票模块:
输入退票的航班号,座位号;验证是否已定,如无人定则输出输入有误请重新输入,否则输出退票成功。
2.详细设计
main()
input()
output()
search()
tingpiao()
tuipiao()
input是输入模块
output是输出模块
search是查询模块
dingpiao是订票模块
tupiao是退票模块
结构体:
程序中用到了一个结构体数组,其中用到了结构体的嵌套;结构体定
义如下:
structhangban
{
structzuowei
{
charbegin[10];//起始地
charend[10];//目的地
charflag[10];//判断是否有人
charname[10];//姓名
charsheng[10];//身份证
}b[12];//表示12个座位;
chartime[10];//航班时间
intkong;//航班空位
}a[5];//表示五个航班;
文件:
设置了一个文件用来保存航班的信息;每次运行程序,他自动从文件中读取信息;结束文件是又向文件中保存信息;
具体定义如下:
FILE*f;
模块实现:
各个模块实现都比较简单,就不一一解释;
voiddingpiao()//订票模块
{
inti,j;
charch;//判断是否继续订票的变量
ch='Y';
while(ch=='Y')//ch为Y时进行订票
{
system("cls");//清屏
kaitou();//开头的输出
printf("请输入航班号及其座位号:
");
scanf("%d%d",&i,&j);//输入航班号、座位号
if(strcmp(a[i].b[j].flag,"yes")==0)//判断此座位是否被定
{
printf("此座位可订,请输入乘客的起飞地,目的地,姓名,身份证号码:
");
scanf("%s%s",a[i].b[j].begin,a[i].b[j].end);//输入起飞地,目的地
scanf("%s%s",a[i].b[j].name,a[i].b[j].sheng);//输入姓名,身份证
strcpy(a[i].b[j].flag,"no");//把此座位设为已定
a[i].kong--;//把航班的空座减一
}else
printf("您输入的航班座位已定.");
printf("是否继续定票(是请输入Y,否请输入N):
");
do
scanf("%c",&ch);
while(ch!
='Y'&&ch!
='N');//直到输入Y或N时退出输入
}
}
密码部分:
printf("请输入密码:
");
scanf("%d",&k);//输入密码,用k保存
if(k!
=666666)//设置初始密码为666666,判断输入是否与密码相同
{
printf("密码有误\n");
return;//不同则直接退出函数
}
判断是否退出函数的部分:
ch='Y';
while(ch=='Y')判断是否退出函数
{
……
do
scanf("%c",&ch);
while(ch!
='Y'&&ch!
='N');直到输入一个Y或N时才结束输入
}
直到输入一个Y或N时才结束输入,防止程序随便读入一个回车符或其他字符就进行条件判断。
3.系统调试
在开始,出现了不知该如何定义变量的问题,定义的变量不能很好的保存我所用的信息,后面用了一个结构体数组嵌套一个结构体数组;发现问题一下子就解决了。
由于文件学的不太好,开始打开文件时,未把打开文件的地址赋值给文件指针,导致程序运行出错。
后面加上去了。
在调试时,发现自己已经在运行这程序,却又对它进行编译,就会出现编译错误。
后面把在运行程序的窗口关掉时,它就没错误了。
运行程序时发现,在运行窗口上出现许多东西,由前面运行的输入输出,由现在运行的输入输出,非常不美观,于是上网查到了一个清屏函数,这下屏幕上美观多了。
尽管调试时,也有一些小错误,劈如:
少写了一个分号;把某字母大写了;少加了一个大括号等等。
但都轻松解决了。
4.结果分析
在飞机订票系统中:
设计特点:
程序比较简单,易懂,能实现设计所给出的要求。
设置了一个结构体数组,用它来代表航班信息;且这结构体数组里嵌套了一个结构体数组,用它来代表航班中的座位信息。
这样能很好的记录航班信息。
定义了一个文件,保存着航班信息;每次运行程序,程序自动从文件中读取航班信息;每次程序结束时;又把这次所输入的信息保存到文件中。
不足:
程序有些航班信息没进行考虑,譬如没有考虑价格等因素;在很大程度上有待完善。
附程序:
#include
#include
#include
FILE*f;
intn;
structhangban
{
structzuowei
{
charbegin[10];
charend[10];
charflag[10];
charname[10];
charsheng[10];
}b[12];
chartime[10];
intkong;
}a[5];
voidkaitou()
{
printf("********************************************************************************");
printf("欢迎进入南方航空管理系统\n");
printf("********************************************************************************");
}
voidduqu()
{
inti,k;
f=fopen("f","r");
for(k=0;k<5;k++)
{
for(i=0;i<12;i++)
{
fscanf(f,"%s",a[k].b[i].flag);
if(strcmp(a[k].b[i].flag,"no")==0)
{
fscanf(f,"%s%s",a[k].b[i].begin,a[k].b[i].end);
fscanf(f,"%s%s",a[k].b[i].name,a[k].b[i].sheng);
}elsea[k].kong++;
}
fscanf(f,"%s",a[k].time);
}
fclose(f);
}
voidinput()
{
inti,j,k,t;
charch;
system("cls");
kaitou();
printf("请输入密码:
");
scanf("%d",&k);
if(k!
=666666)
{
printf("密码有误\n");
return;
}
system("cls");
kaitou();
printf("密码正确!
\n");
printf("请输入需修改的航班时间的数目:
");
scanf("%d",&k);
printf("输入修改的航班及其时间\n");
for(j=0;j{
scanf("%d",&i);
scanf("%s",a[i].time);
}
printf("进入下一项输入请输入Y:
");
do
scanf("%c",&ch);
while(ch!
='Y');
system("cls");
kaitou();
printf("\n请输入航班添加的人数:
");
scanf("%d",&k);
for(t=0;t{
printf("\n请输入航班号及其座位号:
");
scanf("%d%d",&i,&j);
if(strcmp(a[i].b[j].flag,"yes")==0)
{
printf("此座位可订,请输入乘客的起飞地,目的地,姓名,身份证号码:
");
scanf("%s%s",a[i].b[j].begin,a[i].b[j].end);
scanf("%s%s",a[i].b[j].name,a[i].b[j].sheng);
strcpy(a[i].b[j].flag,"no");
a[i].kong--;
printf("");
}else{
printf("此座位不可订,请重新输入!
\n");
k++;
}
}
printf("返回主菜单请输入Y:
");
do
scanf("%c",&ch);
while(ch!
='Y');
}
voidoutput()
{
inti,j;
charch;
system("cls");
kaitou();
for(i=0;i<5;i++)
{
printf("-----------------输出%d号航班的信息:
\n",i);
printf("%d号航班的出发时间:
");
printf("%s\n",a[i].time);
for(j=0;j<12;j++)
if(strcmp(a[i].b[j].flag,"no")==0)
{
printf("%d号座乘客的起飞地,目的地,姓名,身份证号码:
",j);
printf("%s%s",a[i].b[j].begin,a[i].b[j].end);
printf("%s%s\n",a[i].b[j].name,a[i].b[j].sheng);
}else
{
printf("%d号座是空位!
\n",j);
}
}
printf("返回主菜单请输入Y:
");
do
scanf("%c",&ch);
while(ch!
='Y');
}
voidsearch()
{
inti,j,t;
charch;
ch='Y';
while(ch=='Y')
{
system("cls");
kaitou();
printf("请输入要查找的航班:
");
scanf("%d",&i);
printf("1:
航班的空座数量\n");
printf("2:
航班空座的具体信息\n");
printf("3:
航班已订座的具体信息\n");
printf("4:
航班的起飞时间\n");
printf("请选择1--6进入以下菜单:
");
scanf("%d",&t);
system("cls");
kaitou();
switch(t)
{
case1:
printf("%d号航班的空座数量:
",i);
printf("%d\n",a[i].kong);break;
case2:
printf("%d号航班空座的具体信息:
\n",i);
for(j=0;j<12;j++)
if(strcmp(a[i].b[j].flag,"yes")==0)
printf("%d",j);
printf("\n");
break;
case3:
printf("%d号航班已订座的具体信息:
\n",i);
for(j=0;j<12;j++)
if(strcmp(a[i].b[j].flag,"no")==0)
{
printf("%d号座乘客的起飞地,目的地,姓名,身份证号码:
",j);
printf("%s%s",a[i].b[j].begin,a[i].b[j].end);
printf("%s%s\n",a[i].b[j].name,a[i].b[j].sheng);
}
break;
case4:
printf("%d号航班的起飞时间:
",i);
printf("%s\n",a[i].time);break;
}
printf("是否继续查找航班信息(是的输入Y,否输入N):
");
do
scanf("%c",&ch);
while(ch!
='Y'&&ch!
='N');
}
}
voiddingpiao()
{
inti,j;
charch;
ch='Y';
while(ch=='Y')
{
system("cls");
kaitou();
printf("请输入航班号及其座位号:
");
scanf("%d%d",&i,&j);
if(strcmp(a[i].b[j].flag,"yes")==0)
{
printf("此座位可订,请输入乘客的起飞地,目的地,姓名,身份证号码:
");
scanf("%s%s",a[i].b[j].begin,a[i].b[j].end);
scanf("%s%s",a[i].b[j].name,a[i].b[j].sheng);
strcpy(a[i].b[j].flag,"no");
a[i].kong--;
printf("");
}else
printf("您输入的航班座位已定.");
printf("是否继续定票(是请输入Y,否请输入N):
");
do
scanf("%c",&ch);
while(ch!
='Y'&&ch!
='N');
}
}
voidtuipiao()
{
inti,j,k;
charch;
ch='Y';
while(ch=='Y')
{
system("cls");
kaitou();
k=1;
do
{
printf("请输入您要退票的航班号与座位号(回车结束):
");
scanf("%d%d",&i,&j);
if(strcmp(a[i].b[j].flag,"yes")==0)
printf("您的输入有误,请重新输入.");
else{
strcpy(a[i].b[j].flag,"yes");
a[i].kong++;
k=0;}
}while(k);
printf("您已退票成功!
");
printf("是否需要继续退票(是的输入Y,否输入N):
");
do
scanf("%c",&ch);
while(ch!
='Y'&&ch!
='N');
}
}
voidsave()
{
inti,k;
f=fopen("f","w");
for(k=0;k<5;k++)
{
for(i=0;i<12;i++)
{
fprintf(f,"%s",a[k].b[i].flag);
if(strcmp(a[k].b[i].flag,"yes")!
=0)
{
fprintf(f,"%s%s",a[k].b[i].begin,a[k].b[i].end);
fprintf(f,"%s%s",a[k].b[i].name,a[k].b[i].sheng);
}
}
fprintf(f,"%s\n",a[k].time);
}
fclose(f);
}
voidmain()
{
intk,i=1;
duqu();
do
{
system("cls");
kaitou();
printf("1:
输入航班信息\n");
printf("2:
输出航班信息\n");
printf("3:
查找航班信息\n");
printf("4:
订票预约\n");
printf("5:
删除订票预约\n");
printf("6:
退出系统\n");
printf("请选择1--6进入以下菜单\n");
scanf("%d",&k);
switch(k)
{
case1:
input();break;
case2:
output();break;
case3:
search();break;
case4:
dingpiao();break;
case5:
tuipiao();break;
case6:
i=0;break;
}
}while(i);
save();
}
5.总结
课程设计心得:
课程设计给我一个学以致用的机会,刚开始的时候还以为学这黑黑的东西没用,只是一些简单的计算。
经过了这次的练习我才发现原来的黑屏有它自己的好处,通过学习也发现原来这种黑屏就是那些应用程序的原型,不论你以后学程序开发还是网页的制作都有很好大好处,这些基础是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训