报告模本Word格式文档下载.docx
《报告模本Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《报告模本Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
写出各模块的类C码算法;
画出函数的调用关系图。
④调试分析、设计体会、测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;
程序调试中遇到的问题以及解决问题的方法;
课程设计过程经验教训、心得体会。
⑤关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第19周星期一8:
30——11:
30
星期二8:
星期三8:
30
星期四8:
设计课题:
一、问题描述:
假设某航空公司只有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
四、测试数据:
每架飞机的座位N=12,M=5
五、其它:
对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
目录
1.系统需求分析1
2.总体设计1
3.详细设计1
4.系统调试1
5.结果分析1
6.总结1
1系统需求分析
系统要求程序能执行以下功能
1、输入航班信息
2、输出航班信息
3、查找航班信息
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=='
)//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("
a[i].b[j].name,a[i].b[j].sheng);
//输入姓名,身份证
strcpy(a[i].b[j].flag,"
no"
//把此座位设为已定
a[i].kong--;
//把航班的空座减一
}else
您输入的航班座位已定."
是否继续定票(是请输入Y,否请输入N):
"
do
%c"
ch);
while(ch!
='
&
ch!
N'
//直到输入Y或N时退出输入
}
}
密码部分:
printf("
请输入密码:
scanf("
%d"
k);
//输入密码,用k保存
if(k!
=666666)//设置初始密码为666666,判断输入是否与密码相同
密码有误\n"
return;
//不同则直接退出函数
判断是否退出函数的部分:
)判断是否退出函数
……
do
scanf("
直到输入一个Y或N时才结束输入
直到输入一个Y或N时才结束输入,防止程序随便读入一个回车符或其他字符就进行条件判断。
3.系统调试
在开始,出现了不知该如何定义变量的问题,定义的变量不能很好的保存我所用的信息,后面用了一个结构体数组嵌套一个结构体数组;
发现问题一下子就解决了。
由于文件学的不太好,开始打开文件时,未把打开文件的地址赋值给文件指针,导致程序运行出错。
后面加上去了。
在调试时,发现自己已经在运行这程序,却又对它进行编译,就会出现编译错误。
后面把在运行程序的窗口关掉时,它就没错误了。
运行程序时发现,在运行窗口上出现许多东西,由前面运行的输入输出,由现在运行的输入输出,非常不美观,于是上网查到了一个清屏函数,这下屏幕上美观多了。
尽管调试时,也有一些小错误,劈如:
少写了一个分号;
把某字母大写了;
少加了一个大括号等等。
但都轻松解决了。
4.结果分析
在飞机订票系统中:
设计特点:
程序比较简单,易懂,能实现设计所给出的要求。
设置了一个结构体数组,用它来代表航班信息;
且这结构体数组里嵌套了一个结构体数组,用它来代表航班中的座位信息。
这样能很好的记录航班信息。
定义了一个文件,保存着航班信息;
每次运行程序,程序自动从文件中读取航班信息;
每次程序结束时;
又把这次所输入的信息保存到文件中。
不足:
程序有些航班信息没进行考虑,譬如没有考虑价格等因素;
在很大程度上有待完善。
附程序:
#include<
stdio.h>
string.h>
stdlib.h>
intn;
voidkaitou()
********************************************************************************"
欢迎进入南方航空管理系统\n"
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,"
)==0)
{
fscanf(f,"
a[k].b[i].begin,a[k].b[i].end);
fscanf(f,"
a[k].b[i].name,a[k].b[i].sheng);
}elsea[k].kong++;
}
fscanf(f,"
a[k].time);
fclose(f);
voidinput()
inti,j,k,t;
system("
kaitou();
=666666)
密码正确!
\n"
请输入需修改的航班时间的数目:
输入修改的航班及其时间\n"
for(j=0;
j<
k;
j++)
i);
a[i].time);
进入下一项输入请输入Y:
\n请输入航班添加的人数:
for(t=0;
t<
t++)
{
\n请输入航班号及其座位号:
printf("
}else{
此座位不可订,请重新输入!
k++;
}
返回主菜单请输入Y:
voidoutput()
{
-----------------输出%d号航班的信息:
i);
%d号航班的出发时间:
%s\n"
for(j=0;
if(strcmp(a[i].b[j].flag,"
{
printf("
%d号座乘客的起飞地,目的地,姓名,身份证号码:
j);
%s%s"
%s%s\n"
}else
{
%d号座是空位!
}
voidsearch()
inti,j,t;
)
请输入要查找的航班:
1:
航班的空座数量\n"
2:
航班空座的具体信息\n"
3:
航班已订座的具体信息\n"
4:
航班的起飞时间\n"
请选择1--6进入以下菜单:
t);
switch(t)
case1:
%d号航班的空座数量:
%d\n"
a[i].kong);
break;
case2:
%d号航班空座的具体信息:
for(j=0;
%d"
break;
case3:
%d号航班已订座的具体信息:
if(strcmp(a[i].b[j].flag,"
{
case4:
printf("
%d号航班的起飞时间:
break;
}
是否继续查找航班信息(是的输入Y,否输入N):
voiddingpiao()
voidtuipiao()
inti,j,k;
k=1;
请输入您要退票的航班号与座位号(回车结束):
if(strcmp(a[i].b[j].flag,"
)==0)
您的输入有误,请重新输入."
else{
strcpy(a[i].b[j].flag,"
a[i].kong++;
k=0;
}while(k);
您已退票成功!
是否需要继续退票(是的输入Y,否输入N):
voidsave()
w"
fprintf(f,"
%s"
)!
=0)
fprintf(f,"
fprintf(f,"
fprintf(f,"
voidmain()
intk,i=1;
duqu();
输入航班信息\n"
输出航班信息\n"
查找航班信息\n"
订票预约\n"
5:
删除订票预约\n"
6:
退出系统\n"
请选择1--6进入以下菜单\n"
switch(k)
case1:
input();
output();
search();
dingpiao();
case5:
tuipiao();
case6:
i=0;
}while(i);
save();
5.总结
课程设计心得:
课程设计给我一个学以致用的机会,刚开始的时候还以为学这黑黑的东西没用,只是一些简单的计算。
经过了这次的练习我才发现原来的黑屏有它自己的好处,通过学习也发现原来这种黑屏就是那些应用程序的原型,不论你以后学程序开发还是网页的制作都有很好大好处,这些基础是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训