设计内容:
1.确定能记录航班信息的数据结构,包括航班号、起点站、终点站、2
航班期、起飞时间、到达时间、机型、票价等信息,它是本程序的核心数
据结构,定义为如下的结构体类型:
#define MaxSpace 100
#define keylen 6 //航班号长度
#define RADIX_n 10 //数字基数
#define RADIX_c 26 //英文字母基数
typedef char KeyType;
typedef struct
{
char start[7];
char end[7];
char sche[12];
char time1[5];
char time2[5];
char mode1[3];
int price;
}InfoType; //航班信息结构
typedef struct
{
KeyType keys[keylen];
InfoType others;
int next;
}SLNode; //记录航班信息的静态链表结点
typedef struct
{
SLNode s1[MaxSpace];
int keynum;
int length;
}SLList; //记录航班信息的静态链表
typedef int ArrType_n[RADIX_n];
typedef int ArrType_c[RADIX_c];
2.程序应具有以下基本功能:
录入:包括从硬盘和键盘上读入信息,录入后信息以静态链表存储。
浏览:浏览所有航班信息
按航班号查找记录:先对航班号进行基数排序、后进行折半查找
按起点站、.终点站查找记录:按起点站或终点站名查找
按起飞时间、到达时间查找记录:按起飞、到达时间查找
发我邮箱470366519@qq.com 急用!!!!
C语言程序设计课程设计 题目:航班信息管理系统 还有几天就交了,求帮忙,运行无错,要有源代码,分还会加
答案:3 悬赏:60 手机版
解决时间 2021-02-13 18:33
- 提问者网友:斑駁影
- 2021-02-13 01:16
最佳答案
- 五星知识达人网友:一叶十三刺
- 2021-02-13 01:45
void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)
{
int j,p;
for(j=0;j
{
f[j]=e[j]=0;
}
for(p=sl[0].next;p;p=sl[p].next)
{
j=sl[p].keys[i]%48;
if(!f[j])
f[j]=p;
else
sl[e[j]].next=p;
e[j]=p;
}
}
void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)
{
int j,t;
for(j=0;!f[j];j++);
sl[0].next=f[j];
t=e[j];
while(j
{
for(j=j+1;j
if(f[j])
{
sl[t].next=f[j];
t=e[j];
}
}
sl[t].next=0;
}
void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{
int j,p;
for(j=0;j
{
f[j]=e[j]=0;
}
for(p=sl[0].next;p;p=sl[p].next)
{
j=sl[p].keys[i]%65;
if(!f[j])
f[j]=p;
else
sl[e[j]].next=p;
e[j]=p;
}
}
void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{
int j,t;
for(j=0;!f[j];j++);
sl[0].next=f[j];
t=e[j];
while(j
{
for(j=j+1;j
if(f[j])
{
sl[t].next=f[j];
t=e[j];
}
}
sl[t].next=0;
}
void radixsort(sllist &l)//链式
{
int i;
arrtype_n fn,en;
arrtype_c fc,ec;
for(i=0;i
l.sl[i].next=i+1;
l.sl[l.length].next=0;
for(i=l.keynum-1;i>=2;i--)
{
distribute(l.sl,i,fn,en);
collect(l.sl,i,fn,en);
}
for(i=1;i>=0;i--)
{
distribute_c(l.sl,i,fc,ec);
collect_c(l.sl,i,fc,ec);
}
}
void arrange(sllist &l)//重新整理
{
int p,q,i;
slnode temp;
p=l.sl[0].next;
for(i=1;i
{
while(p p=l.sl[p].next;
q=l.sl[p].next;
if(p!=i)
{
temp=l.sl[p];
l.sl[p]=l.sl[i];
l.sl[i]=temp;
l.sl[i].next=p;
}
p=q;
}
}
int binsearch(sllist l,keytype key[])
{
int low,high,mid;
low=1;
high=l.length;
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(key,l.sl[mid].keys)==0)
return mid;
else if(strcmp(key,l.sl[mid].keys)<0)
high=mid-1;
else
low=mid+1;
}
return 0;
}
void seqsearch(sllist l,keytype key[],int i)
{
int j,k,m=0;
printf("*************************************************************\n");
printf("* 航班号 起始站 终点站 航班期 起飞时间 到达时间 机型 票价*\n");
for(j=1;j<=l.length;j++)
{
switch(i)
{
case 2:k=strcmp(key,l.sl[j].others.start);break;
case 3:k=strcmp(key,l.sl[j].others.end);break;
case 4:k=strcmp(key,l.sl[j].others.time1);break;
case 5:k=strcmp(key,l.sl[j].others.time2);break;
}
if(k==0)
{
m=1;
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[j].keys,l.sl[j].others.start,l.sl[j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl[j].others.model,l.sl[j].others.price);
}
}
if(m==0)
printf("* 无此航班信息,可能是输入错误*\n");
printf("*************************************************************\n");
}
void searchcon(sllist l)
{
keytype key[keylen];
int i=1,k;
while(i>=1&&i<=5)
{printf("\n ********************\n");
printf(" * 航班信息查询系统 *\n");
printf(" ********************\n");
printf(" * 1.航班号*\n");
printf(" * 2.起点站*\n");
printf(" * 3.终点站*\n");
printf(" * 4.起飞时间*\n");
printf(" * 5.到达时间*\n");
printf(" * 0.退出系统*\n");
printf(" ********************\n");
printf(" 请选择(0-5):");
scanf("%d",&i);
printf("\n");
switch(i)
{case 1:printf("输入要查询的航班号(字母要大写):");
scanf("%s",key);
k=binsearch(l,key);
printf("*************************************************************\n");
if(k==0)
printf("* 无此航班信息,可能是输入错误!*\n");
else
{
printf("* 航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价*\n");
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl[k].others.model,l.sl[k].others.price);
}
printf("*************************************************************\n");
break;
case 2:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 3:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 4:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 5:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 0:printf("\n\n\n 再 见n\n\n");
}
}
}
void inputdata(sllist &l)
{
int i=++l.length;
char yn='y';
while(yn=='y'||yn=='Y')
{
printf("航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价\n");
scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i].others.price);
++i; getchar();
radixsort(l);
arrange(l);
printf("继续输入吗?y/n:");
scanf("%c",&yn);
}
l.length=i-1;
}
void main()
{
sllist l;
l.keynum=6;
l.length=0;
inputdata(l);
searchcon(l);
}
{
int j,p;
for(j=0;j
f[j]=e[j]=0;
}
for(p=sl[0].next;p;p=sl[p].next)
{
j=sl[p].keys[i]%48;
if(!f[j])
f[j]=p;
else
sl[e[j]].next=p;
e[j]=p;
}
}
void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)
{
int j,t;
for(j=0;!f[j];j++);
sl[0].next=f[j];
t=e[j];
while(j
for(j=j+1;j
{
sl[t].next=f[j];
t=e[j];
}
}
sl[t].next=0;
}
void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{
int j,p;
for(j=0;j
f[j]=e[j]=0;
}
for(p=sl[0].next;p;p=sl[p].next)
{
j=sl[p].keys[i]%65;
if(!f[j])
f[j]=p;
else
sl[e[j]].next=p;
e[j]=p;
}
}
void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{
int j,t;
for(j=0;!f[j];j++);
sl[0].next=f[j];
t=e[j];
while(j
for(j=j+1;j
{
sl[t].next=f[j];
t=e[j];
}
}
sl[t].next=0;
}
void radixsort(sllist &l)//链式
{
int i;
arrtype_n fn,en;
arrtype_c fc,ec;
for(i=0;i
l.sl[l.length].next=0;
for(i=l.keynum-1;i>=2;i--)
{
distribute(l.sl,i,fn,en);
collect(l.sl,i,fn,en);
}
for(i=1;i>=0;i--)
{
distribute_c(l.sl,i,fc,ec);
collect_c(l.sl,i,fc,ec);
}
}
void arrange(sllist &l)//重新整理
{
int p,q,i;
slnode temp;
p=l.sl[0].next;
for(i=1;i
while(p p=l.sl[p].next;
q=l.sl[p].next;
if(p!=i)
{
temp=l.sl[p];
l.sl[p]=l.sl[i];
l.sl[i]=temp;
l.sl[i].next=p;
}
p=q;
}
}
int binsearch(sllist l,keytype key[])
{
int low,high,mid;
low=1;
high=l.length;
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(key,l.sl[mid].keys)==0)
return mid;
else if(strcmp(key,l.sl[mid].keys)<0)
high=mid-1;
else
low=mid+1;
}
return 0;
}
void seqsearch(sllist l,keytype key[],int i)
{
int j,k,m=0;
printf("*************************************************************\n");
printf("* 航班号 起始站 终点站 航班期 起飞时间 到达时间 机型 票价*\n");
for(j=1;j<=l.length;j++)
{
switch(i)
{
case 2:k=strcmp(key,l.sl[j].others.start);break;
case 3:k=strcmp(key,l.sl[j].others.end);break;
case 4:k=strcmp(key,l.sl[j].others.time1);break;
case 5:k=strcmp(key,l.sl[j].others.time2);break;
}
if(k==0)
{
m=1;
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[j].keys,l.sl[j].others.start,l.sl[j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl[j].others.model,l.sl[j].others.price);
}
}
if(m==0)
printf("* 无此航班信息,可能是输入错误*\n");
printf("*************************************************************\n");
}
void searchcon(sllist l)
{
keytype key[keylen];
int i=1,k;
while(i>=1&&i<=5)
{printf("\n ********************\n");
printf(" * 航班信息查询系统 *\n");
printf(" ********************\n");
printf(" * 1.航班号*\n");
printf(" * 2.起点站*\n");
printf(" * 3.终点站*\n");
printf(" * 4.起飞时间*\n");
printf(" * 5.到达时间*\n");
printf(" * 0.退出系统*\n");
printf(" ********************\n");
printf(" 请选择(0-5):");
scanf("%d",&i);
printf("\n");
switch(i)
{case 1:printf("输入要查询的航班号(字母要大写):");
scanf("%s",key);
k=binsearch(l,key);
printf("*************************************************************\n");
if(k==0)
printf("* 无此航班信息,可能是输入错误!*\n");
else
{
printf("* 航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价*\n");
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl[k].others.model,l.sl[k].others.price);
}
printf("*************************************************************\n");
break;
case 2:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 3:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 4:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 5:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 0:printf("\n\n\n 再 见n\n\n");
}
}
}
void inputdata(sllist &l)
{
int i=++l.length;
char yn='y';
while(yn=='y'||yn=='Y')
{
printf("航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价\n");
scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i].others.price);
++i; getchar();
radixsort(l);
arrange(l);
printf("继续输入吗?y/n:");
scanf("%c",&yn);
}
l.length=i-1;
}
void main()
{
sllist l;
l.keynum=6;
l.length=0;
inputdata(l);
searchcon(l);
}
全部回答
- 1楼网友:撞了怀
- 2021-02-13 02:56
#include <stdio.h>
int main(void)
{
int cn, cz, cp, n;
float k;
while(1) {
scanf("%d", &n);
if(n == 0)
break;
cn = cz = cp = 0;
while(n--) {
scanf("%f", &k);
if(k < 0)
++cn;
else if(k == 0)
++cz;
else
++cp;
}
printf("%d %d %d\n", cn, cz, cp);
}
return 0;
}
- 2楼网友:山君与见山
- 2021-02-13 02:50
真不明白现在的学生在学啥,也不算难,一天就搞定,还要人家发邮箱。300块,我给你做,别自己不想付出老想白拿。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯