《程序设计基础》课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《程序设计基础》课程设计报告
一、订票系统
【需求分析】
本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。
具体分析如下:
1、录入功能
可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数。
2、查询功能
可以查询航班的各项信息,如可以查询时间,起飞抵达城市,确定航班是否满仓,航班号。
3、订票功能
可以订票,所订航班的航班号以及所订的票数。
4、退票功能
可以退票。
5、修改功能
可以根据需要由管理员对航班信息进行修改更正。
【概要设计】
1、算法设计:每个模块的算法设计说明如下:
(1)录入模块:
在数组允许范围内,将无意义的“0”数据修改为有意义的信息。
(2)查询模块:
提供四种查方式:按航号、按时间和按终点站查询,1代表按航号查询,2代表按终点站查询,3 代表按时间查询,4 浏览全部。0则表示退出查询。
按数组查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。
(3)订票模块:
查找乘客要订的航班号,判断此航班是否有空位,有则输入订票数,订票数小于剩余票数,订票成功,否则失败。
(4)退票模块:
输入要退票的座位号,查找乘客资料的链表中是否有这位乘客,有则用下一行数组覆盖该行,循环到最后不为“0”的行数或到最大航班号,并在空位加上1,无则退票失败。
(5)修改模块:
在航班信息数组中查找要修改的数据,进行修改,否则不能修改。
2.存储结构设计:
航班的信息:为了便于查找和修改,航班的情况存储结构采用数组,每个元素表示一个航班的情况,包括序号、航班号、时间、终点站、票数以及剩余票数六个数据项:
数据结构
C语言描述如下:
struct flightstruct
{
char flightnumber[20];//航班号
char finishingline[20];//终点站
char date[20]; //日期
unsigned maxamount;//总票数
unsigned remainders;//剩余票数
unsigned seatstate[SEATAMOUNT];//座位数组,贮存座位信息}flight[FLIGHTAMOUNT];
【详细设计】
本系统源程序如下:
#include
#include
#include
#define FLIGHTAMOUNT 200//最大航班数
#define SEATAMOUNT 500//最大座位数
struct flightstruct
{
char flightnumber[20];//航班号
char finishingline[20];//终点站
char date[20]; //日期
unsigned maxamount;//总票数
unsigned remainders;//剩余票数
unsigned seatstate[SEA TAMOUNT];//座位数组,贮存座位信息}flight[FLIGHTAMOUNT];
void open(FILE *fp);//打开文件函数
void save(FILE *fp);//保存信息函数
void built(FILE *fp);//建立文件函数
void manage();//输入、管理信息函数
void insert(FILE *fp);//插入信息函数
void remend(FILE *fp);//修改信息函数
void delet(FILE *fp);//删除信息函数
void delet_all(FILE *fp);//删除所有信息函数
void scan();//浏览信息函数
void select();//查询信息函数
void booktickets();//订票函数
void print_info(unsigned);//输出打印信息函数
void sendbacktickets();//退票函数
int main()
{
int times;//用于控制输入密码次数
char flag;//提供选择菜单的变量
char password[20];//用于存贮密码
printf("\n-->飞机订票系统\n");
times=3;
//验证密码。三次错误后,就自动退出程序。
do
{
times--;
printf("请输入密码:");
scanf("%s",password);
if(strcmp(password,"2009")==0)
{
times=-1;
break;
}
else if(times>0)
printf(" 密码错误!\n 剩余%d 次机会!\n",times);
}while(times>0);
if(times!=-1)
{
printf(" 对不起!\n 您不是管理员! 不能使用此系统!\n");
return 0;
}
//主菜单
do
{
printf("\n\t************************飞机订票系统****************************\n");
printf("\n\t---------------------------主菜单-------------------------------\n");
printf("\t**************-1--信息管理信息浏览--2-****************\n");
printf("\t**************-3--信息查询订票系统--4-****************\n");
printf("\t**************-5--退票系统退出--0-****************\n");
printf("\n\t----------------------------------------------------------------\n");