机票订购系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程项目实施方案
一、项目名称: 机票订购系统
二、项目要求及系统基本功能
•利用数据结构的知识独立完成一个应用系统设计
•程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能
•体现程序实现算法复杂度优化
•体现程序的健壮性
系统预期实现基本功能:
(结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能)
1.增加航班信息
2.修改航班信息
3.查询航班信息
4.订购机票
5.退订机票
6.备份恢复航班信息
7.进入系统需要密码,并且密码可修改
8.分为Admin和Client用户,不同用户权限不同,并且可修改
三、项目组成员及任务分配
(基本分为组织实施组织、程序功能模块编写、系统说明撰写等。

其中程序功能子模块实现每一个成员都要分配)
组长:许峥10160400113
主要任务:排序账户信息的修改修改和删除航班信息主程序调试项目报告制作
组员:高家乐10160400109
主要任务:程序的主题框架增加航班信息查找航班信息主程序调试源代码编写
组员:杨柳10160400102
主要任务:数据的备份与恢复LOGO制作菜单的制作以及主程序调试流程图制作
四、系统设计算法描述
(用文字结合框图描述系统功能主要实现算法思路等,即使用自然语言描述系统实现)
1、修改航班信息:可以用来修改航班的具体信息,可以按照航班号来查询航班的主要信息
以便修改。

2、查询航班信息:可以用来查询航班的具体信息,可以按照航班号来查询具体信息。

3、增加航班信息:可以选择在任何一个航班的后面插入该航班的信息,同样可以按照航班
号来插入。

4、删除航班信息:可以按照航班号来删除航班的信息。

5、顶退票功能:可以订购和退订机票。

6、系统登录及密码管理:本程序分为Admin和Client两个账户,不同账户不同功能,而且
账户名,密码以及权限都可以修改。

7、保存及备份:本程序可以保存和备份航班信息,而且可以指定路径,所保存的信息包括
航班的各项信息。

五、系统实现程序
程序流程图
(主要以程序流程图的形式体现各函数之间的运行调用关系)
程序源代码
/*程序名称:飞机订票系统*/
/*团队成员:组长:许铮*/
/* 组员: 欧阳益*/
/*完成时间:2011年6月3日*/
#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
#include<stdlib.h>
#define ACCOUNTS 2
#define MAX 20
typedef struct
{
char name[20];
double id;
}guestinf;
typedef struct
{
char PlaneID[5];
char PlantUp[5];
char PlaneDown[5];
double value;
int chair;
char start[MAX];
char end[MAX];
guestinf gueinf[MAX];
}plane;
typedef struct
{
char name[20];
char password[10];
int type;
}account;
void welcome()
{
printf("\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\t\t\t ☆☆☆☆☆☆\n");
printf("\t\t\t ☆☆☆☆☆\n");
printf("\t\t\t ☆☆☆☆☆☆☆☆\n");
printf("\t\t\t ☆☆☆☆☆\n");
printf("\t\t\t ☆☆☆\n");
printf("\t\t\t ☆☆☆☆☆☆\n");
printf("\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
system("color 48");
Sleep(300);
system("color 48");
Sleep(300);
system("color 7C");
Sleep(300);
system("color 0F");
}
int password()
{
system("color 0c");
FILE *pw;
account accounts[ACCOUNTS];/*存储账户信息*/
account pwtry;/*存储用户输入的账户信息*/
strcpy(accounts[0].name,"Admin");
strcpy(accounts[0].password,"neusoft");
accounts[0].type=1;
strcpy(accounts[1].name,"Client");
strcpy(accounts[1].password,"ese10001");
accounts[1].type=2;
int i;
pw=fopen("password.txt","r");
if(NULL==pw)
{
printf("本程序的Admin的初始密码为neusoft,Client初始密码为ese10001\n");
pw=fopen("password.txt","w");
fprintf(pw,"%10s %10s %1d",accounts[0].name,accounts[0].password,accounts[0 ].type);
fprintf(pw,"%10s %10s %1d",accounts[1].name,accounts[1].password,accounts[1 ].type);
fclose(pw);
Sleep(3000);
return 1;
}
else
{
for(i=0;i<ACCOUNTS;i++)
{
if(feof(pw))
{
printf("load error");
break;
}
else
{
fscanf(pw,"%10s %10s %1d",accounts[i].name,accounts[i].password,&accounts[i] .type);
}
}
int repeat=max(strlen(accounts[0].password),strlen(accounts[1].password));
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t\t请输入用户名");
scanf("%s",);
printf("\t\t\t\t请输入密码");
for(i=0;i<repeat;i++)
{
pwtry.password[i]=getch();
printf("*");
if('\13'==pwtry.password[i])
break;
}
printf("\n");
for(i=0;i<ACCOUNTS;i++)
{
if(0==(strncmp(accounts[i].password,pwtry.password,strlen(accounts[i].passwor d)))&&(0==strncmp(,accounts[i].name,strlen(accounts[i].name))))
{
system("cls");
printf("\t\t\t\t密码正确,欢迎进入本系统!\n");
fclose(pw);
Sleep(300);
system("color c0");
Sleep(300);
system("color 0c");
Sleep(300);
system("color c0");
Sleep(300);
return accounts[i].type;
}
}
printf("\a\t\t\t\t用户名或者密码错误!即将退出!");
fclose(pw);
Sleep(1000);
exit(1);
}
}
int changeuserfile()
{
char password1[10],password2[10];
account pwtry;
int i,n;
FILE *pw;
account accounts[MAX];
pw=fopen("password.txt","r");
for(i=0;i<MAX;i++)
{
if(feof(pw))
break;
else
{
fscanf(pw,"%10s %10s %1d",accounts[i].name,accounts[i].password,&accounts[i] .type);
}
}
printf("请输入用户名");
scanf("%s",);
printf("请输入密码");
for(i=0;i<10;i++)
{
pwtry.password[i]=getch();
printf("*");
if(pwtry.password[i]=='\13')
break;
}
for(i=0;i<MAX;i++)
{
if(!((strncmp(accounts[i].name,pwtry.password,strlen(accounts[i].password)))&& (strncmp(,accounts[i].name,strlen(accounts[i].password)))))
{
printf("\n请输入新的账户名");
scanf("%s",accounts[i].name);
printf("请输入新密码");
scanf("%s",password1);
printf("请再次输入");
scanf("%s",password2);
while(1)
{
printf("请输入账户类型(1 admin,2 client");
scanf("%d",&accounts[i].type);
if(accounts[i].type!=1&&accounts[i].type!=2)
printf("输入错误,请重新输入");
else
break;
}
if(0==strcmp(password1,password2))
{
strcpy(accounts[i].password,password1);
pw=fopen("password.txt","w");
for(i=0;i<MAX;i++)
{
fprintf(pw,"%10s %10s %d",accounts[i].name,accounts[i].password,accounts[i].ty pe);
}
fclose(pw);
printf("修改成功!\n");
return 1;
}
else
{
printf("两次输入的密码不一致,修改错误!\n");
return 0;
}
}
}
}
int AddInf(plane *p)
{
int i=0;
while(p[i].chair!=0&&i<10)
i++;
printf("请输入航班号\n");
scanf("%s",p[i].PlaneID);
printf("请输入起飞时间");
scanf("%s",&p[i].PlantUp);
printf("请输入降落时间");
scanf("%s",&p[i].PlaneDown);
printf("请输入票价");
scanf("%lf",&p[i].value);
printf("请输入座位数");
scanf("%d",&p[i].chair);
printf("请输入起飞地点\n");
scanf("%s",p[i].start);
printf("请输入降落地点\n");
scanf("%s",p[i].end);
return 0;
}
int Num(plane *p)
{
int i,j=0;
for(i=0;i<10;i++)
{
if(0!=strcmp(p->PlaneID,"NULL"))
j++;
}
return j;
}
int All(plane *p)
{
int i,j;
j=Num(p);
for(i=0;i<j;i++)
{
printf("\t航班号\t起飞时间\t降落时间\t起飞地点\t降落地点\t票价\t 剩余座位数\n");
printf("\t%s\t%s\t%s\t%20s\t%20s\t%lf\t%d",p[i].PlaneID,p[i].PlantUp,p[i].Plane Down,p[i].start,p[i].end,p[i].value,p[i].chair);
}
return 1;
}
int IDtoNum(plane *p,char *q)
{
int i;
for(i=0;i<MAX;i++)
{
if(0==strcmp(p[i].PlaneID,q))
return i;
}
return -1;
}
int RepairInf(plane *p)
{
char PlaneID[5];
char *q;
q=PlaneID;
printf("请输入航班号");
scanf("%s",&PlaneID);
int i=IDtoNum(p,q);
printf("请输入新的航班号\n");
scanf("%s",p[i].PlaneID);
printf("请输入新的起飞时间");
scanf("%s",&p[i].PlantUp);
printf("请输入新的降落时间");
scanf("%s",&p[i].PlaneDown);
printf("请输入新的票价");
scanf("%lf",&p[i].value);
printf("请输入新的座位数");
scanf("%d",&p[i].chair);
printf("请输入起飞地点\n");
scanf("%s",p[i].start);
printf("请输入降落地点\n");
scanf("%s",p[i].end);
return 0;
}
int FindInf(plane *p)
{
char PlaneID[5];
char *q;
q=PlaneID;
printf("请输入要查询的航班号");
scanf("%s",PlaneID);
int i=IDtoNum(p,q);
if(i==-1)
{
printf("没有这个航班");
return 0;
}
else
{
printf("\t航班号\t起飞时间\t降落时间\t起飞地点\t降落地点\t票价\t 剩余座位数\n");
printf("\t%s\t%s\t%s\t%20s\t%20s\t%lf\t%d",p[i].PlaneID,p[i].PlantUp,p[i].Plane Down,p[i].start,p[i].end,p[i].value,p[i].chair);
return 1;
}
}
int Buyticks(plane *p)
{
char PlaneID[5];
char *q;
q=PlaneID;
printf("请输入要购票的航班号");
scanf("%s",PlaneID);
int i=IDtoNum(p,q);
if(i==-1)
{
printf("没有这个航班");
return 0;
}
else if(p[i].chair==0)
{
printf("这架飞机已经没有座位了!");
return 0;
}
else
{
printf("请输入您的姓名");
scanf("%s",p->gueinf->name);
printf("请输入您的身份证号");
scanf("%lf",&p->gueinf->id);
p->chair--;
return 1;
}
}
int Sellticks(plane *p)
{
int k,j;
char PlaneID[5];
char *q;
q=PlaneID;
char name[MAX];
double id;
printf("请输入要购票的航班号");
scanf("%s",PlaneID);
int i=IDtoNum(p,q);
if(i==-1)
{
printf("没有这个航班");
return 0;
}
else
{
printf("请输入您的姓名");
scanf("%s",name);
printf("请输入您的身份证号");
scanf("%lf",&id);
for(k=0;k<10;k++)
for(j=0;j<MAX;j++)
{
if(0==strcmp(name,p[k].gueinf[j].name)&&(id==p[k].gueinf[j].id))
{
p[i].chair++;
printf("退票成功!");
return 1;
}
}
printf("查无该乘客信息,退票失败!");
return 0;
}
}
int cancleInf(plane *p)
{
char PlaneID[5];
char *q;
q=PlaneID;
printf("请输入要取消的航班号");
scanf("%s",PlaneID);
int i=IDtoNum(p,q);
strcpy(p->PlaneID,"NULL");
printf("取消成功!\n");
return 0;
}
int recovery(plane *p)
{return 0;}
int backup(plane *p)
{
FILE *bac;
char back[20];
printf("请输入要保存的文件名");
scanf("%s",back);
bac=fopen(back,"w");
int i;
fprintf(bac,"\t航班号\t起飞时间\t降落时间\t起飞地点\t降落地点\t票价\t 剩余座位数\n");
for(i=0;i<10;i++)
{
if(0==strcmp(p[i].PlaneID,"NULL"))
{
fprintf(bac,"\n\nend");
break;
}
fprintf(bac,"\t%s\t%s\t%s\t%20s\t%20s\t%lf\t%d",p[i].PlaneID,p[i].PlantUp,p[i]. PlaneDown,p[i].start,p[i].end,p[i].value,p[i].chair);
fclose(bac);
printf("备份成功!");
return 1;
}
}
void about()
{
printf("程序名称:飞机票订票系统\n");
printf("制作团队:嵌入1班\n");
printf("组长:许铮\n");
printf("组员:欧阳益\n");
}
void menu(plane *p)
{
int choice;
while(1)
{
printf("\n========================================================== =====================\n");
printf("尊敬的Admin,欢迎使用本系统!\n");
printf(" 1 ******* 新增航班\t");
printf(" 2 ******* 修改航班\n");
printf(" 3 ******* 查询航班\t");
printf(" 4 ******* 订购机票\n");
printf(" 5 ******* 退订机票\t");
printf(" 6 ******* 取消航班\n");
printf(" 7 ******* 恢复航班信息\t");
printf(" 8 ******* 备份航班信息\n");
printf(" 9 ******* 用户管理\t");
printf(" 10 ******* 关于\n");
printf(" 0 ******* 退出\n");
printf("============================================================ ====================\n");
printf("请输入您所需要的服务");
scanf("%d",&choice);
switch(choice)
{
case 1:
AddInf(p);
break;
case 2:
RepairInf(p);
break;
case 3:
FindInf(p);
break;
case 4:
Buyticks(p);
break;
case 5:
Sellticks(p);
break;
case 6:
cancleInf(p);
break;
case 7:
recovery(p);
break;
case 8:
backup(p);
break;
case 9:
changeuserfile();
break;
case 10:
about();
break;
case 0:
exit(1);
break;
default:
printf("输入错误,请重新输入!");
fflush;
}
}
}
void menuC(plane *p)
{
int choice;
while(1)
{
printf("\n========================================================== =====================\n");
printf("尊敬的Client,欢迎使用本系统!\n");
printf(" 1 ******* 订购机票\n");
printf(" 2 ******* 退订机票\t");
printf(" 3 ******* 显示所有航班信息\n");
printf(" 4 ******* 查询航班信息\t");
printf(" 5 ******* 用户管理\t");
printf(" 6 ******* 关于\n");
printf(" 0 ******* 退出\n");
printf("============================================================ ====================\n");
printf("请输入您所需要的服务");
scanf("%d",&choice);
switch(choice)
{
case 1:
Buyticks(p);
break;
case 2:
Sellticks(p);
break;
case 3:
All(p);
break;
case 4:
FindInf(p);
break;
case 5:
changeuserfile();
break;
case 6:
about();
break;
case 0:
exit(1);
break;
default:
printf("输入错误,请重新输入!");
fflush;
}
}
}
void main()
{
int i,j;
plane PlaneInf[10];
plane *p;
p=PlaneInf;
for(i=0;i<10;i++)
{
PlaneInf[i].chair=MAX;
strcpy(p[i].PlaneID,"NULL");
}
int n=password();
welcome();
if(n==1)
while(1)
menu(p);
else if(n==2)
while(1)
menuC(p);
else
{
printf("\a非法的客户端!");
Sleep(3000);
exit(1);
}
}
六、系统使用说明
当第一次打开学生成绩管理系统时,系统会提示用户默认账户名和默认密码
当以后打开时,系统会要求用户输入用户名以及密码
输入用户名和密码之后,会进入功能界面
此时已经可以使用增删改查等功能。

功能2:修改航班信息
功能4:订购机票
功能5:退订机票
七、系统运行自测结果
(对应系统预期实现的功能,组内自测最终实现各功能的情况,如果有扩展出的新功能在扩展部分给予描述评价)
1.增加航班信息完成
2.修改航班信息完成
3.查询航班信息完成
4.订购机票完成
5.退订机票完成
6.取消航班信息完成
扩展功能实现
1.Admin和Client用户不同权限不同功能完成
2.账户信息修改完成
3.文件的备份和恢复待完成
八、系统运行测评结果
(对应系统预期实现的功能,测评最终实现各功能的情况,如果有扩展出的新功能在扩展部分给予描述评价)
1
2
扩展功能实现
1.文件的备份和恢复待完成。

相关文档
最新文档